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":"InteralTable.vue.js","sources":["../../../../../../../../packages/components/table/src/components/InteralTable.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-01 09:29:27\n * @LastEditors: shen\n * @LastEditTime: 2025-11-26 10:59:54\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { WatchStopHandle } from 'vue'\nimport {\n computed,\n defineComponent,\n shallowRef,\n ref,\n watchEffect,\n inject,\n watch,\n toRaw,\n triggerRef,\n onActivated,\n isReactive,\n toRef,\n} from 'vue'\nimport { Spin, Pagination } from 'ant-design-vue'\nimport { baseTableProps } from './interface'\nimport { DOWN, LEFT, UP } from './Drag/constant'\nimport { addNestItemData, deleteNestItemData } from '../utils/util'\nimport { useEditProvider } from '../hooks/useEdit'\nimport { useProvidePopup } from './context/PopupContext'\nimport { useHScrollSyncProvide } from '../hooks/useHScrollSync'\nimport { useVScrollSyncProvide } from '../hooks/useVScrollSync'\nimport { useProvideTable } from './context/TableContext'\nimport { useProvideRangeStore } from '../hooks/useRangeStore'\nimport { usePrefixCls } from '@pro-design-vue/hooks'\nimport { resize } from '@pro-design-vue/directives'\nimport { omit, debounce, isPromise } from '@pro-design-vue/utils'\nimport { useProConfigInject } from '@pro-design-vue/components/config-provider'\nimport { DEFAULT_LOCALE } from '@pro-design-vue/constants'\nimport { useInjectContainer } from '../hooks/useContainer'\nimport useKVMap from '../hooks/useKVMap'\nimport useLicense from '../hooks/useLicense'\nimport devWarning from '../utils/devWarning'\nimport eagerComputed from '../utils/eagerComputed'\nimport getScrollBarSize from '../utils/getScrollBarSize'\nimport useColumns from '../hooks/useColumns'\nimport useSorter from '../hooks/useSorter'\nimport useFilter from '../hooks/useFilter'\nimport useCal from '../hooks/useCal'\nimport useFlattenRecords from '../hooks/useFlattenRecords'\nimport useSelection from '../hooks/useRowSelection'\nimport usePagination, { getPaginationParam } from '../hooks/usePagination'\nimport raf from '../utils/raf'\nimport easeoutScroll from '../utils/easeoutScroll'\nimport useData from '../hooks/useData'\nimport supportSticky from '../utils/supportSticky'\nimport classNames from '../utils/classNames'\nimport useCellProps from '../hooks/useCellProps'\nimport KeyCode from '../utils/KeyCode'\nimport TableSlotsContextProvider from './context/TableSlotsContext'\nimport MeasureWidth from './MeasureWidth.vue'\nimport PopupContainer from './PopupContainer.vue'\nimport AutoHeightHeader from './AutoHeightHeader/Header.vue'\nimport Header from './Header/Header.vue'\nimport Body from './Body/Body.vue'\nimport XScroll from './Scrollbar/XScroll'\n\nimport type { SpinProps } from 'ant-design-vue/es/spin'\nimport type {\n GetRowKey,\n Key,\n SorterResult,\n TableLocale,\n ColumnType,\n ResizeActionType,\n DragRowEventInfo,\n DragColumnEventInfo,\n DefaultRecordType,\n TableAction,\n} from './interface'\nimport type { CustomSlotsType } from '../utils/type'\nimport type { RangeCell } from '../hooks/RangeInterface'\nimport type { SortState } from '../hooks/useSorter'\nimport type { FilterState } from '../hooks/useFilter'\nimport type { ContextSlots } from './context/TableSlotsContext'\n\nexport type FilterValue = (Key | boolean)[]\nexport interface ChangeEventInfo<RecordType> {\n pagination: {\n current?: number\n pageSize?: number\n total?: number\n }\n filters: Record<string, FilterValue | null>\n sorter: SorterResult<RecordType> | SorterResult<RecordType>[]\n filterStates: FilterState<RecordType>[]\n sorterStates: SortState<RecordType>[]\n currentDataSource: RecordType[]\n action: TableAction\n}\nconst EMPTY_LIST: any[] = []\n\nexport default defineComponent({\n name: 'ProTable',\n inheritAttrs: false,\n directives: { resize },\n components: {\n TableSlotsContextProvider,\n Spin,\n MeasureWidth,\n Pagination,\n PopupContainer,\n AutoHeightHeader,\n ProHeader: Header,\n ProBody: Body,\n HorizontalScroll: XScroll,\n },\n props: baseTableProps(),\n emits: [\n 'update:pagination',\n 'scroll',\n 'update:selectedRowKeys',\n 'update:expandedRowKeys',\n 'update:columns',\n 'update:sorter',\n 'update:filters',\n 'expand',\n 'expandedRowsChange',\n 'resizeColumn',\n 'update:dataSource',\n 'cellKeydown',\n ],\n slots: {} as CustomSlotsType<ContextSlots>,\n setup(props, { expose, emit, slots }) {\n const { table } = useProConfigInject()\n const counter = useInjectContainer()\n const rowKey = computed(() => props.rowKey ?? table?.value?.rowKey ?? 'id')\n const popupContainer = shallowRef<any>(null)\n const customUiCls = usePrefixCls('custom-ui')\n const { editCellKeys, openEditor, closeEditor } = useEditProvider()\n\n useProvidePopup()\n\n const getPopupContainer = computed(() => props.getPopupContainer!)\n const { status, watermarkMsg } = useLicense()\n\n const dragRowsHandle = new Map<Key, Set<HTMLSpanElement>>()\n const draggingRowKey = ref<Key | null>(null)\n const insertToRowKey = ref<Key | null>(null)\n const dragColumnsHandle = new Map<Key, Set<HTMLDivElement>>()\n const draggingColumnKey = ref<Key>('')\n const latestRangeStartCell = shallowRef<RangeCell | null>(null)\n const mergedSummaryFixed = computed(() =>\n props.summaryFixed === true || props.summaryFixed === ('' as any)\n ? 'bottom'\n : (props.summaryFixed ?? table?.value?.summaryFixed ?? false),\n )\n const realHeaderHeight = ref(0)\n\n watchEffect(() => {\n devWarning(\n !(typeof rowKey.value == 'function' && rowKey.value.length > 1),\n 'table',\n '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.',\n )\n })\n\n const localeData: any = inject('localeData', {\n antLocale: {\n Table: {\n triggerDesc: 'Click to sort descending',\n triggerAsc: 'Click to sort ascending',\n cancelSort: 'Click to cancel sorting',\n },\n },\n })\n\n const locale = computed<TableLocale>(() => {\n const antLocale = localeData?.antLocale || {}\n return {\n ...(antLocale.locale === DEFAULT_LOCALE.toLocaleLowerCase()\n ? {\n triggerDesc: '\\u70B9\\u51FB\\u964D\\u5E8F',\n triggerAsc: '\\u70B9\\u51FB\\u5347\\u5E8F',\n cancelSort: '\\u53D6\\u6D88\\u6392\\u5E8F',\n }\n : {}),\n ...(antLocale.Table || {}),\n ...(props.locale || {}),\n }\n })\n\n const scrollTop = ref(0)\n const scrollLeft = ref(0)\n const bodyWidth = ref(0)\n const bodyHeight = ref(0)\n const rootRef = ref<HTMLDivElement>()\n const paginationRef = ref<HTMLDivElement>()\n const measureWidthRef = shallowRef<HTMLDivElement>()\n\n const mergedScrollX = eagerComputed(() => props.scrollX ?? props.scroll?.x)\n const mergedScrollY = eagerComputed(() => props.scroll?.y ?? props.height ?? props.maxHeight)\n const bodyScrollWidth = ref(typeof mergedScrollX.value == 'number' ? mergedScrollX.value : 0)\n\n watch(mergedScrollX, () => {\n bodyScrollWidth.value = typeof mergedScrollX.value == 'number' ? mergedScrollX.value : 0\n })\n\n const virtual = eagerComputed<boolean>(() => !(props.virtual === false || !mergedScrollY.value))\n const xVirtual = eagerComputed<boolean>(\n () => props.xVirtual || (props.virtual !== false && props.xVirtual !== false),\n )\n\n const getRowKey = computed<GetRowKey>(() =>\n typeof rowKey.value == 'function'\n ? rowKey.value\n : (record: Record<string, any>) => {\n return record?.[rowKey.value as string]\n },\n )\n\n const rawData = shallowRef<DefaultRecordType[]>([])\n const rawColumns = shallowRef<ColumnType[]>([])\n\n let dataSourceWatchStopHandle: WatchStopHandle\n let columnsWatchStopHandle: WatchStopHandle\n watch(\n () => props.deepWatchDataSource,\n () => {\n dataSourceWatchStopHandle && dataSourceWatchStopHandle()\n dataSourceWatchStopHandle = watch(\n () => props.dataSource,\n () => {\n rawData.value = toRaw(props.dataSource) || EMPTY_LIST\n triggerRef(rawData)\n },\n { immediate: true, deep: !!props.deepWatchDataSource },\n )\n },\n { immediate: true, deep: true },\n )\n\n watch(\n () => props.deepWatchColumns,\n () => {\n columnsWatchStopHandle && columnsWatchStopHandle()\n columnsWatchStopHandle = watch(\n () => props.columns,\n () => {\n rawColumns.value = toRaw(props.columns) || EMPTY_LIST\n triggerRef(rawColumns)\n },\n { immediate: true, deep: true },\n )\n },\n { immediate: true, deep: !!props.deepWatchColumns },\n )\n\n const childrenColumnName = computed(\n () => props.childrenColumnName ?? table?.value?.childrenColumnName ?? 'children',\n )\n\n const { getRecordByKey, getIndexsByKey, getKeyByIndexs, allDataRowKeys, allDataRootRowKeys } =\n useKVMap(rawData, childrenColumnName, getRowKey)\n\n const defaultExpandedRowKeys = shallowRef<Key[]>([])\n watchEffect(() => {\n props.defaultExpandedRowKeys && (defaultExpandedRowKeys.value = props.defaultExpandedRowKeys)\n props.defaultExpandAllRows && (defaultExpandedRowKeys.value = allDataRowKeys.value)\n })\n\n const mergedRowSelection = computed(() => {\n const rowSelection = props.rowSelection || {}\n const { checkStrictly = true } = rowSelection\n return { ...rowSelection, checkStrictly }\n })\n\n const expandedRowKeys = computed(\n () => new Set(props.expandedRowKeys || defaultExpandedRowKeys.value || []),\n )\n\n const spinProps = computed<SpinProps>(() => {\n if (typeof props.loading === 'boolean') {\n return { spinning: props.loading }\n } else if (typeof props.loading === 'object') {\n return { spinning: true, ...props.loading }\n } else {\n return { spinning: false }\n }\n })\n\n onActivated(() => {\n scrollTo({ left: 0, top: 0 })\n })\n\n let triggerOnChange: any = () => {}\n\n const scrollBarSize = shallowRef(getScrollBarSize())\n const baseHeight = computed(() =>\n props.size === 'small' ? 39 : props.size === 'middle' ? 47 : 55,\n )\n const expandedRowRender = computed(() => props.expandedRowRender)\n const expandType = eagerComputed(() =>\n rawData.value.some((column) => column?.[childrenColumnName.value]?.length)\n ? 'nest'\n : expandedRowRender.value\n ? 'row'\n : null,\n )\n const expandable = eagerComputed(() => !!props.expandedRowRender)\n\n const columns = useColumns({\n props,\n rawColumns,\n bodyScrollWidth,\n baseHeight,\n measureWidthRef,\n expandable,\n expandType,\n scrollLeft,\n bodyWidth,\n xVirtual,\n draggingColumnKey,\n latestRangeStartCell,\n })\n\n const { sortedData, sorterStates, sorter, changeSorter } = useSorter(\n props,\n rawData,\n columns.allColumns,\n (sorter, sorterStates) => {\n scrollTop.value > bodyHeight.value && updateAnimate()\n triggerOnChange({ sorter, sorterStates }, 'sort', false)\n },\n )\n\n const { filterData, filterStates, filters, changeFilter } = useFilter(\n props,\n sortedData,\n columns.allColumns,\n (filters, filterStates) => {\n triggerOnChange({ filters, filterStates }, 'filter', true)\n },\n )\n\n const total = eagerComputed(() => filterData.value.length)\n const paginationParam = computed(() => {\n if (props.pagination === false) {\n return {}\n }\n return getPaginationParam(props.pagination, mergedPagination.value)\n })\n\n const triggeronPaginationChange = (current: number, pageSize: number) => {\n const pagination = { ...paginationParam.value, current, pageSize }\n props['onUpdate:pagination'] &&\n emit(\n 'update:pagination',\n isReactive(props.pagination)\n ? Object.assign(props.pagination || {}, pagination)\n : pagination,\n )\n }\n\n const {\n mergedPagination,\n pos,\n refreshPagination,\n onChange: onPaginationChange,\n onShowSizeChange,\n pageData,\n } = usePagination(total, props, filterData, (current, pageSize) => {\n const pagination = { ...paginationParam.value, current, pageSize }\n triggeronPaginationChange(current, pageSize)\n updateAnimate()\n triggerOnChange({ pagination }, 'paginate')\n })\n\n const {\n flattenData,\n keyEntities,\n pageDataRowKeys,\n pageDataEnableRowKeys,\n checkboxPropsMap,\n getRowFlattenIndexByKey,\n isMyChildren,\n getRowByFlattenIndex,\n } = useFlattenRecords(\n pageData,\n childrenColumnName,\n expandedRowKeys,\n getRowKey,\n expandType,\n mergedRowSelection,\n )\n\n const cal = useCal(props, flattenData, bodyHeight, scrollTop, virtual, keyEntities)\n\n const { rowPosition, viewportHeight, startIndex, endIndex } = cal\n const { leftWidth, rightWidth, centerWidth, bodyMaxWidth } = columns\n\n const selection = useSelection(props, mergedRowSelection, rawData, {\n prefixCls: computed(() => props.prefixCls!),\n pageData,\n getRowKey,\n getRecordByKey,\n childrenColumnName,\n locale,\n flattenData,\n keyEntities,\n checkboxPropsMap,\n allDataRowKeys,\n allDataRootRowKeys,\n pageDataRowKeys,\n pageDataEnableRowKeys,\n })\n\n const bodyRef = ref<HTMLDivElement>()\n let leftRaf: any, topRaf: any\n\n const scrollTo = (options: any = {}, type = 'auto', isAnimate = false) => {\n if (!isAnimate) {\n updateAnimate()\n }\n const mergeOptions = typeof options == 'number' ? { top: options } : options\n let left, top\n if ('left' in mergeOptions) {\n left = mergeOptions.left || 0\n } else if ('columnIndex' in mergeOptions) {\n const position = columns.getColumnPosition(mergeOptions.columnIndex!)\n if (position) {\n left = position.left - leftWidth.value\n }\n } else if ('columnKey' in mergeOptions) {\n const position = columns.getColumnPositionByKey(mergeOptions.columnKey!)\n if (position) {\n left = position.left - leftWidth.value\n }\n }\n if ('top' in mergeOptions) {\n top = Math.min(Math.max(mergeOptions.top || 0, 0), maxScrollTop.value)\n } else if ('rowKey' in mergeOptions) {\n const pos = cal.getRowPositionByKey(mergeOptions.rowKey!)\n if (pos) {\n top = pos\n }\n }\n\n left = Math.max(Math.min(maxScrollLeft.value, left || 0), 0)\n if (!showVerticalScrollbar.value) {\n top = 0\n }\n if (type === 'smooth') {\n if (left !== undefined) {\n raf.cancel(leftRaf)\n leftRaf = easeoutScroll(scrollLeft.value, left, (val: number) => {\n scrollLeft.value = val\n })\n }\n if (top !== undefined) {\n raf.cancel(topRaf)\n topRaf = easeoutScroll(scrollTop.value, top, (val: number) => {\n scrollTop.value = val\n })\n }\n } else {\n if (left !== undefined) {\n scrollLeft.value = left\n }\n if (top !== undefined) {\n scrollTop.value = top\n }\n }\n }\n\n const useAnimate = ref(false)\n const animateRows = computed(() => {\n return !!(props.animateRows ?? table?.value?.animateRows)\n })\n\n let timer: any\n watch(\n animateRows,\n (newVal) => {\n useAnimate.value = newVal\n },\n { immediate: true },\n )\n\n const updateAnimate = () => {\n useAnimate.value = false\n clearTimeout(timer)\n timer = setTimeout(() => {\n useAnimate.value = animateRows.value\n }, 100)\n }\n\n const maxScrollLeft = computed(() => bodyMaxWidth.value - bodyWidth.value)\n const maxScrollTop = computed(() => viewportHeight.value - bodyHeight.value)\n const onScroll = (e) => {\n emit('scroll', e)\n }\n\n useHScrollSyncProvide({ scrollLeft, maxScrollLeft, onScroll, bodyWidth })\n useVScrollSyncProvide({ scrollTop, maxScrollTop, onScroll, updateAnimate, bodyWidth })\n\n const { data, pos: dataRowPosition } = useData(\n props,\n rowPosition,\n flattenData,\n startIndex,\n endIndex,\n draggingRowKey,\n useAnimate,\n getRowFlattenIndexByKey,\n latestRangeStartCell,\n )\n\n const pingedLeft = ref(false)\n const pingedRight = ref(false)\n const noPinged = ref(false)\n\n watchEffect(() => {\n pingedLeft.value = supportSticky && !!scrollLeft.value\n pingedRight.value =\n supportSticky &&\n centerWidth.value - (bodyWidth.value - leftWidth.value - rightWidth.value) >\n scrollLeft.value\n noPinged.value = !pingedLeft.value && !pingedRight.value\n })\n\n const rootClass = computed(() =>\n classNames({\n [`${props.prefixCls}`]: true,\n [`${props.prefixCls}-support-sticky`]: supportSticky,\n [`${props.prefixCls}-stripe`]: props.stripe,\n [`${props.prefixCls}-bordered`]: props.bordered ?? table?.value?.bordered,\n [`${props.prefixCls}-${props.size}`]: true,\n [`${props.prefixCls}-ping-left`]: pingedLeft.value,\n [`${props.prefixCls}-ping-right`]: pingedRight.value,\n [`${props.prefixCls}-no-ping`]: noPinged.value,\n [`${props.prefixCls}-has-animate`]: animateRows.value,\n }),\n )\n const rootStyle = computed(() => ({\n height: typeof props.height == 'number' ? `${props.height}px` : props.height,\n maxHeight: typeof props.maxHeight == 'number' ? `${props.maxHeight}px` : props.maxHeight,\n minHeight: typeof props.minHeight == 'number' ? `${props.minHeight}px` : props.minHeight,\n }))\n\n const showHorizontalScrollbar = ref(false)\n const debounceFn = debounce(() => {\n showHorizontalScrollbar.value = bodyMaxWidth.value > bodyWidth.value\n if (bodyWidth.value > bodyScrollWidth.value) {\n bodyScrollWidth.value = bodyWidth.value\n }\n }, 100)\n\n watch([bodyMaxWidth, bodyWidth], () => {\n debounceFn()\n })\n\n const showVerticalScrollbar = eagerComputed(\n () => !!mergedScrollY.value && bodyHeight.value + 0.9 < viewportHeight.value,\n )\n const scrollToFirstRow = eagerComputed(\n () => !props.scroll || (props.scroll && props.scroll.scrollToFirstRowOnChange !== false),\n )\n\n triggerOnChange = (\n info: Partial<ChangeEventInfo<DefaultRecordType>>,\n action: TableAction,\n reset = false,\n ) => {\n if (reset) {\n refreshPagination()\n triggeronPaginationChange(1, mergedPagination.value.pageSize!)\n if (props.pagination) {\n props.pagination.onChange?.(1, mergedPagination.value.pageSize)\n }\n }\n if (scrollToFirstRow.value) {\n scrollTop.value = 0\n }\n props.onChange?.(\n info.pagination || mergedPagination.value,\n info.filters || filters.value,\n info.sorter || sorter.value,\n {\n currentDataSource: info.currentDataSource || filterData.value,\n action,\n },\n )\n }\n\n const paginationProps = computed(() => {\n return omit(mergedPagination.value, [\n 'position',\n 'onChange',\n 'onShowSizeChange',\n 'fieldNames',\n ])\n })\n\n const paginationClass = computed(() => {\n return {\n [`${props.prefixCls}-pagination`]: true,\n [`${props.prefixCls}-pagination-${pos.value.bottom}`]: true,\n [`${customUiCls}`]: true,\n }\n })\n const bottomPaginationHeight = ref(0)\n const bottomPaginationStyle = computed<any>(() => {\n if (!props.paginationSticky || counter.hasFullScreen.value || !!props.height) {\n return {}\n }\n if (props.paginationSticky === true) {\n return { position: 'sticky', 'z-index': 9, bottom: '0px' }\n }\n return {\n position: 'sticky',\n 'z-index': 9,\n bottom: `${props.paginationSticky?.offsetBottom ?? 0}px`,\n }\n })\n\n const indentSize = computed(() => (typeof props.indentSize == 'number' ? props.indentSize : 15))\n\n const cellProps = useCellProps({\n leftColumns: columns.leftColumns,\n rightColumns: columns.rightColumns,\n visibleCenterColumns: columns.visibleCenterColumns,\n allColumns: columns.allColumns,\n data,\n mergedRowHeights: cal.mergedRowHeights,\n startIndex,\n getColumnPosition: columns.getColumnPosition,\n bodyWidth,\n leftWidth,\n centerWidth,\n getRowHeight: cal.getRowHeight,\n customCell: toRef(props, 'customCell'),\n })\n\n watch(\n [realHeaderHeight, scrollLeft],\n () => {\n popupContainer.value?.alignPopup?.()\n },\n { flush: 'post' },\n )\n\n useProvideTable({\n ...cal,\n ...columns,\n ...cellProps,\n rootRef,\n rawData,\n getRowFlattenIndexByKey,\n prefixCls: computed(() => props.prefixCls!),\n draggingRowKey,\n insertToRowKey,\n status,\n useAnimate,\n animateRows,\n watermarkMsg,\n onResizeColumn: (w: number, col: ColumnType, action: ResizeActionType) => {\n const width = col.width\n const result = props.onResizeColumn?.(w, col, action)\n if (result !== false) {\n if (!(width === w && col.width === w)) {\n col.width = width !== col.width ? col.width : w\n triggerRef(rawColumns)\n }\n if (action === 'end') {\n emit('update:columns', rawColumns.value, 'resize')\n }\n }\n },\n onRowDragEnd: (opt: DragRowEventInfo) => {\n const { insertToRowKey, record, fromIndexs, rowKey, dir, preTargetInfo, nextTargetInfo } =\n opt\n const rawRecord = toRaw(record)\n const dragEnd = props.onRowDragEnd?.({ ...opt, record: rawRecord, fromIndexs })\n if (dragEnd === false) {\n return\n }\n\n const handler = () => {\n if (!isMyChildren(rowKey, preTargetInfo?.rowKey as Key) && insertToRowKey !== rowKey) {\n if (insertToRowKey !== null) {\n const parentRecord = getRecordByKey(insertToRowKey)\n if (\n insertToRowKey === preTargetInfo?.rowKey ||\n insertToRowKey === nextTargetInfo?.rowKey\n ) {\n if (dir === DOWN) {\n addNestItemData(\n parentRecord[childrenColumnName.value],\n [],\n childrenColumnName.value,\n rawRecord,\n )\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n } else {\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n addNestItemData(\n parentRecord[childrenColumnName.value],\n [],\n childrenColumnName.value,\n rawRecord,\n )\n }\n } else {\n if (dir === DOWN) {\n addNestItemData(\n rawData.value,\n preTargetInfo?.indexs as number[],\n childrenColumnName.value,\n rawRecord,\n )\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n } else {\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n addNestItemData(\n rawData.value,\n preTargetInfo?.indexs as number[],\n childrenColumnName.value,\n rawRecord,\n )\n }\n }\n } else {\n if (dir === DOWN && preTargetInfo) {\n addNestItemData(\n rawData.value,\n [preTargetInfo.indexs[0]!],\n childrenColumnName.value,\n rawRecord,\n )\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n } else if (dir === UP && nextTargetInfo) {\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n addNestItemData(\n rawData.value,\n preTargetInfo?.indexs ? [preTargetInfo!.indexs[0]!] : [],\n childrenColumnName.value,\n rawRecord,\n )\n }\n }\n triggerRef(rawData)\n emit('update:dataSource', rawData.value)\n }\n }\n if (isPromise(dragEnd)) {\n dragEnd\n .then(() => {\n handler()\n })\n .catch(() => {})\n } else {\n handler()\n }\n },\n virtual,\n xVirtual,\n dataRowPosition,\n rawColumns,\n bodyHeight,\n scrollTop,\n scrollLeft,\n supportSticky,\n childrenColumnName,\n bodyScrollWidth,\n baseHeight,\n startIndex,\n data,\n pageData,\n getRecordByKey,\n getIndexsByKey,\n expandType,\n flattenData,\n expandedRowKeys,\n indentSize,\n props,\n bodyWidth,\n scrollTo,\n scrollBarSize,\n leftWidth,\n rightWidth,\n centerWidth,\n showVerticalScrollbar,\n showHorizontalScrollbar,\n getRowKey,\n selection,\n updateSelectedRowKeys: (keys: Key[]) => {\n emit('update:selectedRowKeys', keys)\n },\n locale,\n sorterStates,\n changeSorter,\n changeFilter,\n filterStates,\n onTriggerExpand: (record, key: Key) => {\n let keys: Key[]\n const hasKey = expandedRowKeys.value.has(key)\n if (hasKey) {\n expandedRowKeys.value.delete(key)\n keys = [...expandedRowKeys.value]\n } else {\n keys = [...expandedRowKeys.value, key]\n }\n defaultExpandedRowKeys.value = keys\n emit('update:expandedRowKeys', keys)\n emit('expand', !hasKey, record)\n emit('expandedRowsChange', keys)\n },\n keyEntities,\n pageDataRowKeys,\n pageDataEnableRowKeys,\n checkboxPropsMap,\n mergedRowSelection,\n getPopupContainer,\n allDataRowKeys,\n allDataRootRowKeys,\n dragRowsHandle,\n isMyChildren,\n getKeyByIndexs,\n getRowByFlattenIndex,\n draggingColumnKey,\n dragColumnsHandle,\n onColumnDragEnd: (arg: DragColumnEventInfo) => {\n const { dir, column, targetColumn } = arg\n const dragEnd = props.onColumnDragEnd?.(arg)\n if (dragEnd === false) {\n return\n }\n\n const handler = () => {\n if (column === targetColumn || column.key === targetColumn.key) return\n const index = rawColumns.value.findIndex(\n (col) => col === column || col.key === column.key,\n )\n const targetIndex = rawColumns.value.findIndex(\n (col) => col === targetColumn || col.key === targetColumn.key,\n )\n if (dir === LEFT) {\n rawColumns.value.splice(index, 1)\n rawColumns.value.splice(targetIndex, 0, column)\n } else {\n rawColumns.value.splice(targetIndex + 1, 0, column)\n rawColumns.value.splice(index, 1)\n }\n triggerRef(rawColumns)\n emit('update:columns', rawColumns.value, 'drag')\n }\n\n if (isPromise(dragEnd)) {\n dragEnd\n .then(() => {\n handler()\n })\n .catch(() => {})\n } else {\n handler()\n }\n },\n onColumnDrag: () => {},\n columnDrag: computed(() => props.columnDrag),\n summaryFixed: mergedSummaryFixed,\n realHeaderHeight,\n bottomPaginationHeight,\n pos,\n })\n\n const tabGuardTopRef = ref()\n const tabGuardBottomRef = ref()\n\n const {\n navigationService,\n getSelectedRange,\n clearAllSelectedRange,\n copySelectedRange,\n appendCellToSelectedRange,\n onBodyKeydown,\n } = useProvideRangeStore({\n allColumns: columns.allColumns,\n flattenData,\n rangeSelection: computed(() => props.rangeSelection),\n getRowByFlattenIndex,\n rootRef,\n prefixCls: computed(() => props.prefixCls!),\n allCellProps: cellProps.allCellProps,\n tabGuardTopRef,\n tabGuardBottomRef,\n ensureCellColumnVisible: (cell: RangeCell) => {\n if (!cell.column || cell.column.fixed) return\n const sl = scrollLeft.value\n const pos = columns.getColumnPositionByKey(cell.column.columnKey)\n if (pos) {\n const { width, left } = pos\n const lw = leftWidth.value\n const rw = rightWidth.value\n left - lw < sl\n ? (scrollLeft.value = left - lw)\n : left + width > sl + bodyWidth.value - rw &&\n (scrollLeft.value = left + width - bodyWidth.value + rw)\n }\n },\n ensureCellRowVisible: (cell: RangeCell) => {\n const { rowIndex } = cell\n const st = scrollTop.value\n const row = getRowByFlattenIndex(rowIndex)\n const pos = cal.getRowPositionByKey(row.rowKey)\n const cprops =\n (cellProps.allCellProps.value[row.rowKey]?.[cell.column!.columnKey] || {}).props || {}\n const height = cal.getRowHeight(rowIndex, cprops.rowSpan)\n if (pos !== undefined) {\n updateAnimate()\n if (pos < st) {\n scrollTop.value = pos\n } else {\n if (pos + height > st + bodyHeight.value) {\n scrollTop.value = pos + height - bodyHeight.value\n }\n }\n }\n },\n latestRangeStartCell,\n bodyRef: computed(() => {\n return (bodyRef.value as any)?.bodyRef\n }),\n scrollLeft,\n scrollTop,\n scrollTo,\n showVerticalScrollbar,\n showHorizontalScrollbar,\n getIndexsByKey,\n formatRangeCellText: (parmas) => {\n if (props.formatRangeCellText) {\n return props.formatRangeCellText(parmas)\n } else if (parmas.value) {\n return parmas.value\n }\n return ''\n },\n editCellKeys,\n copyDelimiter: computed(() => props.copyDelimiter),\n })\n\n expose({\n scrollTo,\n scrollLeft,\n scrollTop,\n rootRef,\n paginationRef,\n bodyRef: computed(() => {\n return (bodyRef.value as any)?.bodyRef\n }),\n getSelectedRange,\n clearAllSelectedRange,\n copySelectedRange,\n appendCellToSelectedRange,\n openEditor: (cellInfos: any[]) => {\n openEditor(cellInfos.map((info) => `${info.rowKey} ${info.columnKey}`))\n },\n closeEditor: (cellInfos: any[]) => {\n if (cellInfos) {\n closeEditor(cellInfos.map((info) => `${info.rowKey} ${info.columnKey}`))\n } else {\n closeEditor()\n }\n },\n })\n\n return {\n bodyRef,\n spinProps,\n rowPosition,\n viewportHeight,\n startIndex,\n data,\n watermarkMsg,\n rootStyle,\n rootClass,\n onBodyKeydown,\n watermarkStyle: computed<any>(() => ({\n minWidth: '100px!important',\n minHeight: '40px!important',\n position: 'absolute!important',\n fontSize: '20px!important',\n opacity: '0.8!important',\n bottom: '40px!important',\n right: '40px!important',\n pointerEvents: 'none',\n display: 'block!important',\n zIndex: '999999!important',\n color: '#000000!important',\n margin: '0px!important',\n padding: '0px!important',\n transform: 'unset!important',\n })),\n mergedPagination,\n pos,\n onPaginationChange,\n scrollBarSize,\n scrollTop,\n bodyScrollWidth,\n bodyWidth,\n scrollLeft,\n cal,\n selection,\n locale,\n paginationProps,\n slots,\n mergedScrollX,\n mergedScrollY,\n bodyHeight,\n measureWidthRef,\n flattenData,\n rootRef,\n paginationRef,\n mergedSummaryFixed,\n handleResize: (e: CustomEvent) => {\n realHeaderHeight.value = e.detail.height\n },\n handlePaginationResize: (e: CustomEvent) => {\n bottomPaginationHeight.value = e.detail.height\n },\n popupContainer,\n handleGuardTopKeydown: (e: KeyboardEvent) => {\n e.keyCode !== KeyCode.TAB ||\n e.shiftKey ||\n (navigationService.getFirstCellToFocus(e.shiftKey), e.preventDefault())\n },\n handleGuardBottomKeydown: (e: KeyboardEvent) => {\n e.keyCode === KeyCode.TAB &&\n e.shiftKey &&\n (navigationService.getLastCellToFocus(e.shiftKey), e.preventDefault())\n },\n tabGuardTopRef,\n tabGuardBottomRef,\n onShowSizeChange,\n customUiCls,\n paginationClass,\n bottomPaginationStyle,\n }\n },\n})\n</script>\n\n<template>\n <TableSlotsContextProvider :value=\"{ ...slots }\">\n <Spin v-bind=\"spinProps\">\n <Pagination\n v-if=\"pos.top\"\n :class=\"`${prefixCls}-pagination ${prefixCls}-pagination-${pos.top} ${customUiCls}`\"\n v-bind=\"paginationProps\"\n @change=\"onPaginationChange\"\n @show-size-change=\"onShowSizeChange\"\n />\n <div\n ref=\"tabGuardTopRef\"\n role=\"presentation\"\n tabindex=\"0\"\n :style=\"{ position: 'absolute', width: '0', height: '0' }\"\n @keydown=\"handleGuardTopKeydown\"\n ></div>\n <div key=\"content\" ref=\"rootRef\" :class=\"rootClass\" :style=\"rootStyle\">\n <template v-if=\"showHeader\">\n <AutoHeightHeader\n v-if=\"autoHeaderHeight\"\n :prefix-cls=\"prefixCls\"\n :sticky=\"sticky\"\n @resizeheight=\"handleResize\"\n />\n <ProHeader v-else :prefix-cls=\"prefixCls\" :sticky=\"sticky\" @resizeheight=\"handleResize\" />\n </template>\n <ProBody\n ref=\"bodyRef\"\n v-model:bodyScrollWidth=\"bodyScrollWidth\"\n v-model:bodyWidth=\"bodyWidth\"\n v-model:bodyHeight=\"bodyHeight\"\n :prefix-cls=\"prefixCls\"\n :wrap-text=\"wrapText\"\n :scroll-x=\"mergedScrollX\"\n :height=\"mergedScrollY\"\n :summary-fixed=\"mergedSummaryFixed\"\n :summary=\"$slots.summary\"\n :empty-text=\"$slots.emptyText\"\n @keydown=\"onBodyKeydown\"\n />\n </div>\n <HorizontalScroll />\n <div\n ref=\"tabGuardBottomRef\"\n role=\"presentation\"\n tabindex=\"0\"\n :style=\"{ position: 'absolute', width: '0', height: '0' }\"\n @keydown=\"handleGuardBottomKeydown\"\n ></div>\n <div v-if=\"$slots.footer\" key=\"footer\" :class=\"`${prefixCls}-footer`\">\n <slot name=\"footer\" />\n </div>\n <PopupContainer ref=\"popupContainer\" :prefix-cls=\"prefixCls\" />\n <div\n v-if=\"pos.bottom\"\n v-resize:height\n ref=\"paginationRef\"\n :style=\"bottomPaginationStyle\"\n :class=\"`${prefixCls}-pagination-wrap ${prefixCls}-pagination-wrap-${size}`\"\n @resizeheight=\"handlePaginationResize\"\n >\n <Pagination\n :class=\"paginationClass\"\n v-bind=\"paginationProps\"\n @change=\"onPaginationChange\"\n @show-size-change=\"onShowSizeChange\"\n />\n </div>\n </Spin>\n <MeasureWidth ref=\"measureWidthRef\" />\n </TableSlotsContextProvider>\n</template>\n"],"names":["_createBlock","_createVNode","_normalizeProps","_guardReactiveProps","_withCtx","_openBlock","_mergeProps","_createCommentVNode","_createElementVNode","_normalizeClass","_normalizeStyle","_createElementBlock","_Fragment","_renderSlot","_withDirectives"],"mappings":"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"}
1
+ {"version":3,"file":"InteralTable.vue.js","sources":["../../../../../../../../packages/components/table/src/components/InteralTable.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-01 09:29:27\n * @LastEditors: shen\n * @LastEditTime: 2025-12-02 17:16:36\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { WatchStopHandle } from 'vue'\nimport {\n computed,\n defineComponent,\n shallowRef,\n ref,\n watchEffect,\n inject,\n watch,\n toRaw,\n triggerRef,\n onActivated,\n isReactive,\n toRef,\n} from 'vue'\nimport { Spin, Pagination } from 'ant-design-vue'\nimport { baseTableProps } from './interface'\nimport { DOWN, LEFT, UP } from './Drag/constant'\nimport { addNestItemData, deleteNestItemData } from '../utils/util'\nimport { useEditProvider } from '../hooks/useEdit'\nimport { useProvidePopup } from './context/PopupContext'\nimport { useHScrollSyncProvide } from '../hooks/useHScrollSync'\nimport { useVScrollSyncProvide } from '../hooks/useVScrollSync'\nimport { useProvideTable } from './context/TableContext'\nimport { usePrefixCls } from '@pro-design-vue/hooks'\nimport { resize } from '@pro-design-vue/directives'\nimport { omit, debounce, isPromise } from '@pro-design-vue/utils'\nimport { useProConfigInject } from '@pro-design-vue/components/config-provider'\nimport { DEFAULT_LOCALE } from '@pro-design-vue/constants'\nimport { useInjectContainer } from '../hooks/useContainer'\nimport useKVMap from '../hooks/useKVMap'\nimport useLicense from '../hooks/useLicense'\nimport devWarning from '../utils/devWarning'\nimport eagerComputed from '../utils/eagerComputed'\nimport getScrollBarSize from '../utils/getScrollBarSize'\nimport useColumns from '../hooks/useColumns'\nimport useSorter from '../hooks/useSorter'\nimport useFilter from '../hooks/useFilter'\nimport useCal from '../hooks/useCal'\nimport useFlattenRecords from '../hooks/useFlattenRecords'\nimport useSelection from '../hooks/useRowSelection'\nimport usePagination, { getPaginationParam } from '../hooks/usePagination'\nimport raf from '../utils/raf'\nimport easeoutScroll from '../utils/easeoutScroll'\nimport useData from '../hooks/useData'\nimport supportSticky from '../utils/supportSticky'\nimport classNames from '../utils/classNames'\nimport useCellProps from '../hooks/useCellProps'\nimport TableSlotsContextProvider from './context/TableSlotsContext'\nimport MeasureWidth from './MeasureWidth.vue'\nimport PopupContainer from './PopupContainer.vue'\nimport AutoHeightHeader from './AutoHeightHeader/Header.vue'\nimport Header from './Header/Header.vue'\nimport Body from './Body/Body.vue'\nimport XScroll from './Scrollbar/XScroll'\n\nimport type { SpinProps } from 'ant-design-vue/es/spin'\nimport type {\n GetRowKey,\n Key,\n SorterResult,\n TableLocale,\n ColumnType,\n ResizeActionType,\n DragRowEventInfo,\n DragColumnEventInfo,\n DefaultRecordType,\n TableAction,\n} from './interface'\nimport type { CustomSlotsType } from '../utils/type'\nimport type { RangeCell } from '../hooks/RangeInterface'\nimport type { SortState } from '../hooks/useSorter'\nimport type { FilterState } from '../hooks/useFilter'\nimport type { ContextSlots } from './context/TableSlotsContext'\n\nexport type FilterValue = (Key | boolean)[]\nexport interface ChangeEventInfo<RecordType> {\n pagination: {\n current?: number\n pageSize?: number\n total?: number\n }\n filters: Record<string, FilterValue | null>\n sorter: SorterResult<RecordType> | SorterResult<RecordType>[]\n filterStates: FilterState<RecordType>[]\n sorterStates: SortState<RecordType>[]\n currentDataSource: RecordType[]\n action: TableAction\n}\nconst EMPTY_LIST: any[] = []\n\nexport default defineComponent({\n name: 'ProTable',\n inheritAttrs: false,\n directives: { resize },\n components: {\n TableSlotsContextProvider,\n Spin,\n MeasureWidth,\n Pagination,\n PopupContainer,\n AutoHeightHeader,\n ProHeader: Header,\n ProBody: Body,\n HorizontalScroll: XScroll,\n },\n props: baseTableProps(),\n emits: [\n 'update:pagination',\n 'scroll',\n 'update:selectedRowKeys',\n 'update:expandedRowKeys',\n 'update:columns',\n 'update:sorter',\n 'update:filters',\n 'expand',\n 'expandedRowsChange',\n 'resizeColumn',\n 'update:dataSource',\n 'cellKeydown',\n 'data-change',\n ],\n slots: {} as CustomSlotsType<ContextSlots>,\n setup(props, { expose, emit, slots }) {\n const { table } = useProConfigInject()\n const counter = useInjectContainer()\n const rowKey = computed(() => props.rowKey ?? table?.value?.rowKey ?? 'id')\n const popupContainer = shallowRef<any>(null)\n const customUiCls = usePrefixCls('custom-ui')\n useProvidePopup()\n const getPopupContainer = computed(() => props.getPopupContainer!)\n const { status, watermarkMsg } = useLicense()\n\n const dragRowsHandle = new Map<Key, Set<HTMLSpanElement>>()\n const draggingRowKey = ref<Key | null>(null)\n const insertToRowKey = ref<Key | null>(null)\n const dragColumnsHandle = new Map<Key, Set<HTMLDivElement>>()\n const draggingColumnKey = ref<Key>('')\n const latestRangeStartCell = shallowRef<RangeCell | null>(null)\n const mergedSummaryFixed = computed(() =>\n props.summaryFixed === true || props.summaryFixed === ('' as any)\n ? 'bottom'\n : (props.summaryFixed ?? table?.value?.summaryFixed ?? false),\n )\n const realHeaderHeight = ref(0)\n\n watchEffect(() => {\n devWarning(\n !(typeof rowKey.value == 'function' && rowKey.value.length > 1),\n 'table',\n '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.',\n )\n })\n\n const localeData: any = inject('localeData', {\n antLocale: {\n Table: {\n triggerDesc: 'Click to sort descending',\n triggerAsc: 'Click to sort ascending',\n cancelSort: 'Click to cancel sorting',\n },\n },\n })\n\n const locale = computed<TableLocale>(() => {\n const antLocale = localeData?.antLocale || {}\n return {\n ...(antLocale.locale === DEFAULT_LOCALE.toLocaleLowerCase()\n ? {\n triggerDesc: '\\u70B9\\u51FB\\u964D\\u5E8F',\n triggerAsc: '\\u70B9\\u51FB\\u5347\\u5E8F',\n cancelSort: '\\u53D6\\u6D88\\u6392\\u5E8F',\n }\n : {}),\n ...(antLocale.Table || {}),\n ...(props.locale || {}),\n }\n })\n\n const scrollTop = ref(0)\n const scrollLeft = ref(0)\n const bodyWidth = ref(0)\n const bodyHeight = ref(0)\n const rootRef = ref<HTMLDivElement>()\n const paginationRef = ref<HTMLDivElement>()\n const measureWidthRef = shallowRef<HTMLDivElement>()\n\n const mergedScrollX = eagerComputed(() => props.scrollX ?? props.scroll?.x)\n const mergedScrollY = eagerComputed(() => props.scroll?.y ?? props.height ?? props.maxHeight)\n const bodyScrollWidth = ref(typeof mergedScrollX.value == 'number' ? mergedScrollX.value : 0)\n\n watch(mergedScrollX, () => {\n bodyScrollWidth.value = typeof mergedScrollX.value == 'number' ? mergedScrollX.value : 0\n })\n\n const virtual = eagerComputed<boolean>(() => !(props.virtual === false || !mergedScrollY.value))\n const xVirtual = eagerComputed<boolean>(\n () => props.xVirtual || (props.virtual !== false && props.xVirtual !== false),\n )\n\n const getRowKey = computed<GetRowKey>(() =>\n typeof rowKey.value == 'function'\n ? rowKey.value\n : (record: Record<string, any>) => {\n return record?.[rowKey.value as string]\n },\n )\n\n const rawData = shallowRef<DefaultRecordType[]>([])\n const rawColumns = shallowRef<ColumnType[]>([])\n\n let dataSourceWatchStopHandle: WatchStopHandle\n let columnsWatchStopHandle: WatchStopHandle\n watch(\n () => props.deepWatchDataSource,\n () => {\n dataSourceWatchStopHandle && dataSourceWatchStopHandle()\n dataSourceWatchStopHandle = watch(\n () => props.dataSource,\n () => {\n rawData.value = toRaw(props.dataSource) || EMPTY_LIST\n triggerRef(rawData)\n },\n { immediate: true, deep: !!props.deepWatchDataSource },\n )\n },\n { immediate: true, deep: true },\n )\n\n watch(\n () => props.deepWatchColumns,\n () => {\n columnsWatchStopHandle && columnsWatchStopHandle()\n columnsWatchStopHandle = watch(\n () => props.columns,\n () => {\n rawColumns.value = toRaw(props.columns) || EMPTY_LIST\n triggerRef(rawColumns)\n },\n { immediate: true, deep: true },\n )\n },\n { immediate: true, deep: !!props.deepWatchColumns },\n )\n\n watch(rawData, (newData) => {\n emit('data-change', newData)\n })\n\n const childrenColumnName = computed(\n () => props.childrenColumnName ?? table?.value?.childrenColumnName ?? 'children',\n )\n\n const expandIconType = computed(\n () => props.expandIconType ?? table?.value?.expandIconType ?? 'default',\n )\n\n const { getRecordByKey, getIndexsByKey, getKeyByIndexs, allDataRowKeys, allDataRootRowKeys } =\n useKVMap(rawData, childrenColumnName, getRowKey)\n\n const defaultExpandedRowKeys = shallowRef<Key[]>([])\n watchEffect(() => {\n props.defaultExpandedRowKeys && (defaultExpandedRowKeys.value = props.defaultExpandedRowKeys)\n props.defaultExpandAllRows && (defaultExpandedRowKeys.value = allDataRowKeys.value)\n })\n\n const mergedRowSelection = computed(() => {\n const rowSelection = props.rowSelection || {}\n const { checkStrictly = true } = rowSelection\n return { ...rowSelection, checkStrictly }\n })\n\n const expandedRowKeys = computed(\n () => new Set(props.expandedRowKeys || defaultExpandedRowKeys.value || []),\n )\n\n const spinProps = computed<SpinProps>(() => {\n if (typeof props.loading === 'boolean') {\n return { spinning: props.loading }\n } else if (typeof props.loading === 'object') {\n return { spinning: true, ...props.loading }\n } else {\n return { spinning: false }\n }\n })\n\n const {\n validateRowData,\n addEditRecord,\n cancelEditable,\n startEditable,\n saveEditable,\n isEditable,\n validateTableData,\n } = useEditProvider(props, {\n getIndexsByKey,\n getRecordByKey,\n rawData,\n getRowKey,\n })\n\n onActivated(() => {\n scrollTo({ left: 0, top: 0 })\n })\n\n let triggerOnChange: any = () => {}\n\n const scrollBarSize = shallowRef(getScrollBarSize())\n const baseHeight = computed(() =>\n props.size === 'small' ? 39 : props.size === 'middle' ? 47 : 55,\n )\n const expandedRowRender = computed(() => props.expandedRowRender)\n const expandType = eagerComputed(() =>\n rawData.value.some((column) => column?.[childrenColumnName.value]?.length)\n ? 'nest'\n : expandedRowRender.value\n ? 'row'\n : null,\n )\n const expandable = eagerComputed(() => !!props.expandedRowRender)\n\n const columns = useColumns({\n props,\n rawColumns,\n bodyScrollWidth,\n baseHeight,\n measureWidthRef,\n expandable,\n expandType,\n scrollLeft,\n bodyWidth,\n xVirtual,\n draggingColumnKey,\n latestRangeStartCell,\n })\n\n const { sortedData, sorterStates, sorter, changeSorter } = useSorter(\n props,\n rawData,\n columns.allColumns,\n (sorter, sorterStates) => {\n scrollTop.value > bodyHeight.value && updateAnimate()\n triggerOnChange({ sorter, sorterStates }, 'sort', false)\n },\n )\n\n const { filterData, filterStates, filters, changeFilter } = useFilter(\n props,\n sortedData,\n columns.allColumns,\n (filters, filterStates) => {\n triggerOnChange({ filters, filterStates }, 'filter', true)\n },\n )\n\n const total = eagerComputed(() => filterData.value.length)\n const paginationParam = computed(() => {\n if (props.pagination === false) {\n return {}\n }\n return getPaginationParam(props.pagination, mergedPagination.value)\n })\n\n const triggeronPaginationChange = (current: number, pageSize: number) => {\n const pagination = { ...paginationParam.value, current, pageSize }\n props['onUpdate:pagination'] &&\n emit(\n 'update:pagination',\n isReactive(props.pagination)\n ? Object.assign(props.pagination || {}, pagination)\n : pagination,\n )\n }\n\n const {\n mergedPagination,\n pos,\n refreshPagination,\n onChange: onPaginationChange,\n onShowSizeChange,\n pageData,\n } = usePagination(total, props, filterData, (current, pageSize) => {\n const pagination = { ...paginationParam.value, current, pageSize }\n triggeronPaginationChange(current, pageSize)\n updateAnimate()\n triggerOnChange({ pagination }, 'paginate')\n })\n\n const {\n flattenData,\n keyEntities,\n pageDataRowKeys,\n pageDataEnableRowKeys,\n checkboxPropsMap,\n getRowFlattenIndexByKey,\n isMyChildren,\n getRowByFlattenIndex,\n } = useFlattenRecords(\n pageData,\n childrenColumnName,\n expandedRowKeys,\n getRowKey,\n expandType,\n mergedRowSelection,\n )\n\n const cal = useCal(props, flattenData, bodyHeight, scrollTop, virtual, keyEntities)\n\n const { rowPosition, viewportHeight, startIndex, endIndex } = cal\n const { leftWidth, rightWidth, centerWidth, bodyMaxWidth } = columns\n\n const selection = useSelection(props, mergedRowSelection, rawData, {\n prefixCls: computed(() => props.prefixCls!),\n pageData,\n getRowKey,\n getRecordByKey,\n childrenColumnName,\n locale,\n flattenData,\n keyEntities,\n checkboxPropsMap,\n allDataRowKeys,\n allDataRootRowKeys,\n pageDataRowKeys,\n pageDataEnableRowKeys,\n })\n\n const bodyRef = ref<HTMLDivElement>()\n let leftRaf: any, topRaf: any\n\n const scrollTo = (options: any = {}, type = 'auto', isAnimate = false) => {\n if (!isAnimate) {\n updateAnimate()\n }\n const mergeOptions = typeof options == 'number' ? { top: options } : options\n let left, top\n if ('left' in mergeOptions) {\n left = mergeOptions.left || 0\n } else if ('columnIndex' in mergeOptions) {\n const position = columns.getColumnPosition(mergeOptions.columnIndex!)\n if (position) {\n left = position.left - leftWidth.value\n }\n } else if ('columnKey' in mergeOptions) {\n const position = columns.getColumnPositionByKey(mergeOptions.columnKey!)\n if (position) {\n left = position.left - leftWidth.value\n }\n }\n if ('top' in mergeOptions) {\n top = Math.min(Math.max(mergeOptions.top || 0, 0), maxScrollTop.value)\n } else if ('rowKey' in mergeOptions) {\n const pos = cal.getRowPositionByKey(mergeOptions.rowKey!)\n if (pos) {\n top = pos\n }\n }\n\n left = Math.max(Math.min(maxScrollLeft.value, left || 0), 0)\n if (!showVerticalScrollbar.value) {\n top = 0\n }\n if (type === 'smooth') {\n if (left !== undefined) {\n raf.cancel(leftRaf)\n leftRaf = easeoutScroll(scrollLeft.value, left, (val: number) => {\n scrollLeft.value = val\n })\n }\n if (top !== undefined) {\n raf.cancel(topRaf)\n topRaf = easeoutScroll(scrollTop.value, top, (val: number) => {\n scrollTop.value = val\n })\n }\n } else {\n if (left !== undefined) {\n scrollLeft.value = left\n }\n if (top !== undefined) {\n scrollTop.value = top\n }\n }\n }\n\n const useAnimate = ref(false)\n const animateRows = computed(() => {\n return !!(props.animateRows ?? table?.value?.animateRows)\n })\n\n let timer: any\n watch(\n animateRows,\n (newVal) => {\n useAnimate.value = newVal\n },\n { immediate: true },\n )\n\n const updateAnimate = () => {\n useAnimate.value = false\n clearTimeout(timer)\n timer = setTimeout(() => {\n useAnimate.value = animateRows.value\n }, 100)\n }\n\n const maxScrollLeft = computed(() => bodyMaxWidth.value - bodyWidth.value)\n const maxScrollTop = computed(() => viewportHeight.value - bodyHeight.value)\n const onScroll = (e) => {\n emit('scroll', e)\n }\n\n useHScrollSyncProvide({ scrollLeft, maxScrollLeft, onScroll, bodyWidth })\n useVScrollSyncProvide({ scrollTop, maxScrollTop, onScroll, updateAnimate, bodyWidth })\n\n const { data, pos: dataRowPosition } = useData(\n props,\n rowPosition,\n flattenData,\n startIndex,\n endIndex,\n draggingRowKey,\n useAnimate,\n getRowFlattenIndexByKey,\n latestRangeStartCell,\n )\n\n const pingedLeft = ref(false)\n const pingedRight = ref(false)\n const noPinged = ref(false)\n\n watchEffect(() => {\n pingedLeft.value = supportSticky && !!scrollLeft.value\n pingedRight.value =\n supportSticky &&\n centerWidth.value - (bodyWidth.value - leftWidth.value - rightWidth.value) >\n scrollLeft.value\n noPinged.value = !pingedLeft.value && !pingedRight.value\n })\n\n const rootClass = computed(() =>\n classNames({\n [`${props.prefixCls}`]: true,\n [`${props.prefixCls}-support-sticky`]: supportSticky,\n [`${props.prefixCls}-stripe`]: props.stripe,\n [`${props.prefixCls}-bordered`]: props.bordered ?? table?.value?.bordered,\n [`${props.prefixCls}-${props.size}`]: true,\n [`${props.prefixCls}-ping-left`]: pingedLeft.value,\n [`${props.prefixCls}-ping-right`]: pingedRight.value,\n [`${props.prefixCls}-no-ping`]: noPinged.value,\n [`${props.prefixCls}-has-animate`]: animateRows.value,\n }),\n )\n const rootStyle = computed(() => ({\n height: typeof props.height == 'number' ? `${props.height}px` : props.height,\n maxHeight: typeof props.maxHeight == 'number' ? `${props.maxHeight}px` : props.maxHeight,\n minHeight: typeof props.minHeight == 'number' ? `${props.minHeight}px` : props.minHeight,\n }))\n\n const showHorizontalScrollbar = ref(false)\n const debounceFn = debounce(() => {\n showHorizontalScrollbar.value = bodyMaxWidth.value > bodyWidth.value\n if (bodyWidth.value > bodyScrollWidth.value) {\n bodyScrollWidth.value = bodyWidth.value\n }\n }, 100)\n\n watch([bodyMaxWidth, bodyWidth], () => {\n debounceFn()\n })\n\n const showVerticalScrollbar = eagerComputed(\n () => !!mergedScrollY.value && bodyHeight.value + 0.9 < viewportHeight.value,\n )\n const scrollToFirstRow = eagerComputed(\n () => !props.scroll || (props.scroll && props.scroll.scrollToFirstRowOnChange !== false),\n )\n\n triggerOnChange = (\n info: Partial<ChangeEventInfo<DefaultRecordType>>,\n action: TableAction,\n reset = false,\n ) => {\n if (reset) {\n refreshPagination()\n triggeronPaginationChange(1, mergedPagination.value.pageSize!)\n if (props.pagination) {\n props.pagination.onChange?.(1, mergedPagination.value.pageSize)\n }\n }\n if (scrollToFirstRow.value) {\n scrollTop.value = 0\n }\n props.onChange?.(\n info.pagination || mergedPagination.value,\n info.filters || filters.value,\n info.sorter || sorter.value,\n {\n currentDataSource: info.currentDataSource || filterData.value,\n action,\n },\n )\n }\n\n const paginationProps = computed(() => {\n return omit(mergedPagination.value, [\n 'position',\n 'onChange',\n 'onShowSizeChange',\n 'fieldNames',\n ])\n })\n\n const paginationClass = computed(() => {\n return {\n [`${props.prefixCls}-pagination`]: true,\n [`${props.prefixCls}-pagination-${pos.value.bottom}`]: true,\n [`${customUiCls}`]: true,\n }\n })\n const bottomPaginationHeight = ref(0)\n const bottomPaginationStyle = computed<any>(() => {\n if (!props.paginationSticky || counter.hasFullScreen.value || !!props.height) {\n return {}\n }\n if (props.paginationSticky === true) {\n return { position: 'sticky', 'z-index': 9, bottom: '0px' }\n }\n return {\n position: 'sticky',\n 'z-index': 9,\n bottom: `${props.paginationSticky?.offsetBottom ?? 0}px`,\n }\n })\n\n const indentSize = computed(() => (typeof props.indentSize == 'number' ? props.indentSize : 15))\n\n const cellProps = useCellProps({\n leftColumns: columns.leftColumns,\n rightColumns: columns.rightColumns,\n visibleCenterColumns: columns.visibleCenterColumns,\n allColumns: columns.allColumns,\n data,\n mergedRowHeights: cal.mergedRowHeights,\n startIndex,\n getColumnPosition: columns.getColumnPosition,\n bodyWidth,\n leftWidth,\n centerWidth,\n getRowHeight: cal.getRowHeight,\n customCell: toRef(props, 'customCell'),\n cancelEditable,\n startEditable,\n saveEditable,\n isEditable,\n })\n\n watch(\n [realHeaderHeight, scrollLeft],\n () => {\n popupContainer.value?.alignPopup?.()\n },\n { flush: 'post' },\n )\n\n useProvideTable({\n ...cal,\n ...columns,\n ...cellProps,\n cancelEditable,\n startEditable,\n saveEditable,\n isEditable,\n rootRef,\n rawData,\n getRowFlattenIndexByKey,\n prefixCls: computed(() => props.prefixCls!),\n draggingRowKey,\n insertToRowKey,\n status,\n useAnimate,\n animateRows,\n expandIconType,\n watermarkMsg,\n onResizeColumn: (w: number, col: ColumnType, action: ResizeActionType) => {\n const width = col.width\n const result = props.onResizeColumn?.(w, col, action)\n if (result !== false) {\n if (!(width === w && col.width === w)) {\n col.width = width !== col.width ? col.width : w\n triggerRef(rawColumns)\n }\n if (action === 'end') {\n emit('update:columns', rawColumns.value, 'resize')\n }\n }\n },\n onRowDragEnd: (opt: DragRowEventInfo) => {\n const { insertToRowKey, record, fromIndexs, rowKey, dir, preTargetInfo, nextTargetInfo } =\n opt\n const rawRecord = toRaw(record)\n const dragEnd = props.onRowDragEnd?.({ ...opt, record: rawRecord, fromIndexs })\n if (dragEnd === false) {\n return\n }\n\n const handler = () => {\n if (!isMyChildren(rowKey, preTargetInfo?.rowKey as Key) && insertToRowKey !== rowKey) {\n if (insertToRowKey !== null) {\n const parentRecord = getRecordByKey(insertToRowKey)\n if (\n insertToRowKey === preTargetInfo?.rowKey ||\n insertToRowKey === nextTargetInfo?.rowKey\n ) {\n if (dir === DOWN) {\n addNestItemData(\n parentRecord[childrenColumnName.value],\n [],\n childrenColumnName.value,\n rawRecord,\n )\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n } else {\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n addNestItemData(\n parentRecord[childrenColumnName.value],\n [],\n childrenColumnName.value,\n rawRecord,\n )\n }\n } else {\n if (dir === DOWN) {\n addNestItemData(\n rawData.value,\n preTargetInfo?.indexs as number[],\n childrenColumnName.value,\n rawRecord,\n )\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n } else {\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n addNestItemData(\n rawData.value,\n preTargetInfo?.indexs as number[],\n childrenColumnName.value,\n rawRecord,\n )\n }\n }\n } else {\n if (dir === DOWN && preTargetInfo) {\n addNestItemData(\n rawData.value,\n [preTargetInfo.indexs[0]!],\n childrenColumnName.value,\n rawRecord,\n )\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n } else if (dir === UP && nextTargetInfo) {\n deleteNestItemData(rawData.value, fromIndexs, childrenColumnName.value)\n addNestItemData(\n rawData.value,\n preTargetInfo?.indexs ? [preTargetInfo!.indexs[0]!] : [],\n childrenColumnName.value,\n rawRecord,\n )\n }\n }\n triggerRef(rawData)\n emit('update:dataSource', rawData.value)\n }\n }\n if (isPromise(dragEnd)) {\n dragEnd\n .then(() => {\n handler()\n })\n .catch(() => {})\n } else {\n handler()\n }\n },\n virtual,\n xVirtual,\n dataRowPosition,\n rawColumns,\n bodyHeight,\n scrollTop,\n scrollLeft,\n supportSticky,\n childrenColumnName,\n bodyScrollWidth,\n baseHeight,\n startIndex,\n data,\n pageData,\n getRecordByKey,\n getIndexsByKey,\n expandType,\n flattenData,\n expandedRowKeys,\n indentSize,\n props,\n bodyWidth,\n scrollTo,\n scrollBarSize,\n leftWidth,\n rightWidth,\n centerWidth,\n showVerticalScrollbar,\n showHorizontalScrollbar,\n getRowKey,\n selection,\n updateSelectedRowKeys: (keys: Key[]) => {\n emit('update:selectedRowKeys', keys)\n },\n locale,\n sorterStates,\n changeSorter,\n changeFilter,\n filterStates,\n onTriggerExpand: (record, key: Key) => {\n let keys: Key[]\n const hasKey = expandedRowKeys.value.has(key)\n if (hasKey) {\n expandedRowKeys.value.delete(key)\n keys = [...expandedRowKeys.value]\n } else {\n keys = [...expandedRowKeys.value, key]\n }\n defaultExpandedRowKeys.value = keys\n emit('update:expandedRowKeys', keys)\n emit('expand', !hasKey, record)\n emit('expandedRowsChange', keys)\n },\n keyEntities,\n pageDataRowKeys,\n pageDataEnableRowKeys,\n checkboxPropsMap,\n mergedRowSelection,\n getPopupContainer,\n allDataRowKeys,\n allDataRootRowKeys,\n dragRowsHandle,\n isMyChildren,\n getKeyByIndexs,\n getRowByFlattenIndex,\n draggingColumnKey,\n dragColumnsHandle,\n onColumnDragEnd: (arg: DragColumnEventInfo) => {\n const { dir, column, targetColumn } = arg\n const dragEnd = props.onColumnDragEnd?.(arg)\n if (dragEnd === false) {\n return\n }\n\n const handler = () => {\n if (column === targetColumn || column.key === targetColumn.key) return\n const index = rawColumns.value.findIndex(\n (col) => col === column || col.key === column.key,\n )\n const targetIndex = rawColumns.value.findIndex(\n (col) => col === targetColumn || col.key === targetColumn.key,\n )\n if (dir === LEFT) {\n rawColumns.value.splice(index, 1)\n rawColumns.value.splice(targetIndex, 0, column)\n } else {\n rawColumns.value.splice(targetIndex + 1, 0, column)\n rawColumns.value.splice(index, 1)\n }\n triggerRef(rawColumns)\n emit('update:columns', rawColumns.value, 'drag')\n }\n\n if (isPromise(dragEnd)) {\n dragEnd\n .then(() => {\n handler()\n })\n .catch(() => {})\n } else {\n handler()\n }\n },\n onColumnDrag: () => {},\n columnDrag: computed(() => props.columnDrag),\n summaryFixed: mergedSummaryFixed,\n realHeaderHeight,\n bottomPaginationHeight,\n pos,\n })\n\n const tabGuardTopRef = ref()\n const tabGuardBottomRef = ref()\n\n expose({\n scrollTo,\n scrollLeft,\n scrollTop,\n rootRef,\n paginationRef,\n validateRowData,\n addEditRecord,\n cancelEditable,\n startEditable,\n saveEditable,\n validateTableData,\n bodyRef: computed(() => {\n return (bodyRef.value as any)?.bodyRef\n }),\n })\n\n return {\n bodyRef,\n spinProps,\n rowPosition,\n viewportHeight,\n startIndex,\n data,\n watermarkMsg,\n rootStyle,\n rootClass,\n watermarkStyle: computed<any>(() => ({\n minWidth: '100px!important',\n minHeight: '40px!important',\n position: 'absolute!important',\n fontSize: '20px!important',\n opacity: '0.8!important',\n bottom: '40px!important',\n right: '40px!important',\n pointerEvents: 'none',\n display: 'block!important',\n zIndex: '999999!important',\n color: '#000000!important',\n margin: '0px!important',\n padding: '0px!important',\n transform: 'unset!important',\n })),\n mergedPagination,\n pos,\n onPaginationChange,\n scrollBarSize,\n scrollTop,\n bodyScrollWidth,\n bodyWidth,\n scrollLeft,\n cal,\n selection,\n locale,\n paginationProps,\n slots,\n mergedScrollX,\n mergedScrollY,\n bodyHeight,\n measureWidthRef,\n flattenData,\n rootRef,\n paginationRef,\n mergedSummaryFixed,\n handleResize: (e: CustomEvent) => {\n realHeaderHeight.value = e.detail.height\n },\n handlePaginationResize: (e: CustomEvent) => {\n bottomPaginationHeight.value = e.detail.height\n },\n popupContainer,\n tabGuardTopRef,\n tabGuardBottomRef,\n onShowSizeChange,\n customUiCls,\n paginationClass,\n bottomPaginationStyle,\n }\n },\n})\n</script>\n\n<template>\n <TableSlotsContextProvider :value=\"{ ...slots }\">\n <Spin v-bind=\"spinProps\">\n <Pagination\n v-if=\"pos.top\"\n :class=\"`${prefixCls}-pagination ${prefixCls}-pagination-${pos.top} ${customUiCls}`\"\n v-bind=\"paginationProps\"\n @change=\"onPaginationChange\"\n @show-size-change=\"onShowSizeChange\"\n />\n <div\n ref=\"tabGuardTopRef\"\n role=\"presentation\"\n tabindex=\"0\"\n :style=\"{ position: 'absolute', width: '0', height: '0' }\"\n ></div>\n <div key=\"content\" ref=\"rootRef\" :class=\"rootClass\" :style=\"rootStyle\">\n <template v-if=\"showHeader\">\n <AutoHeightHeader\n v-if=\"autoHeaderHeight\"\n :prefix-cls=\"prefixCls\"\n :sticky=\"sticky\"\n @resizeheight=\"handleResize\"\n />\n <ProHeader v-else :prefix-cls=\"prefixCls\" :sticky=\"sticky\" @resizeheight=\"handleResize\" />\n </template>\n <ProBody\n ref=\"bodyRef\"\n v-model:bodyScrollWidth=\"bodyScrollWidth\"\n v-model:bodyWidth=\"bodyWidth\"\n v-model:bodyHeight=\"bodyHeight\"\n :prefix-cls=\"prefixCls\"\n :wrap-text=\"wrapText\"\n :scroll-x=\"mergedScrollX\"\n :height=\"mergedScrollY\"\n :summary-fixed=\"mergedSummaryFixed\"\n :summary=\"$slots.summary\"\n :empty-text=\"$slots.emptyText\"\n />\n </div>\n <HorizontalScroll />\n <div\n ref=\"tabGuardBottomRef\"\n role=\"presentation\"\n tabindex=\"0\"\n :style=\"{ position: 'absolute', width: '0', height: '0' }\"\n ></div>\n <div v-if=\"$slots.footer\" key=\"footer\" :class=\"`${prefixCls}-footer`\">\n <slot name=\"footer\" />\n </div>\n <PopupContainer ref=\"popupContainer\" :prefix-cls=\"prefixCls\" />\n <div\n v-if=\"pos.bottom\"\n v-resize:height\n ref=\"paginationRef\"\n :style=\"bottomPaginationStyle\"\n :class=\"`${prefixCls}-pagination-wrap ${prefixCls}-pagination-wrap-${size}`\"\n @resizeheight=\"handlePaginationResize\"\n >\n <Pagination\n :class=\"paginationClass\"\n v-bind=\"paginationProps\"\n @change=\"onPaginationChange\"\n @show-size-change=\"onShowSizeChange\"\n />\n </div>\n </Spin>\n <MeasureWidth ref=\"measureWidthRef\" />\n </TableSlotsContextProvider>\n</template>\n"],"names":["_createBlock","_createVNode","_normalizeProps","_guardReactiveProps","_withCtx","_openBlock","_mergeProps","_createCommentVNode","_createElementVNode","_normalizeClass","_normalizeStyle","_createElementBlock","_Fragment","_renderSlot","_withDirectives"],"mappings":"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"}
@@ -12,7 +12,6 @@ var PopupContext = require('./context/PopupContext.js');
12
12
  var useHScrollSync = require('../hooks/useHScrollSync.js');
13
13
  var useVScrollSync = require('../hooks/useVScrollSync.js');
14
14
  var TableContext = require('./context/TableContext.js');
15
- var useRangeStore = require('../hooks/useRangeStore.js');
16
15
  var useContainer = require('../hooks/useContainer.js');
17
16
  var useKVMap = require('../hooks/useKVMap.js');
18
17
  var useLicense = require('../hooks/useLicense.js');
@@ -32,7 +31,6 @@ var useData = require('../hooks/useData.js');
32
31
  var supportSticky = require('../utils/supportSticky.js');
33
32
  var classNames = require('../utils/classNames.js');
34
33
  var useCellProps = require('../hooks/useCellProps.js');
35
- var KeyCode = require('../utils/KeyCode.js');
36
34
  var TableSlotsContext = require('./context/TableSlotsContext.js');
37
35
  var MeasureWidth = require('./MeasureWidth.vue.js');
38
36
  var PopupContainer = require('./PopupContainer.vue.js');
@@ -40,13 +38,13 @@ var Header$1 = require('./AutoHeightHeader/Header.vue.js');
40
38
  var Header = require('./Header/Header.vue.js');
41
39
  var Body = require('./Body/Body.vue.js');
42
40
  var XScroll = require('./Scrollbar/XScroll.js');
41
+ var validate = require('../../../../utils/validate.js');
43
42
  var resize = require('../../../../directives/resize.js');
44
43
  var context = require('../../../config-provider/src/context.js');
45
44
  var index = require('../../../../hooks/use-prefix-cls/index.js');
46
45
  var globals = require('../../../../constants/globals.js');
47
46
  var lodashUnified = require('lodash-unified');
48
47
  var omit = require('../../../../utils/omit.js');
49
- var validate = require('../../../../utils/validate.js');
50
48
 
51
49
  const EMPTY_LIST = [];
52
50
  var _sfc_main = vue.defineComponent({
@@ -77,7 +75,8 @@ var _sfc_main = vue.defineComponent({
77
75
  "expandedRowsChange",
78
76
  "resizeColumn",
79
77
  "update:dataSource",
80
- "cellKeydown"
78
+ "cellKeydown",
79
+ "data-change"
81
80
  ],
82
81
  slots: {},
83
82
  setup(props, { expose, emit, slots }) {
@@ -89,7 +88,6 @@ var _sfc_main = vue.defineComponent({
89
88
  });
90
89
  const popupContainer = vue.shallowRef(null);
91
90
  const customUiCls = index.usePrefixCls("custom-ui");
92
- const { editCellKeys, openEditor, closeEditor } = useEdit.useEditProvider();
93
91
  PopupContext.useProvidePopup();
94
92
  const getPopupContainer = vue.computed(() => props.getPopupContainer);
95
93
  const { status, watermarkMsg } = useLicense.default();
@@ -196,12 +194,21 @@ var _sfc_main = vue.defineComponent({
196
194
  },
197
195
  { immediate: true, deep: !!props.deepWatchColumns }
198
196
  );
197
+ vue.watch(rawData, (newData) => {
198
+ emit("data-change", newData);
199
+ });
199
200
  const childrenColumnName = vue.computed(
200
201
  () => {
201
202
  var _a, _b, _c;
202
203
  return (_c = (_b = props.childrenColumnName) != null ? _b : (_a = table == null ? void 0 : table.value) == null ? void 0 : _a.childrenColumnName) != null ? _c : "children";
203
204
  }
204
205
  );
206
+ const expandIconType = vue.computed(
207
+ () => {
208
+ var _a, _b, _c;
209
+ return (_c = (_b = props.expandIconType) != null ? _b : (_a = table == null ? void 0 : table.value) == null ? void 0 : _a.expandIconType) != null ? _c : "default";
210
+ }
211
+ );
205
212
  const { getRecordByKey, getIndexsByKey, getKeyByIndexs, allDataRowKeys, allDataRootRowKeys } = useKVMap.default(rawData, childrenColumnName, getRowKey);
206
213
  const defaultExpandedRowKeys = vue.shallowRef([]);
207
214
  vue.watchEffect(() => {
@@ -225,6 +232,20 @@ var _sfc_main = vue.defineComponent({
225
232
  return { spinning: false };
226
233
  }
227
234
  });
235
+ const {
236
+ validateRowData,
237
+ addEditRecord,
238
+ cancelEditable,
239
+ startEditable,
240
+ saveEditable,
241
+ isEditable,
242
+ validateTableData
243
+ } = useEdit.useEditProvider(props, {
244
+ getIndexsByKey,
245
+ getRecordByKey,
246
+ rawData,
247
+ getRowKey
248
+ });
228
249
  vue.onActivated(() => {
229
250
  scrollTo({ left: 0, top: 0 });
230
251
  });
@@ -534,7 +555,11 @@ var _sfc_main = vue.defineComponent({
534
555
  leftWidth,
535
556
  centerWidth,
536
557
  getRowHeight: cal.getRowHeight,
537
- customCell: vue.toRef(props, "customCell")
558
+ customCell: vue.toRef(props, "customCell"),
559
+ cancelEditable,
560
+ startEditable,
561
+ saveEditable,
562
+ isEditable
538
563
  });
539
564
  vue.watch(
540
565
  [realHeaderHeight, scrollLeft],
@@ -548,6 +573,10 @@ var _sfc_main = vue.defineComponent({
548
573
  ...cal,
549
574
  ...columns,
550
575
  ...cellProps,
576
+ cancelEditable,
577
+ startEditable,
578
+ saveEditable,
579
+ isEditable,
551
580
  rootRef,
552
581
  rawData,
553
582
  getRowFlattenIndexByKey,
@@ -557,6 +586,7 @@ var _sfc_main = vue.defineComponent({
557
586
  status,
558
587
  useAnimate,
559
588
  animateRows,
589
+ expandIconType,
560
590
  watermarkMsg,
561
591
  onResizeColumn: (w, col, action) => {
562
592
  var _a;
@@ -764,99 +794,22 @@ var _sfc_main = vue.defineComponent({
764
794
  });
765
795
  const tabGuardTopRef = vue.ref();
766
796
  const tabGuardBottomRef = vue.ref();
767
- const {
768
- navigationService,
769
- getSelectedRange,
770
- clearAllSelectedRange,
771
- copySelectedRange,
772
- appendCellToSelectedRange,
773
- onBodyKeydown
774
- } = useRangeStore.useProvideRangeStore({
775
- allColumns: columns.allColumns,
776
- flattenData,
777
- rangeSelection: vue.computed(() => props.rangeSelection),
778
- getRowByFlattenIndex,
779
- rootRef,
780
- prefixCls: vue.computed(() => props.prefixCls),
781
- allCellProps: cellProps.allCellProps,
782
- tabGuardTopRef,
783
- tabGuardBottomRef,
784
- ensureCellColumnVisible: (cell) => {
785
- if (!cell.column || cell.column.fixed) return;
786
- const sl = scrollLeft.value;
787
- const pos2 = columns.getColumnPositionByKey(cell.column.columnKey);
788
- if (pos2) {
789
- const { width, left } = pos2;
790
- const lw = leftWidth.value;
791
- const rw = rightWidth.value;
792
- left - lw < sl ? scrollLeft.value = left - lw : left + width > sl + bodyWidth.value - rw && (scrollLeft.value = left + width - bodyWidth.value + rw);
793
- }
794
- },
795
- ensureCellRowVisible: (cell) => {
796
- var _a;
797
- const { rowIndex } = cell;
798
- const st = scrollTop.value;
799
- const row = getRowByFlattenIndex(rowIndex);
800
- const pos2 = cal.getRowPositionByKey(row.rowKey);
801
- const cprops = (((_a = cellProps.allCellProps.value[row.rowKey]) == null ? void 0 : _a[cell.column.columnKey]) || {}).props || {};
802
- const height = cal.getRowHeight(rowIndex, cprops.rowSpan);
803
- if (pos2 !== void 0) {
804
- updateAnimate();
805
- if (pos2 < st) {
806
- scrollTop.value = pos2;
807
- } else {
808
- if (pos2 + height > st + bodyHeight.value) {
809
- scrollTop.value = pos2 + height - bodyHeight.value;
810
- }
811
- }
812
- }
813
- },
814
- latestRangeStartCell,
815
- bodyRef: vue.computed(() => {
816
- var _a;
817
- return (_a = bodyRef.value) == null ? void 0 : _a.bodyRef;
818
- }),
819
- scrollLeft,
820
- scrollTop,
821
- scrollTo,
822
- showVerticalScrollbar,
823
- showHorizontalScrollbar,
824
- getIndexsByKey,
825
- formatRangeCellText: (parmas) => {
826
- if (props.formatRangeCellText) {
827
- return props.formatRangeCellText(parmas);
828
- } else if (parmas.value) {
829
- return parmas.value;
830
- }
831
- return "";
832
- },
833
- editCellKeys,
834
- copyDelimiter: vue.computed(() => props.copyDelimiter)
835
- });
836
797
  expose({
837
798
  scrollTo,
838
799
  scrollLeft,
839
800
  scrollTop,
840
801
  rootRef,
841
802
  paginationRef,
803
+ validateRowData,
804
+ addEditRecord,
805
+ cancelEditable,
806
+ startEditable,
807
+ saveEditable,
808
+ validateTableData,
842
809
  bodyRef: vue.computed(() => {
843
810
  var _a;
844
811
  return (_a = bodyRef.value) == null ? void 0 : _a.bodyRef;
845
- }),
846
- getSelectedRange,
847
- clearAllSelectedRange,
848
- copySelectedRange,
849
- appendCellToSelectedRange,
850
- openEditor: (cellInfos) => {
851
- openEditor(cellInfos.map((info) => `${info.rowKey} ${info.columnKey}`));
852
- },
853
- closeEditor: (cellInfos) => {
854
- if (cellInfos) {
855
- closeEditor(cellInfos.map((info) => `${info.rowKey} ${info.columnKey}`));
856
- } else {
857
- closeEditor();
858
- }
859
- }
812
+ })
860
813
  });
861
814
  return {
862
815
  bodyRef,
@@ -868,7 +821,6 @@ var _sfc_main = vue.defineComponent({
868
821
  watermarkMsg,
869
822
  rootStyle,
870
823
  rootClass,
871
- onBodyKeydown,
872
824
  watermarkStyle: vue.computed(() => ({
873
825
  minWidth: "100px!important",
874
826
  minHeight: "40px!important",
@@ -913,12 +865,6 @@ var _sfc_main = vue.defineComponent({
913
865
  bottomPaginationHeight.value = e.detail.height;
914
866
  },
915
867
  popupContainer,
916
- handleGuardTopKeydown: (e) => {
917
- e.keyCode !== KeyCode.default.TAB || e.shiftKey || (navigationService.getFirstCellToFocus(e.shiftKey), e.preventDefault());
918
- },
919
- handleGuardBottomKeydown: (e) => {
920
- e.keyCode === KeyCode.default.TAB && e.shiftKey && (navigationService.getLastCellToFocus(e.shiftKey), e.preventDefault());
921
- },
922
868
  tabGuardTopRef,
923
869
  tabGuardBottomRef,
924
870
  onShowSizeChange,