UNPKG

1.14 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 =
12/*#__PURE__*/
13function (_React$Component) {
14 _inheritsLoose(Portal, _React$Component);
15
16 function Portal() {
17 return _React$Component.apply(this, arguments) || this;
18 }
19
20 var _proto = Portal.prototype;
21
22 _proto.componentWillUnmount = function componentWillUnmount() {
23 if (this.defaultNode) {
24 document.body.removeChild(this.defaultNode);
25 }
26
27 this.defaultNode = null;
28 };
29
30 _proto.render = function render() {
31 if (!canUseDOM) {
32 return null;
33 }
34
35 if (!this.props.node && !this.defaultNode) {
36 this.defaultNode = document.createElement('div');
37 document.body.appendChild(this.defaultNode);
38 }
39
40 return ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);
41 };
42
43 return Portal;
44}(React.Component);
45
46Portal.propTypes = propTypes;
47export default Portal;
\No newline at end of file