chayns-components
Version:
A set of beautiful React components for developing chayns® applications.
49 lines (47 loc) • 1.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _propTypes = require("prop-types");
var _react = require("react");
var _reactDom = _interopRequireDefault(require("react-dom"));
var _isServer = require("../../utils/isServer");
require("./overlay.css");
const Overlay = _ref => {
let {
parent,
children
} = _ref;
const [parentElement, setParentElement] = (0, _react.useState)(() => {
if (!parent && !(0, _isServer.isServer)()) {
return document.createElement('div');
}
return null;
});
(0, _react.useEffect)(() => {
if (parent) {
setParentElement(null);
} else if (!parentElement) {
setParentElement(document.createElement('div'));
}
}, [parent, parentElement]);
(0, _react.useEffect)(
// eslint-disable-next-line consistent-return
() => {
if (parentElement) {
parentElement.className = 'cc_overlay-parent';
document.body.appendChild(parentElement);
return () => {
parentElement.remove();
};
}
}, [parentElement]);
return (0, _isServer.isServer)() ? null : /*#__PURE__*/_reactDom.default.createPortal(children, parent || parentElement);
};
Overlay.propTypes = {
parent: (0, _isServer.isServer)() ? _propTypes.any : (0, _propTypes.instanceOf)(Element),
children: _propTypes.node.isRequired
};
var _default = Overlay;
exports.default = _default;
//# sourceMappingURL=Overlay.js.map