UNPKG

linkmore-design

Version:

🌈 πŸš€lmη»„δ»ΆεΊ“γ€‚πŸš€

168 lines (165 loc) β€’ 5.32 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = confirm; exports.modalGlobalConfig = modalGlobalConfig; exports.withConfirm = withConfirm; exports.withError = withError; exports.withInfo = withInfo; exports.withSuccess = withSuccess; exports.withWarn = withWarn; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _CheckCircleOutlined = _interopRequireDefault(require("@ant-design/icons/CheckCircleOutlined")); var _CloseCircleOutlined = _interopRequireDefault(require("@ant-design/icons/CloseCircleOutlined")); var _ExclamationCircleOutlined = _interopRequireDefault(require("@ant-design/icons/ExclamationCircleOutlined")); var _InfoCircleOutlined = _interopRequireDefault(require("@ant-design/icons/InfoCircleOutlined")); var _render = require("rc-util/lib/React/render"); var React = _interopRequireWildcard(require("react")); var _configProvider = require("../config-provider"); var _warning = _interopRequireDefault(require("../_util/warning")); var _ConfirmDialog = _interopRequireDefault(require("./ConfirmDialog")); var _destroyFns = _interopRequireDefault(require("./destroyFns")); var _locale = require("./locale"); let defaultRootPrefixCls = ''; function getRootPrefixCls() { return defaultRootPrefixCls; } function confirm(config) { const container = document.createDocumentFragment(); // eslint-disable-next-line @typescript-eslint/no-use-before-define let currentConfig = { ...config, close, open: true }; let timeoutId; function destroy(...args) { const triggerCancel = args.some(param => param && param.triggerCancel); if (config.onCancel && triggerCancel) { config.onCancel(() => {}, ...args.slice(1)); } for (let i = 0; i < _destroyFns.default.length; i++) { const fn = _destroyFns.default[i]; // eslint-disable-next-line @typescript-eslint/no-use-before-define if (fn === close) { _destroyFns.default.splice(i, 1); break; } } (0, _render.unmount)(container); } function render({ okText, cancelText, prefixCls: customizePrefixCls, ...props }) { clearTimeout(timeoutId); /** * https://github.com/ant-design/ant-design/issues/23623 * * Sync render blocks React event. Let's make this async. */ timeoutId = setTimeout(() => { const runtimeLocale = (0, _locale.getConfirmLocale)(); const { getPrefixCls, getIconPrefixCls } = (0, _configProvider.globalConfig)(); // because Modal.config  set rootPrefixCls, which is different from other components const rootPrefixCls = getPrefixCls(undefined, getRootPrefixCls()); const prefixCls = customizePrefixCls || `${rootPrefixCls}-modal`; const iconPrefixCls = getIconPrefixCls(); (0, _render.render)( /*#__PURE__*/React.createElement(_ConfirmDialog.default, (0, _extends2.default)({}, props, { prefixCls: prefixCls, rootPrefixCls: rootPrefixCls, iconPrefixCls: iconPrefixCls, okText: okText || (props.okCancel ? runtimeLocale.okText : runtimeLocale.justOkText), cancelText: cancelText || runtimeLocale.cancelText })), container); }); } function close(...args) { currentConfig = { ...currentConfig, open: false, afterClose: () => { if (typeof config.afterClose === 'function') { config.afterClose(); } destroy.apply(this, args); } }; // Legacy support if (currentConfig.visible) { delete currentConfig.visible; } render(currentConfig); } function update(configUpdate) { if (typeof configUpdate === 'function') { currentConfig = configUpdate(currentConfig); } else { currentConfig = { ...currentConfig, ...configUpdate }; } render(currentConfig); } render(currentConfig); _destroyFns.default.push(close); return { destroy: close, update }; } function withWarn(props) { return { icon: /*#__PURE__*/React.createElement(_ExclamationCircleOutlined.default, null), okCancel: false, ...props, type: 'warning' }; } function withInfo(props) { return { icon: /*#__PURE__*/React.createElement(_InfoCircleOutlined.default, null), okCancel: false, ...props, type: 'info' }; } function withSuccess(props) { return { icon: /*#__PURE__*/React.createElement(_CheckCircleOutlined.default, null), okCancel: false, ...props, type: 'success' }; } function withError(props) { return { icon: /*#__PURE__*/React.createElement(_CloseCircleOutlined.default, null), okCancel: false, ...props, type: 'error' }; } function withConfirm(props) { return { icon: /*#__PURE__*/React.createElement(_ExclamationCircleOutlined.default, null), okCancel: true, ...props, type: 'confirm' }; } function modalGlobalConfig({ rootPrefixCls }) { (0, _warning.default)(false, 'Modal', 'Modal.config is deprecated. Please use ConfigProvider.config instead.'); defaultRootPrefixCls = rootPrefixCls; }