UNPKG

tdesign-vue-next

Version:
363 lines (355 loc) 15.1 kB
/** * tdesign v1.20.5 * (c) 2026 tdesign * @license MIT */ 'use strict'; 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