ll-plus 2.4.17 → 2.4.19
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/es/component.mjs +6 -0
- package/es/component.mjs.map +1 -1
- package/es/components/advanced-filtering/index.d.ts +284 -284
- package/es/components/advanced-filtering/src/advanced-filtering.vue.d.ts +142 -142
- package/es/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +142 -142
- package/es/components/breadcrumb-card/index.d.ts +94 -0
- package/es/components/breadcrumb-card/src/breadcrumb-card.d.ts +28 -0
- package/es/components/breadcrumb-card/src/breadcrumb-card.vue.d.ts +87 -0
- package/es/components/cascader/index.d.ts +8 -8
- package/es/components/cascader/src/cascader.vue.d.ts +8 -8
- package/es/components/checkbox/index.d.ts +217 -217
- package/es/components/checkbox/src/checkbox-group.vue.d.ts +217 -217
- package/es/components/checkbox/src/checkbox.d.ts +56 -56
- package/es/components/drawer/index.d.ts +5 -5
- package/es/components/drawer/src/components/second-confirmation/index.d.ts +3 -3
- package/es/components/drawer/src/components/second-confirmation/src/second-confirmation.vue.d.ts +3 -3
- package/es/components/drawer/src/drawer.vue.d.ts +5 -5
- package/es/components/easy-cron/index.d.ts +95 -95
- package/es/components/easy-cron/src/components/easy-cron-inner.vue.d.ts +88 -88
- package/es/components/easy-cron/src/components/easy-cron-modal.vue.d.ts +88 -88
- package/es/components/easy-cron/src/easy-cron.vue.d.ts +95 -95
- package/es/components/form/index.d.ts +142 -142
- package/es/components/form/src/components/form-component.vue.d.ts +1 -1
- package/es/components/form/src/config/form.d.ts +56 -56
- package/es/components/form/src/form.vue.d.ts +141 -141
- package/es/components/index.d.ts +3 -0
- package/es/components/input/index.d.ts +33 -33
- package/es/components/input/src/input.vue.d.ts +33 -33
- package/es/components/key-value/index.d.ts +678 -678
- package/es/components/key-value/src/components/key-value-item.vue.d.ts +226 -226
- package/es/components/key-value/src/key-value.vue.d.ts +678 -678
- package/es/components/modal/index.d.ts +1 -1
- package/es/components/modal/src/modal.vue.d.ts +1 -1
- package/es/components/new-drawer/index.d.ts +732 -0
- package/es/components/new-drawer/src/drawer.d.ts +60 -0
- package/es/components/new-drawer/src/drawer.vue.d.ts +725 -0
- package/es/components/new-modal/index.d.ts +2340 -0
- package/es/components/new-modal/src/modal.d.ts +58 -0
- package/es/components/new-modal/src/modal.vue.d.ts +2333 -0
- package/es/components/rich-text-editor/index.d.ts +1 -1
- package/es/components/rich-text-editor/src/rich-text-editor.vue.d.ts +1 -1
- package/es/components/select/index.d.ts +4 -4
- package/es/components/select/src/select.vue.d.ts +4 -4
- package/es/components/select-group/index.d.ts +1 -1
- package/es/components/select-group/src/select-group.d.ts +1 -1
- package/es/components/select-group/src/select-group.vue.d.ts +1 -1
- package/es/components/table/index.d.ts +7 -6
- package/es/components/table/src/components/header-search.vue.d.ts +1 -0
- package/es/components/table/src/components/main-table.vue.d.ts +2 -2
- package/es/components/table/src/config/table.d.ts +2 -2
- package/es/components/table/src/table.vue.d.ts +7 -6
- package/es/components/textarea/index.d.ts +5 -5
- package/es/components/textarea/src/textarea.vue.d.ts +5 -5
- package/es/components/tooltip/index.d.ts +4 -4
- package/es/components/tooltip/src/tooltip.d.ts +1 -1
- package/es/components/tooltip/src/tooltip.vue.d.ts +4 -4
- package/es/components/tree-search/index.d.ts +1 -1
- package/es/components/tree-search/src/tree-search.vue.d.ts +1 -1
- package/es/components/upload-drag/index.d.ts +2 -2
- package/es/components/upload-drag/src/upload-drag.vue.d.ts +2 -2
- package/es/hooks/index.d.ts +1 -0
- package/es/hooks/use-scroll/index.d.ts +7 -0
- package/es/index.d.ts +3 -1
- package/es/index.mjs +9 -0
- package/es/index.mjs.map +1 -1
- package/es/packages/components/breadcrumb-card/index.mjs +10 -0
- package/es/packages/components/breadcrumb-card/index.mjs.map +1 -0
- package/es/packages/components/breadcrumb-card/src/breadcrumb-card.mjs +70 -0
- package/es/packages/components/breadcrumb-card/src/breadcrumb-card.mjs.map +1 -0
- package/es/packages/components/breadcrumb-card/src/breadcrumb-card.vue.mjs +8 -0
- package/es/packages/components/breadcrumb-card/src/breadcrumb-card.vue.mjs.map +1 -0
- package/es/packages/components/breadcrumb-card/src/breadcrumb-card.vue2.mjs +180 -0
- package/es/packages/components/breadcrumb-card/src/breadcrumb-card.vue2.mjs.map +1 -0
- package/es/packages/components/index.mjs +6 -0
- package/es/packages/components/index.mjs.map +1 -1
- package/es/packages/components/new-drawer/index.mjs +10 -0
- package/es/packages/components/new-drawer/index.mjs.map +1 -0
- package/es/packages/components/new-drawer/src/drawer.mjs +106 -0
- package/es/packages/components/new-drawer/src/drawer.mjs.map +1 -0
- package/es/packages/components/new-drawer/src/drawer.vue.mjs +8 -0
- package/es/packages/components/new-drawer/src/drawer.vue.mjs.map +1 -0
- package/es/packages/components/new-drawer/src/drawer.vue2.mjs +162 -0
- package/es/packages/components/new-drawer/src/drawer.vue2.mjs.map +1 -0
- package/es/packages/components/new-modal/index.mjs +10 -0
- package/es/packages/components/new-modal/index.mjs.map +1 -0
- package/es/packages/components/new-modal/src/modal.mjs +104 -0
- package/es/packages/components/new-modal/src/modal.mjs.map +1 -0
- package/es/packages/components/new-modal/src/modal.vue.mjs +8 -0
- package/es/packages/components/new-modal/src/modal.vue.mjs.map +1 -0
- package/es/packages/components/new-modal/src/modal.vue2.mjs +126 -0
- package/es/packages/components/new-modal/src/modal.vue2.mjs.map +1 -0
- package/es/packages/components/table/src/components/header-search.vue2.mjs +21 -13
- package/es/packages/components/table/src/components/header-search.vue2.mjs.map +1 -1
- package/es/packages/hooks/index.mjs +4 -0
- package/es/packages/hooks/index.mjs.map +1 -0
- package/es/packages/hooks/use-scroll/index.mjs +113 -0
- package/es/packages/hooks/use-scroll/index.mjs.map +1 -0
- package/index.full.js +964 -127
- package/index.full.min.js +22 -22
- package/index.full.min.js.map +1 -1
- package/index.full.min.mjs +24 -24
- package/index.full.min.mjs.map +1 -1
- package/index.full.mjs +957 -132
- package/lib/component.js +112 -106
- package/lib/component.js.map +1 -1
- package/lib/components/advanced-filtering/index.d.ts +284 -284
- package/lib/components/advanced-filtering/src/advanced-filtering.vue.d.ts +142 -142
- package/lib/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +142 -142
- package/lib/components/breadcrumb-card/index.d.ts +94 -0
- package/lib/components/breadcrumb-card/src/breadcrumb-card.d.ts +28 -0
- package/lib/components/breadcrumb-card/src/breadcrumb-card.vue.d.ts +87 -0
- package/lib/components/cascader/index.d.ts +8 -8
- package/lib/components/cascader/src/cascader.vue.d.ts +8 -8
- package/lib/components/checkbox/index.d.ts +217 -217
- package/lib/components/checkbox/src/checkbox-group.vue.d.ts +217 -217
- package/lib/components/checkbox/src/checkbox.d.ts +56 -56
- package/lib/components/drawer/index.d.ts +5 -5
- package/lib/components/drawer/src/components/second-confirmation/index.d.ts +3 -3
- package/lib/components/drawer/src/components/second-confirmation/src/second-confirmation.vue.d.ts +3 -3
- package/lib/components/drawer/src/drawer.vue.d.ts +5 -5
- package/lib/components/easy-cron/index.d.ts +95 -95
- package/lib/components/easy-cron/src/components/easy-cron-inner.vue.d.ts +88 -88
- package/lib/components/easy-cron/src/components/easy-cron-modal.vue.d.ts +88 -88
- package/lib/components/easy-cron/src/easy-cron.vue.d.ts +95 -95
- package/lib/components/form/index.d.ts +142 -142
- package/lib/components/form/src/components/form-component.vue.d.ts +1 -1
- package/lib/components/form/src/config/form.d.ts +56 -56
- package/lib/components/form/src/form.vue.d.ts +141 -141
- package/lib/components/index.d.ts +3 -0
- package/lib/components/input/index.d.ts +33 -33
- package/lib/components/input/src/input.vue.d.ts +33 -33
- package/lib/components/key-value/index.d.ts +678 -678
- package/lib/components/key-value/src/components/key-value-item.vue.d.ts +226 -226
- package/lib/components/key-value/src/key-value.vue.d.ts +678 -678
- package/lib/components/modal/index.d.ts +1 -1
- package/lib/components/modal/src/modal.vue.d.ts +1 -1
- package/lib/components/new-drawer/index.d.ts +732 -0
- package/lib/components/new-drawer/src/drawer.d.ts +60 -0
- package/lib/components/new-drawer/src/drawer.vue.d.ts +725 -0
- package/lib/components/new-modal/index.d.ts +2340 -0
- package/lib/components/new-modal/src/modal.d.ts +58 -0
- package/lib/components/new-modal/src/modal.vue.d.ts +2333 -0
- package/lib/components/rich-text-editor/index.d.ts +1 -1
- package/lib/components/rich-text-editor/src/rich-text-editor.vue.d.ts +1 -1
- package/lib/components/select/index.d.ts +4 -4
- package/lib/components/select/src/select.vue.d.ts +4 -4
- package/lib/components/select-group/index.d.ts +1 -1
- package/lib/components/select-group/src/select-group.d.ts +1 -1
- package/lib/components/select-group/src/select-group.vue.d.ts +1 -1
- package/lib/components/table/index.d.ts +7 -6
- package/lib/components/table/src/components/header-search.vue.d.ts +1 -0
- package/lib/components/table/src/components/main-table.vue.d.ts +2 -2
- package/lib/components/table/src/config/table.d.ts +2 -2
- package/lib/components/table/src/table.vue.d.ts +7 -6
- package/lib/components/textarea/index.d.ts +5 -5
- package/lib/components/textarea/src/textarea.vue.d.ts +5 -5
- package/lib/components/tooltip/index.d.ts +4 -4
- package/lib/components/tooltip/src/tooltip.d.ts +1 -1
- package/lib/components/tooltip/src/tooltip.vue.d.ts +4 -4
- package/lib/components/tree-search/index.d.ts +1 -1
- package/lib/components/tree-search/src/tree-search.vue.d.ts +1 -1
- package/lib/components/upload-drag/index.d.ts +2 -2
- package/lib/components/upload-drag/src/upload-drag.vue.d.ts +2 -2
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/use-scroll/index.d.ts +7 -0
- package/lib/index.d.ts +3 -1
- package/lib/index.js +129 -108
- package/lib/index.js.map +1 -1
- package/lib/packages/components/breadcrumb-card/index.js +17 -0
- package/lib/packages/components/breadcrumb-card/index.js.map +1 -0
- package/lib/packages/components/breadcrumb-card/src/breadcrumb-card.js +73 -0
- package/lib/packages/components/breadcrumb-card/src/breadcrumb-card.js.map +1 -0
- package/lib/packages/components/breadcrumb-card/src/breadcrumb-card.vue.js +12 -0
- package/lib/packages/components/breadcrumb-card/src/breadcrumb-card.vue.js.map +1 -0
- package/lib/packages/components/breadcrumb-card/src/breadcrumb-card.vue2.js +184 -0
- package/lib/packages/components/breadcrumb-card/src/breadcrumb-card.vue2.js.map +1 -0
- package/lib/packages/components/index.js +124 -108
- package/lib/packages/components/index.js.map +1 -1
- package/lib/packages/components/new-drawer/index.js +17 -0
- package/lib/packages/components/new-drawer/index.js.map +1 -0
- package/lib/packages/components/new-drawer/src/drawer.js +109 -0
- package/lib/packages/components/new-drawer/src/drawer.js.map +1 -0
- package/lib/packages/components/new-drawer/src/drawer.vue.js +12 -0
- package/lib/packages/components/new-drawer/src/drawer.vue.js.map +1 -0
- package/lib/packages/components/new-drawer/src/drawer.vue2.js +166 -0
- package/lib/packages/components/new-drawer/src/drawer.vue2.js.map +1 -0
- package/lib/packages/components/new-modal/index.js +18 -0
- package/lib/packages/components/new-modal/index.js.map +1 -0
- package/lib/packages/components/new-modal/src/modal.js +108 -0
- package/lib/packages/components/new-modal/src/modal.js.map +1 -0
- package/lib/packages/components/new-modal/src/modal.vue.js +12 -0
- package/lib/packages/components/new-modal/src/modal.vue.js.map +1 -0
- package/lib/packages/components/new-modal/src/modal.vue2.js +130 -0
- package/lib/packages/components/new-modal/src/modal.vue2.js.map +1 -0
- package/lib/packages/components/table/src/components/header-search.vue2.js +20 -12
- package/lib/packages/components/table/src/components/header-search.vue2.js.map +1 -1
- package/lib/packages/hooks/index.js +8 -0
- package/lib/packages/hooks/index.js.map +1 -0
- package/lib/packages/hooks/use-scroll/index.js +115 -0
- package/lib/packages/hooks/use-scroll/index.js.map +1 -0
- package/package.json +1 -1
- package/theme-chalk/css/breadcrumb-card.css +1 -0
- package/theme-chalk/css/index.css +2 -2
- package/theme-chalk/css/new-drawer.css +5 -0
- package/theme-chalk/css/new-modal.css +5 -0
- package/types/packages/components/advanced-filtering/index.d.ts +284 -284
- package/types/packages/components/advanced-filtering/src/advanced-filtering.vue.d.ts +142 -142
- package/types/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +142 -142
- package/types/packages/components/breadcrumb-card/index.d.ts +94 -0
- package/types/packages/components/breadcrumb-card/src/breadcrumb-card.d.ts +28 -0
- package/types/packages/components/breadcrumb-card/src/breadcrumb-card.vue.d.ts +87 -0
- package/types/packages/components/cascader/index.d.ts +8 -8
- package/types/packages/components/cascader/src/cascader.vue.d.ts +8 -8
- package/types/packages/components/checkbox/index.d.ts +217 -217
- package/types/packages/components/checkbox/src/checkbox-group.vue.d.ts +217 -217
- package/types/packages/components/checkbox/src/checkbox.d.ts +56 -56
- package/types/packages/components/drawer/index.d.ts +5 -5
- package/types/packages/components/drawer/src/components/second-confirmation/index.d.ts +3 -3
- package/types/packages/components/drawer/src/components/second-confirmation/src/second-confirmation.vue.d.ts +3 -3
- package/types/packages/components/drawer/src/drawer.vue.d.ts +5 -5
- package/types/packages/components/easy-cron/index.d.ts +95 -95
- package/types/packages/components/easy-cron/src/components/easy-cron-inner.vue.d.ts +88 -88
- package/types/packages/components/easy-cron/src/components/easy-cron-modal.vue.d.ts +88 -88
- package/types/packages/components/easy-cron/src/easy-cron.vue.d.ts +95 -95
- package/types/packages/components/form/index.d.ts +142 -142
- package/types/packages/components/form/src/components/form-component.vue.d.ts +1 -1
- package/types/packages/components/form/src/config/form.d.ts +56 -56
- package/types/packages/components/form/src/form.vue.d.ts +141 -141
- package/types/packages/components/index.d.ts +3 -0
- package/types/packages/components/input/index.d.ts +33 -33
- package/types/packages/components/input/src/input.vue.d.ts +33 -33
- package/types/packages/components/key-value/index.d.ts +678 -678
- package/types/packages/components/key-value/src/components/key-value-item.vue.d.ts +226 -226
- package/types/packages/components/key-value/src/key-value.vue.d.ts +678 -678
- package/types/packages/components/modal/index.d.ts +1 -1
- package/types/packages/components/modal/src/modal.vue.d.ts +1 -1
- package/types/packages/components/new-drawer/index.d.ts +732 -0
- package/types/packages/components/new-drawer/src/drawer.d.ts +60 -0
- package/types/packages/components/new-drawer/src/drawer.vue.d.ts +725 -0
- package/types/packages/components/new-modal/index.d.ts +2340 -0
- package/types/packages/components/new-modal/src/modal.d.ts +58 -0
- package/types/packages/components/new-modal/src/modal.vue.d.ts +2333 -0
- package/types/packages/components/rich-text-editor/index.d.ts +1 -1
- package/types/packages/components/rich-text-editor/src/rich-text-editor.vue.d.ts +1 -1
- package/types/packages/components/select/index.d.ts +4 -4
- package/types/packages/components/select/src/select.vue.d.ts +4 -4
- package/types/packages/components/select-group/index.d.ts +1 -1
- package/types/packages/components/select-group/src/select-group.d.ts +1 -1
- package/types/packages/components/select-group/src/select-group.vue.d.ts +1 -1
- package/types/packages/components/table/index.d.ts +7 -6
- package/types/packages/components/table/src/components/header-search.vue.d.ts +1 -0
- package/types/packages/components/table/src/components/main-table.vue.d.ts +2 -2
- package/types/packages/components/table/src/config/table.d.ts +2 -2
- package/types/packages/components/table/src/table.vue.d.ts +7 -6
- package/types/packages/components/textarea/index.d.ts +5 -5
- package/types/packages/components/textarea/src/textarea.vue.d.ts +5 -5
- package/types/packages/components/tooltip/index.d.ts +4 -4
- package/types/packages/components/tooltip/src/tooltip.d.ts +1 -1
- package/types/packages/components/tooltip/src/tooltip.vue.d.ts +4 -4
- package/types/packages/components/tree-search/index.d.ts +1 -1
- package/types/packages/components/tree-search/src/tree-search.vue.d.ts +1 -1
- package/types/packages/components/upload-drag/index.d.ts +2 -2
- package/types/packages/components/upload-drag/src/upload-drag.vue.d.ts +2 -2
- package/types/packages/hooks/index.d.ts +1 -0
- package/types/packages/hooks/use-scroll/index.d.ts +7 -0
- package/types/packages/index.d.ts +3 -1
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ref, watch, onUnmounted } from 'vue';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
function useScroll() {
|
|
5
|
+
const scrollRef = ref();
|
|
6
|
+
const scrollPosition = ref();
|
|
7
|
+
const isHasScrollBar = ref(false);
|
|
8
|
+
let observer;
|
|
9
|
+
let timer;
|
|
10
|
+
const handleScroll = (event) => {
|
|
11
|
+
const target = event.target;
|
|
12
|
+
getSrcollPosition(target);
|
|
13
|
+
};
|
|
14
|
+
const getSrcollPosition = (target) => {
|
|
15
|
+
if (target.scrollHeight > target.offsetHeight) {
|
|
16
|
+
isHasScrollBar.value = true;
|
|
17
|
+
} else {
|
|
18
|
+
isHasScrollBar.value = false;
|
|
19
|
+
}
|
|
20
|
+
if (!!target.scrollTop) {
|
|
21
|
+
if (target.scrollTop + target.offsetHeight >= target.scrollHeight - 1) {
|
|
22
|
+
scrollPosition.value = "bottom";
|
|
23
|
+
} else {
|
|
24
|
+
scrollPosition.value = "scrolling";
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
scrollPosition.value = "top";
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
watch(
|
|
31
|
+
scrollRef,
|
|
32
|
+
() => {
|
|
33
|
+
if (scrollRef.value) {
|
|
34
|
+
timer = setTimeout(() => {
|
|
35
|
+
if (scrollRef.value.scrollHeight > scrollRef.value.offsetHeight) {
|
|
36
|
+
isHasScrollBar.value = true;
|
|
37
|
+
}
|
|
38
|
+
}, 10);
|
|
39
|
+
scrollRef.value.addEventListener("scroll", handleScroll);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
immediate: true,
|
|
44
|
+
deep: true
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
const handleWindowResize = () => {
|
|
48
|
+
getSrcollPosition(scrollRef.value);
|
|
49
|
+
};
|
|
50
|
+
watch(
|
|
51
|
+
scrollRef,
|
|
52
|
+
() => {
|
|
53
|
+
if (scrollRef.value) {
|
|
54
|
+
window.addEventListener("resize", handleWindowResize);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
immediate: true,
|
|
59
|
+
deep: true
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
watch(
|
|
63
|
+
scrollRef,
|
|
64
|
+
() => {
|
|
65
|
+
if (scrollRef.value) {
|
|
66
|
+
if (!observer) {
|
|
67
|
+
observer = new MutationObserver(function(mutations) {
|
|
68
|
+
mutations.forEach(function() {
|
|
69
|
+
if (scrollRef.value.scrollHeight > scrollRef.value.offsetHeight) {
|
|
70
|
+
isHasScrollBar.value = true;
|
|
71
|
+
}
|
|
72
|
+
scrollRef.value.addEventListener("scroll", handleScroll);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
const config = {
|
|
76
|
+
childList: true,
|
|
77
|
+
// 观察直接子节点
|
|
78
|
+
subtree: true
|
|
79
|
+
// 及其更低的后代节点
|
|
80
|
+
};
|
|
81
|
+
observer.observe(scrollRef.value, config);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
immediate: true,
|
|
87
|
+
deep: true
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
onUnmounted(() => {
|
|
91
|
+
if (scrollRef.value) {
|
|
92
|
+
scrollRef.value?.removeEventListener("scroll", handleScroll);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
onUnmounted(() => {
|
|
96
|
+
window.removeEventListener("resize", handleWindowResize);
|
|
97
|
+
});
|
|
98
|
+
onUnmounted(() => {
|
|
99
|
+
if (observer) {
|
|
100
|
+
observer.disconnect();
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
onUnmounted(() => {
|
|
104
|
+
if (timer) {
|
|
105
|
+
clearTimeout(timer);
|
|
106
|
+
timer = null;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return { scrollRef, isHasScrollBar, scrollPosition };
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { useScroll };
|
|
113
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-scroll/index.ts"],"sourcesContent":["/**\n * @description: 用于监听滚动行为/window的resize监听/滚动区域内的dom动态增删dom来添加阴影\n * @return {HTMLElement} elementRef 要滚动监听的dom\n * @return {scrollPosition} IScrollPosition 监听的位置\n */\nimport { onUnmounted, ref, watch } from 'vue'\n\ntype IScrollPosition = 'top' | 'scrolling' | 'bottom' // 滚动到最顶部、滚动中、滚动到最底部\nexport function useScroll() {\n const scrollRef = ref<HTMLElement>() // 监听滚动的dom\n const scrollPosition = ref<IScrollPosition>() // 滚动到的位置\n const isHasScrollBar = ref(false) // 是否有滚动条\n let observer: MutationObserver // 监听dom内容发生变化\n let timer\n\n // 滚动事件\n const handleScroll = (event: Event) => {\n const target = event.target as HTMLElement\n getSrcollPosition(target)\n }\n // 判断滚动位置\n const getSrcollPosition = (target: HTMLElement) => {\n // 判断是否有滚动体条\n if (target.scrollHeight > target.offsetHeight) {\n isHasScrollBar.value = true\n } else {\n isHasScrollBar.value = false\n }\n if (!!target.scrollTop) {\n // 有0.5px的误差 故-1\n if (target.scrollTop + target.offsetHeight >= target.scrollHeight - 1) {\n // 在最底部\n scrollPosition.value = 'bottom'\n } else {\n // 滚动中\n scrollPosition.value = 'scrolling'\n }\n } else {\n // 在最顶部\n scrollPosition.value = 'top'\n }\n }\n\n // dom挂载完成的监听滚动事件\n watch(\n scrollRef,\n () => {\n if (scrollRef.value) {\n // 防止子元素没有加载出来没有高度\n timer = setTimeout(() => {\n if (scrollRef.value!.scrollHeight > scrollRef.value!.offsetHeight) {\n isHasScrollBar.value = true\n }\n }, 10)\n scrollRef.value.addEventListener('scroll', handleScroll)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n\n // 监听window的resize事件\n const handleWindowResize = () => {\n getSrcollPosition(scrollRef.value!)\n }\n // 监听window的resize\n watch(\n scrollRef,\n () => {\n if (scrollRef.value) {\n window.addEventListener('resize', handleWindowResize)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n\n // 监视对 DOM 树所做更改的能力(对dom增删改等)\n watch(\n scrollRef,\n () => {\n if (scrollRef.value) {\n if (!observer) {\n observer = new MutationObserver(function (mutations) {\n mutations.forEach(function () {\n // 检查容器的高度变化\n if (\n scrollRef.value!.scrollHeight > scrollRef.value!.offsetHeight\n ) {\n isHasScrollBar.value = true\n }\n scrollRef.value!.addEventListener('scroll', handleScroll)\n })\n })\n // 配置MutationObserver,监听子节点的变化\n const config = {\n childList: true, // 观察直接子节点\n subtree: true // 及其更低的后代节点\n }\n // 开始监听容器的变化\n observer.observe(scrollRef.value!, config)\n }\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n\n // 卸载滚动事件\n onUnmounted(() => {\n if (scrollRef.value) {\n scrollRef.value?.removeEventListener('scroll', handleScroll)\n }\n })\n // 卸载停止resize\n onUnmounted(() => {\n window.removeEventListener('resize', handleWindowResize)\n })\n // 组件卸载停止监听\n onUnmounted(() => {\n if (observer) {\n observer.disconnect()\n }\n })\n\n // 清空定时器\n onUnmounted(() => {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n })\n\n return { scrollRef, isHasScrollBar, scrollPosition }\n}\n"],"names":[],"mappings":"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"}
|