UNPKG

@douyinfe/semi-ui

Version:

A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.

101 lines (100 loc) 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = confirm; exports.withConfirm = withConfirm; exports.withError = withError; exports.withInfo = withInfo; exports.withSuccess = withSuccess; exports.withWarning = withWarning; var _omit2 = _interopRequireDefault(require("lodash/omit")); var _react = _interopRequireDefault(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _Modal = require("./Modal"); var _ConfirmModal = _interopRequireDefault(require("./ConfirmModal")); require("@douyinfe/semi-foundation/lib/cjs/modal/modal.css"); var _semiIcons = require("@douyinfe/semi-icons"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function confirm(props) { // create a dom in adapter? const div = document.createElement('div'); document.body.appendChild(div); let currentConfig = Object.assign({}, props); const destroy = () => { const unmountResult = _reactDom.default.unmountComponentAtNode(div); if (unmountResult && div.parentNode) { div.parentNode.removeChild(div); } for (let i = 0; i < _Modal.destroyFns.length; i++) { const fn = _Modal.destroyFns[i]; if (fn === close) { _Modal.destroyFns.splice(i, 1); break; } } }; function render(renderProps) { const { afterClose } = renderProps; //@ts-ignore _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_ConfirmModal.default, Object.assign({}, renderProps, { afterClose: function () { //@ts-ignore afterClose === null || afterClose === void 0 ? void 0 : afterClose(...arguments); destroy(); }, motion: props.motion })), div); } function close() { currentConfig = Object.assign(Object.assign({}, currentConfig), { visible: false }); render(currentConfig); } function update(newConfig) { currentConfig = Object.assign(Object.assign({}, currentConfig), newConfig); render(currentConfig); } render(currentConfig); _Modal.destroyFns.push(close); return { destroy: close, update }; } function withInfo(props) { return Object.assign({ type: 'info', icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconInfoCircle, null) }, props); } function withSuccess(props) { return Object.assign({ type: 'success', icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconTickCircle, null) }, props); } function withWarning(props) { return Object.assign({ type: 'warning', icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconAlertTriangle, null) }, props); } function withError(props) { return Object.assign({ type: 'error', icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconAlertCircle, null), okButtonProps: Object.assign({ type: 'danger' }, props.okButtonProps) }, (0, _omit2.default)(props, ['okButtonProps'])); } function withConfirm(props) { return Object.assign({ type: 'confirm', icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconHelpCircle, null) }, props); }