@lx-frontend/wrap-element-ui 1.0.1-beta.5 → 1.0.1-beta.7
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 +45 -45
- package/package.json +14 -14
- package/src/components/AddMembers/index.vue +157 -157
- package/src/components/AuditSteps/index.vue +140 -140
- package/src/components/DemoComponent/index.vue +20 -20
- package/src/components/EditableTable/README.md +147 -147
- package/src/components/EditableTable/bizHooks/index.ts +17 -0
- package/src/components/EditableTable/{useCellHover.ts → bizHooks/useCellHover.ts} +71 -71
- package/src/components/EditableTable/{useColumnHeaderOperation.ts → bizHooks/useColumnHeaderOperation.ts} +326 -325
- package/src/components/EditableTable/{useDefaultOperation.ts → bizHooks/useDefaultOperation.ts} +95 -95
- package/src/components/EditableTable/{useDragSort.ts → bizHooks/useDragSort.ts} +290 -290
- package/src/components/EditableTable/{usePagination.ts → bizHooks/usePagination.ts} +30 -30
- package/src/components/EditableTable/{useRowBgColor.ts → bizHooks/useRowBgColor.ts} +43 -50
- package/src/components/EditableTable/{useViewSetting.ts → bizHooks/useViewSetting.ts} +118 -119
- package/src/components/EditableTable/features/bizColorSelect.vue +65 -0
- package/src/components/EditableTable/features/bizEditCell.vue +44 -0
- package/src/components/EditableTable/features/bizTableHeaderPopover.vue +202 -0
- package/src/components/EditableTable/features/bizViewSettingDialog.vue +137 -0
- package/src/components/EditableTable/index.less +733 -724
- package/src/components/EditableTable/index.vue +630 -914
- package/src/components/Ellipsis/MultilineEllipsis.vue +141 -141
- package/src/components/Ellipsis/index.vue +119 -119
- package/src/components/LxTable/index.vue +296 -296
- package/src/components/PopoverForm/index.vue +66 -66
- package/src/components/SearchForm/index.vue +243 -243
- package/src/components/SearchSelect/index.vue +153 -153
- package/src/components/index.ts +24 -24
- package/src/components/singleMessage/index.ts +44 -44
- /package/src/components/EditableTable/{types.ts → types/index.ts} +0 -0
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import debounce from 'lodash/debounce';
|
|
2
|
-
import throttle from 'lodash/throttle';
|
|
3
|
-
import { onBeforeUnmount, onMounted, ref } from 'vue'
|
|
4
|
-
|
|
5
|
-
export default function useCellHover(tableDomRef) {
|
|
6
|
-
|
|
7
|
-
// 鼠标悬浮的行
|
|
8
|
-
const hoveringCellInfo = ref<{
|
|
9
|
-
rowIndex: number;
|
|
10
|
-
columnProperty: string;
|
|
11
|
-
}>({ rowIndex: -1, columnProperty: ''});
|
|
12
|
-
|
|
13
|
-
const isMouseWheeling = ref(false);
|
|
14
|
-
|
|
15
|
-
onMounted(() => {
|
|
16
|
-
tableDomRef.value.$el.addEventListener('mouseleave', resetHoveringCellInfo);
|
|
17
|
-
document.addEventListener('wheel', throttledHandleMouseWheel);
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
onBeforeUnmount(() => {
|
|
21
|
-
tableDomRef.value.$el.removeEventListener('mouseleave', resetHoveringCellInfo);
|
|
22
|
-
document.removeEventListener('wheel', throttledHandleMouseWheel);
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
const setCellClassName = ({ column, rowIndex }) => {
|
|
26
|
-
// hoving-cell-[name]-[rowIndex]
|
|
27
|
-
if (!column.property) return '';
|
|
28
|
-
return `hoving-cell-(${column.property})-(${rowIndex})`;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const resetHoveringCellInfo = () => {
|
|
32
|
-
hoveringCellInfo.value = {
|
|
33
|
-
rowIndex: -1,
|
|
34
|
-
columnProperty: ''
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let timerHandler: any = null
|
|
39
|
-
// 性能考虑,在鼠标滚动时,停止处理cell的hover事件
|
|
40
|
-
const handleMouseWheel = () => {
|
|
41
|
-
isMouseWheeling.value = true;
|
|
42
|
-
clearTimeout(timerHandler);
|
|
43
|
-
// 停止滚动后,恢复hover事件
|
|
44
|
-
timerHandler = setTimeout(() => {
|
|
45
|
-
isMouseWheeling.value = false;
|
|
46
|
-
}, 100)
|
|
47
|
-
}
|
|
48
|
-
const throttledHandleMouseWheel = throttle(handleMouseWheel, 50);
|
|
49
|
-
|
|
50
|
-
const handleCellMouseEnter = (row, column, cell, event) => {
|
|
51
|
-
// 性能考虑,表格滚动时会不断触发该事件,导致滚动性能变差
|
|
52
|
-
if (isMouseWheeling.value) return
|
|
53
|
-
|
|
54
|
-
const className = [...event.target.classList].find(c => /hoving-cell-\(\w+\)-\(\d+\)/.test(c))
|
|
55
|
-
if (!className) return;
|
|
56
|
-
// 正则匹配括号中的内容
|
|
57
|
-
const matchArr = className.match(/hoving-cell-\((\w+)\)-\((\d+)\)/);
|
|
58
|
-
|
|
59
|
-
hoveringCellInfo.value = {
|
|
60
|
-
rowIndex: +matchArr?.[2],
|
|
61
|
-
columnProperty: matchArr?.[1]
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const debouncedHoverHandler = debounce(handleCellMouseEnter, 10);
|
|
66
|
-
|
|
67
|
-
return {
|
|
68
|
-
hoveringCellInfo,
|
|
69
|
-
setCellClassName,
|
|
70
|
-
debouncedHoverHandler
|
|
71
|
-
}
|
|
1
|
+
import debounce from 'lodash/debounce';
|
|
2
|
+
import throttle from 'lodash/throttle';
|
|
3
|
+
import { onBeforeUnmount, onMounted, ref } from 'vue'
|
|
4
|
+
|
|
5
|
+
export default function useCellHover(tableDomRef) {
|
|
6
|
+
|
|
7
|
+
// 鼠标悬浮的行
|
|
8
|
+
const hoveringCellInfo = ref<{
|
|
9
|
+
rowIndex: number;
|
|
10
|
+
columnProperty: string;
|
|
11
|
+
}>({ rowIndex: -1, columnProperty: ''});
|
|
12
|
+
|
|
13
|
+
const isMouseWheeling = ref(false);
|
|
14
|
+
|
|
15
|
+
onMounted(() => {
|
|
16
|
+
tableDomRef.value.$el.addEventListener('mouseleave', resetHoveringCellInfo);
|
|
17
|
+
document.addEventListener('wheel', throttledHandleMouseWheel);
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
onBeforeUnmount(() => {
|
|
21
|
+
tableDomRef.value.$el.removeEventListener('mouseleave', resetHoveringCellInfo);
|
|
22
|
+
document.removeEventListener('wheel', throttledHandleMouseWheel);
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
const setCellClassName = ({ column, rowIndex }) => {
|
|
26
|
+
// hoving-cell-[name]-[rowIndex]
|
|
27
|
+
if (!column.property) return '';
|
|
28
|
+
return `hoving-cell-(${column.property})-(${rowIndex})`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const resetHoveringCellInfo = () => {
|
|
32
|
+
hoveringCellInfo.value = {
|
|
33
|
+
rowIndex: -1,
|
|
34
|
+
columnProperty: ''
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let timerHandler: any = null
|
|
39
|
+
// 性能考虑,在鼠标滚动时,停止处理cell的hover事件
|
|
40
|
+
const handleMouseWheel = () => {
|
|
41
|
+
isMouseWheeling.value = true;
|
|
42
|
+
clearTimeout(timerHandler);
|
|
43
|
+
// 停止滚动后,恢复hover事件
|
|
44
|
+
timerHandler = setTimeout(() => {
|
|
45
|
+
isMouseWheeling.value = false;
|
|
46
|
+
}, 100)
|
|
47
|
+
}
|
|
48
|
+
const throttledHandleMouseWheel = throttle(handleMouseWheel, 50);
|
|
49
|
+
|
|
50
|
+
const handleCellMouseEnter = (row, column, cell, event) => {
|
|
51
|
+
// 性能考虑,表格滚动时会不断触发该事件,导致滚动性能变差
|
|
52
|
+
if (isMouseWheeling.value) return
|
|
53
|
+
|
|
54
|
+
const className = [...event.target.classList].find(c => /hoving-cell-\(\w+\)-\(\d+\)/.test(c))
|
|
55
|
+
if (!className) return;
|
|
56
|
+
// 正则匹配括号中的内容
|
|
57
|
+
const matchArr = className.match(/hoving-cell-\((\w+)\)-\((\d+)\)/);
|
|
58
|
+
|
|
59
|
+
hoveringCellInfo.value = {
|
|
60
|
+
rowIndex: +matchArr?.[2],
|
|
61
|
+
columnProperty: matchArr?.[1]
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const debouncedHoverHandler = debounce(handleCellMouseEnter, 10);
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
hoveringCellInfo,
|
|
69
|
+
setCellClassName,
|
|
70
|
+
debouncedHoverHandler
|
|
71
|
+
}
|
|
72
72
|
}
|