|
|
|
@ -62,15 +62,22 @@ export default class ModalRoot extends React.PureComponent { |
|
|
|
|
} else if (!nextProps.children) { |
|
|
|
|
this.setState({ revealed: false }); |
|
|
|
|
} |
|
|
|
|
if (!nextProps.children && !!this.props.children) { |
|
|
|
|
this.activeElement.focus({ preventScroll: true }); |
|
|
|
|
this.activeElement = null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
componentDidUpdate (prevProps) { |
|
|
|
|
if (!this.props.children && !!prevProps.children) { |
|
|
|
|
this.getSiblings().forEach(sibling => sibling.removeAttribute('inert')); |
|
|
|
|
|
|
|
|
|
// Because of the wicg-inert polyfill, the activeElement may not be
|
|
|
|
|
// immediately selectable, we have to wait for observers to run, as
|
|
|
|
|
// described in https://github.com/WICG/inert#performance-and-gotchas
|
|
|
|
|
Promise.resolve().then(() => { |
|
|
|
|
this.activeElement.focus({ preventScroll: true }); |
|
|
|
|
this.activeElement = null; |
|
|
|
|
}).catch((error) => { |
|
|
|
|
console.error(error); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
this.handleModalClose(); |
|
|
|
|
} |
|
|
|
|
if (this.props.children) { |
|
|
|
|