fastlion-amis
Version:
一种MIS页面生成工具
177 lines (176 loc) • 9.57 kB
JavaScript
;
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