@koi-design/uxd-ui 14.0.44 → 14.0.46

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 (59) hide show
  1. package/README.md +190 -1
  2. package/es/components/Table/BaseTable.vue.d.ts +2 -0
  3. package/es/components/Table/BodyTable.vue.d.ts +2 -0
  4. package/es/components/Table/HeadTable.vue.d.ts +2 -0
  5. package/es/components/Table/Table.mjs +15 -1
  6. package/es/components/Table/Table.mjs.map +1 -1
  7. package/es/components/Table/Table.type.d.ts +5 -0
  8. package/es/components/Table/Table.type.mjs +4 -0
  9. package/es/components/Table/Table.type.mjs.map +1 -1
  10. package/es/components/Table/Table.vue.d.ts +13 -0
  11. package/es/components/Table/TableBox.vue.d.ts +4 -0
  12. package/es/components/Table/hooks/useDraggable.mjs +37 -6
  13. package/es/components/Table/hooks/useDraggable.mjs.map +1 -1
  14. package/es/components/Table/tableUnits/DraggableIcon.mjs +17 -3
  15. package/es/components/Table/tableUnits/DraggableIcon.mjs.map +1 -1
  16. package/es/components/Table/tableUnits/DraggableIcon.vue.d.ts +1 -0
  17. package/es/components/Table/tableUnits/ExpandRows.vue.d.ts +1 -0
  18. package/es/components/Table/tableUnits/TableBody.vue.d.ts +2 -0
  19. package/es/components/Table/tableUnits/TableCell.mjs +4 -3
  20. package/es/components/Table/tableUnits/TableCell.mjs.map +1 -1
  21. package/es/components/Table/tableUnits/TableCell.vue.d.ts +1 -0
  22. package/es/components/Table/tableUnits/TableRow.vue.d.ts +1 -0
  23. package/lib/components/Table/BaseTable.vue.d.ts +2 -0
  24. package/lib/components/Table/BodyTable.vue.d.ts +2 -0
  25. package/lib/components/Table/HeadTable.vue.d.ts +2 -0
  26. package/lib/components/Table/Table.js +15 -1
  27. package/lib/components/Table/Table.js.map +1 -1
  28. package/lib/components/Table/Table.type.d.ts +5 -0
  29. package/lib/components/Table/Table.type.js +4 -0
  30. package/lib/components/Table/Table.type.js.map +1 -1
  31. package/lib/components/Table/Table.vue.d.ts +13 -0
  32. package/lib/components/Table/TableBox.vue.d.ts +4 -0
  33. package/lib/components/Table/hooks/useDraggable.js +37 -6
  34. package/lib/components/Table/hooks/useDraggable.js.map +1 -1
  35. package/lib/components/Table/tableUnits/DraggableIcon.js +17 -3
  36. package/lib/components/Table/tableUnits/DraggableIcon.js.map +1 -1
  37. package/lib/components/Table/tableUnits/DraggableIcon.vue.d.ts +1 -0
  38. package/lib/components/Table/tableUnits/ExpandRows.vue.d.ts +1 -0
  39. package/lib/components/Table/tableUnits/TableBody.vue.d.ts +2 -0
  40. package/lib/components/Table/tableUnits/TableCell.js +4 -3
  41. package/lib/components/Table/tableUnits/TableCell.js.map +1 -1
  42. package/lib/components/Table/tableUnits/TableCell.vue.d.ts +1 -0
  43. package/lib/components/Table/tableUnits/TableRow.vue.d.ts +1 -0
  44. package/package.json +1 -1
  45. package/types/components/Table/BaseTable.vue.d.ts +2 -0
  46. package/types/components/Table/BodyTable.vue.d.ts +2 -0
  47. package/types/components/Table/HeadTable.vue.d.ts +2 -0
  48. package/types/components/Table/Table.type.d.ts +5 -0
  49. package/types/components/Table/Table.vue.d.ts +13 -0
  50. package/types/components/Table/TableBox.vue.d.ts +4 -0
  51. package/types/components/Table/tableUnits/DraggableIcon.vue.d.ts +1 -0
  52. package/types/components/Table/tableUnits/ExpandRows.vue.d.ts +1 -0
  53. package/types/components/Table/tableUnits/TableBody.vue.d.ts +2 -0
  54. package/types/components/Table/tableUnits/TableCell.vue.d.ts +1 -0
  55. package/types/components/Table/tableUnits/TableRow.vue.d.ts +1 -0
  56. package/uxd-ui.esm.min.mjs +6 -6
  57. package/uxd-ui.esm.mjs +78 -14
  58. package/uxd-ui.umd.js +78 -14
  59. package/uxd-ui.umd.min.js +6 -6
@@ -41,12 +41,22 @@ function useDraggable(props, tableRefs) {
41
41
  }, {
42
42
  flush: "post"
43
43
  });
44
+ const getClientY = (event) => {
45
+ if ("touches" in event && event.touches.length > 0) {
46
+ return event.touches[0].clientY;
47
+ }
48
+ if ("clientY" in event) {
49
+ return event.clientY;
50
+ }
51
+ return 0;
52
+ };
44
53
  const setRowRefsTranslate = (event) => {
45
54
  const currentRowData = rowDataMap.value[sourceRowKey];
46
55
  const {
47
56
  height: currentHeight
48
57
  } = currentRowData.rowRef[0].value.getBoundingClientRect();
49
- const realClientY = event.clientY + tableRefs.bodyTable.wrapRef.scrollTop;
58
+ const clientY = getClientY(event);
59
+ const realClientY = clientY + tableRefs.bodyTable.wrapRef.scrollTop;
50
60
  const safeTranslateY = Math.max(relativeMinY, Math.min(realClientY - dragStartPosition, relativeMaxY));
51
61
  currentRowData.rowRef.forEach((currentItem) => {
52
62
  currentItem.value.style.transform = `translateY(${safeTranslateY}px)`;
@@ -62,7 +72,7 @@ function useDraggable(props, tableRefs) {
62
72
  height,
63
73
  top
64
74
  } = rowData.rowRef[0].value.getBoundingClientRect();
65
- const position = top + Number((height / 2).toFixed(2)) < event.clientY ? 1 : -1;
75
+ const position = top + Number((height / 2).toFixed(2)) < clientY ? 1 : -1;
66
76
  if (!(sort + position)) {
67
77
  let translateY = currentHeight;
68
78
  let index = Math.min(targetIndex, rowData.index);
@@ -95,10 +105,11 @@ function useDraggable(props, tableRefs) {
95
105
  }
96
106
  };
97
107
  const handleBodyScrollY = (event) => {
98
- if (bodyTop + bodyHeight > event.clientY && event.clientY > bodyTop) {
108
+ const clientY = getClientY(event);
109
+ if (bodyTop + bodyHeight > clientY && clientY > bodyTop) {
99
110
  clearBodyScrollY();
100
111
  } else if (!scrollTimer) {
101
- const px = event.clientY < bodyTop ? -3 : 3;
112
+ const px = clientY < bodyTop ? -3 : 3;
102
113
  scrollTimer = setInterval(() => {
103
114
  tableRefs.bodyTable.setScrollTop(Math.max(0, Math.min(tableRefs.bodyTable.wrapRef.scrollTop + px, tableHeight - bodyHeight)));
104
115
  setRowRefsTranslate(event);
@@ -111,6 +122,13 @@ function useDraggable(props, tableRefs) {
111
122
  setRowRefsTranslate(event);
112
123
  }
113
124
  };
125
+ const handleTouchmove = (event) => {
126
+ event.preventDefault();
127
+ handleBodyScrollY(event);
128
+ if (!scrollTimer) {
129
+ setRowRefsTranslate(event);
130
+ }
131
+ };
114
132
  const disableWheel = (e) => {
115
133
  e.preventDefault();
116
134
  };
@@ -137,11 +155,15 @@ function useDraggable(props, tableRefs) {
137
155
  window.removeEventListener("mousemove", handleMousemove);
138
156
  window.removeEventListener("mouseup", clearDrag);
139
157
  window.removeEventListener("mousewheel", disableWheel);
158
+ window.removeEventListener("touchmove", handleTouchmove);
159
+ window.removeEventListener("touchend", clearDrag);
160
+ window.removeEventListener("touchcancel", clearDrag);
140
161
  };
141
162
  const handleDragStart = (event, param) => {
142
163
  const bodyTable = tableRefs.bodyTable.wrapRef;
143
164
  sourceRowKey = param.rowKey.toString();
144
- dragStartPosition = event.clientY + bodyTable.scrollTop;
165
+ const clientY = getClientY(event);
166
+ dragStartPosition = clientY + bodyTable.scrollTop;
145
167
  const sortRowData = Object.values(rowDataMap.value).sort((a, b) => a.index - b.index);
146
168
  const {
147
169
  top
@@ -158,12 +180,21 @@ function useDraggable(props, tableRefs) {
158
180
  bodyTop = bodyTopInner;
159
181
  bodyHeight = bodyHeightInner;
160
182
  tableHeight = tableHeightInner;
161
- handleMousemove(event);
183
+ if ("touches" in event) {
184
+ handleTouchmove(event);
185
+ } else {
186
+ handleMousemove(event);
187
+ }
162
188
  window.addEventListener("mousemove", handleMousemove);
163
189
  window.addEventListener("mouseup", clearDrag);
164
190
  window.addEventListener("mousewheel", disableWheel, {
165
191
  passive: false
166
192
  });
193
+ window.addEventListener("touchmove", handleTouchmove, {
194
+ passive: false
195
+ });
196
+ window.addEventListener("touchend", clearDrag);
197
+ window.addEventListener("touchcancel", clearDrag);
167
198
  event.preventDefault();
168
199
  };
169
200
  const draggableColumn = computed(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useDraggable.mjs","sources":["../../../../../src/components/Table/hooks/useDraggable.tsx"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport type { Ref } from 'vue';\nimport type { ColumnSlotParams, InnerColumn, TableProps, TableRefs } from '../Table.type';\nimport DraggableIcon from '../tableUnits/DraggableIcon.vue';\n\nexport interface RowData {\n rowKey: string | number;\n index: number;\n data: Record<string, any>;\n rowRef: Ref<HTMLElement>[];\n}\n\nexport interface BodyScrollMethod {\n handle: null | ((e: any) => void);\n}\n\nexport default function useDraggable(props: TableProps, tableRefs: TableRefs) {\n let sourceRowKey: string | number = '';\n let targetIndex = 0;\n let dragStartPosition = 0;\n let relativeMinY = 0;\n let relativeMaxY = 0;\n const rowDataMap = ref<Record<string, RowData>>({});\n\n const setRowRefs = (val: RowData) => {\n if (props.draggable) {\n const historyRowData = rowDataMap.value[val.rowKey.toString()];\n if (historyRowData) {\n const { rowRef } = historyRowData;\n historyRowData.index = val.index;\n\n if (rowRef[rowRef.length - 1].value) {\n rowRef.push(...val.rowRef);\n } else {\n rowRef.splice(rowRef.length - 2, 1, val.rowRef[0]);\n }\n } else {\n rowDataMap.value[val.rowKey.toString()] = val;\n }\n }\n };\n const clearRowRefs = () => {\n if (props.draggable) {\n Object.keys(rowDataMap.value).forEach((key) => {\n const rowData = rowDataMap.value[key];\n if (rowData.rowRef.every((item) => !item.value)) {\n delete rowDataMap.value[key];\n }\n });\n }\n };\n watch(\n () => props.data,\n () => {\n clearRowRefs();\n },\n { flush: 'post' }\n );\n\n const setRowRefsTranslate = (event: MouseEvent) => {\n const currentRowData = rowDataMap.value[sourceRowKey];\n const { height: currentHeight } = currentRowData.rowRef[0].value.getBoundingClientRect();\n const realClientY = event.clientY + (tableRefs.bodyTable as any).wrapRef.scrollTop;\n const safeTranslateY = Math.max(relativeMinY, Math.min(realClientY - dragStartPosition, relativeMaxY));\n currentRowData.rowRef.forEach((currentItem) => {\n currentItem.value.style.transform = `translateY(${safeTranslateY}px)`;\n currentItem.value.style.position = 'relative';\n currentItem.value.style.zIndex = '999';\n });\n targetIndex = currentRowData.index;\n Object.keys(rowDataMap.value).forEach((rowKey) => {\n if (rowKey !== sourceRowKey) {\n const rowData = rowDataMap.value[rowKey];\n const sort = rowData.index < currentRowData.index ? 1 : -1;\n\n const { height, top } = rowData.rowRef[0].value.getBoundingClientRect();\n const position = top + Number((height / 2).toFixed(2)) < event.clientY ? 1 : -1;\n\n if (!(sort + position)) {\n let translateY = currentHeight;\n let index = Math.min(targetIndex, rowData.index);\n if (sort === -1) {\n translateY = -currentHeight;\n index = Math.max(targetIndex, rowData.index);\n }\n targetIndex = index;\n rowData.rowRef.forEach((rowRefItem) => {\n rowRefItem.value.style.transform = `translateY(${translateY}px)`;\n rowRefItem.value.style.transition = 'transform 0.3s';\n });\n } else {\n rowData.rowRef.forEach((rowRefItem) => {\n rowRefItem.value.style.transform = 'none';\n rowRefItem.value.style.transition = 'transform 0.3s';\n });\n }\n }\n });\n };\n\n let bodyTop = 0;\n let bodyHeight = 0;\n let tableHeight = 0;\n let scrollTimer: any | null = null;\n const clearBodyScrollY = () => {\n if (scrollTimer) {\n clearInterval(scrollTimer);\n scrollTimer = null;\n }\n };\n const handleBodyScrollY = (event: MouseEvent) => {\n if (bodyTop + bodyHeight > event.clientY && event.clientY > bodyTop) {\n clearBodyScrollY();\n } else if (!scrollTimer) {\n const px = event.clientY < bodyTop ? -3 : 3;\n scrollTimer = setInterval(() => {\n (tableRefs.bodyTable as any).setScrollTop(\n Math.max(0, Math.min((tableRefs.bodyTable as any).wrapRef.scrollTop + px, tableHeight - bodyHeight))\n );\n setRowRefsTranslate(event);\n }, 10);\n }\n };\n const handleMousemove = (event: MouseEvent) => {\n handleBodyScrollY(event);\n\n if (!scrollTimer) {\n setRowRefsTranslate(event);\n }\n };\n\n const disableWheel = (e: Event) => {\n e.preventDefault();\n };\n\n const clearDrag = () => {\n let targetRowKey = sourceRowKey;\n Object.values(rowDataMap.value).forEach((rowData) => {\n if (rowData.index === targetIndex) {\n targetRowKey = rowData.rowKey.toString();\n }\n rowData.rowRef.forEach((rowRefItem) => {\n rowRefItem.value.style.transform = 'none';\n rowRefItem.value.style.transition = 'none';\n rowRefItem.value.style.position = 'unset';\n rowRefItem.value.style.zIndex = 'auto';\n });\n });\n if (targetRowKey !== sourceRowKey) {\n if (props.draggable.onDragDrop) {\n props.draggable.onDragDrop(sourceRowKey, targetRowKey);\n }\n }\n sourceRowKey = '';\n clearBodyScrollY();\n window.removeEventListener('mousemove', handleMousemove);\n window.removeEventListener('mouseup', clearDrag);\n window.removeEventListener('mousewheel', disableWheel);\n };\n const handleDragStart = (event: MouseEvent, param: ColumnSlotParams) => {\n const bodyTable = (tableRefs.bodyTable as any).wrapRef;\n\n sourceRowKey = param.rowKey.toString();\n\n dragStartPosition = event.clientY + bodyTable.scrollTop;\n\n const sortRowData = Object.values(rowDataMap.value).sort((a, b) => a.index - b.index);\n const { top } = rowDataMap.value[sourceRowKey].rowRef[0].value.getBoundingClientRect();\n relativeMinY = sortRowData[0].rowRef[0].value.getBoundingClientRect().top - top;\n relativeMaxY = sortRowData[sortRowData.length - 1].rowRef[0].value.getBoundingClientRect().top - top;\n const { top: bodyTopInner, height: bodyHeightInner } = bodyTable.getBoundingClientRect();\n const { height: tableHeightInner } = bodyTable.children[0].getBoundingClientRect();\n bodyTop = bodyTopInner;\n bodyHeight = bodyHeightInner;\n tableHeight = tableHeightInner;\n\n handleMousemove(event);\n\n window.addEventListener('mousemove', handleMousemove);\n window.addEventListener('mouseup', clearDrag);\n window.addEventListener('mousewheel', disableWheel, { passive: false });\n\n event.preventDefault();\n };\n\n const draggableColumn = computed(() => {\n if (props.draggable) {\n const column: InnerColumn = {\n key: 'draggable-column',\n type: 'draggable',\n width: 50,\n align: 'center',\n render: (param) => {\n return <DraggableIcon onDragStart={(event: MouseEvent) => handleDragStart(event, param)} />;\n }\n // handleDragStart\n };\n if ('fixed' in props.draggable) {\n column.fixed = props.draggable.fixed;\n } else if (props.columns.some((x) => x.fixed === 'left' || x.fixed === true)) {\n column.fixed = 'left';\n }\n return column;\n }\n return null;\n });\n return {\n setRowRefs,\n draggableColumn\n };\n}\n"],"names":["useDraggable","props","tableRefs","sourceRowKey","targetIndex","dragStartPosition","relativeMinY","relativeMaxY","rowDataMap","ref","setRowRefs","val","draggable","historyRowData","value","rowKey","toString","rowRef","index","length","push","splice","clearRowRefs","Object","keys","forEach","key","rowData","every","item","watch","data","flush","setRowRefsTranslate","event","currentRowData","height","currentHeight","getBoundingClientRect","realClientY","clientY","bodyTable","wrapRef","scrollTop","safeTranslateY","Math","max","min","currentItem","style","transform","position","zIndex","sort","top","Number","toFixed","translateY","rowRefItem","transition","bodyTop","bodyHeight","tableHeight","scrollTimer","clearBodyScrollY","clearInterval","handleBodyScrollY","px","setInterval","setScrollTop","handleMousemove","disableWheel","e","preventDefault","clearDrag","targetRowKey","values","onDragDrop","window","removeEventListener","handleDragStart","param","sortRowData","a","b","bodyTopInner","bodyHeightInner","tableHeightInner","children","addEventListener","passive","draggableColumn","computed","column","type","width","align","render","_createVNode","DraggableIcon","fixed","columns","some","x"],"mappings":"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"}
1
+ {"version":3,"file":"useDraggable.mjs","sources":["../../../../../src/components/Table/hooks/useDraggable.tsx"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport type { Ref } from 'vue';\nimport type { ColumnSlotParams, InnerColumn, TableProps, TableRefs } from '../Table.type';\nimport DraggableIcon from '../tableUnits/DraggableIcon.vue';\n\nexport interface RowData {\n rowKey: string | number;\n index: number;\n data: Record<string, any>;\n rowRef: Ref<HTMLElement>[];\n}\n\nexport interface BodyScrollMethod {\n handle: null | ((e: any) => void);\n}\n\nexport default function useDraggable(props: TableProps, tableRefs: TableRefs) {\n let sourceRowKey: string | number = '';\n let targetIndex = 0;\n let dragStartPosition = 0;\n let relativeMinY = 0;\n let relativeMaxY = 0;\n const rowDataMap = ref<Record<string, RowData>>({});\n\n const setRowRefs = (val: RowData) => {\n if (props.draggable) {\n const historyRowData = rowDataMap.value[val.rowKey.toString()];\n if (historyRowData) {\n const { rowRef } = historyRowData;\n historyRowData.index = val.index;\n\n if (rowRef[rowRef.length - 1].value) {\n rowRef.push(...val.rowRef);\n } else {\n rowRef.splice(rowRef.length - 2, 1, val.rowRef[0]);\n }\n } else {\n rowDataMap.value[val.rowKey.toString()] = val;\n }\n }\n };\n const clearRowRefs = () => {\n if (props.draggable) {\n Object.keys(rowDataMap.value).forEach((key) => {\n const rowData = rowDataMap.value[key];\n if (rowData.rowRef.every((item) => !item.value)) {\n delete rowDataMap.value[key];\n }\n });\n }\n };\n watch(\n () => props.data,\n () => {\n clearRowRefs();\n },\n { flush: 'post' }\n );\n\n // Extract clientY from mouse or touch event\n const getClientY = (event: MouseEvent | TouchEvent): number => {\n if ('touches' in event && event.touches.length > 0) {\n // Touch event - get Y coordinate from first touch point\n return event.touches[0].clientY;\n }\n if ('clientY' in event) {\n // Mouse event - use clientY directly\n return event.clientY;\n }\n return 0;\n };\n\n const setRowRefsTranslate = (event: MouseEvent | TouchEvent) => {\n const currentRowData = rowDataMap.value[sourceRowKey];\n const { height: currentHeight } = currentRowData.rowRef[0].value.getBoundingClientRect();\n const clientY = getClientY(event);\n const realClientY = clientY + (tableRefs.bodyTable as any).wrapRef.scrollTop;\n const safeTranslateY = Math.max(relativeMinY, Math.min(realClientY - dragStartPosition, relativeMaxY));\n currentRowData.rowRef.forEach((currentItem) => {\n currentItem.value.style.transform = `translateY(${safeTranslateY}px)`;\n currentItem.value.style.position = 'relative';\n currentItem.value.style.zIndex = '999';\n });\n targetIndex = currentRowData.index;\n Object.keys(rowDataMap.value).forEach((rowKey) => {\n if (rowKey !== sourceRowKey) {\n const rowData = rowDataMap.value[rowKey];\n const sort = rowData.index < currentRowData.index ? 1 : -1;\n\n const { height, top } = rowData.rowRef[0].value.getBoundingClientRect();\n const position = top + Number((height / 2).toFixed(2)) < clientY ? 1 : -1;\n\n if (!(sort + position)) {\n let translateY = currentHeight;\n let index = Math.min(targetIndex, rowData.index);\n if (sort === -1) {\n translateY = -currentHeight;\n index = Math.max(targetIndex, rowData.index);\n }\n targetIndex = index;\n rowData.rowRef.forEach((rowRefItem) => {\n rowRefItem.value.style.transform = `translateY(${translateY}px)`;\n rowRefItem.value.style.transition = 'transform 0.3s';\n });\n } else {\n rowData.rowRef.forEach((rowRefItem) => {\n rowRefItem.value.style.transform = 'none';\n rowRefItem.value.style.transition = 'transform 0.3s';\n });\n }\n }\n });\n };\n\n let bodyTop = 0;\n let bodyHeight = 0;\n let tableHeight = 0;\n let scrollTimer: any | null = null;\n const clearBodyScrollY = () => {\n if (scrollTimer) {\n clearInterval(scrollTimer);\n scrollTimer = null;\n }\n };\n const handleBodyScrollY = (event: MouseEvent | TouchEvent) => {\n const clientY = getClientY(event);\n if (bodyTop + bodyHeight > clientY && clientY > bodyTop) {\n clearBodyScrollY();\n } else if (!scrollTimer) {\n const px = clientY < bodyTop ? -3 : 3;\n scrollTimer = setInterval(() => {\n (tableRefs.bodyTable as any).setScrollTop(\n Math.max(0, Math.min((tableRefs.bodyTable as any).wrapRef.scrollTop + px, tableHeight - bodyHeight))\n );\n setRowRefsTranslate(event);\n }, 10);\n }\n };\n\n // Handle mouse move event\n const handleMousemove = (event: MouseEvent) => {\n handleBodyScrollY(event);\n\n if (!scrollTimer) {\n setRowRefsTranslate(event);\n }\n };\n\n // Handle touch move event for mobile devices\n const handleTouchmove = (event: TouchEvent) => {\n // Prevent default scrolling behavior during drag\n event.preventDefault();\n handleBodyScrollY(event);\n\n if (!scrollTimer) {\n setRowRefsTranslate(event);\n }\n };\n\n const disableWheel = (e: Event) => {\n e.preventDefault();\n };\n\n const clearDrag = () => {\n let targetRowKey = sourceRowKey;\n Object.values(rowDataMap.value).forEach((rowData) => {\n if (rowData.index === targetIndex) {\n targetRowKey = rowData.rowKey.toString();\n }\n rowData.rowRef.forEach((rowRefItem) => {\n rowRefItem.value.style.transform = 'none';\n rowRefItem.value.style.transition = 'none';\n rowRefItem.value.style.position = 'unset';\n rowRefItem.value.style.zIndex = 'auto';\n });\n });\n if (targetRowKey !== sourceRowKey) {\n if (props.draggable.onDragDrop) {\n props.draggable.onDragDrop(sourceRowKey, targetRowKey);\n }\n }\n sourceRowKey = '';\n clearBodyScrollY();\n // Remove mouse event listeners\n window.removeEventListener('mousemove', handleMousemove);\n window.removeEventListener('mouseup', clearDrag);\n window.removeEventListener('mousewheel', disableWheel);\n // Remove touch event listeners\n window.removeEventListener('touchmove', handleTouchmove);\n window.removeEventListener('touchend', clearDrag);\n window.removeEventListener('touchcancel', clearDrag);\n };\n const handleDragStart = (event: MouseEvent | TouchEvent, param: ColumnSlotParams) => {\n const bodyTable = (tableRefs.bodyTable as any).wrapRef;\n\n sourceRowKey = param.rowKey.toString();\n\n // Get clientY from mouse or touch event\n const clientY = getClientY(event);\n dragStartPosition = clientY + bodyTable.scrollTop;\n\n const sortRowData = Object.values(rowDataMap.value).sort((a, b) => a.index - b.index);\n const { top } = rowDataMap.value[sourceRowKey].rowRef[0].value.getBoundingClientRect();\n relativeMinY = sortRowData[0].rowRef[0].value.getBoundingClientRect().top - top;\n relativeMaxY = sortRowData[sortRowData.length - 1].rowRef[0].value.getBoundingClientRect().top - top;\n const { top: bodyTopInner, height: bodyHeightInner } = bodyTable.getBoundingClientRect();\n const { height: tableHeightInner } = bodyTable.children[0].getBoundingClientRect();\n bodyTop = bodyTopInner;\n bodyHeight = bodyHeightInner;\n tableHeight = tableHeightInner;\n\n // Initialize position\n if ('touches' in event) {\n handleTouchmove(event as TouchEvent);\n } else {\n handleMousemove(event as MouseEvent);\n }\n\n // Add mouse event listeners for desktop\n window.addEventListener('mousemove', handleMousemove);\n window.addEventListener('mouseup', clearDrag);\n window.addEventListener('mousewheel', disableWheel, { passive: false });\n\n // Add touch event listeners for mobile\n window.addEventListener('touchmove', handleTouchmove, { passive: false });\n window.addEventListener('touchend', clearDrag);\n window.addEventListener('touchcancel', clearDrag);\n\n event.preventDefault();\n };\n\n const draggableColumn = computed(() => {\n if (props.draggable) {\n const column: InnerColumn = {\n key: 'draggable-column',\n type: 'draggable',\n width: 50,\n align: 'center',\n render: (param) => {\n return <DraggableIcon onDragStart={(event: MouseEvent | TouchEvent) => handleDragStart(event, param)} />;\n }\n // handleDragStart\n };\n if ('fixed' in props.draggable) {\n column.fixed = props.draggable.fixed;\n } else if (props.columns.some((x) => x.fixed === 'left' || x.fixed === true)) {\n column.fixed = 'left';\n }\n return column;\n }\n return null;\n });\n return {\n setRowRefs,\n draggableColumn\n };\n}\n"],"names":["useDraggable","props","tableRefs","sourceRowKey","targetIndex","dragStartPosition","relativeMinY","relativeMaxY","rowDataMap","ref","setRowRefs","val","draggable","historyRowData","value","rowKey","toString","rowRef","index","length","push","splice","clearRowRefs","Object","keys","forEach","key","rowData","every","item","watch","data","flush","getClientY","event","touches","clientY","setRowRefsTranslate","currentRowData","height","currentHeight","getBoundingClientRect","realClientY","bodyTable","wrapRef","scrollTop","safeTranslateY","Math","max","min","currentItem","style","transform","position","zIndex","sort","top","Number","toFixed","translateY","rowRefItem","transition","bodyTop","bodyHeight","tableHeight","scrollTimer","clearBodyScrollY","clearInterval","handleBodyScrollY","px","setInterval","setScrollTop","handleMousemove","handleTouchmove","preventDefault","disableWheel","e","clearDrag","targetRowKey","values","onDragDrop","window","removeEventListener","handleDragStart","param","sortRowData","a","b","bodyTopInner","bodyHeightInner","tableHeightInner","children","addEventListener","passive","draggableColumn","computed","column","type","width","align","render","_createVNode","DraggableIcon","fixed","columns","some","x"],"mappings":"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"}
@@ -15,9 +15,22 @@ const _sfc_main = defineComponent({
15
15
  const handleDragStart = (e) => {
16
16
  emit("dragStart", e);
17
17
  };
18
+ const handleTouchStart = (e) => {
19
+ e.preventDefault();
20
+ const touch = e.touches[0];
21
+ const syntheticEvent = {
22
+ ...e,
23
+ clientY: touch.clientY,
24
+ clientX: touch.clientX,
25
+ preventDefault: () => e.preventDefault(),
26
+ stopPropagation: () => e.stopPropagation()
27
+ };
28
+ emit("dragStart", syntheticEvent);
29
+ };
18
30
  return {
19
31
  prefixCls,
20
- handleDragStart
32
+ handleDragStart,
33
+ handleTouchStart
21
34
  };
22
35
  }
23
36
  });
@@ -26,13 +39,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
26
39
  const _component_UIcon = resolveComponent("UIcon");
27
40
  return openBlock(), createBlock(_component_UIcon, {
28
41
  class: normalizeClass([`${_ctx.prefixCls}-draggable-icon`]),
29
- onMousedown: _ctx.handleDragStart
42
+ onMousedown: _ctx.handleDragStart,
43
+ onTouchstart: _ctx.handleTouchStart
30
44
  }, {
31
45
  default: withCtx(() => [
32
46
  createVNode(_component_GripVertical)
33
47
  ]),
34
48
  _: 1
35
- }, 8, ["class", "onMousedown"]);
49
+ }, 8, ["class", "onMousedown", "onTouchstart"]);
36
50
  }
37
51
  var DraggableIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "/Users/admin/Documents/uxd/uxd-ui/src/components/Table/tableUnits/DraggableIcon.vue"]]);
38
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableIcon.mjs","sources":["../../../../../src/components/Table/tableUnits/DraggableIcon.vue"],"sourcesContent":["<template>\n <UIcon :class=\"[`${prefixCls}-draggable-icon`]\" @mousedown=\"handleDragStart\">\n <GripVertical />\n </UIcon>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue';\nimport UIcon from '@uxd-ui/components/Icon';\nimport { GripVertical } from 'lucide-vue-next';\nimport type { TableContext } from '../Table.type';\n\nexport default defineComponent({\n name: 'ExpandIcon',\n components: {\n UIcon,\n GripVertical\n },\n emits: ['dragStart'],\n setup(props, { emit }) {\n const { prefixCls } = inject<TableContext>('tableContext', {} as TableContext);\n\n const handleDragStart = (e: DragEvent) => {\n emit('dragStart', e);\n };\n\n return {\n prefixCls,\n handleDragStart\n };\n }\n});\n</script>\n"],"names":["_createBlock","_normalizeClass","_createVNode"],"mappings":";;;;;AAYA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA;AACF,EACA,OAAO,CAAC,WAAW;AAAA,EACnB,MAAM,OAAO,EAAE,QAAQ;UACf,EAAE,cAAc,OAAqB,gBAAgB,EAAkB;UAEvE,kBAAkB,CAAC,MAAiB;WACnC,aAAa,CAAC;AAAA;WAGd;AAAA,MACL;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;sBA9BCA,YAEQ;IAFA,OAAKC,mBAAM,+BAAS;IAAqB,aAAW;;qBAC1D,MAAgB;AAAA,MAAhBC,YAAgB;;;;;;;;;"}
1
+ {"version":3,"file":"DraggableIcon.mjs","sources":["../../../../../src/components/Table/tableUnits/DraggableIcon.vue"],"sourcesContent":["<template>\n <UIcon :class=\"[`${prefixCls}-draggable-icon`]\" @mousedown=\"handleDragStart\" @touchstart=\"handleTouchStart\">\n <GripVertical />\n </UIcon>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue';\nimport UIcon from '@uxd-ui/components/Icon';\nimport { GripVertical } from 'lucide-vue-next';\nimport type { TableContext } from '../Table.type';\n\nexport default defineComponent({\n name: 'ExpandIcon',\n components: {\n UIcon,\n GripVertical\n },\n emits: ['dragStart'],\n setup(props, { emit }) {\n const { prefixCls } = inject<TableContext>('tableContext', {} as TableContext);\n\n // Handle mouse drag start\n const handleDragStart = (e: DragEvent) => {\n emit('dragStart', e);\n };\n\n // Handle touch drag start for mobile devices\n const handleTouchStart = (e: TouchEvent) => {\n // Prevent default scrolling behavior\n e.preventDefault();\n // Convert touch event to a compatible format\n // Create a synthetic event object that mimics MouseEvent structure\n const touch = e.touches[0];\n const syntheticEvent = {\n ...e,\n clientY: touch.clientY,\n clientX: touch.clientX,\n preventDefault: () => e.preventDefault(),\n stopPropagation: () => e.stopPropagation()\n } as any;\n emit('dragStart', syntheticEvent);\n };\n\n return {\n prefixCls,\n handleDragStart,\n handleTouchStart\n };\n }\n});\n</script>\n"],"names":["_createBlock","_normalizeClass","_createVNode"],"mappings":";;;;;AAYA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA;AACF,EACA,OAAO,CAAC,WAAW;AAAA,EACnB,MAAM,OAAO,EAAE,QAAQ;UACf,EAAE,cAAc,OAAqB,gBAAgB,EAAkB;UAGvE,kBAAkB,CAAC,MAAiB;WACnC,aAAa,CAAC;AAAA;UAIf,mBAAmB,CAAC,MAAkB;QAExC;YAGI,QAAQ,EAAE,QAAQ;YAClB,iBAAiB;AAAA,QACrB,GAAG;AAAA,QACH,SAAS,MAAM;AAAA,QACf,SAAS,MAAM;AAAA,QACf,gBAAgB,MAAM,EAAE;AAAe,QACvC,iBAAiB,MAAM,EAAE;AAAgB;WAEtC,aAAa,cAAc;AAAA;WAG3B;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;sBAjDCA,YAEQ;IAFA,OAAKC,mBAAM,+BAAS;IAAqB,aAAW;IAAkB,cAAY;;qBACxF,MAAgB;AAAA,MAAhBC,YAAgB;;;;;;;;;"}
@@ -1,6 +1,7 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
2
  prefixCls: import("vue").ComputedRef<string>;
3
3
  handleDragStart: (e: DragEvent) => void;
4
+ handleTouchStart: (e: TouchEvent) => void;
4
5
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "dragStart"[], "dragStart", import("vue").PublicProps, Readonly<{}> & Readonly<{
5
6
  onDragStart?: (...args: any[]) => any;
6
7
  }>, {}, {}, {
@@ -209,6 +209,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
209
209
  target: HTMLElement;
210
210
  width: number;
211
211
  }) => void;
212
+ cellEmptyText: import("vue").Ref<string, string>;
212
213
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
213
214
  prefixCls: {
214
215
  type: StringConstructor;
@@ -174,6 +174,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
174
174
  target: HTMLElement;
175
175
  width: number;
176
176
  }) => void;
177
+ cellEmptyText: import("vue").Ref<string, string>;
177
178
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
178
179
  prefixCls: {
179
180
  type: StringConstructor;
@@ -1476,6 +1477,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1476
1477
  target: HTMLElement;
1477
1478
  width: number;
1478
1479
  }) => void;
1480
+ cellEmptyText: import("vue").Ref<string, string>;
1479
1481
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1480
1482
  prefixCls: {
1481
1483
  type: StringConstructor;
@@ -56,7 +56,7 @@ const _sfc_main = defineComponent({
56
56
  setup(props) {
57
57
  const {
58
58
  prefixCls: tablePrefixCls,
59
- props: { indentSize },
59
+ props: { indentSize, cellEmptyText },
60
60
  expand: { handleExpandChange, isRowExpanded },
61
61
  filterAndSorter: { hasAction, hasSorters, hasFilters, isSortColumn },
62
62
  size: { syncColumnWidth },
@@ -171,7 +171,8 @@ const _sfc_main = defineComponent({
171
171
  cellRef,
172
172
  ellipsisSpanRef,
173
173
  isOverflow,
174
- checkWidth
174
+ checkWidth,
175
+ cellEmptyText
175
176
  };
176
177
  }
177
178
  });
@@ -261,7 +262,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
261
262
  ]),
262
263
  _: 1
263
264
  }, 8, ["title", "disabled"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
264
- createTextVNode(toDisplayString(_ctx.displayCell), 1)
265
+ createTextVNode(toDisplayString(_ctx.displayCell || _ctx.cellEmptyText), 1)
265
266
  ], 64))
266
267
  ], 64))
267
268
  ], 64))
@@ -1 +1 @@
1
- {"version":3,"file":"TableCell.mjs","sources":["../../../../../src/components/Table/tableUnits/TableCell.vue"],"sourcesContent":["<template>\n <ResizeObserver @resize=\"checkWidth\">\n <td\n v-if=\"showCell\"\n ref=\"cellRef\"\n v-bind=\"tdProps\"\n :class=\"{\n [`${prefixCls}-cell-custom`]: !!(tdProps as any)?.class,\n [`${column.className}`]: !!column.className,\n [`${prefixCls}-cell-ellipsis`]: !!column.ellipsis,\n [`${prefixCls}-cell-break-word`]: !!column.width,\n [`${tablePrefixCls}-column-has-actions`]: hasAction(column),\n [`${tablePrefixCls}-column-has-sorters`]: hasSorters(column),\n [`${tablePrefixCls}-column-has-filters`]: hasFilters(column),\n [`${tablePrefixCls}-column-sort`]: isSortColumn(column)\n }\"\n :style=\"tdStyle\"\n >\n <USkeleton v-if=\"skeleton\" :class=\"`${prefixCls}-skeleton-wrap`\" active>\n <template v-if=\"column.skeleton\">\n <USkeletonItem\n v-for=\"(_, ski) in Array(column.skeleton.length)\"\n :key=\"ski\"\n :type=\"column.skeleton[ski].type\"\n :style=\"column.skeleton[ski].style\"\n />\n </template>\n <USkeletonItem v-else type=\"text\" style=\"width: 50%\" />\n </USkeleton>\n <template v-else>\n <template v-if=\"expandIcon\">\n <span :class=\"`${prefixCls}-indent indent-level-${indent}`\" :style=\"{ paddingLeft: `${indentSize * indent}px` }\" />\n <ExpandIcon\n need-indent-spaced\n :expandable=\"!!(data as any).children\"\n :need-loading=\"(data as any).children === true\"\n :row-key=\"rowKey\"\n :expanded=\"isRowExpanded(rowKey, true)\"\n @expand=\"handleExpand\"\n @async-expand=\"handleAsyncExpand\"\n />\n </template>\n <Render\n v-if=\"isRender\"\n :render=\"\n () => {\n return renderFn?.({\n row: data,\n index,\n rowKey,\n pagination,\n column\n });\n }\n \"\n />\n <template v-else>\n <template v-if=\"column.ellipsis && displayCell\">\n <UTooltip :title=\"displayCell.toString()\" :disabled=\"!isOverflow\" :mouse-enter-delay=\"0.5\">\n <span ref=\"ellipsisSpanRef\">\n {{ displayCell }}\n </span>\n </UTooltip>\n </template>\n <template v-else>\n {{ displayCell }}\n </template>\n </template>\n </template>\n </td>\n </ResizeObserver>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, watch, ref, nextTick } from 'vue';\nimport type { PropType, CSSProperties } from 'vue';\nimport { get } from 'lodash-unified';\nimport UTooltip from '@uxd-ui/components/Tooltip';\nimport USkeleton from '@uxd-ui/components/Skeleton';\nimport Render from '../../base/Render';\nimport ExpandIcon from './ExpandIcon.vue';\nimport type { InnerColumn, TableContext } from '../Table.type';\nimport { getStyle } from '../../../utils';\nimport ResizeObserver from '../../base/ResizeObserver';\n\nconst USkeletonItem = USkeleton.Item;\n\nexport default defineComponent({\n name: 'TableCell',\n components: {\n Render,\n ExpandIcon,\n UTooltip,\n USkeleton,\n USkeletonItem,\n ResizeObserver\n },\n props: {\n prefixCls: {\n type: String\n },\n column: {\n type: Object as PropType<InnerColumn>,\n required: true\n },\n data: {\n type: Object as PropType<Record<string, any>>,\n required: true\n },\n rowKey: {\n type: [String, Number],\n required: true\n },\n index: {\n type: Number,\n required: true\n },\n indent: {\n type: Number,\n default: 20\n },\n expandIcon: {\n type: Boolean,\n default: false\n },\n skeleton: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const {\n prefixCls: tablePrefixCls,\n props: { indentSize },\n expand: { handleExpandChange, isRowExpanded },\n filterAndSorter: { hasAction, hasSorters, hasFilters, isSortColumn },\n // size: { sizesMap },\n size: { syncColumnWidth },\n pagination\n } = inject<TableContext>('tableContext', {} as TableContext);\n\n const cellRef = ref();\n const ellipsisSpanRef = ref();\n const isOverflow = ref(false);\n const isMinWidth = ref(false);\n\n const renderFn = computed(() => {\n const { render } = props.column;\n return render || null;\n });\n\n const isRender = computed(() => {\n return renderFn.value !== null;\n });\n\n const displayCell = computed(() => {\n const { key, dataIndex } = props.column;\n const record = props.data;\n return get(record, dataIndex || key);\n });\n\n const tdProps = ref({});\n const showCell = ref(true);\n\n watch(\n () => [props.column, props.data, props.index],\n () => {\n const { customCell } = props.column;\n const attrs = {} as Record<string, any>;\n // if (ellipsis && !render) {\n // attrs.title = displayCell.value;\n // }\n if (customCell) {\n const { data, index } = props;\n const _props = customCell(data, index);\n const { colSpan, rowSpan } = _props;\n showCell.value = colSpan !== 0 && rowSpan !== 0;\n Object.keys(_props).forEach((key) => {\n attrs[key] = _props[key];\n });\n }\n tdProps.value = attrs;\n },\n { immediate: true }\n );\n\n const tdStyle = computed(() => {\n const style = {} as CSSProperties;\n const { align, left, right } = props.column;\n if (align) {\n style.textAlign = align;\n }\n if (left !== undefined) {\n style.left = `${left}px`;\n }\n if (right !== undefined) {\n style.right = `${right}px`;\n }\n if (isMinWidth.value) {\n style.width = `${props.column.minWidth}px`;\n }\n return style;\n });\n\n const handleExpand = (e: any) => {\n handleExpandChange({ row: props.data, rowKey: props.rowKey, tree: true }, e);\n };\n\n const handleAsyncExpand = (e: any, done: () => void) => {\n handleExpandChange(\n {\n row: props.data,\n rowKey: props.rowKey,\n async: true,\n tree: true,\n done\n },\n e\n );\n };\n\n const checkWidth = ({ target, width }: { target: HTMLElement; width: number }) => {\n nextTick(() => {\n if (ellipsisSpanRef.value) {\n const cell = target;\n const padding = (Number.parseInt(getStyle(cell, 'paddingLeft')) || 0) + (Number.parseInt(getStyle(cell, 'paddingRight')) || 0);\n const span = ellipsisSpanRef.value;\n const range = document.createRange();\n range.setStart(span, 0);\n range.setEnd(span, span.childNodes.length);\n const rangeWidth = range.getBoundingClientRect().width;\n\n // const cellWidth = Number(getStyle(cell, 'width'));\n if (rangeWidth + padding > width) {\n isOverflow.value = true;\n } else {\n isOverflow.value = false;\n }\n }\n });\n if (props.index === 0) {\n syncColumnWidth(width, props.column);\n }\n };\n\n // onMounted(() => {\n // checkOverflow(cellRef.value);\n // });\n\n return {\n tablePrefixCls,\n isRender,\n renderFn,\n displayCell,\n tdProps,\n tdStyle,\n indentSize,\n handleExpand,\n handleAsyncExpand,\n isRowExpanded,\n showCell,\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n pagination,\n cellRef,\n ellipsisSpanRef,\n isOverflow,\n checkWidth\n };\n }\n});\n</script>\n"],"names":["_createBlock","_createElementBlock","_mergeProps","_normalizeClass","_Fragment","_normalizeStyle","_createElementVNode","_createVNode","_a"],"mappings":";;;;;;;;;;;AAqFA,MAAM,gBAAgB,UAAU;AAEhC,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA;AACR,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA;AACZ,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;AACZ,IACA,QAAQ;AAAA,MACN,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,UAAU;AAAA;AACZ,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;AACZ,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX;AACF,EACA,MAAM,OAAO;UACL;AAAA,MACJ,WAAW;AAAA,MACX,OAAO,EAAE;AAAW,MACpB,QAAQ,EAAE,oBAAoB;AAAc,MAC5C,iBAAiB,EAAE,WAAW,YAAY,YAAY;AAAa,MAEnE,MAAM,EAAE;AAAgB,MACxB;AAAA,QACE,OAAqB,gBAAgB,EAAkB;UAErD,UAAU;UACV,kBAAkB;UAClB,aAAa,IAAI,KAAK;UACtB,aAAa,IAAI,KAAK;UAEtB,WAAW,SAAS,MAAM;YACxB,EAAE,WAAW,MAAM;aAClB,UAAU;AAAA,KAClB;UAEK,WAAW,SAAS,MAAM;aACvB,SAAS,UAAU;AAAA,KAC3B;UAEK,cAAc,SAAS,MAAM;YAC3B,EAAE,KAAK,cAAc,MAAM;YAC3B,SAAS,MAAM;aACd,IAAI,QAAQ,aAAa,GAAG;AAAA,KACpC;UAEK,UAAU,IAAI,EAAE;UAChB,WAAW,IAAI,IAAI;;MAGvB,MAAM,CAAC,MAAM,QAAQ,MAAM,MAAM,MAAM,KAAK;AAAA,MAC5C,MAAM;cACE,EAAE,eAAe,MAAM;cACvB,QAAQ;YAIV,YAAY;gBACR,EAAE,MAAM,UAAU;gBAClB,SAAS,WAAW,MAAM,KAAK;gBAC/B,EAAE,SAAS,YAAY;mBACpB,QAAQ,YAAY,KAAK,YAAY;iBACvC,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;kBAC7B,OAAO,OAAO;AAAA,WACrB;AAAA;gBAEK,QAAQ;AAAA;AAClB,MACA,EAAE,WAAW;AAAK;UAGd,UAAU,SAAS,MAAM;YACvB,QAAQ;YACR,EAAE,OAAO,MAAM,UAAU,MAAM;UACjC,OAAO;cACH,YAAY;AAAA;UAEhB,SAAS,QAAW;cAChB,OAAO,GAAG;AAAA;UAEd,UAAU,QAAW;cACjB,QAAQ,GAAG;AAAA;UAEf,WAAW,OAAO;cACd,QAAQ,GAAG,MAAM,OAAO;AAAA;aAEzB;AAAA,KACR;UAEK,eAAe,CAAC,MAAW;yBACZ,EAAE,KAAK,MAAM,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA;UAGvE,oBAAoB,CAAC,GAAQ,SAAqB;;QAEpD;AAAA,UACE,KAAK,MAAM;AAAA,UACX,QAAQ,MAAM;AAAA,UACd,OAAO;AAAA,UACP,MAAM;AAAA,UACN;AAAA;AACF,QACA;AAAA;AACF;UAGI,aAAa,CAAC,EAAE,QAAQ,YAAoD;eACvE,MAAM;YACT,gBAAgB,OAAO;gBACnB,OAAO;gBACP,WAAW,OAAO,SAAS,SAAS,MAAM,aAAa,CAAC,KAAK,MAAM,OAAO,SAAS,SAAS,MAAM,cAAc,CAAC,KAAK;gBACtH,OAAO,gBAAgB;gBACvB,QAAQ,SAAS;gBACjB,SAAS,MAAM,CAAC;gBAChB,OAAO,MAAM,KAAK,WAAW,MAAM;gBACnC,aAAa,MAAM,wBAAwB;cAG7C,aAAa,UAAU,OAAO;uBACrB,QAAQ;AAAA,iBACd;uBACM,QAAQ;AAAA;AACrB;AACF,OACD;UACG,MAAM,UAAU,GAAG;wBACL,OAAO,MAAM,MAAM;AAAA;AACrC;WAOK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;;;;sBA/QCA,YAqEiB,6BArEA,UAAQ;qBACvB;AAwEJ;AALS;AAAA,QAlEG,8BADRC,mBAmEK,MAnELC,WAmEK;AAAA;UAjEH,KAAI;AAAA,WACI,cAAO;AAAA,UACd,OAAK;AAAA,gBAAc,+BAAS,IAAoB,sBAAA,mBAAiB;AAAA,gBAAiB,YAAO,cAAS,EAAO,YAAO;AAAA,gBAAqB,iCAAS,EAAqB,YAAO;AAAA,gBAAoB,mCAAS,EAAuB,YAAO;AAAA,gBAAiB,2CAAsC,eAAU,WAAM;AAAA,gBAAa,2CAAsC,gBAAW,WAAM;AAAA,gBAAa,2CAAsC,gBAAW,WAAM;AAAA,gBAAa,oCAA+B,kBAAa,WAAM;AAAA;UAUnf,OAAO;;UAES,8BAAjBF,YAUY;;YAVgB,OAAKG,kBAAK,8BAAS;AAAA,YAAkB;;6BAC/D,MAOW;AAAA,cAPK,YAAO,6BACrBF,mBAKEG,iCAJmB,MAAM,YAAO,SAAS,MAAM,IAAvC,GAAG,QAAG;oCADhBJ,YAKE;kBAHC,KAAK;AAAA,kBACL,MAAM,YAAO,SAAS,KAAK;AAAA,kBAC3B,OAAKK,eAAE,YAAO,SAAS,KAAK,KAAK;AAAA;wCAGtCL,YAAuD;;gBAAjC,MAAK;AAAA,gBAAO;;;;4CAEpCC,mBAuCWG;YAtCO,gCAAhBH,mBAWWG;cAVTE,mBAAmH;gBAA5G,OAAKH,kBAAK,sCAAiC,aAAM;AAAA,gBAAK,OAAKE,iCAAoB,kBAAa;;cACnGE,YAQE;gBAPA;gBACC,YAAU,EAAK,UAAa;AAAA,gBAC5B,gBAAe,UAAa,aAAQ;AAAA,gBACpC,WAAS;gBACT,UAAU,mBAAc,aAAM;gBAC9B,UAAQ;gBACR,eAAc;;;YAIX,8BADRP,YAaE;;cAXC;AA8BX,oBAAAQ;wBA9B6DA,MAAA,kBAAA,gBAAAA,IAAA,WAAQ;AAAA,uBAA0B;yBAAsB;0BAAuB;8BAAwB;0BAA4B;;;qDAYxLP,mBAWWG;cAVO,YAAO,YAAY,iCACjCJ,YAIW;;gBAJA,OAAO,iBAAY;AAAQ,gBAAK,UAAQ,CAAG;gBAAa,qBAAmB;AAAA;iCACpF,MAEO;AAAA,kBAFPM,mBAEO,UAFD,KAAI,qCACL,gBAAW;;;4DAIpBL,mBAEWG;gDADN,gBAAW;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"TableCell.mjs","sources":["../../../../../src/components/Table/tableUnits/TableCell.vue"],"sourcesContent":["<template>\n <ResizeObserver @resize=\"checkWidth\">\n <td\n v-if=\"showCell\"\n ref=\"cellRef\"\n v-bind=\"tdProps\"\n :class=\"{\n [`${prefixCls}-cell-custom`]: !!(tdProps as any)?.class,\n [`${column.className}`]: !!column.className,\n [`${prefixCls}-cell-ellipsis`]: !!column.ellipsis,\n [`${prefixCls}-cell-break-word`]: !!column.width,\n [`${tablePrefixCls}-column-has-actions`]: hasAction(column),\n [`${tablePrefixCls}-column-has-sorters`]: hasSorters(column),\n [`${tablePrefixCls}-column-has-filters`]: hasFilters(column),\n [`${tablePrefixCls}-column-sort`]: isSortColumn(column)\n }\"\n :style=\"tdStyle\"\n >\n <USkeleton v-if=\"skeleton\" :class=\"`${prefixCls}-skeleton-wrap`\" active>\n <template v-if=\"column.skeleton\">\n <USkeletonItem\n v-for=\"(_, ski) in Array(column.skeleton.length)\"\n :key=\"ski\"\n :type=\"column.skeleton[ski].type\"\n :style=\"column.skeleton[ski].style\"\n />\n </template>\n <USkeletonItem v-else type=\"text\" style=\"width: 50%\" />\n </USkeleton>\n <template v-else>\n <template v-if=\"expandIcon\">\n <span :class=\"`${prefixCls}-indent indent-level-${indent}`\" :style=\"{ paddingLeft: `${indentSize * indent}px` }\" />\n <ExpandIcon\n need-indent-spaced\n :expandable=\"!!(data as any).children\"\n :need-loading=\"(data as any).children === true\"\n :row-key=\"rowKey\"\n :expanded=\"isRowExpanded(rowKey, true)\"\n @expand=\"handleExpand\"\n @async-expand=\"handleAsyncExpand\"\n />\n </template>\n <Render\n v-if=\"isRender\"\n :render=\"\n () => {\n return renderFn?.({\n row: data,\n index,\n rowKey,\n pagination,\n column\n });\n }\n \"\n />\n <template v-else>\n <template v-if=\"column.ellipsis && displayCell\">\n <UTooltip :title=\"displayCell.toString()\" :disabled=\"!isOverflow\" :mouse-enter-delay=\"0.5\">\n <span ref=\"ellipsisSpanRef\">\n {{ displayCell }}\n </span>\n </UTooltip>\n </template>\n <template v-else>\n {{ displayCell || cellEmptyText }}\n </template>\n </template>\n </template>\n </td>\n </ResizeObserver>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, watch, ref, nextTick } from 'vue';\nimport type { PropType, CSSProperties } from 'vue';\nimport { get } from 'lodash-unified';\nimport UTooltip from '@uxd-ui/components/Tooltip';\nimport USkeleton from '@uxd-ui/components/Skeleton';\nimport Render from '../../base/Render';\nimport ExpandIcon from './ExpandIcon.vue';\nimport type { InnerColumn, TableContext } from '../Table.type';\nimport { getStyle } from '../../../utils';\nimport ResizeObserver from '../../base/ResizeObserver';\n\nconst USkeletonItem = USkeleton.Item;\n\nexport default defineComponent({\n name: 'TableCell',\n components: {\n Render,\n ExpandIcon,\n UTooltip,\n USkeleton,\n USkeletonItem,\n ResizeObserver\n },\n props: {\n prefixCls: {\n type: String\n },\n column: {\n type: Object as PropType<InnerColumn>,\n required: true\n },\n data: {\n type: Object as PropType<Record<string, any>>,\n required: true\n },\n rowKey: {\n type: [String, Number],\n required: true\n },\n index: {\n type: Number,\n required: true\n },\n indent: {\n type: Number,\n default: 20\n },\n expandIcon: {\n type: Boolean,\n default: false\n },\n skeleton: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const {\n prefixCls: tablePrefixCls,\n props: { indentSize, cellEmptyText },\n expand: { handleExpandChange, isRowExpanded },\n filterAndSorter: { hasAction, hasSorters, hasFilters, isSortColumn },\n // size: { sizesMap },\n size: { syncColumnWidth },\n pagination\n } = inject<TableContext>('tableContext', {} as TableContext);\n\n const cellRef = ref();\n const ellipsisSpanRef = ref();\n const isOverflow = ref(false);\n const isMinWidth = ref(false);\n\n const renderFn = computed(() => {\n const { render } = props.column;\n return render || null;\n });\n\n const isRender = computed(() => {\n return renderFn.value !== null;\n });\n\n const displayCell = computed(() => {\n const { key, dataIndex } = props.column;\n const record = props.data;\n return get(record, dataIndex || key);\n });\n\n const tdProps = ref({});\n const showCell = ref(true);\n\n watch(\n () => [props.column, props.data, props.index],\n () => {\n const { customCell } = props.column;\n const attrs = {} as Record<string, any>;\n // if (ellipsis && !render) {\n // attrs.title = displayCell.value;\n // }\n if (customCell) {\n const { data, index } = props;\n const _props = customCell(data, index);\n const { colSpan, rowSpan } = _props;\n showCell.value = colSpan !== 0 && rowSpan !== 0;\n Object.keys(_props).forEach((key) => {\n attrs[key] = _props[key];\n });\n }\n tdProps.value = attrs;\n },\n { immediate: true }\n );\n\n const tdStyle = computed(() => {\n const style = {} as CSSProperties;\n const { align, left, right } = props.column;\n if (align) {\n style.textAlign = align;\n }\n if (left !== undefined) {\n style.left = `${left}px`;\n }\n if (right !== undefined) {\n style.right = `${right}px`;\n }\n if (isMinWidth.value) {\n style.width = `${props.column.minWidth}px`;\n }\n return style;\n });\n\n const handleExpand = (e: any) => {\n handleExpandChange({ row: props.data, rowKey: props.rowKey, tree: true }, e);\n };\n\n const handleAsyncExpand = (e: any, done: () => void) => {\n handleExpandChange(\n {\n row: props.data,\n rowKey: props.rowKey,\n async: true,\n tree: true,\n done\n },\n e\n );\n };\n\n const checkWidth = ({ target, width }: { target: HTMLElement; width: number }) => {\n nextTick(() => {\n if (ellipsisSpanRef.value) {\n const cell = target;\n const padding = (Number.parseInt(getStyle(cell, 'paddingLeft')) || 0) + (Number.parseInt(getStyle(cell, 'paddingRight')) || 0);\n const span = ellipsisSpanRef.value;\n const range = document.createRange();\n range.setStart(span, 0);\n range.setEnd(span, span.childNodes.length);\n const rangeWidth = range.getBoundingClientRect().width;\n\n // const cellWidth = Number(getStyle(cell, 'width'));\n if (rangeWidth + padding > width) {\n isOverflow.value = true;\n } else {\n isOverflow.value = false;\n }\n }\n });\n if (props.index === 0) {\n syncColumnWidth(width, props.column);\n }\n };\n\n // onMounted(() => {\n // checkOverflow(cellRef.value);\n // });\n\n return {\n tablePrefixCls,\n isRender,\n renderFn,\n displayCell,\n tdProps,\n tdStyle,\n indentSize,\n handleExpand,\n handleAsyncExpand,\n isRowExpanded,\n showCell,\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n pagination,\n cellRef,\n ellipsisSpanRef,\n isOverflow,\n checkWidth,\n cellEmptyText\n };\n }\n});\n</script>\n"],"names":["_createBlock","_createElementBlock","_mergeProps","_normalizeClass","_Fragment","_normalizeStyle","_createElementVNode","_createVNode","_a"],"mappings":";;;;;;;;;;;AAqFA,MAAM,gBAAgB,UAAU;AAEhC,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA;AACR,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA;AACZ,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;AACZ,IACA,QAAQ;AAAA,MACN,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,UAAU;AAAA;AACZ,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;AACZ,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX;AACF,EACA,MAAM,OAAO;UACL;AAAA,MACJ,WAAW;AAAA,MACX,OAAO,EAAE,YAAY;AAAc,MACnC,QAAQ,EAAE,oBAAoB;AAAc,MAC5C,iBAAiB,EAAE,WAAW,YAAY,YAAY;AAAa,MAEnE,MAAM,EAAE;AAAgB,MACxB;AAAA,QACE,OAAqB,gBAAgB,EAAkB;UAErD,UAAU;UACV,kBAAkB;UAClB,aAAa,IAAI,KAAK;UACtB,aAAa,IAAI,KAAK;UAEtB,WAAW,SAAS,MAAM;YACxB,EAAE,WAAW,MAAM;aAClB,UAAU;AAAA,KAClB;UAEK,WAAW,SAAS,MAAM;aACvB,SAAS,UAAU;AAAA,KAC3B;UAEK,cAAc,SAAS,MAAM;YAC3B,EAAE,KAAK,cAAc,MAAM;YAC3B,SAAS,MAAM;aACd,IAAI,QAAQ,aAAa,GAAG;AAAA,KACpC;UAEK,UAAU,IAAI,EAAE;UAChB,WAAW,IAAI,IAAI;;MAGvB,MAAM,CAAC,MAAM,QAAQ,MAAM,MAAM,MAAM,KAAK;AAAA,MAC5C,MAAM;cACE,EAAE,eAAe,MAAM;cACvB,QAAQ;YAIV,YAAY;gBACR,EAAE,MAAM,UAAU;gBAClB,SAAS,WAAW,MAAM,KAAK;gBAC/B,EAAE,SAAS,YAAY;mBACpB,QAAQ,YAAY,KAAK,YAAY;iBACvC,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAQ;kBAC7B,OAAO,OAAO;AAAA,WACrB;AAAA;gBAEK,QAAQ;AAAA;AAClB,MACA,EAAE,WAAW;AAAK;UAGd,UAAU,SAAS,MAAM;YACvB,QAAQ;YACR,EAAE,OAAO,MAAM,UAAU,MAAM;UACjC,OAAO;cACH,YAAY;AAAA;UAEhB,SAAS,QAAW;cAChB,OAAO,GAAG;AAAA;UAEd,UAAU,QAAW;cACjB,QAAQ,GAAG;AAAA;UAEf,WAAW,OAAO;cACd,QAAQ,GAAG,MAAM,OAAO;AAAA;aAEzB;AAAA,KACR;UAEK,eAAe,CAAC,MAAW;yBACZ,EAAE,KAAK,MAAM,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA;UAGvE,oBAAoB,CAAC,GAAQ,SAAqB;;QAEpD;AAAA,UACE,KAAK,MAAM;AAAA,UACX,QAAQ,MAAM;AAAA,UACd,OAAO;AAAA,UACP,MAAM;AAAA,UACN;AAAA;AACF,QACA;AAAA;AACF;UAGI,aAAa,CAAC,EAAE,QAAQ,YAAoD;eACvE,MAAM;YACT,gBAAgB,OAAO;gBACnB,OAAO;gBACP,WAAW,OAAO,SAAS,SAAS,MAAM,aAAa,CAAC,KAAK,MAAM,OAAO,SAAS,SAAS,MAAM,cAAc,CAAC,KAAK;gBACtH,OAAO,gBAAgB;gBACvB,QAAQ,SAAS;gBACjB,SAAS,MAAM,CAAC;gBAChB,OAAO,MAAM,KAAK,WAAW,MAAM;gBACnC,aAAa,MAAM,wBAAwB;cAG7C,aAAa,UAAU,OAAO;uBACrB,QAAQ;AAAA,iBACd;uBACM,QAAQ;AAAA;AACrB;AACF,OACD;UACG,MAAM,UAAU,GAAG;wBACL,OAAO,MAAM,MAAM;AAAA;AACrC;WAOK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;;;;sBAhRCA,YAqEiB,6BArEA,UAAQ;qBACvB;AAwEJ;AALS;AAAA,QAlEG,8BADRC,mBAmEK,MAnELC,WAmEK;AAAA;UAjEH,KAAI;AAAA,WACI,cAAO;AAAA,UACd,OAAK;AAAA,gBAAc,+BAAS,IAAoB,sBAAA,mBAAiB;AAAA,gBAAiB,YAAO,cAAS,EAAO,YAAO;AAAA,gBAAqB,iCAAS,EAAqB,YAAO;AAAA,gBAAoB,mCAAS,EAAuB,YAAO;AAAA,gBAAiB,2CAAsC,eAAU,WAAM;AAAA,gBAAa,2CAAsC,gBAAW,WAAM;AAAA,gBAAa,2CAAsC,gBAAW,WAAM;AAAA,gBAAa,oCAA+B,kBAAa,WAAM;AAAA;UAUnf,OAAO;;UAES,8BAAjBF,YAUY;;YAVgB,OAAKG,kBAAK,8BAAS;AAAA,YAAkB;;6BAC/D,MAOW;AAAA,cAPK,YAAO,6BACrBF,mBAKEG,iCAJmB,MAAM,YAAO,SAAS,MAAM,IAAvC,GAAG,QAAG;oCADhBJ,YAKE;kBAHC,KAAK;AAAA,kBACL,MAAM,YAAO,SAAS,KAAK;AAAA,kBAC3B,OAAKK,eAAE,YAAO,SAAS,KAAK,KAAK;AAAA;wCAGtCL,YAAuD;;gBAAjC,MAAK;AAAA,gBAAO;;;;4CAEpCC,mBAuCWG;YAtCO,gCAAhBH,mBAWWG;cAVTE,mBAAmH;gBAA5G,OAAKH,kBAAK,sCAAiC,aAAM;AAAA,gBAAK,OAAKE,iCAAoB,kBAAa;;cACnGE,YAQE;gBAPA;gBACC,YAAU,EAAK,UAAa;AAAA,gBAC5B,gBAAe,UAAa,aAAQ;AAAA,gBACpC,WAAS;gBACT,UAAU,mBAAc,aAAM;gBAC9B,UAAQ;gBACR,eAAc;;;YAIX,8BADRP,YAaE;;cAXC;AA8BX,oBAAAQ;wBA9B6DA,MAAA,kBAAA,gBAAAA,IAAA,WAAQ;AAAA,uBAA0B;yBAAsB;0BAAuB;8BAAwB;0BAA4B;;;qDAYxLP,mBAWWG;cAVO,YAAO,YAAY,iCACjCJ,YAIW;;gBAJA,OAAO,iBAAY;AAAQ,gBAAK,UAAQ,CAAG;gBAAa,qBAAmB;AAAA;iCACpF,MAEO;AAAA,kBAFPM,mBAEO,UAFD,KAAI,qCACL,gBAAW;;;4DAIpBL,mBAEWG;gDADN,oBAAe,kBAAa;;;;;;;;;;;;;;"}
@@ -56,6 +56,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
56
56
  target: HTMLElement;
57
57
  width: number;
58
58
  }) => void;
59
+ cellEmptyText: import("vue").Ref<string, string>;
59
60
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
60
61
  prefixCls: {
61
62
  type: StringConstructor;
@@ -155,6 +155,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
155
155
  target: HTMLElement;
156
156
  width: number;
157
157
  }) => void;
158
+ cellEmptyText: import("vue").Ref<string, string>;
158
159
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
159
160
  prefixCls: {
160
161
  type: StringConstructor;
@@ -4410,6 +4410,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4410
4410
  target: HTMLElement;
4411
4411
  width: number;
4412
4412
  }) => void;
4413
+ cellEmptyText: import("vue").Ref<string, string>;
4413
4414
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
4414
4415
  prefixCls: {
4415
4416
  type: StringConstructor;
@@ -5712,6 +5713,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
5712
5713
  target: HTMLElement;
5713
5714
  width: number;
5714
5715
  }) => void;
5716
+ cellEmptyText: import("vue").Ref<string, string>;
5715
5717
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
5716
5718
  prefixCls: {
5717
5719
  type: StringConstructor;
@@ -4429,6 +4429,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4429
4429
  target: HTMLElement;
4430
4430
  width: number;
4431
4431
  }) => void;
4432
+ cellEmptyText: import("vue").Ref<string, string>;
4432
4433
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
4433
4434
  prefixCls: {
4434
4435
  type: StringConstructor;
@@ -5731,6 +5732,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
5731
5732
  target: HTMLElement;
5732
5733
  width: number;
5733
5734
  }) => void;
5735
+ cellEmptyText: import("vue").Ref<string, string>;
5734
5736
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
5735
5737
  prefixCls: {
5736
5738
  type: StringConstructor;
@@ -4426,6 +4426,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4426
4426
  target: HTMLElement;
4427
4427
  width: number;
4428
4428
  }) => void;
4429
+ cellEmptyText: import("vue").Ref<string, string>;
4429
4430
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
4430
4431
  prefixCls: {
4431
4432
  type: StringConstructor;
@@ -5728,6 +5729,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
5728
5729
  target: HTMLElement;
5729
5730
  width: number;
5730
5731
  }) => void;
5732
+ cellEmptyText: import("vue").Ref<string, string>;
5731
5733
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
5732
5734
  prefixCls: {
5733
5735
  type: StringConstructor;
@@ -172,7 +172,20 @@ const _sfc_main = vue.defineComponent({
172
172
  const handleColumnResize = (columnWidth, changeWidth, column, event) => {
173
173
  emit("column-resize", columnWidth, changeWidth, column, event);
174
174
  };
175
- const { showHeader, maxHeight, expandIcon, rowClassName, indentSize, showSummary, disabledHover, expandIndent, headerSticky, loading, width } = vue.toRefs(props);
175
+ const {
176
+ showHeader,
177
+ maxHeight,
178
+ expandIcon,
179
+ rowClassName,
180
+ indentSize,
181
+ showSummary,
182
+ disabledHover,
183
+ expandIndent,
184
+ headerSticky,
185
+ loading,
186
+ width,
187
+ cellEmptyText
188
+ } = vue.toRefs(props);
176
189
  vue.provide("tableContext", {
177
190
  prefixCls,
178
191
  locale,
@@ -187,6 +200,7 @@ const _sfc_main = vue.defineComponent({
187
200
  rowClassName,
188
201
  indentSize,
189
202
  emptyText,
203
+ cellEmptyText,
190
204
  showSummary,
191
205
  disabledHover,
192
206
  expandIndent,
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../../src/components/Table/Table.vue"],"sourcesContent":["<template>\n <ResizeObserver @resize=\"debouncedHandleResize\">\n <div :class=\"[`${prefixCls}-wrapper`]\">\n <div\n v-if=\"showPagination && pagination && (pagination.position === 'top' || pagination.position === 'both')\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-top`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n <div\n :ref=\"saveRef('table')\"\n :class=\"[\n prefixCls,\n `${prefixCls}-${size}`,\n {\n [`${prefixCls}-${variant}`]: !isBorder,\n [`${prefixCls}-border`]: !!isBorder,\n [`${prefixCls}-radius`]: variant !== 'ghost' && !border && radius,\n [`${prefixCls}-empty`]: !data.length,\n [`${prefixCls}-without-column-header`]: !showHeader,\n [`${prefixCls}-fixed-header`]: !!maxHeight,\n [`${prefixCls}-scroll-position-left`]: scrollPosition === 'left' || scrollPosition === 'both',\n [`${prefixCls}-scroll-position-right`]: scrollPosition === 'right' || scrollPosition === 'both',\n [`${prefixCls}-dragging`]: showResizeLine,\n [`${prefixCls}-stripe`]: stripe\n }\n ]\"\n >\n <div v-if=\"$slots.title\" :class=\"`${prefixCls}-title`\">\n <slot name=\"title\" />\n </div>\n <div :class=\"`${prefixCls}-content`\">\n <TableBox :columns=\"updatedColumns\" @head-scroll=\"handleBodyScrollX\" @body-scroll=\"handleBodyScroll\" />\n <div v-if=\"!currentDatas.length\" :class=\"`${prefixCls}-placeholder`\">\n <slot name=\"empty\">\n {{ emptyText }}\n </slot>\n </div>\n </div>\n <div v-show=\"showResizeLine\" :ref=\"saveRef('resizeLine')\" :class=\"`${prefixCls}-resize-line`\" />\n <Spin v-if=\"loadingType === 'spinner'\" fix :loading=\"loading\" />\n </div>\n <div v-if=\"$slots.footer\" :class=\"`${prefixCls}-footer`\">\n <slot name=\"footer\" />\n </div>\n <div\n v-if=\"showPagination && ((pagination && pagination.position !== 'top') || !pagination)\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-bottom`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n </div>\n </ResizeObserver>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, provide, reactive, toRefs, ref, onMounted, nextTick, onBeforeUnmount, onUpdated, watch } from 'vue';\nimport Spin from '@uxd-ui/components/Spin';\nimport Pagination from '@uxd-ui/components/Pagination';\nimport { debounce } from '../../utils/tools';\n// import Container from '../base/Container';\nimport TableBox from './TableBox.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport ResizeObserver from '../base/ResizeObserver';\nimport useUpdateColumns from './hooks/useUpdateColumns';\nimport useUpdateDatas from './hooks/useUpdateDatas';\nimport useTableResize from './hooks/useTableResize';\nimport useExpander from './hooks/useExpander';\nimport useSelection from './hooks/useSelection';\nimport useDraggable from './hooks/useDraggable';\nimport useFilterSortPage from './hooks/useFilterSortPage';\nimport { tableProps, tableEmits, type SaveRef, type TableRefs, type TableColumn, type InnerColumn } from './Table.type';\n\nexport default defineComponent({\n name: 'UTable',\n components: {\n TableBox,\n Spin,\n Pagination,\n ResizeObserver\n },\n props: tableProps,\n emits: tableEmits,\n setup(props, { slots, emit }) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('table');\n const showResizeLine = ref(false);\n const tableRefs = reactive({} as TableRefs);\n const saveRef: SaveRef = (key: string) => {\n return (el: any) => {\n tableRefs[key] = el;\n };\n };\n\n const locale = computed(() => {\n return { ...globalConfig.locale.table, ...props.locale };\n });\n\n const isBorder = computed(() => {\n const b = props.variant === 'border' || props.border;\n return b;\n });\n\n // ============ datas ===============\n const { updatedDatas } = useUpdateDatas(props);\n\n // ============= sort & fitler =============\n const {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n isFiltered,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n handlePageChange,\n handlePageSizeChange\n } = useFilterSortPage(props, updatedDatas, emit);\n\n // ================ draggable ====================\n const { setRowRefs, draggableColumn } = useDraggable(props, tableRefs);\n\n // ================ expander ====================\n const {\n expandedRowKeys,\n showChildrenRowKeys,\n handleExpandChange,\n isRowExpanded,\n expandedRowRender,\n isTreeTable,\n expandColumn,\n expandIconColumnIndex\n } = useExpander(props, slots, currentDatas, emit);\n\n const { selectionColumn } = useSelection(props, updatedDatas, currentDatas, prefixCls, locale);\n\n // ============ columns ===============\n const { updatedColumns, isColumnFixed, isLeftFixed, isRightFixed, leftColumns, rightColumns } = useUpdateColumns(props, slots, {\n draggableColumn,\n expandColumn,\n selectionColumn\n });\n\n // ============ resize ==============\n // #region\n const {\n // sizesMap,\n handleResize,\n isScrollX,\n // fixedHeadRowsHeight,\n // fixedBodyRowsHeight,\n scrollPosition,\n // syncFixedTableRowHeight,\n setScrollPositionClass,\n resetScrollX,\n tableWidth,\n resizeColumns,\n clearResizeTimer,\n setResizeWidth,\n syncColumnWidth,\n columnWidths\n } = useTableResize(updatedColumns, tableRefs, prefixCls, isColumnFixed, props);\n\n const debouncedHandleResize = debounce(handleResize, 150);\n\n onMounted(() => {\n nextTick(() => {\n setTimeout(() => {\n handleResize();\n resetScrollX();\n }, 0);\n });\n });\n\n onUpdated(() => {\n nextTick(() => {\n handleResize();\n });\n });\n\n onBeforeUnmount(() => {\n if (debouncedHandleResize) {\n debouncedHandleResize.cancel();\n }\n clearResizeTimer();\n });\n // #endregion\n\n // ============ scroll ===============\n // #region\n const scrollable = computed(() => {\n return props.maxHeight || isScrollX.value || isColumnFixed.value;\n });\n\n let lastScrollLeft = 0;\n const handleBodyScrollX = (e: any) => {\n if (e.currentTarget !== e.target) {\n return;\n }\n\n const { target } = e;\n const { bodyTable, headTable } = tableRefs;\n\n if (target.scrollLeft !== lastScrollLeft && isScrollX.value) {\n if (target === (bodyTable as any).wrapRef && headTable) {\n (headTable as any).setScrollLeft(target.scrollLeft);\n } else if (target === (headTable as any)?.wrapRef && bodyTable) {\n (bodyTable as any).setScrollLeft(target.scrollLeft);\n }\n setScrollPositionClass();\n }\n lastScrollLeft = target.scrollLeft;\n };\n\n const handleBodyScroll = (e: any) => {\n handleBodyScrollX(e);\n };\n\n watch(\n () => props.data,\n (val) => {\n if (val.length === 0 && isScrollX.value) {\n nextTick(() => {\n resetScrollX();\n });\n }\n }\n );\n // #endregion\n // ============ empty ================\n const emptyText = computed(() => {\n return props.data.length ? locale.value.notFoundText : locale.value.noDataText;\n });\n\n // ===========row hover & event ================\n // #region\n const currentHoverKey = ref(null);\n const onRowMouseEnter = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseenter', data, index, e);\n };\n const onRowMouseLeave = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseleave', data, index, e);\n };\n const onRowClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-click', data, index, e);\n };\n const onRowDoubleClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-doubleclick', data, index, e);\n };\n const onRowContextMenu = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-contextmenu', data, index, e);\n };\n // #endregion\n\n // ============= other event =================\n // #region\n const onHeaderCellClick = (column: TableColumn, e: Event) => {\n emit('header-click', column, e);\n };\n\n const handleColumnResize = (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) => {\n emit('column-resize', columnWidth, changeWidth, column, event);\n };\n // #endregion\n\n // ============= provide =================\n\n const { showHeader, maxHeight, expandIcon, rowClassName, indentSize, showSummary, disabledHover, expandIndent, headerSticky, loading, width } =\n toRefs(props);\n\n provide('tableContext', {\n prefixCls,\n locale,\n data: currentDatas,\n saveRef,\n tableRefs,\n showResizeLine,\n props: {\n showHeader,\n maxHeight,\n expandIcon,\n rowClassName,\n indentSize,\n emptyText,\n showSummary,\n disabledHover,\n expandIndent,\n headerSticky,\n loading,\n width\n },\n slots,\n expand: {\n expandedRowRender,\n expandedRowKeys,\n showChildrenRowKeys,\n isRowExpanded,\n expandIconColumnIndex,\n handleExpandChange,\n isTreeTable\n },\n size: {\n tableWidth,\n // sizesMap,\n resizeColumns,\n isScrollX,\n setResizeWidth,\n handleColumnResize,\n debouncedHandleResize,\n syncColumnWidth,\n columnWidths\n },\n fixed: {\n isColumnFixed,\n currentHoverKey\n },\n draggable: {\n setRowRefs\n },\n rowEvents: {\n onRowMouseEnter,\n onRowMouseLeave,\n onRowClick,\n onRowDoubleClick,\n onRowContextMenu\n },\n headerEvents: {\n onHeaderCellClick\n },\n filterAndSorter: {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n isFiltered,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter\n },\n pagination: paginationOptions\n });\n return {\n prefixCls,\n saveRef,\n showResizeLine,\n updatedColumns,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n isBorder,\n isLeftFixed,\n leftColumns,\n isRightFixed,\n rightColumns,\n scrollable,\n scrollPosition,\n handleBodyScroll,\n handleBodyScrollX,\n emptyText,\n debouncedHandleResize,\n handlePageChange,\n handlePageSizeChange\n };\n }\n});\n</script>\n"],"names":["defineComponent","TableBox","Spin","Pagination","ResizeObserver","tableProps","tableEmits","useGlobalConfig","ref","reactive","computed","useUpdateDatas","useFilterSortPage","useDraggable","useExpander","useSelection","useUpdateColumns","useTableResize","debounce","toRefs","_createBlock","_createElementVNode","_normalizeClass","_createElementBlock","_createVNode","_mergeProps","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sources":["../../../../src/components/Table/Table.vue"],"sourcesContent":["<template>\n <ResizeObserver @resize=\"debouncedHandleResize\">\n <div :class=\"[`${prefixCls}-wrapper`]\">\n <div\n v-if=\"showPagination && pagination && (pagination.position === 'top' || pagination.position === 'both')\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-top`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n <div\n :ref=\"saveRef('table')\"\n :class=\"[\n prefixCls,\n `${prefixCls}-${size}`,\n {\n [`${prefixCls}-${variant}`]: !isBorder,\n [`${prefixCls}-border`]: !!isBorder,\n [`${prefixCls}-radius`]: variant !== 'ghost' && !border && radius,\n [`${prefixCls}-empty`]: !data.length,\n [`${prefixCls}-without-column-header`]: !showHeader,\n [`${prefixCls}-fixed-header`]: !!maxHeight,\n [`${prefixCls}-scroll-position-left`]: scrollPosition === 'left' || scrollPosition === 'both',\n [`${prefixCls}-scroll-position-right`]: scrollPosition === 'right' || scrollPosition === 'both',\n [`${prefixCls}-dragging`]: showResizeLine,\n [`${prefixCls}-stripe`]: stripe\n }\n ]\"\n >\n <div v-if=\"$slots.title\" :class=\"`${prefixCls}-title`\">\n <slot name=\"title\" />\n </div>\n <div :class=\"`${prefixCls}-content`\">\n <TableBox :columns=\"updatedColumns\" @head-scroll=\"handleBodyScrollX\" @body-scroll=\"handleBodyScroll\" />\n <div v-if=\"!currentDatas.length\" :class=\"`${prefixCls}-placeholder`\">\n <slot name=\"empty\">\n {{ emptyText }}\n </slot>\n </div>\n </div>\n <div v-show=\"showResizeLine\" :ref=\"saveRef('resizeLine')\" :class=\"`${prefixCls}-resize-line`\" />\n <Spin v-if=\"loadingType === 'spinner'\" fix :loading=\"loading\" />\n </div>\n <div v-if=\"$slots.footer\" :class=\"`${prefixCls}-footer`\">\n <slot name=\"footer\" />\n </div>\n <div\n v-if=\"showPagination && ((pagination && pagination.position !== 'top') || !pagination)\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-bottom`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n </div>\n </ResizeObserver>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, provide, reactive, toRefs, ref, onMounted, nextTick, onBeforeUnmount, onUpdated, watch } from 'vue';\nimport Spin from '@uxd-ui/components/Spin';\nimport Pagination from '@uxd-ui/components/Pagination';\nimport { debounce } from '../../utils/tools';\n// import Container from '../base/Container';\nimport TableBox from './TableBox.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport ResizeObserver from '../base/ResizeObserver';\nimport useUpdateColumns from './hooks/useUpdateColumns';\nimport useUpdateDatas from './hooks/useUpdateDatas';\nimport useTableResize from './hooks/useTableResize';\nimport useExpander from './hooks/useExpander';\nimport useSelection from './hooks/useSelection';\nimport useDraggable from './hooks/useDraggable';\nimport useFilterSortPage from './hooks/useFilterSortPage';\nimport { tableProps, tableEmits, type SaveRef, type TableRefs, type TableColumn, type InnerColumn } from './Table.type';\n\nexport default defineComponent({\n name: 'UTable',\n components: {\n TableBox,\n Spin,\n Pagination,\n ResizeObserver\n },\n props: tableProps,\n emits: tableEmits,\n setup(props, { slots, emit }) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('table');\n const showResizeLine = ref(false);\n const tableRefs = reactive({} as TableRefs);\n const saveRef: SaveRef = (key: string) => {\n return (el: any) => {\n tableRefs[key] = el;\n };\n };\n\n const locale = computed(() => {\n return { ...globalConfig.locale.table, ...props.locale };\n });\n\n const isBorder = computed(() => {\n const b = props.variant === 'border' || props.border;\n return b;\n });\n\n // ============ datas ===============\n const { updatedDatas } = useUpdateDatas(props);\n\n // ============= sort & fitler =============\n const {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n isFiltered,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n handlePageChange,\n handlePageSizeChange\n } = useFilterSortPage(props, updatedDatas, emit);\n\n // ================ draggable ====================\n const { setRowRefs, draggableColumn } = useDraggable(props, tableRefs);\n\n // ================ expander ====================\n const {\n expandedRowKeys,\n showChildrenRowKeys,\n handleExpandChange,\n isRowExpanded,\n expandedRowRender,\n isTreeTable,\n expandColumn,\n expandIconColumnIndex\n } = useExpander(props, slots, currentDatas, emit);\n\n const { selectionColumn } = useSelection(props, updatedDatas, currentDatas, prefixCls, locale);\n\n // ============ columns ===============\n const { updatedColumns, isColumnFixed, isLeftFixed, isRightFixed, leftColumns, rightColumns } = useUpdateColumns(props, slots, {\n draggableColumn,\n expandColumn,\n selectionColumn\n });\n\n // ============ resize ==============\n // #region\n const {\n // sizesMap,\n handleResize,\n isScrollX,\n // fixedHeadRowsHeight,\n // fixedBodyRowsHeight,\n scrollPosition,\n // syncFixedTableRowHeight,\n setScrollPositionClass,\n resetScrollX,\n tableWidth,\n resizeColumns,\n clearResizeTimer,\n setResizeWidth,\n syncColumnWidth,\n columnWidths\n } = useTableResize(updatedColumns, tableRefs, prefixCls, isColumnFixed, props);\n\n const debouncedHandleResize = debounce(handleResize, 150);\n\n onMounted(() => {\n nextTick(() => {\n setTimeout(() => {\n handleResize();\n resetScrollX();\n }, 0);\n });\n });\n\n onUpdated(() => {\n nextTick(() => {\n handleResize();\n });\n });\n\n onBeforeUnmount(() => {\n if (debouncedHandleResize) {\n debouncedHandleResize.cancel();\n }\n clearResizeTimer();\n });\n // #endregion\n\n // ============ scroll ===============\n // #region\n const scrollable = computed(() => {\n return props.maxHeight || isScrollX.value || isColumnFixed.value;\n });\n\n let lastScrollLeft = 0;\n const handleBodyScrollX = (e: any) => {\n if (e.currentTarget !== e.target) {\n return;\n }\n\n const { target } = e;\n const { bodyTable, headTable } = tableRefs;\n\n if (target.scrollLeft !== lastScrollLeft && isScrollX.value) {\n if (target === (bodyTable as any).wrapRef && headTable) {\n (headTable as any).setScrollLeft(target.scrollLeft);\n } else if (target === (headTable as any)?.wrapRef && bodyTable) {\n (bodyTable as any).setScrollLeft(target.scrollLeft);\n }\n setScrollPositionClass();\n }\n lastScrollLeft = target.scrollLeft;\n };\n\n const handleBodyScroll = (e: any) => {\n handleBodyScrollX(e);\n };\n\n watch(\n () => props.data,\n (val) => {\n if (val.length === 0 && isScrollX.value) {\n nextTick(() => {\n resetScrollX();\n });\n }\n }\n );\n // #endregion\n // ============ empty ================\n const emptyText = computed(() => {\n return props.data.length ? locale.value.notFoundText : locale.value.noDataText;\n });\n\n // ===========row hover & event ================\n // #region\n const currentHoverKey = ref(null);\n const onRowMouseEnter = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseenter', data, index, e);\n };\n const onRowMouseLeave = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseleave', data, index, e);\n };\n const onRowClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-click', data, index, e);\n };\n const onRowDoubleClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-doubleclick', data, index, e);\n };\n const onRowContextMenu = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-contextmenu', data, index, e);\n };\n // #endregion\n\n // ============= other event =================\n // #region\n const onHeaderCellClick = (column: TableColumn, e: Event) => {\n emit('header-click', column, e);\n };\n\n const handleColumnResize = (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) => {\n emit('column-resize', columnWidth, changeWidth, column, event);\n };\n // #endregion\n\n // ============= provide =================\n\n const {\n showHeader,\n maxHeight,\n expandIcon,\n rowClassName,\n indentSize,\n showSummary,\n disabledHover,\n expandIndent,\n headerSticky,\n loading,\n width,\n cellEmptyText\n } = toRefs(props);\n\n provide('tableContext', {\n prefixCls,\n locale,\n data: currentDatas,\n saveRef,\n tableRefs,\n showResizeLine,\n props: {\n showHeader,\n maxHeight,\n expandIcon,\n rowClassName,\n indentSize,\n emptyText,\n cellEmptyText,\n showSummary,\n disabledHover,\n expandIndent,\n headerSticky,\n loading,\n width\n },\n slots,\n expand: {\n expandedRowRender,\n expandedRowKeys,\n showChildrenRowKeys,\n isRowExpanded,\n expandIconColumnIndex,\n handleExpandChange,\n isTreeTable\n },\n size: {\n tableWidth,\n // sizesMap,\n resizeColumns,\n isScrollX,\n setResizeWidth,\n handleColumnResize,\n debouncedHandleResize,\n syncColumnWidth,\n columnWidths\n },\n fixed: {\n isColumnFixed,\n currentHoverKey\n },\n draggable: {\n setRowRefs\n },\n rowEvents: {\n onRowMouseEnter,\n onRowMouseLeave,\n onRowClick,\n onRowDoubleClick,\n onRowContextMenu\n },\n headerEvents: {\n onHeaderCellClick\n },\n filterAndSorter: {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n isFiltered,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter\n },\n pagination: paginationOptions\n });\n return {\n prefixCls,\n saveRef,\n showResizeLine,\n updatedColumns,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n isBorder,\n isLeftFixed,\n leftColumns,\n isRightFixed,\n rightColumns,\n scrollable,\n scrollPosition,\n handleBodyScroll,\n handleBodyScrollX,\n emptyText,\n debouncedHandleResize,\n handlePageChange,\n handlePageSizeChange\n };\n }\n});\n</script>\n"],"names":["defineComponent","TableBox","Spin","Pagination","ResizeObserver","tableProps","tableEmits","useGlobalConfig","ref","reactive","computed","useUpdateDatas","useFilterSortPage","useDraggable","useExpander","useSelection","useUpdateColumns","useTableResize","debounce","toRefs","_createBlock","_createElementVNode","_normalizeClass","_createElementBlock","_createVNode","_mergeProps","_renderSlot"],"mappings":"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"}
@@ -250,6 +250,10 @@ export declare const tableProps: {
250
250
  type: NumberConstructor;
251
251
  default: number;
252
252
  };
253
+ cellEmptyText: {
254
+ type: StringConstructor;
255
+ default: string;
256
+ };
253
257
  };
254
258
  export type TableProps = ExtractPropTypes<typeof tableProps>;
255
259
  export type SaveRef = (key: string) => (el: any) => void;
@@ -275,6 +279,7 @@ export interface TableContext {
275
279
  rowClassName: Ref<RowClassName>;
276
280
  indentSize: Ref<number>;
277
281
  emptyText: ComputedRef<string>;
282
+ cellEmptyText: Ref<string>;
278
283
  showSummary: Ref<boolean>;
279
284
  disabledHover: Ref<boolean>;
280
285
  expandIndent: Ref<boolean>;
@@ -123,6 +123,10 @@ const tableProps = {
123
123
  skeletonRows: {
124
124
  type: Number,
125
125
  default: 3
126
+ },
127
+ cellEmptyText: {
128
+ type: String,
129
+ default: ""
126
130
  }
127
131
  };
128
132
  const rowEmitFn = (data, index, e) => typeof data === "object" && typeof index === "number" && e instanceof Event;