@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.
- package/README.md +190 -1
- package/es/components/Table/BaseTable.vue.d.ts +2 -0
- package/es/components/Table/BodyTable.vue.d.ts +2 -0
- package/es/components/Table/HeadTable.vue.d.ts +2 -0
- package/es/components/Table/Table.mjs +15 -1
- package/es/components/Table/Table.mjs.map +1 -1
- package/es/components/Table/Table.type.d.ts +5 -0
- package/es/components/Table/Table.type.mjs +4 -0
- package/es/components/Table/Table.type.mjs.map +1 -1
- package/es/components/Table/Table.vue.d.ts +13 -0
- package/es/components/Table/TableBox.vue.d.ts +4 -0
- package/es/components/Table/hooks/useDraggable.mjs +37 -6
- package/es/components/Table/hooks/useDraggable.mjs.map +1 -1
- package/es/components/Table/tableUnits/DraggableIcon.mjs +17 -3
- package/es/components/Table/tableUnits/DraggableIcon.mjs.map +1 -1
- package/es/components/Table/tableUnits/DraggableIcon.vue.d.ts +1 -0
- package/es/components/Table/tableUnits/ExpandRows.vue.d.ts +1 -0
- package/es/components/Table/tableUnits/TableBody.vue.d.ts +2 -0
- package/es/components/Table/tableUnits/TableCell.mjs +4 -3
- package/es/components/Table/tableUnits/TableCell.mjs.map +1 -1
- package/es/components/Table/tableUnits/TableCell.vue.d.ts +1 -0
- package/es/components/Table/tableUnits/TableRow.vue.d.ts +1 -0
- package/lib/components/Table/BaseTable.vue.d.ts +2 -0
- package/lib/components/Table/BodyTable.vue.d.ts +2 -0
- package/lib/components/Table/HeadTable.vue.d.ts +2 -0
- package/lib/components/Table/Table.js +15 -1
- package/lib/components/Table/Table.js.map +1 -1
- package/lib/components/Table/Table.type.d.ts +5 -0
- package/lib/components/Table/Table.type.js +4 -0
- package/lib/components/Table/Table.type.js.map +1 -1
- package/lib/components/Table/Table.vue.d.ts +13 -0
- package/lib/components/Table/TableBox.vue.d.ts +4 -0
- package/lib/components/Table/hooks/useDraggable.js +37 -6
- package/lib/components/Table/hooks/useDraggable.js.map +1 -1
- package/lib/components/Table/tableUnits/DraggableIcon.js +17 -3
- package/lib/components/Table/tableUnits/DraggableIcon.js.map +1 -1
- package/lib/components/Table/tableUnits/DraggableIcon.vue.d.ts +1 -0
- package/lib/components/Table/tableUnits/ExpandRows.vue.d.ts +1 -0
- package/lib/components/Table/tableUnits/TableBody.vue.d.ts +2 -0
- package/lib/components/Table/tableUnits/TableCell.js +4 -3
- package/lib/components/Table/tableUnits/TableCell.js.map +1 -1
- package/lib/components/Table/tableUnits/TableCell.vue.d.ts +1 -0
- package/lib/components/Table/tableUnits/TableRow.vue.d.ts +1 -0
- package/package.json +1 -1
- package/types/components/Table/BaseTable.vue.d.ts +2 -0
- package/types/components/Table/BodyTable.vue.d.ts +2 -0
- package/types/components/Table/HeadTable.vue.d.ts +2 -0
- package/types/components/Table/Table.type.d.ts +5 -0
- package/types/components/Table/Table.vue.d.ts +13 -0
- package/types/components/Table/TableBox.vue.d.ts +4 -0
- package/types/components/Table/tableUnits/DraggableIcon.vue.d.ts +1 -0
- package/types/components/Table/tableUnits/ExpandRows.vue.d.ts +1 -0
- package/types/components/Table/tableUnits/TableBody.vue.d.ts +2 -0
- package/types/components/Table/tableUnits/TableCell.vue.d.ts +1 -0
- package/types/components/Table/tableUnits/TableRow.vue.d.ts +1 -0
- package/uxd-ui.esm.min.mjs +6 -6
- package/uxd-ui.esm.mjs +78 -14
- package/uxd-ui.umd.js +78 -14
- 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
|
|
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)) <
|
|
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
|
-
|
|
108
|
+
const clientY = getClientY(event);
|
|
109
|
+
if (bodyTop + bodyHeight > clientY && clientY > bodyTop) {
|
|
99
110
|
clearBodyScrollY();
|
|
100
111
|
} else if (!scrollTimer) {
|
|
101
|
-
const px =
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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":"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"}
|
|
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":"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"}
|
|
@@ -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 {
|
|
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;
|