UNPKG

nbit-arco

Version:

Arco Design React UI Library.

60 lines (59 loc) 2.15 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import React, { createRef } from 'react'; import ContextHolderElement from './contextHolder'; import HookModal from './hookModal'; import { normalizeConfig } from '../confirm'; import { destroyList } from '../config'; function useModal() { var contextHolderRef = createRef(); var holderEle = React.createElement(ContextHolderElement, { ref: contextHolderRef }); var uuid = 0; function addNewModal(config) { uuid += 1; var modalRef = createRef(); function afterClose() { config.afterClose && config.afterClose(); removeModalInstance(); } var modal = (React.createElement(HookModal, __assign({ key: uuid, ref: modalRef }, normalizeConfig(config), { afterClose: afterClose }))); contextHolderRef.current.addInstance(modal); function removeModalInstance() { contextHolderRef.current.removeInstance(modal); } function close() { var _a; (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.close(); } function update(config) { var _a; (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.update(config); } destroyList.push(close); return { close: close, update: update, }; } var modalFuncs = { confirm: function (config) { return addNewModal(__assign({}, config)); }, }; ['info', 'success', 'warning', 'error'].forEach(function (type) { modalFuncs[type] = function (config) { return addNewModal(__assign(__assign({}, config), { isNotice: true, noticeType: type })); }; }); return [modalFuncs, holderEle]; } export default useModal;