tdesign-vue-next
Version:
TDesign Component for vue-next
363 lines (355 loc) • 15.1 kB
JavaScript
/**
* tdesign v1.20.5
* (c) 2026 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var Vue = require('vue');
var utils = require('../../_chunks/dep-b5414b56.js');
var form_utils_formModel = require('../../form/utils/form-model.js');
var table_hooks_useRowspanAndColspan = require('./useRowspanAndColspan.js');
var get = require('../../_chunks/dep-6f400677.js');
var isFunction = require('../../_chunks/dep-2d37d5cd.js');
var cloneDeep = require('../../_chunks/dep-2a3acdc6.js');
var set = require('../../_chunks/dep-f1d3057a.js');
require('@babel/runtime/helpers/asyncToGenerator');
require('@babel/runtime/regenerator');
require('../../_chunks/dep-cd7082a8.js');
require('../../_chunks/dep-34d7ffcd.js');
require('@babel/runtime/helpers/objectWithoutProperties');
require('../../_chunks/dep-df734b78.js');
require('../../_chunks/dep-7ea4d038.js');
require('../../_chunks/dep-68db1aaa.js');
require('../../_chunks/dep-769d7974.js');
require('@babel/runtime/helpers/typeof');
require('../../_chunks/dep-623344fa.js');
require('../../_chunks/dep-1016d4fa.js');
require('../../_chunks/dep-1afc7792.js');
require('../../_chunks/dep-1f44260a.js');
require('../../_chunks/dep-34f739da.js');
require('../../_chunks/dep-d22c1428.js');
require('../../_chunks/dep-4c389805.js');
require('../../_chunks/dep-c2be3f4f.js');
require('../../_chunks/dep-33b91282.js');
require('../../_chunks/dep-6b6b1c14.js');
require('../../_chunks/dep-b9732182.js');
require('../../_chunks/dep-d5d74f83.js');
require('../../_chunks/dep-eb816459.js');
require('../../_chunks/dep-8ed924be.js');
require('../../_chunks/dep-4236e391.js');
require('../../_chunks/dep-8dbc3afe.js');
require('../../_chunks/dep-6c33e8ba.js');
require('../../_chunks/dep-96f790a8.js');
require('../../_chunks/dep-a8736751.js');
require('../../_chunks/dep-b23043e8.js');
require('../../_chunks/dep-6a34d9fa.js');
require('../../_chunks/dep-ad4b6f61.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function useRowEdit(props) {
var _toRefs = Vue.toRefs(props),
editableRowKeys = _toRefs.editableRowKeys;
var cellRuleMap = /* @__PURE__ */new Map();
var errorListMap = Vue.ref({});
var editableKeysMap = Vue.computed(function () {
return utils.getEditableKeysMap(props.editableRowKeys, props.data, props.rowKey || "id");
});
var editingCells = Vue.ref({});
var editedFormData = Vue.ref({});
var editableCellRefMap = Vue.ref({});
var getErrorListMapByErrors = function getErrorListMapByErrors(errors) {
var errorMap = {};
errors.forEach(function (_ref) {
var row = _ref.row,
col = _ref.col,
errorList = _ref.errorList;
var rowValue = get.get(row, props.rowKey || "id");
var key = [rowValue, col.colKey].join("__");
if (errorList !== null && errorList !== void 0 && errorList.length) {
errorMap[key] = errorList;
} else {
delete errorMap[key];
}
});
return errorMap;
};
var validateOneRowData = function validateOneRowData(rowValue) {
var rowRules = cellRuleMap.get(rowValue);
if (!rowRules) return;
var list = rowRules.map(function (item) {
return new Promise(function (resolve) {
var editedRow = item.editedRow,
col = item.col;
var rules = isFunction.isFunction(col.edit.rules) ? col.edit.rules(item) : col.edit.rules;
if (!col.edit || !rules || !rules.length) {
resolve(_objectSpread(_objectSpread({}, item), {}, {
errorList: []
}));
return;
}
form_utils_formModel.validate(get.get(editedRow, col.colKey), rules).then(function (r) {
resolve(_objectSpread(_objectSpread({}, item), {}, {
errorList: r.filter(function (t) {
return !t.result;
})
}));
});
});
});
return new Promise(function (resolve, reject) {
Promise.all(list).then(function (errors) {
resolve({
errors: errors.filter(function (t) {
var _t$errorList;
return (_t$errorList = t.errorList) === null || _t$errorList === void 0 ? void 0 : _t$errorList.length;
}),
errorMap: getErrorListMapByErrors(errors)
});
}, reject);
});
};
var validateRowData = function validateRowData(rowValue) {
return new Promise(function (resolve, reject) {
validateOneRowData(rowValue).then(function (_ref2) {
var _props$onRowValidate;
var errors = _ref2.errors,
errorMap = _ref2.errorMap;
errorListMap.value = errorMap;
var tTrigger = "parent";
(_props$onRowValidate = props.onRowValidate) === null || _props$onRowValidate === void 0 || _props$onRowValidate.call(props, {
trigger: tTrigger,
result: errors
});
resolve({
trigger: tTrigger,
result: errors
});
}, reject);
});
};
var _getKeepEditColumns = function getKeepEditColumns() {
var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var result = [];
columns.forEach(function (col) {
var _col$edit, _col$edit2, _col$children;
if ((_col$edit = col.edit) !== null && _col$edit !== void 0 && _col$edit.component && (_col$edit2 = col.edit) !== null && _col$edit2 !== void 0 && _col$edit2.keepEditMode) {
result.push(col);
}
if ((_col$children = col.children) !== null && _col$children !== void 0 && _col$children.length) {
result.push.apply(result, _toConsumableArray__default["default"](_getKeepEditColumns(col.children)));
}
});
return result;
};
var validateTableCellData = function validateTableCellData() {
var existKeys = props.data.map(function (v) {
var _v$props$rowKey;
return (_v$props$rowKey = v[props.rowKey]) === null || _v$props$rowKey === void 0 ? void 0 : _v$props$rowKey.toString();
});
var editingCellKeys = Object.keys(editingCells.value).filter(function (v) {
return existKeys.includes(table_hooks_useRowspanAndColspan.getRowKeyFromCell(v));
});
var keepEditColumns = _getKeepEditColumns(props.columns);
var keepEditColKeys = new Set(keepEditColumns.map(function (col) {
return col.colKey;
}));
var promiseList = [];
editingCellKeys.forEach(function (cellKey) {
var context = editingCells.value[cellKey];
if (keepEditColKeys.has(context.col.colKey)) return;
var rowValue = get.get(context.row, props.rowKey || "id");
promiseList.push(context.validateEdit("parent").then(function (result) {
return {
cellKey: cellKey,
persistKey: [rowValue, context.col.colKey].join("__"),
errorList: result === true ? [] : result
};
}));
});
keepEditColumns.forEach(function (col) {
props.data.forEach(function (row, rowIndex) {
var rowValue = get.get(row, props.rowKey || "id");
var editedRow = editedFormData.value[rowValue];
var value = editedRow ? get.get(editedRow, col.colKey) : get.get(row, col.colKey);
var cellKey = table_hooks_useRowspanAndColspan.getCellKey(row, props.rowKey || "id", col.colKey, 0, rowIndex);
var persistKey = [rowValue, col.colKey].join("__");
var params = {
row: row,
col: col,
rowIndex: rowIndex,
colIndex: 0
};
var rules = isFunction.isFunction(col.edit.rules) ? col.edit.rules(params) : col.edit.rules;
if (!rules || !rules.length) return;
promiseList.push(form_utils_formModel.validate(value, rules).then(function (r) {
return {
cellKey: cellKey,
persistKey: persistKey,
errorList: r.filter(function (t) {
return !t.result;
})
};
}));
});
});
return new Promise(function (resolve, reject) {
Promise.all(promiseList).then(function (arr) {
var _props$onValidate;
var allErrorListMap = {};
var persistentErrorMap = {};
arr.forEach(function (_ref3) {
var cellKey = _ref3.cellKey,
persistKey = _ref3.persistKey,
errorList = _ref3.errorList;
if (errorList !== null && errorList !== void 0 && errorList.length) {
allErrorListMap[cellKey] = errorList;
persistentErrorMap[persistKey] = errorList;
}
});
errorListMap.value = persistentErrorMap;
(_props$onValidate = props.onValidate) === null || _props$onValidate === void 0 || _props$onValidate.call(props, {
result: allErrorListMap
});
resolve({
result: allErrorListMap
});
}, reject);
});
};
var validateTableData = function validateTableData() {
if (Object.keys(editingCells.value).length) {
return validateTableCellData();
}
var promiseList = [];
var data = props.data || [];
for (var i = 0, len = data.length; i < len; i++) {
var rowValue = get.get(data[i], props.rowKey || "id");
promiseList.push(validateOneRowData(rowValue));
}
return new Promise(function (resolve, reject) {
Promise.all(promiseList).then(function (rList) {
var _props$onValidate2;
var allErrorListMap = {};
rList.forEach(function () {
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
errors: [],
errorMap: {}
},
errorMap = _ref4.errorMap;
errorMap && Object.assign(allErrorListMap, errorMap);
});
errorListMap.value = allErrorListMap;
(_props$onValidate2 = props.onValidate) === null || _props$onValidate2 === void 0 || _props$onValidate2.call(props, {
result: allErrorListMap
});
resolve({
result: allErrorListMap
});
}, reject);
});
};
var onUpdateEditedCell = function onUpdateEditedCell(rowValue, lastRowData, data) {
if (!editedFormData.value[rowValue]) {
editedFormData.value[rowValue] = cloneDeep.cloneDeep(lastRowData);
}
Object.entries(data).forEach(function (_ref5) {
var _ref6 = _slicedToArray__default["default"](_ref5, 2),
key = _ref6[0],
val = _ref6[1];
set.set(editedFormData.value[rowValue], key, val);
});
};
var onRuleChange = function onRuleChange(context) {
if (props.editableRowKeys) {
var rowValue = get.get(context.row, props.rowKey || "id");
var rules = cellRuleMap.get(rowValue);
if (rules) {
var index = rules.findIndex(function (t) {
return t.col.colKey === context.col.colKey;
});
if (index === -1) {
rules.push(context);
} else {
rules[index] = context;
}
cellRuleMap.set(rowValue, rules);
} else {
cellRuleMap.set(rowValue, [context]);
}
}
};
var clearValidateRowData = function clearValidateRowData() {
errorListMap.value = {};
};
var onCellInstanceChange = function onCellInstanceChange(cellKey, instance) {
if (instance) {
editableCellRefMap.value[cellKey] = instance;
} else {
delete editableCellRefMap.value[cellKey];
}
};
var clearAllEditableCellData = function clearAllEditableCellData() {
Object.keys(editableCellRefMap.value).forEach(function (cellKey) {
var _editableCellRefMap$v, _editableCellRefMap$v2;
(_editableCellRefMap$v = editableCellRefMap.value[cellKey]) === null || _editableCellRefMap$v === void 0 || (_editableCellRefMap$v2 = _editableCellRefMap$v.clearValidateCellData) === null || _editableCellRefMap$v2 === void 0 || _editableCellRefMap$v2.call(_editableCellRefMap$v);
});
};
var onPrimaryTableCellEditChange = function onPrimaryTableCellEditChange(params) {
var cellKey = table_hooks_useRowspanAndColspan.getCellKey(params.row, props.rowKey, params.col.colKey, params.colIndex);
if (params.isEdit) {
editingCells.value[cellKey] = params;
} else {
delete editingCells.value[cellKey];
}
};
var getEditRowData = function getEditRowData(_ref7) {
var _props$editableRowKey;
var row = _ref7.row,
col = _ref7.col;
var rowValue = get.get(row, props.rowKey || "id");
var editedRowData = editedFormData.value[rowValue];
if (editedRowData && (_props$editableRowKey = props.editableRowKeys) !== null && _props$editableRowKey !== void 0 && _props$editableRowKey.includes(rowValue)) {
var tmpRow = _objectSpread({}, editedRowData);
set.set(tmpRow, col.colKey, get.get(editedRowData, col.colKey));
return tmpRow;
}
return row;
};
Vue.watch(function () {
var _editableRowKeys$valu;
return (_editableRowKeys$valu = editableRowKeys.value) === null || _editableRowKeys$valu === void 0 ? void 0 : _editableRowKeys$valu.join(",");
}, function (keyStr) {
var editableRowKeys2 = keyStr.split(",");
var rowValueList = Object.keys(editedFormData.value);
rowValueList.forEach(function (key) {
if (!editableRowKeys2.includes(key)) {
delete editedFormData.value[key];
}
});
});
return {
editedFormData: editedFormData,
errorListMap: errorListMap,
editableKeysMap: editableKeysMap,
validateTableData: validateTableData,
validateTableCellData: validateTableCellData,
validateRowData: validateRowData,
onRuleChange: onRuleChange,
clearValidateRowData: clearValidateRowData,
clearAllEditableCellData: clearAllEditableCellData,
onCellInstanceChange: onCellInstanceChange,
onUpdateEditedCell: onUpdateEditedCell,
getEditRowData: getEditRowData,
onPrimaryTableCellEditChange: onPrimaryTableCellEditChange
};
}
exports["default"] = useRowEdit;
//# sourceMappingURL=useEditableRow.js.map