Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

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