UNPKG

chayns-components

Version:

A set of beautiful React components for developing chayns® applications.

48 lines (46 loc) 1.48 kB
"use strict"; 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"); 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