UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

177 lines (176 loc) 9.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CommonModal = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importDefault(require("react")); var utils_1 = require("../../utils"); var helper_1 = require("../../../../utils/helper"); var tpl_1 = require("../../../../utils/tpl"); var antd_1 = require("antd"); var icons_1 = require("../../../../components/icons"); var CommonModal = function (_a) { var props = _a.props, dialogShow = _a.dialogShow, drawerShow = _a.drawerShow, tableStore = _a.tableStore, crudRef = _a.crudRef, showTableEditWarmModal = _a.showTableEditWarmModal, handleAction = _a.handleAction, search = _a.search, afterSearchFn = _a.afterSearchFn, reloadTarget = _a.reloadTarget, control = _a.control; var store = props.store, render = props.render, env = props.env, translate = props.translate; var baseModalConfirm = function (type) { return function (values, action, ctx, components) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var store, pageField, tableRows, dialogAction, count, value, component, reload_1, reload, redirect; var _a; var _b, _c, _d; return tslib_1.__generator(this, function (_e) { store = props.store, pageField = props.pageField; // Jay 下一个、上一个不用关闭 if (!['next', 'prev'].includes(action.actionType || '')) { switch (type) { case 'drawer': default: store.closeDrawer(true); break; case 'dialog': store.closeDialog(true); break; } } tableRows = (0, utils_1.getTableRowsData)(store, tableStore); dialogAction = store.action; // 自动聚焦第一个搜索栏,释放内存 (0, helper_1.functionInOneFrame)(function () { var _a, _b; return (_b = (_a = crudRef === null || crudRef === void 0 ? void 0 : crudRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('input[type="text"]')) === null || _b === void 0 ? void 0 : _b.focus(); }); if (['next', 'prev'].includes(action.actionType || '') && typeof ctx.nextIndex === 'number' && tableRows[ctx.nextIndex]) { if (tableStore) { count = tableStore.modified; if (count > 0) { showTableEditWarmModal(); return [2 /*return*/]; } } return [2 /*return*/, handleAction(undefined, tslib_1.__assign({}, dialogAction), (0, helper_1.createObject)((0, helper_1.createObject)(store.data, { index: ctx.nextIndex // Jay // initApiDisable: 0 }), tableRows[ctx.nextIndex]))]; } else if (values.length) { value = values[0]; ctx = (0, helper_1.createObject)(ctx, value); component = components[0]; // 提交来自 form if (component && component.props.type === 'form') { // 数据保存了,说明列表数据已经无效了,重新刷新。 if (value && value.__saved) { reload_1 = (_b = action.reload) !== null && _b !== void 0 ? _b : dialogAction.reload; // 配置了 reload 则跳过自动更新。 reload_1 || search(dialogAction.__from ? (_a = {}, _a[pageField || 'page'] = 1, _a) : undefined, undefined, true, true, afterSearchFn); } else if (value && ((value.hasOwnProperty('items') && value.items) || value.hasOwnProperty('ids')) && control.bulkUpdate) { control.bulkUpdate(value, value.items); } } } reload = (_c = action.reload) !== null && _c !== void 0 ? _c : dialogAction.reload; if (reload) { reloadTarget(reload, ctx); } redirect = (_d = action.redirect) !== null && _d !== void 0 ? _d : dialogAction.redirect; if (redirect) { env.jumpTo((0, tpl_1.filter)(redirect, ctx), dialogAction); } return [2 /*return*/]; }); }); }; }; var handleBaseModalClose = function (type) { return function (confirmed, formInstance, tableInstance) { // 自动聚焦第一个搜索栏,释放内存 (0, helper_1.functionInOneFrame)(function () { var _a, _b; return (_b = (_a = crudRef === null || crudRef === void 0 ? void 0 : crudRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('input[type="text"]')) === null || _b === void 0 ? void 0 : _b.focus(); }); if (tableInstance) { var count = tableInstance.props.store.modified; if (count > 0) { showTableEditWarmModal(); return; } } // Jay if (formInstance) { var promptPageLeave = formInstance.props.promptPageLeave; if (promptPageLeave && formInstance.is_edit) { antd_1.Modal.confirm({ title: (react_1.default.createElement("div", null, "\u63D0\u793A", react_1.default.createElement("div", { style: { position: 'absolute', right: '10px', top: '10px', fontSize: '12px', cursor: "pointer" }, onClick: function () { antd_1.Modal.destroyAll(); } }, react_1.default.createElement(icons_1.Icon, { icon: "close", className: "icon" })))), content: '新的修改没有保存,确认要离开?', getContainer: env.getModalContainer, zIndex: 1020, okText: translate('confirm'), cancelText: translate('cancel'), onOk: function () { return closeModal(type); }, className: 'ant-modal-adaptation-style' }); return; } } closeModal(type); }; }; var handleDialogConfirm = function (values, action, ctx, components) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, baseModalConfirm('dialog')(values, action, ctx, components)]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; var handleDrawerConfirm = function (values, action, ctx, components) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, baseModalConfirm('drawer')(values, action, ctx, components)]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; var closeModal = function (type) { if (type === void 0) { type = 'dialog'; } switch (type) { case 'dialog': store.closeDialog(); break; case 'drawer': store.closeDrawer(); break; } }; var handleDialogClose = function (confirmed, formInstance, tableInstance) { return handleBaseModalClose('dialog')(confirmed, formInstance, tableInstance); }; var handleDrawerClose = function (confirmed, formInstance, tableInstance) { return handleBaseModalClose('drawer')(confirmed, formInstance, tableInstance); }; return react_1.default.createElement(react_1.default.Fragment, null, dialogShow ? render('dialog', tslib_1.__assign(tslib_1.__assign({}, (store.action && store.action.dialog)), { type: 'dialog' }), { key: 'dialog', data: store.dialogData, onConfirm: handleDialogConfirm, onClose: handleDialogClose, show: store.dialogOpen, replace: store.replace }) : null, drawerShow ? render('drawer', tslib_1.__assign(tslib_1.__assign({}, (store.action && store.action.drawer)), { type: 'drawer' }), { key: 'drawer', data: store.drawerData, onConfirm: handleDrawerConfirm, onClose: handleDrawerClose, show: store.drawerOpen, onAction: handleAction, }) : null); }; exports.CommonModal = CommonModal; //# sourceMappingURL=./renderers/CRUD/components/Modals/CommonModal.js.map