shineout
Version:
Shein 前端组件库
126 lines (99 loc) • 4.36 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _react = require("react");
var _defaultProps = require("../utils/defaultProps");
var _shallowEqual = _interopRequireDefault(require("../utils/shallowEqual"));
var _uid = require("../utils/uid");
var _events = require("./events");
var DefaultValue = (0, _objectSpread2.default)({}, _defaultProps.defaultProps, {
usePortal: true,
visible: false,
hideMask: false,
esc: true
});
var Modal =
/*#__PURE__*/
function (_Component) {
(0, _inheritsLoose2.default)(Modal, _Component);
function Modal(props) {
var _this;
_this = _Component.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "id", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "visible", void 0);
_this.id = (0, _uid.getUidStr)();
_this.visible = props.visible;
_this.handleUpdate = _this.handleUpdate.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
return _this;
}
var _proto = Modal.prototype;
_proto.componentDidMount = function componentDidMount() {
if (this.props.visible && !this.props.usePortal) {
(0, _events.open)(this.getOption(), false);
}
};
_proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
if ((0, _shallowEqual.default)(this.props, nextProps)) return false;
if (nextProps.visible) return true;
(0, _events.close)((0, _objectSpread2.default)({}, this.props, {
id: this.id
}), this.handleUpdate);
return !(0, _shallowEqual.default)(this.props, nextProps) && nextProps.visible;
};
_proto.componentDidUpdate = function componentDidUpdate() {
if (this.props.visible && !this.props.usePortal) {
(0, _events.open)(this.getOption(), false);
}
};
_proto.componentWillUnmount = function componentWillUnmount() {
var usePortal = this.props.usePortal;
(0, _events.close)({
id: this.id
});
(0, _events.destroy)(this.id, !usePortal);
};
_proto.getOption = function getOption() {
var _this$props = this.props,
children = _this$props.children,
usePortal = _this$props.usePortal,
visible = _this$props.visible,
props = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["children", "usePortal", "visible"]);
return (0, _objectSpread2.default)({}, props, {
content: children,
id: this.id,
from: 'modal' // overwrite props from
});
};
_proto.handleUpdate = function handleUpdate() {
var destroyProps = this.props.destroy;
if (destroyProps) this.forceUpdate();
};
_proto.render = function render() {
var _this$props2 = this.props,
usePortal = _this$props2.usePortal,
visible = _this$props2.visible;
var option = this.getOption();
if (visible && usePortal) return (0, _events.open)(option, true);
return null;
};
return Modal;
}(_react.Component);
(0, _defineProperty2.default)(Modal, "defaultProps", DefaultValue);
(0, _defineProperty2.default)(Modal, "displayName", void 0);
(0, _defineProperty2.default)(Modal, "info", void 0);
(0, _defineProperty2.default)(Modal, "warn", void 0);
(0, _defineProperty2.default)(Modal, "error", void 0);
(0, _defineProperty2.default)(Modal, "confirm", void 0);
(0, _defineProperty2.default)(Modal, "show", void 0);
(0, _defineProperty2.default)(Modal, "success", void 0);
(0, _defineProperty2.default)(Modal, "closeAll", void 0);
(0, _defineProperty2.default)(Modal, "Submit", void 0);
Modal.displayName = 'ShineoutModal';
var _default = Modal;
exports.default = _default;