@antdv/pro-utils
Version:
@antdv/pro-utils
193 lines (192 loc) • 6.83 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
var stdin_exports = {};
__export(stdin_exports, {
useEditableMap: () => useEditableMap
});
module.exports = __toCommonJS(stdin_exports);
var import_pro_provider = require("@antdv/pro-provider");
var import_ant_design_vue = require("ant-design-vue");
var import_vue = require("vue");
var import_useMergedState = require("../hooks/useMergedState");
var import_useEditableArray = require("../useEditableArray");
function warning(messageStr) {
return (import_ant_design_vue.message.warn || import_ant_design_vue.message.warning)(messageStr);
}
function editableRowByKey({
data,
row
}) {
return __spreadValues(__spreadValues({}, data), row);
}
function useEditableMap(props) {
var _a;
const preEditRowRef = (0, import_vue.ref)(null);
const editableType = props.type || "single";
const intl = (0, import_pro_provider.useIntl)();
const [editableKeys, setEditableRowKeys] = (0, import_useMergedState.useMergedState)([], {
value: (0, import_vue.ref)((_a = props.editableKeys) != null ? _a : []),
onChange: props.onChange ? (keys) => {
var _a2;
(_a2 = props == null ? void 0 : props.onChange) == null ? void 0 : _a2.call(
props,
// 计算编辑的key
keys,
props.dataSource
);
} : void 0
});
const editableKeysSet = (0, import_vue.computed)(() => {
var _a2;
const keys = editableType === "single" ? (_a2 = editableKeys.value) == null ? void 0 : _a2.slice(0, 1) : editableKeys.value;
return new Set(keys);
});
const isEditable = (recordKey) => {
var _a2;
if ((_a2 = editableKeys.value) == null ? void 0 : _a2.includes((0, import_useEditableArray.recordKeyToString)(recordKey))) return true;
return false;
};
const startEditable = (recordKey, recordValue) => {
var _a2;
if (editableKeysSet.value.size > 0 && editableType === "single") {
warning(
props.onlyOneLineEditorAlertMessage || intl.getMessage(
"editableTable.onlyOneLineEditor",
"\u53EA\u80FD\u540C\u65F6\u7F16\u8F91\u4E00\u884C"
)
);
return false;
}
preEditRowRef.value = (_a2 = recordValue != null ? recordValue : (0, import_pro_provider.get)(
props.dataSource,
Array.isArray(recordKey) ? recordKey : [recordKey]
)) != null ? _a2 : null;
editableKeysSet.value.add((0, import_useEditableArray.recordKeyToString)(recordKey));
setEditableRowKeys(Array.from(editableKeysSet.value));
return true;
};
const cancelEditable = (recordKey) => {
editableKeysSet.value.delete((0, import_useEditableArray.recordKeyToString)(recordKey));
setEditableRowKeys(Array.from(editableKeysSet.value));
return true;
};
const onCancel = (recordKey, editRow, originRow, newLine) => __async(this, null, function* () {
var _a2;
const success = yield (_a2 = props == null ? void 0 : props.onCancel) == null ? void 0 : _a2.call(
props,
recordKey,
editRow,
originRow,
newLine
);
if (success === false) {
return false;
}
return true;
});
const onSave = (recordKey, editRow, originRow) => __async(this, null, function* () {
var _a2;
const success = yield (_a2 = props == null ? void 0 : props.onSave) == null ? void 0 : _a2.call(props, recordKey, editRow, originRow);
if (success === false) {
return false;
}
yield cancelEditable(recordKey);
const actionProps = {
data: props.dataSource,
row: editRow,
key: recordKey,
childrenColumnName: props.childrenColumnName || "children"
};
props.setDataSource(editableRowByKey(actionProps));
return true;
});
const saveText = intl.getMessage("editableTable.action.save", "\u4FDD\u5B58");
const deleteText = intl.getMessage("editableTable.action.delete", "\u5220\u9664");
const cancelText = intl.getMessage("editableTable.action.cancel", "\u53D6\u6D88");
const actionRender = (key, config) => {
const renderConfig = __spreadValues({
recordKey: key,
cancelEditable,
onCancel,
onSave,
editableKeys: editableKeys.value,
setEditableRowKeys,
saveText,
cancelText,
// @ts-expect-error
preEditRowRef,
deleteText,
deletePopconfirmMessage: `${intl.getMessage(
"deleteThisLine",
"\u5220\u9664\u6B64\u9879"
)}?`,
editorType: "Map"
}, config);
const renderResult = (0, import_useEditableArray.defaultActionRender)(props.dataSource, renderConfig);
if (props.actionRender) {
return props.actionRender(props.dataSource, renderConfig, {
save: renderResult.save,
delete: renderResult.delete,
cancel: renderResult.cancel
});
}
return [renderResult.save, renderResult.delete, renderResult.cancel];
};
return {
editableKeys,
setEditableRowKeys,
isEditable,
actionRender,
startEditable,
cancelEditable
};
}