UNPKG

@lyra/components

Version:
54 lines (41 loc) 1.34 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Portal = undefined; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _reactDom = require('react-dom'); var _Portal = require('./Portal.css'); var _Portal2 = _interopRequireDefault(_Portal); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); class Portal extends _react2.default.Component { componentWillUnmount() { if (this.node) { document.body.removeChild(this.node); } this.node = null; } render() { if (!canUseDOM) { return null; } if (!this.node) { this.node = document.createElement('div'); document.body.appendChild(this.node); } return (0, _reactDom.createPortal)(_react2.default.createElement( _react2.default.Fragment, null, this.props.children, _react2.default.createElement('span', { tabIndex: 0, className: _Portal2.default.captureTabFocus }) ), this.node); } } exports.Portal = Portal; Portal.propTypes = { children: _propTypes2.default.node.isRequired };