UNPKG

1.15 kBJavaScriptView Raw
1import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
2import React from 'react';
3import ReactDOM from 'react-dom';
4import PropTypes from 'prop-types';
5import { canUseDOM } from './utils';
6var propTypes = {
7 children: PropTypes.node.isRequired,
8 node: PropTypes.any
9};
10
11var Portal = /*#__PURE__*/function (_React$Component) {
12 _inheritsLoose(Portal, _React$Component);
13
14 function Portal() {
15 return _React$Component.apply(this, arguments) || this;
16 }
17
18 var _proto = Portal.prototype;
19
20 _proto.componentWillUnmount = function componentWillUnmount() {
21 if (this.defaultNode) {
22 document.body.removeChild(this.defaultNode);
23 }
24
25 this.defaultNode = null;
26 };
27
28 _proto.render = function render() {
29 if (!canUseDOM) {
30 return null;
31 }
32
33 if (!this.props.node && !this.defaultNode) {
34 this.defaultNode = document.createElement('div');
35 document.body.appendChild(this.defaultNode);
36 }
37
38 return /*#__PURE__*/ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);
39 };
40
41 return Portal;
42}(React.Component);
43
44Portal.propTypes = propTypes;
45export default Portal;
\No newline at end of file