Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

60 linhas
1.5 KiB

  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
  6. var _react = _interopRequireDefault(require("react"));
  7. var _reactDom = _interopRequireDefault(require("react-dom"));
  8. var _propTypes = _interopRequireDefault(require("prop-types"));
  9. var _utils = require("./utils");
  10. var propTypes = {
  11. children: _propTypes.default.node.isRequired,
  12. node: _propTypes.default.any
  13. };
  14. var Portal =
  15. /*#__PURE__*/
  16. function (_React$Component) {
  17. (0, _inheritsLoose2.default)(Portal, _React$Component);
  18. function Portal() {
  19. return _React$Component.apply(this, arguments) || this;
  20. }
  21. var _proto = Portal.prototype;
  22. _proto.componentWillUnmount = function componentWillUnmount() {
  23. if (this.defaultNode) {
  24. document.body.removeChild(this.defaultNode);
  25. }
  26. this.defaultNode = null;
  27. };
  28. _proto.render = function render() {
  29. if (!_utils.canUseDOM) {
  30. return null;
  31. }
  32. if (!this.props.node && !this.defaultNode) {
  33. this.defaultNode = document.createElement('div');
  34. document.body.appendChild(this.defaultNode);
  35. }
  36. return _reactDom.default.createPortal(this.props.children, this.props.node || this.defaultNode);
  37. };
  38. return Portal;
  39. }(_react.default.Component);
  40. Portal.propTypes = propTypes;
  41. var _default = Portal;
  42. exports.default = _default;