tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 19 kB
Source Map (JSON)
{"version":3,"file":"useEditableRow.mjs","sources":["../../../../components/table/hooks/useEditableRow.ts"],"sourcesContent":["import { ref, computed, watch, toRefs } from 'vue';\nimport { get, set, cloneDeep, isFunction } from 'lodash-es';\n\nimport { PrimaryTableProps } from '../types';\nimport { getEditableKeysMap } from '@tdesign/common-js/table/utils';\nimport { validate } from '../../form/utils/form-model';\n\nimport {\n PrimaryTableRowEditContext,\n TableRowData,\n TableErrorListMap,\n PrimaryTableInstanceFunctions,\n ErrorListObjectType,\n PrimaryTableCellParams,\n} from '../type';\nimport { getCellKey, getRowKeyFromCell } from './useRowspanAndColspan';\nimport { OnEditableChangeContext } from '../components/editable-cell';\n\nexport interface TablePromiseErrorData {\n errors: ErrorListObjectType<TableRowData>[];\n errorMap: TableErrorListMap;\n}\n\nexport default function useRowEdit(props: PrimaryTableProps) {\n const { editableRowKeys } = toRefs(props);\n const cellRuleMap = new Map<any, PrimaryTableRowEditContext<TableRowData>[]>();\n // 校验不通过的错误信息,其中 key 值为 [rowValue, col.colKey].join('__')\n const errorListMap = ref<TableErrorListMap>({});\n // 处于编辑态的表格行\n const editableKeysMap = computed(() => getEditableKeysMap(props.editableRowKeys, props.data, props.rowKey || 'id'));\n // 当前编辑的单元格\n const editingCells = ref<{ [cellKey: string]: OnEditableChangeContext<TableRowData> }>({});\n // 编辑状态的数据\n const editedFormData = ref<{ [rowValue: string]: { [colKey: string]: any } }>({});\n\n const getErrorListMapByErrors = (errors: ErrorListObjectType<TableRowData>[]): TableErrorListMap => {\n const errorMap: TableErrorListMap = {};\n errors.forEach(({ row, col, errorList }) => {\n const rowValue = get(row, props.rowKey || 'id');\n const key = [rowValue, col.colKey].join('__');\n if (errorList?.length) {\n errorMap[key] = errorList;\n } else {\n delete errorMap[key];\n }\n });\n return errorMap;\n };\n\n // 校验一行的数据\n const validateOneRowData = (rowValue: any) => {\n const rowRules = cellRuleMap.get(rowValue);\n if (!rowRules) return;\n const list = rowRules.map(\n (item) =>\n new Promise<ErrorListObjectType<TableRowData>>((resolve) => {\n const { editedRow, col } = item;\n const rules = isFunction(col.edit.rules) ? col.edit.rules(item) : col.edit.rules;\n if (!col.edit || !rules || !rules.length) {\n resolve({ ...item, errorList: [] });\n return;\n }\n validate(get(editedRow, col.colKey), rules).then((r) => {\n resolve({ ...item, errorList: r.filter((t) => !t.result) });\n });\n }),\n );\n return new Promise<TablePromiseErrorData>((resolve, reject) => {\n Promise.all(list).then((errors) => {\n resolve({\n errors: errors.filter((t) => t.errorList?.length),\n errorMap: getErrorListMapByErrors(errors),\n });\n }, reject);\n });\n };\n\n /**\n * 校验表格单行数据(对外开放方法,修改时需慎重)\n * @param rowValue 行唯一标识\n */\n const validateRowData: PrimaryTableInstanceFunctions['validateRowData'] = (rowValue: any) =>\n new Promise((resolve, reject) => {\n validateOneRowData(rowValue).then(({ errors, errorMap }) => {\n errorListMap.value = errorMap;\n // 缺少校验文本显示\n const tTrigger = 'parent';\n props.onRowValidate?.({ trigger: tTrigger, result: errors });\n resolve({ trigger: tTrigger, result: errors });\n }, reject);\n });\n\n // 校验可编辑单元格\n const validateTableCellData = (): Promise<{ result: TableErrorListMap }> => {\n const cellKeys = Object.keys(editingCells.value);\n\n // 过滤不存在的行,如删除操作\n const existKeys = props.data.map((v) => v[props.rowKey]?.toString());\n const promiseList = cellKeys\n .filter((v) => existKeys.includes(getRowKeyFromCell(v)))\n .map((cellKey) => editingCells.value[cellKey].validateEdit('parent'));\n return new Promise((resolve, reject) => {\n Promise.all(promiseList).then((arr) => {\n const allErrorListMap: TableErrorListMap = {};\n arr.forEach((result, index) => {\n if (result === true) return;\n allErrorListMap[cellKeys[index]] = result;\n });\n props.onValidate?.({ result: allErrorListMap });\n resolve({ result: allErrorListMap });\n }, reject);\n });\n };\n\n /**\n * 校验整个表格数据(对外开放方法,修改时需慎重)\n */\n const validateTableData: PrimaryTableInstanceFunctions['validateTableData'] = () => {\n if (Object.keys(editingCells.value).length) {\n return validateTableCellData();\n }\n const promiseList: Promise<TablePromiseErrorData>[] = [];\n\n const data = props.data || [];\n for (let i = 0, len = data.length; i < len; i++) {\n const rowValue = get(data[i], props.rowKey || 'id');\n promiseList.push(validateOneRowData(rowValue));\n }\n return new Promise((resolve, reject) => {\n Promise.all(promiseList).then((rList) => {\n const allErrorListMap: TableErrorListMap = {};\n rList.forEach(({ errorMap } = { errors: [], errorMap: {} }) => {\n errorMap && Object.assign(allErrorListMap, errorMap);\n });\n errorListMap.value = allErrorListMap;\n props.onValidate?.({ result: allErrorListMap });\n resolve({ result: allErrorListMap });\n }, reject);\n });\n };\n\n /** 更新编辑态单元格数据 */\n const onUpdateEditedCell = (rowValue: any, lastRowData: TableRowData, data: { [key: string]: any }) => {\n if (!editedFormData.value[rowValue]) {\n editedFormData.value[rowValue] = cloneDeep(lastRowData);\n }\n Object.entries(data).forEach(([key, val]) => {\n set(editedFormData.value[rowValue], key, val);\n });\n };\n\n const onRuleChange = (context: PrimaryTableRowEditContext<TableRowData>) => {\n // 编辑行,预存校验信息,方便最终校验\n if (props.editableRowKeys) {\n const rowValue = get(context.row, props.rowKey || 'id');\n const rules = cellRuleMap.get(rowValue);\n if (rules) {\n const index = rules.findIndex((t) => t.col.colKey === context.col.colKey);\n if (index === -1) {\n rules.push(context);\n } else {\n rules[index] = context;\n }\n cellRuleMap.set(rowValue, rules);\n } else {\n cellRuleMap.set(rowValue, [context]);\n }\n }\n };\n\n const clearValidateData = () => {\n errorListMap.value = {};\n };\n\n const onPrimaryTableCellEditChange = (params: OnEditableChangeContext<TableRowData>) => {\n const cellKey = getCellKey(params.row, props.rowKey, params.col.colKey, params.colIndex);\n\n if (params.isEdit) {\n // @ts-ignore\n editingCells.value[cellKey] = params;\n } else {\n delete editingCells.value[cellKey];\n }\n };\n\n const getEditRowData = ({ row, col }: PrimaryTableCellParams<TableRowData>) => {\n const rowValue = get(row, props.rowKey || 'id');\n const editedRowData = editedFormData.value[rowValue];\n if (editedRowData && props.editableRowKeys?.includes(rowValue)) {\n const tmpRow = { ...editedRowData };\n set(tmpRow, col.colKey, get(editedRowData, col.colKey));\n return tmpRow;\n }\n return row;\n };\n\n watch(\n () => editableRowKeys.value?.join(','),\n (keyStr) => {\n const editableRowKeys = keyStr.split(',');\n const rowValueList = Object.keys(editedFormData.value);\n rowValueList.forEach((key) => {\n if (!editableRowKeys.includes(key)) {\n // clear exited editable state row data\n delete editedFormData.value[key];\n }\n });\n },\n );\n\n return {\n editedFormData,\n errorListMap,\n editableKeysMap,\n validateTableData,\n validateTableCellData,\n validateRowData,\n onRuleChange,\n clearValidateData,\n onUpdateEditedCell,\n getEditRowData,\n onPrimaryTableCellEditChange,\n };\n}\n"],"names":["useRowEdit","props","_toRefs","toRefs","editableRowKeys","cellRuleMap","Map","errorListMap","ref","editableKeysMap","computed","getEditableKeysMap","data","rowKey","editingCells","editedFormData","getErrorListMapByErrors","errors","errorMap","forEach","_ref","row","col","errorList","rowValue","get","key","colKey","join","length","validateOneRowData","rowRules","list","map","item","Promise","resolve","editedRow","rules","isFunction","edit","_objectSpread","validate","then","r","filter","t","result","reject","all","_t$errorList","validateRowData","_ref2","_props$onRowValidate","value","tTrigger","onRowValidate","call","trigger","validateTableCellData","cellKeys","Object","keys","existKeys","v","_v$props$rowKey","toString","promiseList","includes","getRowKeyFromCell","cellKey","validateEdit","arr","_props$onValidate","allErrorListMap","index","onValidate","validateTableData","i","len","push","rList","_props$onValidate2","_ref3","arguments","undefined","assign","onUpdateEditedCell","lastRowData","cloneDeep","entries","_ref4","_ref5","_slicedToArray","val","set","onRuleChange","context","findIndex","clearValidateData","onPrimaryTableCellEditChange","params","getCellKey","colIndex","isEdit","getEditRowData","_ref6","_props$editableRowKey","editedRowData","tmpRow","watch","_editableRowKeys$valu","keyStr","split","rowValueList"],"mappings":"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"}