UNPKG

@ucloud-fe/react-components

Version:
436 lines (333 loc) 15.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.destroyAll = exports.openModal = exports.open = exports.confirm = exports.alert = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); 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 _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck")); var _isFunction2 = _interopRequireDefault(require("lodash/isFunction")); var _react = _interopRequireWildcard(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _propTypes = _interopRequireDefault(require("prop-types")); var _Button = _interopRequireDefault(require("../../components/Button")); var _ThemeProvider = _interopRequireDefault(require("../../components/ThemeProvider")); var _LocaleProvider = _interopRequireDefault(require("../../components/LocaleProvider")); var _runtime = require("../../components/ThemeProvider/runtime"); var _runtime2 = require("../../components/LocaleProvider/runtime"); var _warning = _interopRequireDefault(require("../../utils/warning")); var _Modal = _interopRequireDefault(require("./Modal")); var _excluded = ["reportUpdate"], _excluded2 = ["onOk", "onClose"], _excluded3 = ["onOk", "onClose"], _excluded4 = ["onOk", "onClose"]; var _this = void 0; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { 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); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var methodWarning = function methodWarning() { (0, _newArrowCheck2.default)(this, _this); return (0, _warning.default)("You're using a method to call a Modal, this may cause a lot of problems."); }.bind(void 0); var destroyWarning = function destroyWarning() { (0, _newArrowCheck2.default)(this, _this); return (0, _warning.default)("Wrong name of destory, please use destroy to instead"); }.bind(void 0); var i = 0; var getCallUID = function getCallUID() { (0, _newArrowCheck2.default)(this, _this); return '_modal_id_' + i++; }.bind(void 0); var queueMap = {}; var cleanModal = function cleanModal(id) { (0, _newArrowCheck2.default)(this, _this); var modal = queueMap[id]; if (modal && modal.destroy) { modal.destroy(); } delete queueMap[id]; }.bind(void 0); var addModal = function addModal(modal) { (0, _newArrowCheck2.default)(this, _this); var id = getCallUID(); queueMap[id] = modal; return id; }.bind(void 0); var cleanAllModal = function cleanAllModal() { (0, _newArrowCheck2.default)(this, _this); var remainModalCount = Object.keys(queueMap).length; if (remainModalCount) { Object.keys(queueMap).forEach(cleanModal); return remainModalCount; } }.bind(void 0); exports.destroyAll = cleanAllModal; var ContextWrap = function ContextWrap(_ref) { (0, _newArrowCheck2.default)(this, _this); var children = _ref.children; return /*#__PURE__*/_react.default.createElement(_ThemeProvider.default, { theme: (0, _runtime.getRuntimeTheme)() }, /*#__PURE__*/_react.default.createElement(_LocaleProvider.default, { locale: (0, _runtime2.getRuntimeLocale)() }, children)); }.bind(void 0); ContextWrap.propTypes = { children: _propTypes.default.node }; var ModalWrap = /*#__PURE__*/function (_PureComponent) { (0, _inherits2.default)(ModalWrap, _PureComponent); var _super = _createSuper(ModalWrap); function ModalWrap() { var _this3 = this; var _this2; (0, _classCallCheck2.default)(this, ModalWrap); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this2 = _super.call.apply(_super, [this].concat(args)); _this2.update = function (props) { (0, _newArrowCheck2.default)(this, _this3); _this2.setState(_objectSpread({}, props)); }.bind(this); return _this2; } (0, _createClass2.default)(ModalWrap, [{ key: "componentWillMount", value: function componentWillMount() { this.props.reportUpdate(this.update); } }, { key: "render", value: function render() { // eslint-disable-next-line no-unused-vars var _this$props = this.props, reportUpdate = _this$props.reportUpdate, rest = (0, _objectWithoutProperties2.default)(_this$props, _excluded); return /*#__PURE__*/_react.default.createElement(ContextWrap, null, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, { visible: true }, this.state))); } }]); return ModalWrap; }(_react.PureComponent); ModalWrap.propTypes = { reportUpdate: _propTypes.default.func }; var pop = function pop(props) { var _this4 = this; (0, _newArrowCheck2.default)(this, _this); var container = document.createElement('div'); document.body.appendChild(container); var destroy = function destroy() { (0, _newArrowCheck2.default)(this, _this4); var result = _reactDom.default.unmountComponentAtNode(container); if (result && container.parentElement) { container.parentElement.removeChild(container); } }.bind(this); var update = null; _reactDom.default.render( /*#__PURE__*/_react.default.createElement(ModalWrap, (0, _extends2.default)({}, props, { reportUpdate: function (_update) { (0, _newArrowCheck2.default)(this, _this4); return update = _update; }.bind(this) })), container); methodWarning(); var callID = addModal({ destroy: destroy }); return { destory: function destory() { (0, _newArrowCheck2.default)(this, _this4); cleanModal(callID); destroyWarning(); }.bind(this), destroy: function destroy() { (0, _newArrowCheck2.default)(this, _this4); return cleanModal(callID); }.bind(this), update: update }; }.bind(void 0); var openModal = function openModal(modal) { var _this5 = this; (0, _newArrowCheck2.default)(this, _this); var container = document.createElement('div'); document.body.appendChild(container); var destroy = function destroy() { (0, _newArrowCheck2.default)(this, _this5); var result = _reactDom.default.unmountComponentAtNode(container); if (result && container.parentElement) { container.parentElement.removeChild(container); } }.bind(this); _reactDom.default.render( /*#__PURE__*/_react.default.createElement(ContextWrap, null, modal), container); methodWarning(); var callID = addModal({ destroy: destroy }); return { destroy: function destroy() { (0, _newArrowCheck2.default)(this, _this5); return cleanModal(callID); }.bind(this) }; }.bind(void 0); exports.openModal = openModal; var isPromise = function isPromise(promiseLike) { (0, _newArrowCheck2.default)(this, _this); return promiseLike && promiseLike.then && (0, _isFunction2.default)(promiseLike.then); }.bind(void 0); var promiseJudgeHandle = function promiseJudgeHandle(promiseLike, handle) { var _this6 = this; (0, _newArrowCheck2.default)(this, _this); if (isPromise(promiseLike)) { promiseLike.then(function (res) { (0, _newArrowCheck2.default)(this, _this6); handle(); return res; }.bind(this)); } else { handle(); } }.bind(void 0); var alert = function alert(_ref2, content) { var _this7 = this; (0, _newArrowCheck2.default)(this, _this); var _ref2$onOk = _ref2.onOk, onOk = _ref2$onOk === void 0 ? function () { (0, _newArrowCheck2.default)(this, _this7); }.bind(this) : _ref2$onOk, _ref2$onClose = _ref2.onClose, onClose = _ref2$onClose === void 0 ? function () { (0, _newArrowCheck2.default)(this, _this7); }.bind(this) : _ref2$onClose, rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded2); var _onClose = function _onClose() { var _this8 = this; (0, _newArrowCheck2.default)(this, _this7); return promiseJudgeHandle(onClose(), function () { (0, _newArrowCheck2.default)(this, _this8); return modal.destroy(); }.bind(this)); }.bind(this); var _onOk = function _onOk() { var _this9 = this; (0, _newArrowCheck2.default)(this, _this7); return promiseJudgeHandle(onOk(), function () { (0, _newArrowCheck2.default)(this, _this9); return modal.destroy(); }.bind(this)); }.bind(this); var AlertFooter = function AlertFooter(_ref3) { (0, _newArrowCheck2.default)(this, _this7); var locale = _ref3.locale; return /*#__PURE__*/_react.default.createElement(_Button.default, { size: "lg", styleType: "primary", onClick: _onOk }, locale.confirm); }.bind(this); AlertFooter.propTypes = { locale: _propTypes.default.object.isRequired }; var options = { children: content, maskClosable: false, size: 'sm', title: 'Alert', onClose: _onClose, footer: AlertFooter }; var modal = pop(_objectSpread(_objectSpread({}, options), rest)); return modal; }.bind(void 0); exports.alert = alert; var confirm = function confirm(_ref4, content) { var _this10 = this; (0, _newArrowCheck2.default)(this, _this); var _ref4$onOk = _ref4.onOk, onOk = _ref4$onOk === void 0 ? function () { (0, _newArrowCheck2.default)(this, _this10); }.bind(this) : _ref4$onOk, _ref4$onClose = _ref4.onClose, onClose = _ref4$onClose === void 0 ? function () { (0, _newArrowCheck2.default)(this, _this10); }.bind(this) : _ref4$onClose, rest = (0, _objectWithoutProperties2.default)(_ref4, _excluded3); var _onClose = function _onClose() { var _this11 = this; (0, _newArrowCheck2.default)(this, _this10); return promiseJudgeHandle(onClose(), function () { (0, _newArrowCheck2.default)(this, _this11); return modal.destroy(); }.bind(this)); }.bind(this); var _onOk = function _onOk() { var _this12 = this; (0, _newArrowCheck2.default)(this, _this10); return promiseJudgeHandle(onOk(), function () { (0, _newArrowCheck2.default)(this, _this12); return modal.destroy(); }.bind(this)); }.bind(this); var options = { children: content, maskClosable: false, size: 'sm', title: 'Confirm', onClose: _onClose, onOk: _onOk }; var modal = pop(_objectSpread(_objectSpread({}, options), rest)); return modal; }.bind(void 0); exports.confirm = confirm; var open = function open(_ref5, content) { var _this13 = this; (0, _newArrowCheck2.default)(this, _this); var _ref5$onOk = _ref5.onOk, onOk = _ref5$onOk === void 0 ? function () { (0, _newArrowCheck2.default)(this, _this13); }.bind(this) : _ref5$onOk, _ref5$onClose = _ref5.onClose, onClose = _ref5$onClose === void 0 ? function () { (0, _newArrowCheck2.default)(this, _this13); }.bind(this) : _ref5$onClose, rest = (0, _objectWithoutProperties2.default)(_ref5, _excluded4); var _onClose = function _onClose() { var _this14 = this; (0, _newArrowCheck2.default)(this, _this13); return promiseJudgeHandle(onClose(), function () { (0, _newArrowCheck2.default)(this, _this14); return modal.destroy(); }.bind(this)); }.bind(this); var _onOk = function _onOk() { var _this15 = this; (0, _newArrowCheck2.default)(this, _this13); return promiseJudgeHandle(onOk(), function () { (0, _newArrowCheck2.default)(this, _this15); return modal.destroy(); }.bind(this)); }.bind(this); var options = _objectSpread({ children: content, onClose: _onClose, onOk: _onOk }, rest); var modal = pop(options); return modal; }.bind(void 0); exports.open = open;