UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

99 lines (98 loc) 4.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("core-js/modules/web.dom-collections.iterator.js"); var _react = _interopRequireDefault(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _componentHelper = require("../../shared/component-helper"); var _ModalContent = _interopRequireDefault(require("./ModalContent")); const _excluded = ["children", "direct_dom_return"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } class ModalRoot extends _react.default.PureComponent { constructor() { super(...arguments); _defineProperty(this, "state", { isMounted: false }); } static insertModalRoot(id) { if (typeof window === 'undefined') { return false; } try { id = `dnb-modal-${id || 'root'}`; window.__modalRoot = document.getElementById(id); if (!window.__modalRoot) { window.__modalRoot = document.createElement('div'); window.__modalRoot.setAttribute('id', id); document.body.insertBefore(window.__modalRoot, document.body.firstChild); } } catch (e) { (0, _componentHelper.warn)('Modal: Could not insert dnb-modal-root', e); } return window.__modalRoot; } componentDidMount() { const { direct_dom_return = false, root_id = 'root' } = this.props; if (!(0, _componentHelper.isTrue)(direct_dom_return)) { ModalRoot.insertModalRoot(root_id); try { if (!this.portalElem) { this.portalElem = document.createElement('div'); this.portalElem.className = 'dnb-modal-root__inner'; } if (this.portalElem && typeof window !== 'undefined' && window.__modalRoot) { window.__modalRoot.appendChild(this.portalElem); } } catch (e) { (0, _componentHelper.warn)(e); } this.setState({ isMounted: true }); } } componentWillUnmount() { try { if (this.portalElem && typeof window !== 'undefined' && window.__modalRoot && window.__modalRoot.removeChild) { window.__modalRoot.removeChild(this.portalElem); this.portalElem = null; } } catch (e) { (0, _componentHelper.warn)(e); } } render() { const _this$props = this.props, { children, direct_dom_return } = _this$props, props = _objectWithoutProperties(_this$props, _excluded); if ((0, _componentHelper.isTrue)(direct_dom_return)) { return _react.default.createElement(_ModalContent.default, props, children); } if (this.portalElem && typeof window !== 'undefined' && window.__modalRoot && this.state.isMounted) { return _reactDom.default.createPortal(_react.default.createElement(_ModalContent.default, props, children), this.portalElem); } return null; } } exports.default = ModalRoot; _defineProperty(ModalRoot, "defaultProps", { id: null, root_id: 'root', direct_dom_return: false, children: null }); //# sourceMappingURL=ModalRoot.js.map