UNPKG

dora-ui

Version:

A React.js Mobile UI Library

57 lines (47 loc) 1.77 kB
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized"; import _inherits from "@babel/runtime/helpers/esm/inherits"; import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; import React from 'react'; import ReactDOM from 'react-dom'; import { isBrowser } from '../utils'; var Portal = /*#__PURE__*/ function (_React$Component) { _inherits(Portal, _React$Component); function Portal(props) { var _this; _classCallCheck(this, Portal); _this = _possibleConstructorReturn(this, _getPrototypeOf(Portal).call(this, props)); _defineProperty(_assertThisInitialized(_this), "defaultNode", void 0); if (!props.node && isBrowser) { _this.defaultNode = document.createElement('div'); document.body.appendChild(_this.defaultNode); } return _this; } _createClass(Portal, [{ key: "componentWillUnmount", value: function componentWillUnmount() { if (this.defaultNode) { document.body.removeChild(this.defaultNode); this.defaultNode = undefined; } } }, { key: "render", value: function render() { if (!isBrowser) return null; var _this$props = this.props, children = _this$props.children, node = _this$props.node; var container = node || this.defaultNode; return ReactDOM.createPortal(children, container); } }]); return Portal; }(React.Component); export default Portal;