acud
Version:
acg react 组件库
104 lines • 2.91 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import React from 'react';
// import {render as reactRender, unmount} from 'rc-util/lib/React/render';
import DialogBox from './DialogBox';
import { unstableSetRender } from '../config-provider/UnstableContext';
var destroyFns = [];
function renderDialogBox(config) {
var reactRender = unstableSetRender();
var unmount;
var currentConfig = _extends(_extends({}, config), {
visible: true,
onClose: close
});
var container = config.getContainer ? typeof config.getContainer === 'function' ? config.getContainer() : config.getContainer : document.createDocumentFragment();
function render(dialogConfig) {
setTimeout(function () {
unmount = reactRender(/*#__PURE__*/React.createElement(DialogBox, dialogConfig), container);
});
}
function destroy() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var triggerCancel = args.some(function (param) {
return param && param.triggerCancel;
});
if (config.onCancel && triggerCancel) {
// @ts-ignore
config.onCancel.apply(config, args);
}
for (var i = 0; i < destroyFns.length; i++) {
var fn = destroyFns[i];
if (fn === close) {
destroyFns.splice(i, 1);
break;
}
}
if (unmount) {
unmount();
}
}
function close() {
var _this = this;
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
render(_extends(_extends({}, currentConfig), {
visible: false,
afterClose: function afterClose() {
if (typeof config.afterClose === 'function') {
config.afterClose();
}
destroy.apply(_this, args);
}
}));
}
render(currentConfig);
destroyFns.push(close);
return {
destroy: close
};
}
export function destroyAll() {
while (destroyFns.length) {
var close = destroyFns.pop();
if (close) {
close();
}
}
}
export function confirm(config) {
return renderDialogBox(_extends(_extends({}, config), {
type: 'confirm',
cancelBtn: true
}));
}
export function success(config) {
return renderDialogBox(_extends(_extends({}, config), {
type: 'success',
cancelBtn: false,
okText: config.okText
}));
}
export function info(config) {
return renderDialogBox(_extends(_extends({}, config), {
type: 'info',
cancelBtn: false,
okText: config.okText
}));
}
export function warning(config) {
return renderDialogBox(_extends(_extends({}, config), {
type: 'warning',
cancelBtn: false,
okText: config.okText
}));
}
export function error(config) {
return renderDialogBox(_extends(_extends({}, config), {
type: 'error',
cancelBtn: false,
okText: config.okText
}));
}