mirror of
https://github.com/strapi/strapi.git
synced 2025-11-12 16:22:10 +00:00
51 lines
912 B
JavaScript
51 lines
912 B
JavaScript
|
|
/*
|
||
|
|
*
|
||
|
|
* OverlayBlocker
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
|
||
|
|
import React from 'react';
|
||
|
|
import ReactDOM from 'react-dom';
|
||
|
|
import PropTypes from 'prop-types';
|
||
|
|
|
||
|
|
import styles from './styles.scss';
|
||
|
|
|
||
|
|
class OverlayBlocker extends React.Component {
|
||
|
|
constructor(props) {
|
||
|
|
super(props);
|
||
|
|
this.overlayContainer = document.createElement('div');
|
||
|
|
document.body.appendChild(this.overlayContainer);
|
||
|
|
}
|
||
|
|
|
||
|
|
componentWillUnmount() {
|
||
|
|
document.body.removeChild(this.overlayContainer);
|
||
|
|
}
|
||
|
|
|
||
|
|
render() {
|
||
|
|
if (this.props.isOpen) {
|
||
|
|
return ReactDOM.createPortal(
|
||
|
|
<div className={styles.overlay}>
|
||
|
|
<div>
|
||
|
|
{this.props.children}
|
||
|
|
</div>
|
||
|
|
</div>,
|
||
|
|
this.overlayContainer
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
OverlayBlocker.defaultProps = {
|
||
|
|
children: '',
|
||
|
|
isOpen: false,
|
||
|
|
};
|
||
|
|
|
||
|
|
OverlayBlocker.propTypes = {
|
||
|
|
children: PropTypes.node,
|
||
|
|
isOpen: PropTypes.bool,
|
||
|
|
};
|
||
|
|
|
||
|
|
export default OverlayBlocker;
|