pro-design-vue 1.3.20 → 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 (145) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.full.js +1203 -1588
  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 +1204 -1589
  8. package/es/components/config-provider/src/typing.d.ts +3 -1
  9. package/es/components/table/src/components/Body/Body.vue.d.ts +270 -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/BodyExtraCell.vue.d.ts +6 -1
  13. package/es/components/table/src/components/Body/BodyRow.vue.d.ts +270 -15
  14. package/es/components/table/src/components/Body/BodyRows.vue.d.ts +270 -15
  15. package/es/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  16. package/es/components/table/src/components/ExpandIcon.vue.d.ts +3 -0
  17. package/es/components/table/src/components/InteralTable.vue.d.ts +332 -19
  18. package/es/components/table/src/components/Table.d.ts +60 -0
  19. package/es/components/table/src/components/context/TableContext.d.ts +6 -1
  20. package/es/components/table/src/components/interface.d.ts +308 -23
  21. package/es/components/table/src/hooks/useCellProps.d.ts +5 -1
  22. package/es/components/table/src/hooks/useEdit.d.ts +24 -7
  23. package/es/components/table/src/utils/form-model.d.ts +25 -0
  24. package/es/components/table/src/utils/util.d.ts +1 -0
  25. package/es/index.d.ts +291 -5
  26. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs +35 -0
  27. package/es/packages/components/table/src/components/Body/BodyCell.vue.mjs.map +1 -0
  28. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs +129 -0
  29. package/es/packages/components/table/src/components/Body/BodyCell.vue2.mjs.map +1 -0
  30. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs +256 -0
  31. package/es/packages/components/table/src/components/Body/BodyEditCell.mjs.map +1 -0
  32. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue.mjs +2 -1
  33. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue.mjs.map +1 -1
  34. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue2.mjs +1 -0
  35. package/es/packages/components/table/src/components/Body/BodyExtraCell.vue2.mjs.map +1 -1
  36. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs +66 -9
  37. package/es/packages/components/table/src/components/Body/BodyRow.vue.mjs.map +1 -1
  38. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs +26 -18
  39. package/es/packages/components/table/src/components/Body/BodyRow.vue2.mjs.map +1 -1
  40. package/es/packages/components/table/src/components/Body/{BodyCell.mjs → BodyTextCell.mjs} +25 -155
  41. package/es/packages/components/table/src/components/Body/BodyTextCell.mjs.map +1 -0
  42. package/es/packages/components/table/src/components/ExpandIcon.vue.mjs.map +1 -1
  43. package/es/packages/components/table/src/components/ExpandIcon.vue2.mjs +4 -2
  44. package/es/packages/components/table/src/components/ExpandIcon.vue2.mjs.map +1 -1
  45. package/es/packages/components/table/src/components/InteralTable.vue.mjs +24 -25
  46. package/es/packages/components/table/src/components/InteralTable.vue.mjs.map +1 -1
  47. package/es/packages/components/table/src/components/InteralTable.vue2.mjs +43 -97
  48. package/es/packages/components/table/src/components/InteralTable.vue2.mjs.map +1 -1
  49. package/es/packages/components/table/src/components/Table.mjs +24 -20
  50. package/es/packages/components/table/src/components/Table.mjs.map +1 -1
  51. package/es/packages/components/table/src/components/context/TableContext.mjs.map +1 -1
  52. package/es/packages/components/table/src/components/interface.mjs +28 -0
  53. package/es/packages/components/table/src/components/interface.mjs.map +1 -1
  54. package/es/packages/components/table/src/hooks/useCellProps.mjs +8 -0
  55. package/es/packages/components/table/src/hooks/useCellProps.mjs.map +1 -1
  56. package/es/packages/components/table/src/hooks/useEdit.mjs +293 -18
  57. package/es/packages/components/table/src/hooks/useEdit.mjs.map +1 -1
  58. package/es/packages/components/table/src/utils/form-model.mjs +98 -0
  59. package/es/packages/components/table/src/utils/form-model.mjs.map +1 -0
  60. package/es/packages/components/table/src/utils/util.mjs +4 -1
  61. package/es/packages/components/table/src/utils/util.mjs.map +1 -1
  62. package/es/packages/utils/dom.mjs +15 -1
  63. package/es/packages/utils/dom.mjs.map +1 -1
  64. package/es/packages/utils/index.mjs +1 -1
  65. package/es/utils/dom.d.ts +2 -0
  66. package/es/version.d.ts +1 -1
  67. package/es/version.mjs +1 -1
  68. package/es/version.mjs.map +1 -1
  69. package/lib/components/config-provider/src/typing.d.ts +3 -1
  70. package/lib/components/table/src/components/Body/Body.vue.d.ts +270 -15
  71. package/lib/components/table/src/components/Body/BodyCell.vue.d.ts +255 -0
  72. package/lib/components/table/src/components/Body/BodyEditCell.d.ts +60 -0
  73. package/lib/components/table/src/components/Body/BodyExtraCell.vue.d.ts +6 -1
  74. package/lib/components/table/src/components/Body/BodyRow.vue.d.ts +270 -15
  75. package/lib/components/table/src/components/Body/BodyRows.vue.d.ts +270 -15
  76. package/lib/components/table/src/components/Body/{BodyCell.d.ts → BodyTextCell.d.ts} +1 -7
  77. package/lib/components/table/src/components/ExpandIcon.vue.d.ts +3 -0
  78. package/lib/components/table/src/components/InteralTable.vue.d.ts +332 -19
  79. package/lib/components/table/src/components/Table.d.ts +60 -0
  80. package/lib/components/table/src/components/context/TableContext.d.ts +6 -1
  81. package/lib/components/table/src/components/interface.d.ts +308 -23
  82. package/lib/components/table/src/hooks/useCellProps.d.ts +5 -1
  83. package/lib/components/table/src/hooks/useEdit.d.ts +24 -7
  84. package/lib/components/table/src/utils/form-model.d.ts +25 -0
  85. package/lib/components/table/src/utils/util.d.ts +1 -0
  86. package/lib/index.d.ts +291 -5
  87. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js +39 -0
  88. package/lib/packages/components/table/src/components/Body/BodyCell.vue.js.map +1 -0
  89. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js +133 -0
  90. package/lib/packages/components/table/src/components/Body/BodyCell.vue2.js.map +1 -0
  91. package/lib/packages/components/table/src/components/Body/BodyEditCell.js +260 -0
  92. package/lib/packages/components/table/src/components/Body/BodyEditCell.js.map +1 -0
  93. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue.js +2 -1
  94. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue.js.map +1 -1
  95. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue2.js +1 -0
  96. package/lib/packages/components/table/src/components/Body/BodyExtraCell.vue2.js.map +1 -1
  97. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js +66 -9
  98. package/lib/packages/components/table/src/components/Body/BodyRow.vue.js.map +1 -1
  99. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js +24 -16
  100. package/lib/packages/components/table/src/components/Body/BodyRow.vue2.js.map +1 -1
  101. package/lib/packages/components/table/src/components/Body/{BodyCell.js → BodyTextCell.js} +24 -154
  102. package/lib/packages/components/table/src/components/Body/BodyTextCell.js.map +1 -0
  103. package/lib/packages/components/table/src/components/ExpandIcon.vue.js.map +1 -1
  104. package/lib/packages/components/table/src/components/ExpandIcon.vue2.js +4 -2
  105. package/lib/packages/components/table/src/components/ExpandIcon.vue2.js.map +1 -1
  106. package/lib/packages/components/table/src/components/InteralTable.vue.js +24 -25
  107. package/lib/packages/components/table/src/components/InteralTable.vue.js.map +1 -1
  108. package/lib/packages/components/table/src/components/InteralTable.vue2.js +43 -97
  109. package/lib/packages/components/table/src/components/InteralTable.vue2.js.map +1 -1
  110. package/lib/packages/components/table/src/components/Table.js +24 -20
  111. package/lib/packages/components/table/src/components/Table.js.map +1 -1
  112. package/lib/packages/components/table/src/components/context/TableContext.js.map +1 -1
  113. package/lib/packages/components/table/src/components/interface.js +28 -0
  114. package/lib/packages/components/table/src/components/interface.js.map +1 -1
  115. package/lib/packages/components/table/src/hooks/useCellProps.js +8 -0
  116. package/lib/packages/components/table/src/hooks/useCellProps.js.map +1 -1
  117. package/lib/packages/components/table/src/hooks/useEdit.js +292 -17
  118. package/lib/packages/components/table/src/hooks/useEdit.js.map +1 -1
  119. package/lib/packages/components/table/src/utils/form-model.js +102 -0
  120. package/lib/packages/components/table/src/utils/form-model.js.map +1 -0
  121. package/lib/packages/components/table/src/utils/util.js +4 -0
  122. package/lib/packages/components/table/src/utils/util.js.map +1 -1
  123. package/lib/packages/utils/dom.js +16 -0
  124. package/lib/packages/utils/dom.js.map +1 -1
  125. package/lib/packages/utils/index.js +2 -0
  126. package/lib/packages/utils/index.js.map +1 -1
  127. package/lib/utils/dom.d.ts +2 -0
  128. package/lib/version.d.ts +1 -1
  129. package/lib/version.js +1 -1
  130. package/lib/version.js.map +1 -1
  131. package/package.json +1 -1
  132. package/theme-chalk/index.css +1 -1
  133. package/theme-chalk/src/table/table.less +78 -25
  134. package/es/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  135. package/es/packages/components/table/src/components/Body/BodyCell.mjs.map +0 -1
  136. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs +0 -48
  137. package/es/packages/components/table/src/components/Body/EditInput.vue.mjs.map +0 -1
  138. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs +0 -151
  139. package/es/packages/components/table/src/components/Body/EditInput.vue2.mjs.map +0 -1
  140. package/lib/components/table/src/components/Body/EditInput.vue.d.ts +0 -102
  141. package/lib/packages/components/table/src/components/Body/BodyCell.js.map +0 -1
  142. package/lib/packages/components/table/src/components/Body/EditInput.vue.js +0 -52
  143. package/lib/packages/components/table/src/components/Body/EditInput.vue.js.map +0 -1
  144. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js +0 -155
  145. package/lib/packages/components/table/src/components/Body/EditInput.vue2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useCellProps.mjs","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":["rowColumnsMap"],"mappings":"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"}
1
+ {"version":3,"file":"useCellProps.mjs","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":["rowColumnsMap"],"mappings":"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"}
@@ -1,41 +1,310 @@
1
- import { inject, shallowRef, ref, provide } from 'vue';
1
+ import { inject, computed, shallowRef, ref, provide, triggerRef } from 'vue';
2
+ import { message } from 'ant-design-vue';
3
+ import { getCellKey } from '../utils/util.mjs';
4
+ import { useIntl } from '../../../config-provider/src/useIntl.mjs';
5
+ import { useMergedState } from '../../../../hooks/use-merged-state/index.mjs';
6
+ import { cloneDeep } from 'lodash-unified';
2
7
 
3
8
  const EditKey = Symbol("edit");
4
- const useEditProvider = () => {
9
+ const useEditProvider = (props, {
10
+ rawData,
11
+ getRowKey,
12
+ getIndexsByKey,
13
+ getRecordByKey
14
+ }) => {
15
+ var _a;
5
16
  const editCellKeys = shallowRef([]);
6
- const oldValuesMap = shallowRef({});
7
- const openEditor = (key, values) => {
17
+ const editRowsMap = shallowRef({});
18
+ const intl = useIntl();
19
+ const editableType = computed(() => {
20
+ var _a2;
21
+ return (_a2 = props.rowEditable) == null ? void 0 : _a2.type;
22
+ });
23
+ const [mergedEditableKeys, setMergedEditableKeys] = useMergedState([], {
24
+ value: computed(() => {
25
+ var _a2;
26
+ return props.editableKeys || ((_a2 = props.rowEditable) == null ? void 0 : _a2.editableKeys);
27
+ }),
28
+ onChange: ((_a = props.rowEditable) == null ? void 0 : _a.onChange) ? (keys) => {
29
+ var _a2, _b, _c;
30
+ (_c = (_a2 = props.rowEditable) == null ? void 0 : _a2.onChange) == null ? void 0 : _c.call(
31
+ _a2,
32
+ // 计算编辑的key
33
+ keys != null ? keys : [],
34
+ (_b = keys == null ? void 0 : keys.map((key) => editRowsMap.value[key])) != null ? _b : []
35
+ );
36
+ } : void 0
37
+ });
38
+ const editingCells = ref({});
39
+ const newLineRecordCache = shallowRef({});
40
+ const editableKeysSet = computed(() => {
41
+ var _a2;
42
+ const keys = editableType.value === "single" ? (_a2 = mergedEditableKeys.value) == null ? void 0 : _a2.slice(0, 1) : mergedEditableKeys.value;
43
+ return new Set(keys);
44
+ });
45
+ const isEditable = (recordKey) => {
46
+ var _a2;
47
+ if ((_a2 = mergedEditableKeys.value) == null ? void 0 : _a2.includes(recordKey)) return true;
48
+ return false;
49
+ };
50
+ const isRowEdit = computed(() => !!editableType.value);
51
+ const openEditor = (key) => {
8
52
  if (key) {
53
+ const newKeys = [...editCellKeys.value];
9
54
  if (Array.isArray(key)) {
10
55
  editCellKeys.value = key;
11
56
  } else {
12
- editCellKeys.value.includes(key) || (editCellKeys.value = [key]);
57
+ newKeys.includes(key) || newKeys.push(key);
13
58
  }
14
- Object.assign(oldValuesMap.value, values || {});
59
+ editCellKeys.value = newKeys;
15
60
  }
16
61
  };
17
62
  const closeEditor = (key) => {
18
- if (typeof key === "undefined") {
19
- editCellKeys.value = [];
20
- oldValuesMap.value = {};
21
- return;
22
- }
23
- const keys = Array.isArray(key) ? key : [key];
24
- editCellKeys.value = editCellKeys.value.filter((key2) => !keys.includes(key2));
25
- keys.forEach((key2) => {
26
- delete oldValuesMap.value[key2];
63
+ const closeKeys = editCellKeys.value.filter((cellKey) => cellKey !== key);
64
+ const closeCells = closeKeys.map((key2) => editingCells.value[key2]).filter((cell) => {
65
+ var _a2, _b;
66
+ return !((_b = (_a2 = cell.column) == null ? void 0 : _a2.edit) == null ? void 0 : _b.keepEditMode);
67
+ });
68
+ const list = closeCells.map(
69
+ (cell) => new Promise((resolve) => {
70
+ cell == null ? void 0 : cell.validateEdit().then((r) => {
71
+ if (r === true) {
72
+ const cellKey = getCellKey(cell.rowKey, cell.columnKey);
73
+ resolve(cellKey);
74
+ } else {
75
+ resolve(null);
76
+ }
77
+ });
78
+ })
79
+ );
80
+ Promise.all(list).then((keys) => {
81
+ const closeKeys2 = keys.filter((key2) => !!key2);
82
+ editCellKeys.value = editCellKeys.value.filter((key2) => !closeKeys2.includes(key2));
83
+ });
84
+ };
85
+ const setEditingCell = (params, isEdit) => {
86
+ const cellKey = getCellKey(params.rowKey, params.columnKey);
87
+ if (isEdit) {
88
+ editingCells.value[cellKey] = params;
89
+ } else {
90
+ delete editingCells.value[cellKey];
91
+ }
92
+ };
93
+ const getErrorListMapByErrors = (errors) => {
94
+ const errorMap = {};
95
+ errors.forEach(({ rowKey, columnKey, errorList }) => {
96
+ const key = [rowKey, columnKey].join("__");
97
+ if (errorList == null ? void 0 : errorList.length) {
98
+ errorMap[key] = errorList;
99
+ } else {
100
+ delete errorMap[key];
101
+ }
102
+ });
103
+ return errorMap;
104
+ };
105
+ const validateOneRowData = (recordKey) => {
106
+ const cellKeys = Object.keys(editingCells.value);
107
+ const rowCellKeys = cellKeys.filter((cellKey) => cellKey.startsWith(`${recordKey}_`));
108
+ const list = rowCellKeys.map(
109
+ (cellKey) => new Promise((resolve) => {
110
+ const cell = editingCells.value[cellKey];
111
+ cell == null ? void 0 : cell.validateEdit().then((r) => {
112
+ if (r === true) {
113
+ resolve({ ...cell, errorList: [] });
114
+ } else {
115
+ resolve({ ...cell, errorList: r });
116
+ }
117
+ });
118
+ })
119
+ );
120
+ return new Promise((resolve, reject) => {
121
+ Promise.all(list).then((errors) => {
122
+ resolve({
123
+ errors: errors.filter((t) => {
124
+ var _a2;
125
+ return (_a2 = t.errorList) == null ? void 0 : _a2.length;
126
+ }),
127
+ errorMap: getErrorListMapByErrors(errors)
128
+ });
129
+ }, reject);
130
+ });
131
+ };
132
+ const validateRowData = (recordKey) => new Promise((resolve, reject) => {
133
+ validateOneRowData(recordKey).then(({ errors, errorMap }) => {
134
+ var _a2;
135
+ (_a2 = props.onRowValidate) == null ? void 0 : _a2.call(props, { errors, errorMap });
136
+ resolve({ errors, errorMap });
137
+ }, reject);
138
+ });
139
+ const validateTableCellData = () => {
140
+ const cellKeys = Object.keys(editingCells.value);
141
+ const list = cellKeys.map(
142
+ (cellKey) => new Promise((resolve) => {
143
+ const cell = editingCells.value[cellKey];
144
+ cell == null ? void 0 : cell.validateEdit().then((r) => {
145
+ if (r === true) {
146
+ resolve({ ...cell, errorList: [] });
147
+ } else {
148
+ resolve({ ...cell, errorList: r });
149
+ }
150
+ });
151
+ })
152
+ );
153
+ return new Promise((resolve, reject) => {
154
+ Promise.all(list).then((errors) => {
155
+ resolve({
156
+ errors: errors.filter((t) => {
157
+ var _a2;
158
+ return (_a2 = t.errorList) == null ? void 0 : _a2.length;
159
+ }),
160
+ errorMap: getErrorListMapByErrors(errors)
161
+ });
162
+ }, reject);
27
163
  });
28
164
  };
165
+ const validateTableData = () => new Promise((resolve, reject) => {
166
+ validateTableCellData().then(({ errors, errorMap }) => {
167
+ var _a2;
168
+ (_a2 = props.onValidate) == null ? void 0 : _a2.call(props, { errors, errorMap });
169
+ resolve({ errors, errorMap, data: (errors == null ? void 0 : errors.length) ? void 0 : rawData.value });
170
+ }, reject);
171
+ });
172
+ const addEditRecord = (recordValue, options) => {
173
+ var _a2, _b, _c, _d;
174
+ if (isRowEdit.value && ((_a2 = Object.keys(newLineRecordCache.value)) == null ? void 0 : _a2.length) && ((_b = props.rowEditable) == null ? void 0 : _b.onlyAddOneLineAlertMessage) !== false) {
175
+ message.warning(
176
+ ((_c = props.rowEditable) == null ? void 0 : _c.onlyAddOneLineAlertMessage) || intl.getMessage("editableTable.onlyAddOneLine", "\u53EA\u80FD\u65B0\u589E\u4E00\u884C")
177
+ );
178
+ return false;
179
+ }
180
+ if (isRowEdit.value && editableKeysSet.value.size > 0 && editableType.value === "single") {
181
+ message.warning(
182
+ ((_d = props.rowEditable) == null ? void 0 : _d.onlyOneLineEditorAlertMessage) || intl.getMessage("editableTable.onlyOneLineEditor", "\u53EA\u80FD\u540C\u65F6\u7F16\u8F91\u4E00\u884C")
183
+ );
184
+ return false;
185
+ }
186
+ const recordKey = getRowKey.value(recordValue, -1);
187
+ if (!recordKey) {
188
+ throw new Error("\u8BF7\u8BBE\u7F6E recordCreatorProps.record \u5E76\u8FD4\u56DE\u4E00\u4E2A\u552F\u4E00\u7684key");
189
+ }
190
+ if (isRowEdit.value) {
191
+ editableKeysSet.value.add(recordKey);
192
+ editRowsMap.value[recordKey] = cloneDeep(recordValue);
193
+ setMergedEditableKeys(Array.from(editableKeysSet.value));
194
+ triggerRef(editRowsMap);
195
+ }
196
+ if ((options == null ? void 0 : options.position) === "top") {
197
+ rawData.value.unshift(recordValue);
198
+ } else {
199
+ rawData.value.push(recordValue);
200
+ }
201
+ newLineRecordCache.value[recordKey] = {
202
+ defaultValue: recordValue,
203
+ options
204
+ };
205
+ triggerRef(rawData);
206
+ return true;
207
+ };
208
+ const startEditable = (recordKey, recordValue) => {
209
+ var _a2;
210
+ if (!isRowEdit.value) {
211
+ return false;
212
+ }
213
+ if (editableKeysSet.value.size > 0 && editableType.value === "single") {
214
+ message.warning(
215
+ ((_a2 = props.rowEditable) == null ? void 0 : _a2.onlyOneLineEditorAlertMessage) || intl.getMessage("editableTable.onlyOneLineEditor", "\u53EA\u80FD\u540C\u65F6\u7F16\u8F91\u4E00\u884C")
216
+ );
217
+ return false;
218
+ }
219
+ editableKeysSet.value.add(recordKey);
220
+ editRowsMap.value[recordKey] = cloneDeep(recordValue != null ? recordValue : getRecordByKey(recordKey));
221
+ setMergedEditableKeys(Array.from(editableKeysSet.value));
222
+ triggerRef(editRowsMap);
223
+ return true;
224
+ };
225
+ const cancelEditable = (recordKey) => {
226
+ if (!isRowEdit.value) {
227
+ return false;
228
+ }
229
+ const newLineRecord = newLineRecordCache.value[recordKey];
230
+ if (newLineRecord) {
231
+ delete newLineRecordCache.value[recordKey];
232
+ const rowIndex = rawData.value.findIndex((item) => getRowKey.value(item, -1) === recordKey);
233
+ rawData.value.splice(rowIndex, 1);
234
+ triggerRef(rawData);
235
+ }
236
+ editableKeysSet.value.delete(recordKey);
237
+ delete editRowsMap.value[recordKey];
238
+ setMergedEditableKeys(Array.from(editableKeysSet.value));
239
+ return true;
240
+ };
241
+ const saveEditable = async (recordKey) => {
242
+ var _a2, _b;
243
+ if (!isRowEdit.value) {
244
+ return false;
245
+ }
246
+ const { errors } = await validateRowData(recordKey);
247
+ if (!!errors.length) {
248
+ return false;
249
+ }
250
+ const editRow = editRowsMap.value[recordKey];
251
+ const originRow = getRecordByKey(recordKey);
252
+ const success = await ((_b = (_a2 = props.rowEditable) == null ? void 0 : _a2.onSave) == null ? void 0 : _b.call(_a2, recordKey, editRow, originRow));
253
+ if (success === false) {
254
+ return false;
255
+ }
256
+ upadteRowData(recordKey, editRow);
257
+ const newLineRecord = newLineRecordCache.value[recordKey];
258
+ if (newLineRecord) {
259
+ delete newLineRecordCache.value[recordKey];
260
+ }
261
+ await cancelEditable(recordKey);
262
+ return true;
263
+ };
264
+ const upadteRowData = (recordKey, editRow) => {
265
+ const recordIndexs = getIndexsByKey(recordKey);
266
+ const indexsLen = recordIndexs.length;
267
+ if (indexsLen === 1) {
268
+ rawData.value.splice(recordIndexs[0], 1, editRow);
269
+ }
270
+ if (indexsLen > 1) {
271
+ let copyData = rawData.value;
272
+ let item;
273
+ const childrenColumnName = props.childrenColumnName || "children";
274
+ for (let i = 0; i < indexsLen; i++) {
275
+ item = copyData[recordIndexs[i]];
276
+ if (i === indexsLen - 2) {
277
+ const currentData = (item == null ? void 0 : item[childrenColumnName]) || [];
278
+ currentData.splice(recordIndexs[indexsLen - 1], 1, editRow);
279
+ break;
280
+ }
281
+ copyData = (item == null ? void 0 : item[childrenColumnName]) || [];
282
+ }
283
+ }
284
+ triggerRef(rawData);
285
+ };
29
286
  provide(EditKey, {
30
287
  editCellKeys,
31
288
  openEditor,
32
289
  closeEditor,
33
- oldValuesMap
290
+ // oldValuesMap,
291
+ editableType,
292
+ mergedEditableKeys,
293
+ isRowEdit,
294
+ editRowsMap,
295
+ setEditingCell
34
296
  });
35
297
  return {
36
298
  editCellKeys,
37
299
  openEditor,
38
- closeEditor
300
+ closeEditor,
301
+ cancelEditable,
302
+ startEditable,
303
+ saveEditable,
304
+ isEditable,
305
+ validateTableData,
306
+ validateRowData,
307
+ addEditRecord
39
308
  };
40
309
  };
41
310
  const useEditInject = () => {
@@ -45,7 +314,13 @@ const useEditInject = () => {
45
314
  },
46
315
  closeEditor: () => {
47
316
  },
48
- oldValuesMap: shallowRef({})
317
+ // oldValuesMap: shallowRef({}),
318
+ editRowsMap: shallowRef({}),
319
+ editableType: computed(() => void 0),
320
+ isRowEdit: computed(() => false),
321
+ mergedEditableKeys: computed(() => []),
322
+ setEditingCell: () => {
323
+ }
49
324
  });
50
325
  };
51
326
 
@@ -1 +1 @@
1
- {"version":3,"file":"useEdit.mjs","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":["key"],"mappings":";;AAiBA,MAAM,OAAA,GAAmC,OAAO,MAAM,CAAA;AAE/C,MAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,YAAA,GAAe,UAAA,CAAqB,EAAE,CAAA;AAC5C,EAAA,MAAM,YAAA,GAAe,UAAA,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,CAACA,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,EAAA,OAAA,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,OAAO,OAAO,OAAA,EAAS;AAAA,IACrB,YAAA,EAAc,GAAA,CAAI,EAAE,CAAA;AAAA,IACpB,YAAY,MAAM;AAAA,IAAC,CAAA;AAAA,IACnB,aAAa,MAAM;AAAA,IAAC,CAAA;AAAA,IACpB,YAAA,EAAc,UAAA,CAAW,EAAE;AAAA,GAC5B,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"useEdit.mjs","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":["_a","key","closeKeys"],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { isBoolean, isObject, isEmpty, isNumber } from '../../../../utils/validate.mjs';
2
+
3
+ function getCharacterLength(str, maxCharacter) {
4
+ const hasMaxCharacter = isNumber(maxCharacter);
5
+ if (!str || str.length === 0) {
6
+ if (hasMaxCharacter) {
7
+ return {
8
+ length: 0,
9
+ characters: str
10
+ };
11
+ }
12
+ return 0;
13
+ }
14
+ let len = 0;
15
+ for (let i = 0; i < str.length; i++) {
16
+ let currentStringLength = 0;
17
+ if (str.charCodeAt(i) > 127) {
18
+ currentStringLength = 2;
19
+ } else {
20
+ currentStringLength = 1;
21
+ }
22
+ if (hasMaxCharacter && len + currentStringLength > maxCharacter) {
23
+ return {
24
+ length: len,
25
+ characters: str.slice(0, i)
26
+ };
27
+ }
28
+ len += currentStringLength;
29
+ }
30
+ if (hasMaxCharacter) {
31
+ return {
32
+ length: len,
33
+ characters: str
34
+ };
35
+ }
36
+ return len;
37
+ }
38
+ function isValueEmpty(val) {
39
+ const type = Object.prototype.toString.call(val);
40
+ const typeMap = {
41
+ Date: "[object Date]"
42
+ };
43
+ if (type === typeMap.Date) {
44
+ return false;
45
+ }
46
+ return isObject(val) ? isEmpty(val) : ["", void 0, null].includes(val);
47
+ }
48
+ const VALIDATE_MAP = {
49
+ required: (val) => !isValueEmpty(val),
50
+ whitespace: (val) => !(/^\s+$/.test(val) || val === ""),
51
+ boolean: (val) => isBoolean(val),
52
+ max: (val, num) => isNumber(val) ? val <= num : getCharacterLength(val) <= num,
53
+ min: (val, num) => isNumber(val) ? val >= num : getCharacterLength(val) >= num,
54
+ len: (val, num) => getCharacterLength(String(val)) === num,
55
+ number: (val) => isNumber(val),
56
+ enum: (val, strs) => strs.includes(val),
57
+ idcard: (val) => /^(\d{18,18}|\d{15,15}|\d{17,17}x)$/i.test(val),
58
+ telnumber: (val) => /^1[3-9]\d{9}$/.test(val),
59
+ pattern: (val, regexp) => regexp.test(val),
60
+ // 自定义校验规则,可能是异步校验
61
+ validator: (val, validate2) => validate2(val)
62
+ };
63
+ async function validateOneRule(value, rule) {
64
+ let validateResult = { result: true };
65
+ const keys = Object.keys(rule);
66
+ let vOptions;
67
+ let vValidateFun;
68
+ for (let i = 0; i < keys.length; i++) {
69
+ const key = keys[i];
70
+ if (!rule.required && isValueEmpty(value) && !rule.validator) {
71
+ return validateResult;
72
+ }
73
+ const validateRule = VALIDATE_MAP[key];
74
+ if (validateRule && (rule[key] || rule[key] === 0)) {
75
+ vOptions = rule[key] === true ? void 0 : rule[key];
76
+ vValidateFun = validateRule;
77
+ break;
78
+ }
79
+ }
80
+ if (vValidateFun) {
81
+ validateResult = await vValidateFun(value, vOptions);
82
+ if (isBoolean(validateResult)) {
83
+ return { ...rule, result: validateResult };
84
+ }
85
+ if (isObject(validateResult)) {
86
+ return validateResult;
87
+ }
88
+ }
89
+ return validateResult;
90
+ }
91
+ async function validate(value, rules) {
92
+ const all = rules.map((rule) => validateOneRule(value, rule));
93
+ const r = await Promise.all(all);
94
+ return r;
95
+ }
96
+
97
+ export { isValueEmpty, validate, validateOneRule };
98
+ //# sourceMappingURL=form-model.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-model.mjs","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":["validate"],"mappings":"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"}
@@ -24,6 +24,9 @@ const genColumnKey = (key, index) => {
24
24
  function getColumnPos(index, pos) {
25
25
  return pos ? `${pos}-${index}` : `${index}`;
26
26
  }
27
+ function getCellKey(rowKey, colKey) {
28
+ return [rowKey, colKey].join("_");
29
+ }
27
30
  function objectToEmpty(obj) {
28
31
  for (const key in obj) Object.prototype.hasOwnProperty.call(obj, key) && delete obj[key];
29
32
  }
@@ -217,5 +220,5 @@ const isBordered = (borderType, border) => {
217
220
  return border[borderType];
218
221
  };
219
222
 
220
- export { addNestItemData, arrAdd, arrDel, convertChildrenToColumns, isValid as default, deleteNestItemData, ensureValidVNode, eventsClose, genColumnKey, getColumnPos, getPathValue, is, isArray, isBordered, isFunction, isObject, isPromise, isString, isValidElement, objectToEmpty, parseStyleText, setPromise };
223
+ export { addNestItemData, arrAdd, arrDel, convertChildrenToColumns, isValid as default, deleteNestItemData, ensureValidVNode, eventsClose, genColumnKey, getCellKey, getColumnPos, getPathValue, is, isArray, isBordered, isFunction, isObject, isPromise, isString, isValidElement, objectToEmpty, parseStyleText, setPromise };
221
224
  //# sourceMappingURL=util.mjs.map