UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

98 lines (97 loc) 3.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); var _interop_require_default = require("@swc/helpers/_/_interop_require_default"); var _object_spread = require("@swc/helpers/_/_object_spread"); var _object_spread_props = require("@swc/helpers/_/_object_spread_props"); var _react = /*#__PURE__*/ _interop_require_default._(require("react")); var _dialog = require("./dialog"); var _types = require("../../types"); var _render = require("../../utils/render"); function ConfirmDialog(props) { return /*#__PURE__*/ _react.default.createElement(_dialog.Dialog, props, props.content); } var confirm = function confirm(config, renderFunc) { var div = document.createElement('div'); document.body.appendChild(div); var dialogConfig = (0, _object_spread_props._)((0, _object_spread._)({}, config), { visible: false }); var render = function render(props, callback) { (0, _render.render)(/*#__PURE__*/ _react.default.createElement(ConfirmDialog, (0, _object_spread_props._)((0, _object_spread._)({}, props), { onCancel: function onCancel1() { return onCancel(); } })), div); callback && callback(); }; var renderFunction = renderFunc || render; var onConfirm = function onConfirm() { var _onConfirm = config.onConfirm || config.onConfirm; var ret = _onConfirm === null || _onConfirm === void 0 ? void 0 : _onConfirm(); if (ret && ret.then) { renderFunction(dialogConfig); return ret.then(function() { onCancel(true); }, function(e) { console.error(e); renderFunction(dialogConfig); }); } if (!ret) { onCancel(true); } }; // 如果是promise,那么处理loading和加载完成关闭 dialogConfig.onConfirm = onConfirm; dialogConfig.visible = true; renderFunction(dialogConfig); var destroy = function destroy() { (0, _render.unmount)(div); if (div === null || div === void 0 ? void 0 : div.parentNode) { div.parentNode.removeChild(div); } for(var i = 0; i < _types.destroyList.length; i++){ var fn = _types.destroyList[i]; if (fn === close) { _types.destroyList.splice(i, 1); break; } } }; var onCancel = function onCancel(confirm) { !confirm && config.onCancel && config.onCancel(); dialogConfig.visible = false; dialogConfig.onClose = function() { config.onClose && config.onClose(); }; renderFunction(dialogConfig, function() { destroy(); }); }; var update = function update(newConfig) { dialogConfig = (0, _object_spread._)({}, dialogConfig, newConfig); renderFunction(dialogConfig); }; var close = function close() { dialogConfig.visible = false; dialogConfig.onClose = function() { config.onClose && config.onClose(); destroy(); }; renderFunction(dialogConfig); }; _types.destroyList.push(close); return { close: close, update: update }; }; var _default = confirm;