pro-design-vue 1.3.21 → 1.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.full.js +1181 -1585
  3. package/dist/index.full.min.js +7 -9
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +7 -9
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +1182 -1586
  8. package/es/components/config-provider/src/typing.d.ts +1 -0
  9. package/es/components/table/src/components/Body/Body.vue.d.ts +261 -15
  10. package/es/components/table/src/components/Body/BodyCell.vue.d.ts +255 -0
  11. package/es/components/table/src/components/Body/BodyEditCell.d.ts +60 -0
  12. package/es/components/table/src/components/Body/BodyRow.vue.d.ts +261 -15
  13. package/es/components/table/src/components/Body/BodyRows.vue.d.ts +261 -15
  14. package/es/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  15. package/es/components/table/src/components/InteralTable.vue.d.ts +314 -19
  16. package/es/components/table/src/components/Table.d.ts +51 -0
  17. package/es/components/table/src/components/context/TableContext.d.ts +4 -0
  18. package/es/components/table/src/components/interface.d.ts +295 -23
  19. package/es/components/table/src/hooks/useCellProps.d.ts +5 -1
  20. package/es/components/table/src/hooks/useEdit.d.ts +24 -7
  21. package/es/components/table/src/utils/form-model.d.ts +25 -0
  22. package/es/components/table/src/utils/util.d.ts +1 -0
  23. package/es/index.d.ts +276 -5
  24. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs +35 -0
  25. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs.map +1 -0
  26. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs +129 -0
  27. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs.map +1 -0
  28. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs +256 -0
  29. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs.map +1 -0
  30. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs +63 -8
  31. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs.map +1 -1
  32. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs +24 -18
  33. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs.map +1 -1
  34. package/es/packages/components/table/src/components/Body/{BodyCell.mjs → BodyTextCell.mjs} +25 -155
  35. package/es/packages/components/table/src/components/Body/BodyTextCell.mjs.map +1 -0
  36. package/es/packages/components/table/src/components/InteralTable.vue.mjs +24 -25
  37. package/es/packages/components/table/src/components/InteralTable.vue.mjs.map +1 -1
  38. package/es/packages/components/table/src/components/InteralTable.vue2.mjs +36 -97
  39. package/es/packages/components/table/src/components/InteralTable.vue2.mjs.map +1 -1
  40. package/es/packages/components/table/src/components/Table.mjs +24 -20
  41. package/es/packages/components/table/src/components/Table.mjs.map +1 -1
  42. package/es/packages/components/table/src/components/context/TableContext.mjs.map +1 -1
  43. package/es/packages/components/table/src/components/interface.mjs +24 -0
  44. package/es/packages/components/table/src/components/interface.mjs.map +1 -1
  45. package/es/packages/components/table/src/hooks/useCellProps.mjs +8 -0
  46. package/es/packages/components/table/src/hooks/useCellProps.mjs.map +1 -1
  47. package/es/packages/components/table/src/hooks/useEdit.mjs +293 -18
  48. package/es/packages/components/table/src/hooks/useEdit.mjs.map +1 -1
  49. package/es/packages/components/table/src/utils/form-model.mjs +98 -0
  50. package/es/packages/components/table/src/utils/form-model.mjs.map +1 -0
  51. package/es/packages/components/table/src/utils/util.mjs +4 -1
  52. package/es/packages/components/table/src/utils/util.mjs.map +1 -1
  53. package/es/packages/utils/dom.mjs +15 -1
  54. package/es/packages/utils/dom.mjs.map +1 -1
  55. package/es/packages/utils/index.mjs +1 -1
  56. package/es/utils/dom.d.ts +2 -0
  57. package/es/version.d.ts +1 -1
  58. package/es/version.mjs +1 -1
  59. package/es/version.mjs.map +1 -1
  60. package/lib/components/config-provider/src/typing.d.ts +1 -0
  61. package/lib/components/table/src/components/Body/Body.vue.d.ts +261 -15
  62. package/lib/components/table/src/components/Body/BodyCell.vue.d.ts +255 -0
  63. package/lib/components/table/src/components/Body/BodyEditCell.d.ts +60 -0
  64. package/lib/components/table/src/components/Body/BodyRow.vue.d.ts +261 -15
  65. package/lib/components/table/src/components/Body/BodyRows.vue.d.ts +261 -15
  66. package/lib/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  67. package/lib/components/table/src/components/InteralTable.vue.d.ts +314 -19
  68. package/lib/components/table/src/components/Table.d.ts +51 -0
  69. package/lib/components/table/src/components/context/TableContext.d.ts +4 -0
  70. package/lib/components/table/src/components/interface.d.ts +295 -23
  71. package/lib/components/table/src/hooks/useCellProps.d.ts +5 -1
  72. package/lib/components/table/src/hooks/useEdit.d.ts +24 -7
  73. package/lib/components/table/src/utils/form-model.d.ts +25 -0
  74. package/lib/components/table/src/utils/util.d.ts +1 -0
  75. package/lib/index.d.ts +276 -5
  76. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js +39 -0
  77. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js.map +1 -0
  78. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js +133 -0
  79. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js.map +1 -0
  80. package/lib/packages/components/table/src/components/Body/BodyEditCell.js +260 -0
  81. package/lib/packages/components/table/src/components/Body/BodyEditCell.js.map +1 -0
  82. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js +63 -8
  83. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js.map +1 -1
  84. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js +22 -16
  85. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js.map +1 -1
  86. package/lib/packages/components/table/src/components/Body/{BodyCell.js → BodyTextCell.js} +24 -154
  87. package/lib/packages/components/table/src/components/Body/BodyTextCell.js.map +1 -0
  88. package/lib/packages/components/table/src/components/InteralTable.vue.js +24 -25
  89. package/lib/packages/components/table/src/components/InteralTable.vue.js.map +1 -1
  90. package/lib/packages/components/table/src/components/InteralTable.vue2.js +36 -97
  91. package/lib/packages/components/table/src/components/InteralTable.vue2.js.map +1 -1
  92. package/lib/packages/components/table/src/components/Table.js +24 -20
  93. package/lib/packages/components/table/src/components/Table.js.map +1 -1
  94. package/lib/packages/components/table/src/components/context/TableContext.js.map +1 -1
  95. package/lib/packages/components/table/src/components/interface.js +24 -0
  96. package/lib/packages/components/table/src/components/interface.js.map +1 -1
  97. package/lib/packages/components/table/src/hooks/useCellProps.js +8 -0
  98. package/lib/packages/components/table/src/hooks/useCellProps.js.map +1 -1
  99. package/lib/packages/components/table/src/hooks/useEdit.js +292 -17
  100. package/lib/packages/components/table/src/hooks/useEdit.js.map +1 -1
  101. package/lib/packages/components/table/src/utils/form-model.js +102 -0
  102. package/lib/packages/components/table/src/utils/form-model.js.map +1 -0
  103. package/lib/packages/components/table/src/utils/util.js +4 -0
  104. package/lib/packages/components/table/src/utils/util.js.map +1 -1
  105. package/lib/packages/utils/dom.js +16 -0
  106. package/lib/packages/utils/dom.js.map +1 -1
  107. package/lib/packages/utils/index.js +2 -0
  108. package/lib/packages/utils/index.js.map +1 -1
  109. package/lib/utils/dom.d.ts +2 -0
  110. package/lib/version.d.ts +1 -1
  111. package/lib/version.js +1 -1
  112. package/lib/version.js.map +1 -1
  113. package/package.json +1 -1
  114. package/theme-chalk/index.css +1 -1
  115. package/theme-chalk/src/table/table.less +29 -2
  116. package/es/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  117. package/es/packages/components/table/src/components/Body/BodyCell.mjs.map +0 -1
  118. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs +0 -48
  119. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs.map +0 -1
  120. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs +0 -151
  121. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs.map +0 -1
  122. package/lib/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  123. package/lib/packages/components/table/src/components/Body/BodyCell.js.map +0 -1
  124. package/lib/packages/components/table/src/components/Body/EditInput.vue.js +0 -52
  125. package/lib/packages/components/table/src/components/Body/EditInput.vue.js.map +0 -1
  126. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js +0 -155
  127. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useCellProps.js","sources":["../../../../../../../../packages/components/table/src/hooks/useCellProps.ts"],"sourcesContent":["/*\n * @Author: shen\n * @Date: 2022-11-05 14:16:25\n * @LastEditors: shen\n * @LastEditTime: 2025-09-29 14:02:06\n * @Description:\n */\nimport type { Ref, CSSProperties } from 'vue'\nimport type {\n FinallyColumnType,\n FlatRecord,\n Key,\n RenderedCell,\n ProTableProps,\n} from '../components/interface'\n\nimport { shallowRef, watchEffect, isVNode } from 'vue'\nimport { ExpandColumnKey } from './useColumns'\nimport { getPathValue, parseStyleText } from '../utils/util'\nimport { isArray, isObject } from '@pro-design-vue/utils'\n\ninterface UseCellProps {\n leftColumns: Ref<FinallyColumnType[]>\n rightColumns: Ref<FinallyColumnType[]>\n visibleCenterColumns: Ref<FinallyColumnType[]>\n allColumns: Ref<FinallyColumnType[]>\n data: Ref<FlatRecord[]>\n mergedRowHeights: Ref<Record<Key, number>>\n startIndex: Ref<number>\n bodyWidth: Ref<number>\n leftWidth: Ref<number>\n centerWidth: Ref<number>\n getColumnPosition: (\n index: number,\n colSpan?: number,\n ) => {\n width: number\n left: number\n minWidth: number\n maxWidth: number\n }\n getRowHeight: (fromIndex: number, rowSpan?: number) => number\n customCell: Ref<ProTableProps['customCell']>\n}\nexport type UseCellPropsRes = {\n allCellProps: Ref<Record<string, Record<string, RenderedCell>>>\n hasMultiRowSpanInfo: Ref<Record<string, boolean>>\n centerRowColumnsMap: Ref<Map<Key, FinallyColumnType[]>>\n}\nconst useCellProps = ({\n leftColumns,\n rightColumns,\n visibleCenterColumns,\n allColumns,\n data,\n mergedRowHeights,\n getColumnPosition,\n bodyWidth,\n leftWidth,\n centerWidth,\n getRowHeight,\n customCell: contextCustomCell,\n}: UseCellProps): UseCellPropsRes => {\n const allCellProps = shallowRef<Record<string, Record<string, RenderedCell>>>({})\n const hasMultiRowSpanInfo = shallowRef<Record<string, boolean>>({})\n const centerRowColumnsMap = shallowRef<Map<Key, FinallyColumnType[]>>(new Map())\n\n const computedCellProps = (\n offsetLeft: number,\n column: FinallyColumnType,\n rowIndex: number,\n record: any,\n overflow: string,\n ) => {\n const { customRender, originColumn, dataIndex, columnIndex, left, customCell } = column\n const cellProps: RenderedCell = {}\n const customCellProps: Record<string, any> =\n (customCell || contextCustomCell.value)?.({ record, rowIndex, column }) ?? {}\n const mergeCellStyles: CSSProperties = Object.assign(\n { overflow },\n parseStyleText(customCellProps.style || {}),\n )\n const copyCustomCellProps = Object.assign({}, customCellProps)\n\n if (customRender) {\n const value = getPathValue(record, dataIndex!)\n const customCellRender: any = customRender({\n text: value,\n value,\n record,\n index: rowIndex,\n column: originColumn as FinallyColumnType,\n })\n if (\n customCellRender &&\n isObject(customCellRender) &&\n !isArray(customCellRender) &&\n !isVNode(customCellRender)\n ) {\n Object.assign(copyCustomCellProps, (customCellRender as any).props || {})\n cellProps.children = (customCellRender as any).children\n } else {\n cellProps.children = customCellRender\n }\n }\n\n copyCustomCellProps.colSpan = copyCustomCellProps.colSpan ?? 1\n copyCustomCellProps.rowSpan = copyCustomCellProps.rowSpan ?? 1\n const { width } = getColumnPosition(columnIndex, copyCustomCellProps.colSpan)\n Object.assign(mergeCellStyles, { width: `${width}px`, left: left! - offsetLeft + 'px' })\n if (width === 0) {\n mergeCellStyles.display = 'none'\n }\n if (copyCustomCellProps.colSpan > 1) {\n mergeCellStyles.zIndex = 1\n }\n\n if (copyCustomCellProps.rowSpan > 1) {\n mergeCellStyles.height = `${getRowHeight(rowIndex, copyCustomCellProps.rowSpan) - 1}px`\n }\n cellProps.props = Object.assign({}, copyCustomCellProps, {\n style: { ...copyCustomCellProps.style, ...mergeCellStyles },\n })\n return cellProps\n }\n\n watchEffect(() => {\n const rawAllCellProps: Record<string, Record<string, RenderedCell>> = {}\n const rawRowSpanInfo: Record<string, boolean> = {}\n const genAllCellProps = (\n index: number,\n offsetLeft: number,\n finallyColumns: FinallyColumnType[],\n rowKey: Key,\n rowIndex: number,\n record: any,\n overflow: string,\n rowColumnsMap?: Map<Key, FinallyColumnType[]>,\n ) => {\n const collen = finallyColumns.length\n let currentColumn: FinallyColumnType | null = null\n let currentColumnIndex = 0\n for (let i = 0; i < collen; i++) {\n const { columnIndex, columnKey } = finallyColumns[i]!\n const cellProps = computedCellProps(\n offsetLeft,\n finallyColumns[i]!,\n rowIndex,\n record,\n overflow,\n )\n rawAllCellProps[rowKey]![columnKey] = cellProps\n if (cellProps.props?.rowSpan || 0 > 1) {\n rawRowSpanInfo[rowKey] = true\n }\n if (i === 0 && cellProps.props?.colSpan === 0) {\n currentColumnIndex = columnIndex\n }\n }\n\n if (currentColumnIndex !== 0) {\n for (let i = currentColumnIndex - 1; i > 0; i--) {\n const column = allColumns.value[i]!\n if (column.fixed) break\n const cellProps = computedCellProps(offsetLeft, column, rowIndex, record, overflow)\n if (cellProps.props?.colSpan !== 0) {\n currentColumn = column\n rawAllCellProps[rowKey]![column.columnKey] = cellProps\n if (cellProps.props?.rowSpan || 0 > 1) {\n rawRowSpanInfo[rowKey] = true\n }\n break\n }\n }\n }\n\n if (currentColumn) {\n const columns = finallyColumns.slice()\n columns.push(currentColumn)\n rowColumnsMap?.set(rowKey, columns)\n } else {\n rowColumnsMap?.set(rowKey, finallyColumns)\n }\n }\n const rowColumnsMap = new Map()\n const len = data.value.length\n for (let i = 0; i < len; i++) {\n if (!data.value[i]) continue\n const { record, isExpandRow, rowKey, rowIndex } = data.value[i]!\n rawAllCellProps[rowKey] = {}\n const overflow: string = mergedRowHeights.value[rowKey] ? 'hidden' : 'initial'\n if (isExpandRow) {\n rawAllCellProps[rowKey][ExpandColumnKey] = {\n props: {\n style: { left: '0px', width: `${bodyWidth.value}px`, zIndex: 1 },\n },\n }\n } else {\n genAllCellProps(0, 0, leftColumns.value, rowKey, rowIndex, record, overflow)\n genAllCellProps(\n 0,\n leftWidth.value,\n visibleCenterColumns.value,\n rowKey,\n rowIndex,\n record,\n overflow,\n rowColumnsMap,\n )\n genAllCellProps(\n 0,\n leftWidth.value + centerWidth.value,\n rightColumns.value,\n rowKey,\n rowIndex,\n record,\n overflow,\n )\n }\n }\n allCellProps.value = rawAllCellProps\n hasMultiRowSpanInfo.value = rawRowSpanInfo\n centerRowColumnsMap.value = rowColumnsMap\n })\n\n return { allCellProps, hasMultiRowSpanInfo, centerRowColumnsMap }\n}\nexport default useCellProps\n"],"names":["shallowRef","parseStyleText","getPathValue","isObject","isArray","isVNode","watchEffect","rowColumnsMap","ExpandColumnKey"],"mappings":"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"}
1
+ {"version":3,"file":"useCellProps.js","sources":["../../../../../../../../packages/components/table/src/hooks/useCellProps.ts"],"sourcesContent":["/*\n * @Author: shen\n * @Date: 2022-11-05 14:16:25\n * @LastEditors: shen\n * @LastEditTime: 2025-12-01 14:33:05\n * @Description:\n */\nimport type { Ref, CSSProperties } from 'vue'\nimport type {\n FinallyColumnType,\n FlatRecord,\n Key,\n RenderedCell,\n ProTableProps,\n} from '../components/interface'\n\nimport { shallowRef, watchEffect, isVNode } from 'vue'\nimport { ExpandColumnKey } from './useColumns'\nimport { getPathValue, parseStyleText } from '../utils/util'\nimport { isArray, isObject } from '@pro-design-vue/utils'\n\ninterface UseCellProps {\n leftColumns: Ref<FinallyColumnType[]>\n rightColumns: Ref<FinallyColumnType[]>\n visibleCenterColumns: Ref<FinallyColumnType[]>\n allColumns: Ref<FinallyColumnType[]>\n data: Ref<FlatRecord[]>\n mergedRowHeights: Ref<Record<Key, number>>\n startIndex: Ref<number>\n bodyWidth: Ref<number>\n leftWidth: Ref<number>\n centerWidth: Ref<number>\n cancelEditable: (recordKey: Key) => boolean\n startEditable: (recordKey: Key, recordValue?: any) => boolean\n saveEditable: (recordKey: Key) => Promise<boolean>\n isEditable: (recordKey: Key) => boolean\n getColumnPosition: (\n index: number,\n colSpan?: number,\n ) => {\n width: number\n left: number\n minWidth: number\n maxWidth: number\n }\n getRowHeight: (fromIndex: number, rowSpan?: number) => number\n customCell: Ref<ProTableProps['customCell']>\n}\nexport type UseCellPropsRes = {\n allCellProps: Ref<Record<string, Record<string, RenderedCell>>>\n hasMultiRowSpanInfo: Ref<Record<string, boolean>>\n centerRowColumnsMap: Ref<Map<Key, FinallyColumnType[]>>\n}\nconst useCellProps = ({\n leftColumns,\n rightColumns,\n visibleCenterColumns,\n allColumns,\n data,\n mergedRowHeights,\n getColumnPosition,\n bodyWidth,\n leftWidth,\n centerWidth,\n getRowHeight,\n cancelEditable,\n startEditable,\n saveEditable,\n isEditable,\n customCell: contextCustomCell,\n}: UseCellProps): UseCellPropsRes => {\n const allCellProps = shallowRef<Record<string, Record<string, RenderedCell>>>({})\n const hasMultiRowSpanInfo = shallowRef<Record<string, boolean>>({})\n const centerRowColumnsMap = shallowRef<Map<Key, FinallyColumnType[]>>(new Map())\n\n const computedCellProps = (\n offsetLeft: number,\n column: FinallyColumnType,\n rowIndex: number,\n record: any,\n overflow: string,\n ) => {\n const { customRender, originColumn, dataIndex, columnIndex, left, customCell } = column\n const cellProps: RenderedCell = {}\n const customCellProps: Record<string, any> =\n (customCell || contextCustomCell.value)?.({ record, rowIndex, column }) ?? {}\n const mergeCellStyles: CSSProperties = Object.assign(\n { overflow },\n parseStyleText(customCellProps.style || {}),\n )\n const copyCustomCellProps = Object.assign({}, customCellProps)\n\n if (customRender) {\n const value = getPathValue(record, dataIndex!)\n const customCellRender: any = customRender({\n text: value,\n value,\n record,\n index: rowIndex,\n cancelEditable,\n startEditable,\n saveEditable,\n isEditable,\n column: originColumn as FinallyColumnType,\n })\n if (\n customCellRender &&\n isObject(customCellRender) &&\n !isArray(customCellRender) &&\n !isVNode(customCellRender)\n ) {\n Object.assign(copyCustomCellProps, (customCellRender as any).props || {})\n cellProps.children = (customCellRender as any).children\n } else {\n cellProps.children = customCellRender\n }\n }\n\n copyCustomCellProps.colSpan = copyCustomCellProps.colSpan ?? 1\n copyCustomCellProps.rowSpan = copyCustomCellProps.rowSpan ?? 1\n const { width } = getColumnPosition(columnIndex, copyCustomCellProps.colSpan)\n Object.assign(mergeCellStyles, { width: `${width}px`, left: left! - offsetLeft + 'px' })\n if (width === 0) {\n mergeCellStyles.display = 'none'\n }\n if (copyCustomCellProps.colSpan > 1) {\n mergeCellStyles.zIndex = 1\n }\n\n if (copyCustomCellProps.rowSpan > 1) {\n mergeCellStyles.height = `${getRowHeight(rowIndex, copyCustomCellProps.rowSpan) - 1}px`\n }\n cellProps.props = Object.assign({}, copyCustomCellProps, {\n style: { ...copyCustomCellProps.style, ...mergeCellStyles },\n })\n return cellProps\n }\n\n watchEffect(() => {\n const rawAllCellProps: Record<string, Record<string, RenderedCell>> = {}\n const rawRowSpanInfo: Record<string, boolean> = {}\n const genAllCellProps = (\n index: number,\n offsetLeft: number,\n finallyColumns: FinallyColumnType[],\n rowKey: Key,\n rowIndex: number,\n record: any,\n overflow: string,\n rowColumnsMap?: Map<Key, FinallyColumnType[]>,\n ) => {\n const collen = finallyColumns.length\n let currentColumn: FinallyColumnType | null = null\n let currentColumnIndex = 0\n for (let i = 0; i < collen; i++) {\n const { columnIndex, columnKey } = finallyColumns[i]!\n const cellProps = computedCellProps(\n offsetLeft,\n finallyColumns[i]!,\n rowIndex,\n record,\n overflow,\n )\n rawAllCellProps[rowKey]![columnKey] = cellProps\n if (cellProps.props?.rowSpan || 0 > 1) {\n rawRowSpanInfo[rowKey] = true\n }\n if (i === 0 && cellProps.props?.colSpan === 0) {\n currentColumnIndex = columnIndex\n }\n }\n\n if (currentColumnIndex !== 0) {\n for (let i = currentColumnIndex - 1; i > 0; i--) {\n const column = allColumns.value[i]!\n if (column.fixed) break\n const cellProps = computedCellProps(offsetLeft, column, rowIndex, record, overflow)\n if (cellProps.props?.colSpan !== 0) {\n currentColumn = column\n rawAllCellProps[rowKey]![column.columnKey] = cellProps\n if (cellProps.props?.rowSpan || 0 > 1) {\n rawRowSpanInfo[rowKey] = true\n }\n break\n }\n }\n }\n\n if (currentColumn) {\n const columns = finallyColumns.slice()\n columns.push(currentColumn)\n rowColumnsMap?.set(rowKey, columns)\n } else {\n rowColumnsMap?.set(rowKey, finallyColumns)\n }\n }\n const rowColumnsMap = new Map()\n const len = data.value.length\n for (let i = 0; i < len; i++) {\n if (!data.value[i]) continue\n const { record, isExpandRow, rowKey, rowIndex } = data.value[i]!\n rawAllCellProps[rowKey] = {}\n const overflow: string = mergedRowHeights.value[rowKey] ? 'hidden' : 'initial'\n if (isExpandRow) {\n rawAllCellProps[rowKey][ExpandColumnKey] = {\n props: {\n style: { left: '0px', width: `${bodyWidth.value}px`, zIndex: 1 },\n },\n }\n } else {\n genAllCellProps(0, 0, leftColumns.value, rowKey, rowIndex, record, overflow)\n genAllCellProps(\n 0,\n leftWidth.value,\n visibleCenterColumns.value,\n rowKey,\n rowIndex,\n record,\n overflow,\n rowColumnsMap,\n )\n genAllCellProps(\n 0,\n leftWidth.value + centerWidth.value,\n rightColumns.value,\n rowKey,\n rowIndex,\n record,\n overflow,\n )\n }\n }\n allCellProps.value = rawAllCellProps\n hasMultiRowSpanInfo.value = rawRowSpanInfo\n centerRowColumnsMap.value = rowColumnsMap\n })\n\n return { allCellProps, hasMultiRowSpanInfo, centerRowColumnsMap }\n}\nexport default useCellProps\n"],"names":["shallowRef","parseStyleText","getPathValue","isObject","isArray","isVNode","watchEffect","rowColumnsMap","ExpandColumnKey"],"mappings":"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"}
@@ -1,43 +1,312 @@
1
1
  'use strict';
2
2
 
3
3
  var vue = require('vue');
4
+ var antDesignVue = require('ant-design-vue');
5
+ var util = require('../utils/util.js');
6
+ var useIntl = require('../../../config-provider/src/useIntl.js');
7
+ var index = require('../../../../hooks/use-merged-state/index.js');
8
+ var lodashUnified = require('lodash-unified');
4
9
 
5
10
  const EditKey = Symbol("edit");
6
- const useEditProvider = () => {
11
+ const useEditProvider = (props, {
12
+ rawData,
13
+ getRowKey,
14
+ getIndexsByKey,
15
+ getRecordByKey
16
+ }) => {
17
+ var _a;
7
18
  const editCellKeys = vue.shallowRef([]);
8
- const oldValuesMap = vue.shallowRef({});
9
- const openEditor = (key, values) => {
19
+ const editRowsMap = vue.shallowRef({});
20
+ const intl = useIntl.useIntl();
21
+ const editableType = vue.computed(() => {
22
+ var _a2;
23
+ return (_a2 = props.rowEditable) == null ? void 0 : _a2.type;
24
+ });
25
+ const [mergedEditableKeys, setMergedEditableKeys] = index.useMergedState([], {
26
+ value: vue.computed(() => {
27
+ var _a2;
28
+ return props.editableKeys || ((_a2 = props.rowEditable) == null ? void 0 : _a2.editableKeys);
29
+ }),
30
+ onChange: ((_a = props.rowEditable) == null ? void 0 : _a.onChange) ? (keys) => {
31
+ var _a2, _b, _c;
32
+ (_c = (_a2 = props.rowEditable) == null ? void 0 : _a2.onChange) == null ? void 0 : _c.call(
33
+ _a2,
34
+ // 计算编辑的key
35
+ keys != null ? keys : [],
36
+ (_b = keys == null ? void 0 : keys.map((key) => editRowsMap.value[key])) != null ? _b : []
37
+ );
38
+ } : void 0
39
+ });
40
+ const editingCells = vue.ref({});
41
+ const newLineRecordCache = vue.shallowRef({});
42
+ const editableKeysSet = vue.computed(() => {
43
+ var _a2;
44
+ const keys = editableType.value === "single" ? (_a2 = mergedEditableKeys.value) == null ? void 0 : _a2.slice(0, 1) : mergedEditableKeys.value;
45
+ return new Set(keys);
46
+ });
47
+ const isEditable = (recordKey) => {
48
+ var _a2;
49
+ if ((_a2 = mergedEditableKeys.value) == null ? void 0 : _a2.includes(recordKey)) return true;
50
+ return false;
51
+ };
52
+ const isRowEdit = vue.computed(() => !!editableType.value);
53
+ const openEditor = (key) => {
10
54
  if (key) {
55
+ const newKeys = [...editCellKeys.value];
11
56
  if (Array.isArray(key)) {
12
57
  editCellKeys.value = key;
13
58
  } else {
14
- editCellKeys.value.includes(key) || (editCellKeys.value = [key]);
59
+ newKeys.includes(key) || newKeys.push(key);
15
60
  }
16
- Object.assign(oldValuesMap.value, values || {});
61
+ editCellKeys.value = newKeys;
17
62
  }
18
63
  };
19
64
  const closeEditor = (key) => {
20
- if (typeof key === "undefined") {
21
- editCellKeys.value = [];
22
- oldValuesMap.value = {};
23
- return;
24
- }
25
- const keys = Array.isArray(key) ? key : [key];
26
- editCellKeys.value = editCellKeys.value.filter((key2) => !keys.includes(key2));
27
- keys.forEach((key2) => {
28
- delete oldValuesMap.value[key2];
65
+ const closeKeys = editCellKeys.value.filter((cellKey) => cellKey !== key);
66
+ const closeCells = closeKeys.map((key2) => editingCells.value[key2]).filter((cell) => {
67
+ var _a2, _b;
68
+ return !((_b = (_a2 = cell.column) == null ? void 0 : _a2.edit) == null ? void 0 : _b.keepEditMode);
69
+ });
70
+ const list = closeCells.map(
71
+ (cell) => new Promise((resolve) => {
72
+ cell == null ? void 0 : cell.validateEdit().then((r) => {
73
+ if (r === true) {
74
+ const cellKey = util.getCellKey(cell.rowKey, cell.columnKey);
75
+ resolve(cellKey);
76
+ } else {
77
+ resolve(null);
78
+ }
79
+ });
80
+ })
81
+ );
82
+ Promise.all(list).then((keys) => {
83
+ const closeKeys2 = keys.filter((key2) => !!key2);
84
+ editCellKeys.value = editCellKeys.value.filter((key2) => !closeKeys2.includes(key2));
85
+ });
86
+ };
87
+ const setEditingCell = (params, isEdit) => {
88
+ const cellKey = util.getCellKey(params.rowKey, params.columnKey);
89
+ if (isEdit) {
90
+ editingCells.value[cellKey] = params;
91
+ } else {
92
+ delete editingCells.value[cellKey];
93
+ }
94
+ };
95
+ const getErrorListMapByErrors = (errors) => {
96
+ const errorMap = {};
97
+ errors.forEach(({ rowKey, columnKey, errorList }) => {
98
+ const key = [rowKey, columnKey].join("__");
99
+ if (errorList == null ? void 0 : errorList.length) {
100
+ errorMap[key] = errorList;
101
+ } else {
102
+ delete errorMap[key];
103
+ }
104
+ });
105
+ return errorMap;
106
+ };
107
+ const validateOneRowData = (recordKey) => {
108
+ const cellKeys = Object.keys(editingCells.value);
109
+ const rowCellKeys = cellKeys.filter((cellKey) => cellKey.startsWith(`${recordKey}_`));
110
+ const list = rowCellKeys.map(
111
+ (cellKey) => new Promise((resolve) => {
112
+ const cell = editingCells.value[cellKey];
113
+ cell == null ? void 0 : cell.validateEdit().then((r) => {
114
+ if (r === true) {
115
+ resolve({ ...cell, errorList: [] });
116
+ } else {
117
+ resolve({ ...cell, errorList: r });
118
+ }
119
+ });
120
+ })
121
+ );
122
+ return new Promise((resolve, reject) => {
123
+ Promise.all(list).then((errors) => {
124
+ resolve({
125
+ errors: errors.filter((t) => {
126
+ var _a2;
127
+ return (_a2 = t.errorList) == null ? void 0 : _a2.length;
128
+ }),
129
+ errorMap: getErrorListMapByErrors(errors)
130
+ });
131
+ }, reject);
132
+ });
133
+ };
134
+ const validateRowData = (recordKey) => new Promise((resolve, reject) => {
135
+ validateOneRowData(recordKey).then(({ errors, errorMap }) => {
136
+ var _a2;
137
+ (_a2 = props.onRowValidate) == null ? void 0 : _a2.call(props, { errors, errorMap });
138
+ resolve({ errors, errorMap });
139
+ }, reject);
140
+ });
141
+ const validateTableCellData = () => {
142
+ const cellKeys = Object.keys(editingCells.value);
143
+ const list = cellKeys.map(
144
+ (cellKey) => new Promise((resolve) => {
145
+ const cell = editingCells.value[cellKey];
146
+ cell == null ? void 0 : cell.validateEdit().then((r) => {
147
+ if (r === true) {
148
+ resolve({ ...cell, errorList: [] });
149
+ } else {
150
+ resolve({ ...cell, errorList: r });
151
+ }
152
+ });
153
+ })
154
+ );
155
+ return new Promise((resolve, reject) => {
156
+ Promise.all(list).then((errors) => {
157
+ resolve({
158
+ errors: errors.filter((t) => {
159
+ var _a2;
160
+ return (_a2 = t.errorList) == null ? void 0 : _a2.length;
161
+ }),
162
+ errorMap: getErrorListMapByErrors(errors)
163
+ });
164
+ }, reject);
29
165
  });
30
166
  };
167
+ const validateTableData = () => new Promise((resolve, reject) => {
168
+ validateTableCellData().then(({ errors, errorMap }) => {
169
+ var _a2;
170
+ (_a2 = props.onValidate) == null ? void 0 : _a2.call(props, { errors, errorMap });
171
+ resolve({ errors, errorMap, data: (errors == null ? void 0 : errors.length) ? void 0 : rawData.value });
172
+ }, reject);
173
+ });
174
+ const addEditRecord = (recordValue, options) => {
175
+ var _a2, _b, _c, _d;
176
+ if (isRowEdit.value && ((_a2 = Object.keys(newLineRecordCache.value)) == null ? void 0 : _a2.length) && ((_b = props.rowEditable) == null ? void 0 : _b.onlyAddOneLineAlertMessage) !== false) {
177
+ antDesignVue.message.warning(
178
+ ((_c = props.rowEditable) == null ? void 0 : _c.onlyAddOneLineAlertMessage) || intl.getMessage("editableTable.onlyAddOneLine", "\u53EA\u80FD\u65B0\u589E\u4E00\u884C")
179
+ );
180
+ return false;
181
+ }
182
+ if (isRowEdit.value && editableKeysSet.value.size > 0 && editableType.value === "single") {
183
+ antDesignVue.message.warning(
184
+ ((_d = props.rowEditable) == null ? void 0 : _d.onlyOneLineEditorAlertMessage) || intl.getMessage("editableTable.onlyOneLineEditor", "\u53EA\u80FD\u540C\u65F6\u7F16\u8F91\u4E00\u884C")
185
+ );
186
+ return false;
187
+ }
188
+ const recordKey = getRowKey.value(recordValue, -1);
189
+ if (!recordKey) {
190
+ throw new Error("\u8BF7\u8BBE\u7F6E recordCreatorProps.record \u5E76\u8FD4\u56DE\u4E00\u4E2A\u552F\u4E00\u7684key");
191
+ }
192
+ if (isRowEdit.value) {
193
+ editableKeysSet.value.add(recordKey);
194
+ editRowsMap.value[recordKey] = lodashUnified.cloneDeep(recordValue);
195
+ setMergedEditableKeys(Array.from(editableKeysSet.value));
196
+ vue.triggerRef(editRowsMap);
197
+ }
198
+ if ((options == null ? void 0 : options.position) === "top") {
199
+ rawData.value.unshift(recordValue);
200
+ } else {
201
+ rawData.value.push(recordValue);
202
+ }
203
+ newLineRecordCache.value[recordKey] = {
204
+ defaultValue: recordValue,
205
+ options
206
+ };
207
+ vue.triggerRef(rawData);
208
+ return true;
209
+ };
210
+ const startEditable = (recordKey, recordValue) => {
211
+ var _a2;
212
+ if (!isRowEdit.value) {
213
+ return false;
214
+ }
215
+ if (editableKeysSet.value.size > 0 && editableType.value === "single") {
216
+ antDesignVue.message.warning(
217
+ ((_a2 = props.rowEditable) == null ? void 0 : _a2.onlyOneLineEditorAlertMessage) || intl.getMessage("editableTable.onlyOneLineEditor", "\u53EA\u80FD\u540C\u65F6\u7F16\u8F91\u4E00\u884C")
218
+ );
219
+ return false;
220
+ }
221
+ editableKeysSet.value.add(recordKey);
222
+ editRowsMap.value[recordKey] = lodashUnified.cloneDeep(recordValue != null ? recordValue : getRecordByKey(recordKey));
223
+ setMergedEditableKeys(Array.from(editableKeysSet.value));
224
+ vue.triggerRef(editRowsMap);
225
+ return true;
226
+ };
227
+ const cancelEditable = (recordKey) => {
228
+ if (!isRowEdit.value) {
229
+ return false;
230
+ }
231
+ const newLineRecord = newLineRecordCache.value[recordKey];
232
+ if (newLineRecord) {
233
+ delete newLineRecordCache.value[recordKey];
234
+ const rowIndex = rawData.value.findIndex((item) => getRowKey.value(item, -1) === recordKey);
235
+ rawData.value.splice(rowIndex, 1);
236
+ vue.triggerRef(rawData);
237
+ }
238
+ editableKeysSet.value.delete(recordKey);
239
+ delete editRowsMap.value[recordKey];
240
+ setMergedEditableKeys(Array.from(editableKeysSet.value));
241
+ return true;
242
+ };
243
+ const saveEditable = async (recordKey) => {
244
+ var _a2, _b;
245
+ if (!isRowEdit.value) {
246
+ return false;
247
+ }
248
+ const { errors } = await validateRowData(recordKey);
249
+ if (!!errors.length) {
250
+ return false;
251
+ }
252
+ const editRow = editRowsMap.value[recordKey];
253
+ const originRow = getRecordByKey(recordKey);
254
+ const success = await ((_b = (_a2 = props.rowEditable) == null ? void 0 : _a2.onSave) == null ? void 0 : _b.call(_a2, recordKey, editRow, originRow));
255
+ if (success === false) {
256
+ return false;
257
+ }
258
+ upadteRowData(recordKey, editRow);
259
+ const newLineRecord = newLineRecordCache.value[recordKey];
260
+ if (newLineRecord) {
261
+ delete newLineRecordCache.value[recordKey];
262
+ }
263
+ await cancelEditable(recordKey);
264
+ return true;
265
+ };
266
+ const upadteRowData = (recordKey, editRow) => {
267
+ const recordIndexs = getIndexsByKey(recordKey);
268
+ const indexsLen = recordIndexs.length;
269
+ if (indexsLen === 1) {
270
+ rawData.value.splice(recordIndexs[0], 1, editRow);
271
+ }
272
+ if (indexsLen > 1) {
273
+ let copyData = rawData.value;
274
+ let item;
275
+ const childrenColumnName = props.childrenColumnName || "children";
276
+ for (let i = 0; i < indexsLen; i++) {
277
+ item = copyData[recordIndexs[i]];
278
+ if (i === indexsLen - 2) {
279
+ const currentData = (item == null ? void 0 : item[childrenColumnName]) || [];
280
+ currentData.splice(recordIndexs[indexsLen - 1], 1, editRow);
281
+ break;
282
+ }
283
+ copyData = (item == null ? void 0 : item[childrenColumnName]) || [];
284
+ }
285
+ }
286
+ vue.triggerRef(rawData);
287
+ };
31
288
  vue.provide(EditKey, {
32
289
  editCellKeys,
33
290
  openEditor,
34
291
  closeEditor,
35
- oldValuesMap
292
+ // oldValuesMap,
293
+ editableType,
294
+ mergedEditableKeys,
295
+ isRowEdit,
296
+ editRowsMap,
297
+ setEditingCell
36
298
  });
37
299
  return {
38
300
  editCellKeys,
39
301
  openEditor,
40
- closeEditor
302
+ closeEditor,
303
+ cancelEditable,
304
+ startEditable,
305
+ saveEditable,
306
+ isEditable,
307
+ validateTableData,
308
+ validateRowData,
309
+ addEditRecord
41
310
  };
42
311
  };
43
312
  const useEditInject = () => {
@@ -47,7 +316,13 @@ const useEditInject = () => {
47
316
  },
48
317
  closeEditor: () => {
49
318
  },
50
- oldValuesMap: vue.shallowRef({})
319
+ // oldValuesMap: shallowRef({}),
320
+ editRowsMap: vue.shallowRef({}),
321
+ editableType: vue.computed(() => void 0),
322
+ isRowEdit: vue.computed(() => false),
323
+ mergedEditableKeys: vue.computed(() => []),
324
+ setEditingCell: () => {
325
+ }
51
326
  });
52
327
  };
53
328
 
@@ -1 +1 @@
1
- {"version":3,"file":"useEdit.js","sources":["../../../../../../../../packages/components/table/src/hooks/useEdit.ts"],"sourcesContent":["/*\n * @Author: shen\n * @Date: 2023-11-03 11:03:37\n * @LastEditors: shen\n * @LastEditTime: 2023-12-29 10:38:16\n * @Description:\n */\nimport { shallowRef, provide, inject, ref } from 'vue'\nimport type { Ref, ShallowRef, InjectionKey } from 'vue'\n\ntype EditProps = {\n editCellKeys: Ref<string[]>\n openEditor: (key: string | string[], values?: Record<string, any>) => void\n closeEditor: (key?: string | string[]) => void\n oldValuesMap: ShallowRef<Record<string, any>>\n}\n\nconst EditKey: InjectionKey<EditProps> = Symbol('edit')\n\nexport const useEditProvider = () => {\n const editCellKeys = shallowRef<string[]>([])\n const oldValuesMap = shallowRef({})\n const openEditor = (key: string | string[], values?: Record<string, any>) => {\n if (key) {\n if (Array.isArray(key)) {\n editCellKeys.value = key\n } else {\n editCellKeys.value.includes(key) || (editCellKeys.value = [key])\n }\n Object.assign(oldValuesMap.value, values || {})\n }\n }\n const closeEditor = (key?: string | string[]) => {\n if (typeof key === 'undefined') {\n editCellKeys.value = []\n oldValuesMap.value = {}\n return\n }\n const keys = Array.isArray(key) ? key : [key]\n editCellKeys.value = editCellKeys.value.filter((key) => !keys.includes(key))\n keys.forEach((key) => {\n delete oldValuesMap.value[key]\n })\n }\n provide(EditKey, {\n editCellKeys,\n openEditor,\n closeEditor,\n oldValuesMap,\n })\n return {\n editCellKeys,\n openEditor,\n closeEditor,\n }\n}\nexport const useEditInject = () => {\n return inject(EditKey, {\n editCellKeys: ref([]),\n openEditor: () => {},\n closeEditor: () => {},\n oldValuesMap: shallowRef({}),\n })\n}\n"],"names":["shallowRef","key","provide","inject","ref"],"mappings":";;;;AAiBA,MAAM,OAAA,GAAmC,OAAO,MAAM,CAAA;AAE/C,MAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,YAAA,GAAeA,cAAA,CAAqB,EAAE,CAAA;AAC5C,EAAA,MAAM,YAAA,GAAeA,cAAA,CAAW,EAAE,CAAA;AAClC,EAAA,MAAM,UAAA,GAAa,CAAC,GAAA,EAAwB,MAAA,KAAiC;AAC3E,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,QAAA,YAAA,CAAa,KAAA,GAAQ,GAAA;AAAA,MACvB,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,MAAM,QAAA,CAAS,GAAG,MAAM,YAAA,CAAa,KAAA,GAAQ,CAAC,GAAG,CAAA,CAAA;AAAA,MAChE;AACA,MAAA,MAAA,CAAO,MAAA,CAAO,YAAA,CAAa,KAAA,EAAO,MAAA,IAAU,EAAE,CAAA;AAAA,IAChD;AAAA,EACF,CAAA;AACA,EAAA,MAAM,WAAA,GAAc,CAAC,GAAA,KAA4B;AAC/C,IAAA,IAAI,OAAO,QAAQ,WAAA,EAAa;AAC9B,MAAA,YAAA,CAAa,QAAQ,EAAC;AACtB,MAAA,YAAA,CAAa,QAAQ,EAAC;AACtB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAO,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,GAAM,CAAC,GAAG,CAAA;AAC5C,IAAA,YAAA,CAAa,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,MAAA,CAAO,CAACC,SAAQ,CAAC,IAAA,CAAK,QAAA,CAASA,IAAG,CAAC,CAAA;AAC3E,IAAA,IAAA,CAAK,OAAA,CAAQ,CAACA,IAAAA,KAAQ;AACpB,MAAA,OAAO,YAAA,CAAa,MAAMA,IAAG,CAAA;AAAA,IAC/B,CAAC,CAAA;AAAA,EACH,CAAA;AACA,EAAAC,WAAA,CAAQ,OAAA,EAAS;AAAA,IACf,YAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF;AACO,MAAM,gBAAgB,MAAM;AACjC,EAAA,OAAOC,WAAO,OAAA,EAAS;AAAA,IACrB,YAAA,EAAcC,OAAA,CAAI,EAAE,CAAA;AAAA,IACpB,YAAY,MAAM;AAAA,IAAC,CAAA;AAAA,IACnB,aAAa,MAAM;AAAA,IAAC,CAAA;AAAA,IACpB,YAAA,EAAcJ,cAAA,CAAW,EAAE;AAAA,GAC5B,CAAA;AACH;;;;;"}
1
+ {"version":3,"file":"useEdit.js","sources":["../../../../../../../../packages/components/table/src/hooks/useEdit.ts"],"sourcesContent":["/*\n * @Author: shen\n * @Date: 2023-11-03 11:03:37\n * @LastEditors: shen\n * @LastEditTime: 2025-12-02 17:15:49\n * @Description:\n */\nimport type { Ref, ShallowRef, InjectionKey, ComputedRef } from 'vue'\nimport type {\n AddLineOptions,\n DefaultRecordType,\n ErrorListObjectType,\n GetRowKey,\n Key,\n ProTableProps,\n RowEditableType,\n TableEditingCell,\n TableErrorListMap,\n TableExposeType,\n TablePromiseErrorData,\n} from '../components/interface'\nimport { shallowRef, provide, inject, ref, computed, triggerRef } from 'vue'\nimport { useMergedState } from '@pro-design-vue/hooks'\nimport { useIntl } from '@pro-design-vue/components/config-provider'\nimport { message } from 'ant-design-vue'\nimport { cloneDeep } from '@pro-design-vue/utils'\nimport { getCellKey } from '../utils/util'\n\ntype EditProps = {\n editCellKeys: Ref<string[]>\n openEditor: (key: string | string[]) => void\n closeEditor: (key: string) => void\n // oldValuesMap: ShallowRef<Record<string, any>>\n editableType: ComputedRef<RowEditableType | undefined>\n mergedEditableKeys: Ref<Key[] | undefined>\n isRowEdit: ComputedRef<boolean>\n editRowsMap: ShallowRef<Record<string, Record<string, any>>>\n setEditingCell: (params: TableEditingCell, isEdit: boolean) => void\n}\n\nconst EditKey: InjectionKey<EditProps> = Symbol('edit')\n\nexport const useEditProvider = (\n props: ProTableProps,\n {\n rawData,\n getRowKey,\n getIndexsByKey,\n getRecordByKey,\n }: {\n rawData: ShallowRef<DefaultRecordType[]>\n getRowKey: ComputedRef<GetRowKey>\n getIndexsByKey: (key: Key) => number[]\n getRecordByKey: (key: Key) => DefaultRecordType\n },\n) => {\n const editCellKeys = shallowRef<string[]>([])\n // const oldValuesMap = shallowRef({})\n const editRowsMap = shallowRef({})\n const intl = useIntl()\n const editableType = computed<RowEditableType | undefined>(() => props.rowEditable?.type)\n const [mergedEditableKeys, setMergedEditableKeys] = useMergedState<Key[] | undefined>([], {\n value: computed(() => props.editableKeys || props.rowEditable?.editableKeys),\n onChange: props.rowEditable?.onChange\n ? (keys) => {\n props.rowEditable?.onChange?.(\n // 计算编辑的key\n keys ?? [],\n keys?.map((key) => editRowsMap.value[key]) ?? [],\n )\n }\n : undefined,\n })\n\n // 当前编辑的单元格\n const editingCells = ref<{ [cellKey: string]: TableEditingCell }>({})\n const newLineRecordCache = shallowRef<{\n [key: Key]: { defaultValue: any; options: AddLineOptions }\n }>({})\n /** 一个用来标志的set 提供了方便的 api 来去重什么的 */\n const editableKeysSet = computed(() => {\n const keys =\n editableType.value === 'single'\n ? mergedEditableKeys.value?.slice(0, 1)\n : mergedEditableKeys.value\n return new Set(keys)\n })\n\n const isEditable = (recordKey: Key) => {\n if (mergedEditableKeys.value?.includes(recordKey)) return true\n return false\n }\n const isRowEdit = computed(() => !!editableType.value)\n\n const openEditor = (key: string | string[]) => {\n if (key) {\n const newKeys = [...editCellKeys.value]\n if (Array.isArray(key)) {\n editCellKeys.value = key\n } else {\n newKeys.includes(key) || newKeys.push(key)\n }\n editCellKeys.value = newKeys\n // Object.assign(oldValuesMap.value, values || {})\n }\n }\n const closeEditor = (key: string) => {\n const closeKeys = editCellKeys.value.filter((cellKey) => cellKey !== key)\n const closeCells = closeKeys\n .map((key) => editingCells.value[key]!)\n .filter((cell) => !cell.column?.edit?.keepEditMode)\n const list = closeCells.map(\n (cell) =>\n new Promise((resolve) => {\n cell?.validateEdit().then((r) => {\n if (r === true) {\n const cellKey = getCellKey(cell.rowKey, cell.columnKey)\n resolve(cellKey)\n } else {\n resolve(null)\n }\n })\n }),\n )\n\n Promise.all(list).then((keys) => {\n const closeKeys = keys.filter((key) => !!key)\n editCellKeys.value = editCellKeys.value.filter((key) => !closeKeys.includes(key))\n })\n }\n\n const setEditingCell = (params: TableEditingCell, isEdit: boolean) => {\n const cellKey = getCellKey(params.rowKey, params.columnKey)\n\n if (isEdit) {\n // @ts-ignore\n editingCells.value[cellKey] = params\n } else {\n delete editingCells.value[cellKey]\n }\n }\n\n const getErrorListMapByErrors = (errors: ErrorListObjectType[]): TableErrorListMap => {\n const errorMap: TableErrorListMap = {}\n errors.forEach(({ rowKey, columnKey, errorList }) => {\n const key = [rowKey, columnKey].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 = (recordKey: Key) => {\n const cellKeys = Object.keys(editingCells.value)\n const rowCellKeys = cellKeys.filter((cellKey) => cellKey.startsWith(`${recordKey}_`))\n const list = rowCellKeys.map(\n (cellKey) =>\n new Promise<ErrorListObjectType>((resolve) => {\n const cell = editingCells.value[cellKey]\n cell?.validateEdit().then((r) => {\n if (r === true) {\n resolve({ ...cell, errorList: [] })\n } else {\n resolve({ ...cell, errorList: r })\n }\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 recordKey 行唯一标识\n */\n const validateRowData: TableExposeType['validateRowData'] = (recordKey: Key) =>\n new Promise((resolve, reject) => {\n validateOneRowData(recordKey).then(({ errors, errorMap }) => {\n props.onRowValidate?.({ errors, errorMap })\n resolve({ errors, errorMap })\n }, reject)\n })\n\n // 校验可编辑单元格\n const validateTableCellData = () => {\n const cellKeys = Object.keys(editingCells.value)\n const list = cellKeys.map(\n (cellKey) =>\n new Promise<ErrorListObjectType>((resolve) => {\n const cell = editingCells.value[cellKey]\n cell?.validateEdit().then((r) => {\n if (r === true) {\n resolve({ ...cell, errorList: [] })\n } else {\n resolve({ ...cell, errorList: r })\n }\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 const validateTableData: TableExposeType['validateTableData'] = () =>\n new Promise((resolve, reject) => {\n validateTableCellData().then(({ errors, errorMap }) => {\n props.onValidate?.({ errors, errorMap })\n resolve({ errors, errorMap, data: errors?.length ? undefined : rawData.value })\n }, reject)\n })\n\n /**\n * 添加编辑行数据\n *\n * @param recordKey\n */\n const addEditRecord = (recordValue: any, options: AddLineOptions) => {\n // 暂时不支持多行新增\n if (\n isRowEdit.value &&\n Object.keys(newLineRecordCache.value)?.length &&\n props.rowEditable?.onlyAddOneLineAlertMessage !== false\n ) {\n message.warning(\n props.rowEditable?.onlyAddOneLineAlertMessage ||\n intl.getMessage('editableTable.onlyAddOneLine', '只能新增一行'),\n )\n return false\n }\n // 如果是单行的话,不允许多行编辑\n if (isRowEdit.value && editableKeysSet.value.size > 0 && editableType.value === 'single') {\n message.warning(\n props.rowEditable?.onlyOneLineEditorAlertMessage ||\n intl.getMessage('editableTable.onlyOneLineEditor', '只能同时编辑一行'),\n )\n return false\n }\n\n const recordKey = getRowKey.value(recordValue, -1)\n if (!recordKey) {\n throw new Error('请设置 recordCreatorProps.record 并返回一个唯一的key')\n }\n if (isRowEdit.value) {\n editableKeysSet.value.add(recordKey)\n editRowsMap.value[recordKey] = cloneDeep(recordValue)\n setMergedEditableKeys(Array.from(editableKeysSet.value))\n triggerRef(editRowsMap)\n }\n if (options?.position === 'top') {\n rawData.value.unshift(recordValue)\n } else {\n rawData.value.push(recordValue)\n }\n newLineRecordCache.value[recordKey] = {\n defaultValue: recordValue,\n options,\n }\n triggerRef(rawData)\n return true\n }\n\n /**\n * 进入编辑状态\n *\n * @param recordKey\n */\n const startEditable = (recordKey: Key, recordValue?: any) => {\n if (!isRowEdit.value) {\n return false\n }\n // 如果是单行的话,不允许多行编辑\n if (editableKeysSet.value.size > 0 && editableType.value === 'single') {\n message.warning(\n props.rowEditable?.onlyOneLineEditorAlertMessage ||\n intl.getMessage('editableTable.onlyOneLineEditor', '只能同时编辑一行'),\n )\n return false\n }\n editableKeysSet.value.add(recordKey)\n\n editRowsMap.value[recordKey] = cloneDeep(recordValue ?? getRecordByKey(recordKey))\n setMergedEditableKeys(Array.from(editableKeysSet.value))\n triggerRef(editRowsMap)\n return true\n }\n\n /**\n * 退出编辑状态\n *\n * @param recordKey\n */\n const cancelEditable = (recordKey: Key) => {\n if (!isRowEdit.value) {\n return false\n }\n const newLineRecord = newLineRecordCache.value[recordKey]\n if (newLineRecord) {\n delete newLineRecordCache.value[recordKey]\n const rowIndex = rawData.value.findIndex((item) => getRowKey.value(item, -1) === recordKey)\n rawData.value.splice(rowIndex, 1)\n triggerRef(rawData)\n }\n editableKeysSet.value.delete(recordKey)\n delete editRowsMap.value[recordKey]\n setMergedEditableKeys(Array.from(editableKeysSet.value))\n\n return true\n }\n\n /**\n * 保存编辑\n *\n * @param recordKey\n */\n const saveEditable = async (recordKey: Key) => {\n if (!isRowEdit.value) {\n return false\n }\n const { errors } = await validateRowData(recordKey)\n if (!!errors.length) {\n return false\n }\n const editRow = editRowsMap.value[recordKey]\n const originRow = getRecordByKey(recordKey)\n const success = await props.rowEditable?.onSave?.(recordKey, editRow, originRow)\n if (success === false) {\n return false\n }\n upadteRowData(recordKey, editRow)\n const newLineRecord = newLineRecordCache.value[recordKey]\n if (newLineRecord) {\n delete newLineRecordCache.value[recordKey]\n }\n await cancelEditable(recordKey)\n return true\n }\n\n const upadteRowData = (recordKey: Key, editRow: any) => {\n const recordIndexs = getIndexsByKey(recordKey)\n const indexsLen = recordIndexs.length\n if (indexsLen === 1) {\n rawData.value.splice(recordIndexs[0]!, 1, editRow)\n }\n\n if (indexsLen > 1) {\n let copyData: DefaultRecordType[] = rawData.value\n let item: DefaultRecordType\n const childrenColumnName = props.childrenColumnName || 'children'\n for (let i = 0; i < indexsLen; i++) {\n item = copyData[recordIndexs[i]!]!\n if (i === indexsLen - 2) {\n const currentData = item?.[childrenColumnName] || []\n currentData.splice(recordIndexs[indexsLen - 1]!, 1, editRow)\n break\n }\n copyData = item?.[childrenColumnName] || []\n }\n }\n triggerRef(rawData)\n }\n\n provide(EditKey, {\n editCellKeys,\n openEditor,\n closeEditor,\n // oldValuesMap,\n editableType,\n mergedEditableKeys,\n isRowEdit,\n editRowsMap,\n setEditingCell,\n })\n return {\n editCellKeys,\n openEditor,\n closeEditor,\n cancelEditable,\n startEditable,\n saveEditable,\n isEditable,\n validateTableData,\n validateRowData,\n addEditRecord,\n }\n}\nexport const useEditInject = () => {\n return inject(EditKey, {\n editCellKeys: ref([]),\n openEditor: () => {},\n closeEditor: () => {},\n // oldValuesMap: shallowRef({}),\n editRowsMap: shallowRef({}),\n editableType: computed(() => undefined),\n isRowEdit: computed(() => false),\n mergedEditableKeys: computed(() => []),\n setEditingCell: () => {},\n })\n}\n"],"names":["shallowRef","useIntl","computed","_a","useMergedState","ref","key","getCellKey","closeKeys","message","cloneDeep","triggerRef","provide","inject"],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ 'use strict';
2
+
3
+ var validate$1 = require('../../../../utils/validate.js');
4
+
5
+ function getCharacterLength(str, maxCharacter) {
6
+ const hasMaxCharacter = validate$1.isNumber(maxCharacter);
7
+ if (!str || str.length === 0) {
8
+ if (hasMaxCharacter) {
9
+ return {
10
+ length: 0,
11
+ characters: str
12
+ };
13
+ }
14
+ return 0;
15
+ }
16
+ let len = 0;
17
+ for (let i = 0; i < str.length; i++) {
18
+ let currentStringLength = 0;
19
+ if (str.charCodeAt(i) > 127) {
20
+ currentStringLength = 2;
21
+ } else {
22
+ currentStringLength = 1;
23
+ }
24
+ if (hasMaxCharacter && len + currentStringLength > maxCharacter) {
25
+ return {
26
+ length: len,
27
+ characters: str.slice(0, i)
28
+ };
29
+ }
30
+ len += currentStringLength;
31
+ }
32
+ if (hasMaxCharacter) {
33
+ return {
34
+ length: len,
35
+ characters: str
36
+ };
37
+ }
38
+ return len;
39
+ }
40
+ function isValueEmpty(val) {
41
+ const type = Object.prototype.toString.call(val);
42
+ const typeMap = {
43
+ Date: "[object Date]"
44
+ };
45
+ if (type === typeMap.Date) {
46
+ return false;
47
+ }
48
+ return validate$1.isObject(val) ? validate$1.isEmpty(val) : ["", void 0, null].includes(val);
49
+ }
50
+ const VALIDATE_MAP = {
51
+ required: (val) => !isValueEmpty(val),
52
+ whitespace: (val) => !(/^\s+$/.test(val) || val === ""),
53
+ boolean: (val) => validate$1.isBoolean(val),
54
+ max: (val, num) => validate$1.isNumber(val) ? val <= num : getCharacterLength(val) <= num,
55
+ min: (val, num) => validate$1.isNumber(val) ? val >= num : getCharacterLength(val) >= num,
56
+ len: (val, num) => getCharacterLength(String(val)) === num,
57
+ number: (val) => validate$1.isNumber(val),
58
+ enum: (val, strs) => strs.includes(val),
59
+ idcard: (val) => /^(\d{18,18}|\d{15,15}|\d{17,17}x)$/i.test(val),
60
+ telnumber: (val) => /^1[3-9]\d{9}$/.test(val),
61
+ pattern: (val, regexp) => regexp.test(val),
62
+ // 自定义校验规则,可能是异步校验
63
+ validator: (val, validate2) => validate2(val)
64
+ };
65
+ async function validateOneRule(value, rule) {
66
+ let validateResult = { result: true };
67
+ const keys = Object.keys(rule);
68
+ let vOptions;
69
+ let vValidateFun;
70
+ for (let i = 0; i < keys.length; i++) {
71
+ const key = keys[i];
72
+ if (!rule.required && isValueEmpty(value) && !rule.validator) {
73
+ return validateResult;
74
+ }
75
+ const validateRule = VALIDATE_MAP[key];
76
+ if (validateRule && (rule[key] || rule[key] === 0)) {
77
+ vOptions = rule[key] === true ? void 0 : rule[key];
78
+ vValidateFun = validateRule;
79
+ break;
80
+ }
81
+ }
82
+ if (vValidateFun) {
83
+ validateResult = await vValidateFun(value, vOptions);
84
+ if (validate$1.isBoolean(validateResult)) {
85
+ return { ...rule, result: validateResult };
86
+ }
87
+ if (validate$1.isObject(validateResult)) {
88
+ return validateResult;
89
+ }
90
+ }
91
+ return validateResult;
92
+ }
93
+ async function validate(value, rules) {
94
+ const all = rules.map((rule) => validateOneRule(value, rule));
95
+ const r = await Promise.all(all);
96
+ return r;
97
+ }
98
+
99
+ exports.isValueEmpty = isValueEmpty;
100
+ exports.validate = validate;
101
+ exports.validateOneRule = validateOneRule;
102
+ //# sourceMappingURL=form-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-model.js","sources":["../../../../../../../../packages/components/table/src/utils/form-model.ts"],"sourcesContent":["/*\n * @Author: shen\n * @Date: 2025-12-02 09:58:56\n * @LastEditors: shen\n * @LastEditTime: 2025-12-02 10:24:20\n * @Description:\n */\nimport { isEmpty, isObject, isNumber, isBoolean } from '@pro-design-vue/utils'\n\n/**\n * 计算字符串字符的长度并可以截取字符串。\n * @param str 传入字符串\n * @param maxCharacter 规定最大字符串长度\n * @returns 当没有传入maxCharacter时返回字符串字符长度,当传入maxCharacter时返回截取之后的字符串和长度。\n */\nfunction getCharacterLength(str: string): number\nfunction getCharacterLength(\n str: string,\n maxCharacter?: number,\n): { length: number; characters: string }\nfunction getCharacterLength(str: string, maxCharacter?: number) {\n const hasMaxCharacter = isNumber(maxCharacter)\n if (!str || str.length === 0) {\n if (hasMaxCharacter) {\n return {\n length: 0,\n characters: str,\n }\n }\n return 0\n }\n let len = 0\n for (let i = 0; i < str.length; i++) {\n let currentStringLength = 0\n if (str.charCodeAt(i) > 127) {\n currentStringLength = 2\n } else {\n currentStringLength = 1\n }\n if (hasMaxCharacter && len + currentStringLength > maxCharacter) {\n return {\n length: len,\n characters: str.slice(0, i),\n }\n }\n len += currentStringLength\n }\n if (hasMaxCharacter) {\n return {\n length: len,\n characters: str,\n }\n }\n return len\n}\n\n// `{} / [] / '' / undefined / null` 等内容被认为是空; 0 和 false 被认为是正常数据,部分数据的值就是 0 或者 false\nexport function isValueEmpty(val: any): boolean {\n const type: string = Object.prototype.toString.call(val)\n const typeMap: Record<string, any> = {\n Date: '[object Date]',\n }\n if (type === typeMap.Date) {\n return false\n }\n return isObject(val) ? isEmpty(val) : ['', undefined, null].includes(val)\n}\n\nconst VALIDATE_MAP = {\n required: (val: any): boolean => !isValueEmpty(val),\n whitespace: (val: any): boolean => !(/^\\s+$/.test(val) || val === ''),\n boolean: (val: any): boolean => isBoolean(val),\n max: (val: any, num: number): boolean =>\n isNumber(val) ? val <= num : getCharacterLength(val) <= num,\n min: (val: any, num: number): boolean =>\n isNumber(val) ? val >= num : getCharacterLength(val) >= num,\n len: (val: any, num: number): boolean => getCharacterLength(String(val)) === num,\n number: (val: any): boolean => isNumber(val),\n enum: (val: any, strs: Array<string>): boolean => strs.includes(val),\n idcard: (val: any): boolean => /^(\\d{18,18}|\\d{15,15}|\\d{17,17}x)$/i.test(val),\n telnumber: (val: any): boolean => /^1[3-9]\\d{9}$/.test(val),\n pattern: (val: any, regexp: RegExp): boolean => regexp.test(val),\n // 自定义校验规则,可能是异步校验\n validator: (val: any, validate: any): ReturnType<any> => validate(val),\n}\n\nexport type ValidateFuncType = (typeof VALIDATE_MAP)[keyof typeof VALIDATE_MAP]\n\n/**\n * 校验某一条数据的某一条规则,一种校验规则不满足则不再进行校验。\n * @param value 值\n * @param rule 校验规则\n * @returns 两种校验结果,一种是内置校验规则的校验结果哦,二种是自定义校验规则(validator)的校验结果\n */\nexport async function validateOneRule(value: any, rule: any): Promise<any> {\n let validateResult: any = { result: true }\n const keys = Object.keys(rule) as (keyof any)[]\n let vOptions: undefined | any[keyof any]\n let vValidateFun: any\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]!\n // 非必填选项,值为空,非自定义规则:无需校验,直接返回 true\n if (!rule.required && isValueEmpty(value) && !rule.validator) {\n return validateResult\n }\n\n const validateRule: ValidateFuncType = VALIDATE_MAP[key as keyof typeof VALIDATE_MAP]\n // 找到一个校验规则,则无需再找,因为参数只允许对一个规则进行校验\n if (validateRule && (rule[key] || rule[key] === 0)) {\n // rule 值为 true 则表示没有校验参数,只是对值进行默认规则校验\n vOptions = rule[key] === true ? undefined : rule[key]\n vValidateFun = validateRule\n break\n }\n }\n if (vValidateFun) {\n // @ts-ignore\n validateResult = await vValidateFun(value, vOptions)\n // 如果校验不通过,则返回校验不通过的规则\n if (isBoolean(validateResult)) {\n return { ...rule, result: validateResult }\n }\n // 校验结果为 CustomValidateObj,只有自定义校验规则会存在这种情况\n if (isObject(validateResult)) {\n return validateResult\n }\n }\n return validateResult\n}\n\n// 单个数据进行全规则校验,校验成功也可能会有 message\nexport async function validate(value: any, rules: Array<any>): Promise<any[]> {\n const all = rules.map((rule) => validateOneRule(value, rule))\n const r = await Promise.all(all)\n return r\n}\n"],"names":["isNumber","isObject","isEmpty","isBoolean","validate"],"mappings":"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"}
@@ -28,6 +28,9 @@ const genColumnKey = (key, index) => {
28
28
  function getColumnPos(index, pos) {
29
29
  return pos ? `${pos}-${index}` : `${index}`;
30
30
  }
31
+ function getCellKey(rowKey, colKey) {
32
+ return [rowKey, colKey].join("_");
33
+ }
31
34
  function objectToEmpty(obj) {
32
35
  for (const key in obj) Object.prototype.hasOwnProperty.call(obj, key) && delete obj[key];
33
36
  }
@@ -230,6 +233,7 @@ exports.deleteNestItemData = deleteNestItemData;
230
233
  exports.ensureValidVNode = ensureValidVNode;
231
234
  exports.eventsClose = eventsClose;
232
235
  exports.genColumnKey = genColumnKey;
236
+ exports.getCellKey = getCellKey;
233
237
  exports.getColumnPos = getColumnPos;
234
238
  exports.getPathValue = getPathValue;
235
239
  exports.is = is;