UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

178 lines (137 loc) 5.07 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _react = _interopRequireWildcard(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _Dialog = _interopRequireDefault(require("./Dialog")); var _ContainerRender = _interopRequireDefault(require("../util/ContainerRender")); var _Portal = _interopRequireDefault(require("../util/Portal")); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var IS_REACT_16 = 'createPortal' in _reactDom["default"]; var DialogWrap = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(DialogWrap, _Component); var _super = _createSuper(DialogWrap); function DialogWrap() { var _this; (0, _classCallCheck2["default"])(this, DialogWrap); _this = _super.apply(this, arguments); _this.saveDialog = function (node) { _this._component = node; }; _this.getComponent = function () { var extra = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return _react["default"].createElement(_Dialog["default"], (0, _extends2["default"])({ ref: _this.saveDialog }, _this.props, extra, { key: "dialog" })); }; _this.getContainer = function () { var getContainer = _this.props.getContainer; if (getContainer) { return getContainer((0, _assertThisInitialized2["default"])(_this)); } var container = document.createElement('div'); document.body.appendChild(container); return container; }; return _this; } (0, _createClass2["default"])(DialogWrap, [{ key: "shouldComponentUpdate", value: function shouldComponentUpdate(_ref) { var visible = _ref.visible; var props = this.props; return !!(props.visible || visible); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { if (IS_REACT_16) { return; } var visible = this.props.visible; if (visible) { this.renderComponent({ afterClose: this.removeContainer, onClose: function onClose() {}, visible: false }); } else { this.removeContainer(); } } }, { key: "render", value: function render() { var _this2 = this; var visible = this.props.visible; var portal = null; if (!IS_REACT_16) { var container = function container(_ref2) { var renderComponent = _ref2.renderComponent, removeContainer = _ref2.removeContainer; _this2.renderComponent = renderComponent; _this2.removeContainer = removeContainer; return null; }; return _react["default"].createElement(_ContainerRender["default"], { parent: this, visible: visible, autoDestroy: false, getComponent: this.getComponent, getContainer: this.getContainer }, container); } if (visible || this._component) { portal = _react["default"].createElement(_Portal["default"], { getContainer: this.getContainer }, this.getComponent()); } return portal; } }]); return DialogWrap; }(_react.Component); DialogWrap.defaultProps = { visible: false }; var _default = DialogWrap; exports["default"] = _default; //# sourceMappingURL=DialogWrap.js.map