ll-plus 2.5.5 → 2.5.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.
@@ -29,9 +29,9 @@ export declare const LlSecondConfirmation: import("ll-plus/es/utils").SFCWithIns
29
29
  is: (name?: string) => string;
30
30
  };
31
31
  props: import("@vue/shared").LooseRequired<{
32
- readonly message: string;
33
32
  readonly title: string;
34
33
  readonly open: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
34
+ readonly message: string;
35
35
  readonly icon: {
36
36
  readonly size?: import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown> | undefined;
37
37
  readonly color?: string | undefined;
@@ -2097,9 +2097,9 @@ export declare const LlSecondConfirmation: import("ll-plus/es/utils").SFCWithIns
2097
2097
  readonly onConfirm: FunctionConstructor;
2098
2098
  readonly onCancel: FunctionConstructor;
2099
2099
  }>>, {
2100
- readonly message: string;
2101
2100
  readonly title: string;
2102
2101
  readonly open: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
2102
+ readonly message: string;
2103
2103
  readonly icon: {
2104
2104
  readonly size?: import("ll-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown> | undefined;
2105
2105
  readonly color?: string | undefined;
@@ -28,9 +28,9 @@ declare const _default: import("vue").DefineComponent<{
28
28
  is: (name?: string) => string;
29
29
  };
30
30
  props: import("@vue/shared").LooseRequired<{
31
- readonly message: string;
32
31
  readonly title: string;
33
32
  readonly open: import("ll-plus/es/components").AvatarType<BooleanConstructor, unknown, unknown>;
33
+ readonly message: string;
34
34
  readonly icon: {
35
35
  readonly size?: import("ll-plus/es/components").AvatarType<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown> | undefined;
36
36
  readonly color?: string | undefined;
@@ -2096,9 +2096,9 @@ declare const _default: import("vue").DefineComponent<{
2096
2096
  readonly onConfirm: FunctionConstructor;
2097
2097
  readonly onCancel: FunctionConstructor;
2098
2098
  }>>, {
2099
- readonly message: string;
2100
2099
  readonly title: string;
2101
2100
  readonly open: import("ll-plus/es/components").AvatarType<BooleanConstructor, unknown, unknown>;
2101
+ readonly message: string;
2102
2102
  readonly icon: {
2103
2103
  readonly size?: import("ll-plus/es/components").AvatarType<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown> | undefined;
2104
2104
  readonly color?: string | undefined;
@@ -51,7 +51,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
51
51
  open: _ctx.open,
52
52
  title: _ctx.title,
53
53
  "wrap-class-name": `${unref(bem).b()} ${_ctx.wrapClassName}`,
54
- class: unref(bem).is("confirm"),
55
54
  onCancel: handleCancel,
56
55
  onOk: handleOk
57
56
  }), createSlots({
@@ -102,7 +101,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
102
101
  ]),
103
102
  key: "0"
104
103
  } : void 0
105
- ]), 1040, ["open", "title", "wrap-class-name", "class"]);
104
+ ]), 1040, ["open", "title", "wrap-class-name"]);
106
105
  };
107
106
  }
108
107
  });
@@ -1 +1 @@
1
- {"version":3,"file":"modal.vue2.mjs","sources":["../../../../../../packages/components/new-modal/src/modal.vue"],"sourcesContent":["<template>\n <Modal\n v-bind=\"getBindValue\"\n ref=\"modal\"\n :open=\"open\"\n :title=\"title\"\n :wrap-class-name=\"`${bem.b()} ${wrapClassName}`\"\n :class=\"bem.is('confirm')\"\n @cancel=\"handleCancel\"\n @ok=\"handleOk\"\n >\n <!-- 内容区域 -->\n <div ref=\"scrollRef\" :class=\"[bem.e('container')]\">\n <slot />\n </div>\n <!-- 底部区域 -->\n <template v-if=\"showFooter\" #footer>\n <div\n :class=\"`${bem.e('footer')} ${\n isShowContentBottomBox ? bem.e('footer-shadow') : ''\n }`\"\n >\n <slot name=\"footer\">\n <ll-button\n v-if=\"type !== 'confirm'\"\n :label=\"cancelText\"\n size=\"middle\"\n v-bind=\"cancelButtonProps\"\n @click=\"handleCancel\"\n >\n </ll-button>\n <ll-button\n type=\"primary\"\n :loading=\"props.confirmLoading\"\n size=\"middle\"\n :label=\"\n props.confirmText\n ? props.confirmText\n : props.type === 'confirm'\n ? '知道了'\n : '确认'\n \"\n v-bind=\"okButtonProps\"\n @click=\"handleOk\"\n />\n </slot>\n </div>\n </template>\n </Modal>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useAttrs, ref, computed } from 'vue'\n\nimport { Modal } from 'ant-design-vue'\nimport { LlButton } from '@ll-plus/components'\n\nimport { createNamespace } from '@ll-plus/utils'\nimport { omit } from 'lodash-es'\nimport { newModalProps, newModalEmits } from './modal'\nimport { useScroll } from '@ll-plus/hooks'\n\nimport type { ModalProps } from 'ant-design-vue'\n\ndefineOptions({ name: 'LlNewModal' })\n\n// 1.props/emits\nconst props = defineProps(newModalProps)\nconst emits = defineEmits(newModalEmits)\n\n// 2.hooks\nconst attrs = useAttrs()\nconst { scrollPosition, isHasScrollBar, scrollRef } = useScroll()\n\n// 3.ref/computed/const\nconst modal = ref<HTMLElement>()\nconst getBindValue = computed(() => {\n const result: ModalProps = {\n ...omit({ ...attrs }, [...Object.keys(newModalProps), 'wrapClassName'])\n }\n if (!props.showFooter) result.footer = null\n return result\n})\n// 是否显示底部的阴影\nconst isShowContentBottomBox = computed(() => {\n // 如果顶部的阴影为true则说明是内部的容器在滚动产品的阴影 则由容器的滚动情况来决定阴影\n if (props.footerShadowPlacement === 'inner') {\n return (\n props.isShowFooterShadow &&\n isHasScrollBar.value &&\n scrollPosition.value !== 'bottom'\n )\n } else {\n // 如果顶部的阴影为false,则说明不是内部容器滚动,则底部的阴影由 外部的isShowFooterShadow来决定\n return props.isShowFooterShadow\n }\n})\nconst bem = createNamespace('new-modal')\n\n// 3.methods\nconst handleCancel = () => {\n emits('cancel')\n emits('update:open')\n}\nconst handleOk = () => {\n emits('ok')\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAmEA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAGd,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,EAAE,cAAA,EAAgB,cAAgB,EAAA,SAAA,KAAc,SAAU,EAAA,CAAA;AAGhE,IAAA,MAAM,QAAQ,GAAiB,EAAA,CAAA;AAC/B,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;AAClC,MAAA,MAAM,MAAqB,GAAA;AAAA,QACzB,GAAG,IAAA,CAAK,EAAE,GAAG,KAAM,EAAA,EAAG,CAAC,GAAG,MAAO,CAAA,IAAA,CAAK,aAAa,CAAA,EAAG,eAAe,CAAC,CAAA;AAAA,OACxE,CAAA;AACA,MAAA,IAAI,CAAC,KAAM,CAAA,UAAA;AAAY,QAAA,MAAA,CAAO,MAAS,GAAA,IAAA,CAAA;AACvC,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,sBAAA,GAAyB,SAAS,MAAM;AAE5C,MAAI,IAAA,KAAA,CAAM,0BAA0B,OAAS,EAAA;AAC3C,QAAA,OACE,KAAM,CAAA,kBAAA,IACN,cAAe,CAAA,KAAA,IACf,eAAe,KAAU,KAAA,QAAA,CAAA;AAAA,OAEtB,MAAA;AAEL,QAAA,OAAO,KAAM,CAAA,kBAAA,CAAA;AAAA,OACf;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,GAAA,GAAM,gBAAgB,WAAW,CAAA,CAAA;AAGvC,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AACd,MAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AAAA,KACrB,CAAA;AACA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,KACZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"modal.vue2.mjs","sources":["../../../../../../packages/components/new-modal/src/modal.vue"],"sourcesContent":["<template>\n <Modal\n v-bind=\"getBindValue\"\n ref=\"modal\"\n :open=\"open\"\n :title=\"title\"\n :wrap-class-name=\"`${bem.b()} ${wrapClassName}`\"\n @cancel=\"handleCancel\"\n @ok=\"handleOk\"\n >\n <!-- 内容区域 -->\n <div ref=\"scrollRef\" :class=\"[bem.e('container')]\">\n <slot />\n </div>\n <!-- 底部区域 -->\n <template v-if=\"showFooter\" #footer>\n <div\n :class=\"`${bem.e('footer')} ${\n isShowContentBottomBox ? bem.e('footer-shadow') : ''\n }`\"\n >\n <slot name=\"footer\">\n <ll-button\n v-if=\"type !== 'confirm'\"\n :label=\"cancelText\"\n size=\"middle\"\n v-bind=\"cancelButtonProps\"\n @click=\"handleCancel\"\n >\n </ll-button>\n <ll-button\n type=\"primary\"\n :loading=\"props.confirmLoading\"\n size=\"middle\"\n :label=\"\n props.confirmText\n ? props.confirmText\n : props.type === 'confirm'\n ? '知道了'\n : '确认'\n \"\n v-bind=\"okButtonProps\"\n @click=\"handleOk\"\n />\n </slot>\n </div>\n </template>\n </Modal>\n</template>\n\n<script lang=\"ts\" setup>\nimport { useAttrs, ref, computed } from 'vue'\n\nimport { Modal } from 'ant-design-vue'\nimport { LlButton } from '@ll-plus/components'\n\nimport { createNamespace } from '@ll-plus/utils'\nimport { omit } from 'lodash-es'\nimport { newModalProps, newModalEmits } from './modal'\nimport { useScroll } from '@ll-plus/hooks'\n\nimport type { ModalProps } from 'ant-design-vue'\n\ndefineOptions({ name: 'LlNewModal' })\n\n// 1.props/emits\nconst props = defineProps(newModalProps)\nconst emits = defineEmits(newModalEmits)\n\n// 2.hooks\nconst attrs = useAttrs()\nconst { scrollPosition, isHasScrollBar, scrollRef } = useScroll()\n\n// 3.ref/computed/const\nconst modal = ref<HTMLElement>()\nconst getBindValue = computed(() => {\n const result: ModalProps = {\n ...omit({ ...attrs }, [...Object.keys(newModalProps), 'wrapClassName'])\n }\n if (!props.showFooter) result.footer = null\n return result\n})\n// 是否显示底部的阴影\nconst isShowContentBottomBox = computed(() => {\n // 如果顶部的阴影为true则说明是内部的容器在滚动产品的阴影 则由容器的滚动情况来决定阴影\n if (props.footerShadowPlacement === 'inner') {\n return (\n props.isShowFooterShadow &&\n isHasScrollBar.value &&\n scrollPosition.value !== 'bottom'\n )\n } else {\n // 如果顶部的阴影为false,则说明不是内部容器滚动,则底部的阴影由 外部的isShowFooterShadow来决定\n return props.isShowFooterShadow\n }\n})\nconst bem = createNamespace('new-modal')\n\n// 3.methods\nconst handleCancel = () => {\n emits('cancel')\n emits('update:open')\n}\nconst handleOk = () => {\n emits('ok')\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkEA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,KAAQ,GAAA,MAAA,CAAA;AAGd,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,EAAE,cAAA,EAAgB,cAAgB,EAAA,SAAA,KAAc,SAAU,EAAA,CAAA;AAGhE,IAAA,MAAM,QAAQ,GAAiB,EAAA,CAAA;AAC/B,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;AAClC,MAAA,MAAM,MAAqB,GAAA;AAAA,QACzB,GAAG,IAAA,CAAK,EAAE,GAAG,KAAM,EAAA,EAAG,CAAC,GAAG,MAAO,CAAA,IAAA,CAAK,aAAa,CAAA,EAAG,eAAe,CAAC,CAAA;AAAA,OACxE,CAAA;AACA,MAAA,IAAI,CAAC,KAAM,CAAA,UAAA;AAAY,QAAA,MAAA,CAAO,MAAS,GAAA,IAAA,CAAA;AACvC,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,sBAAA,GAAyB,SAAS,MAAM;AAE5C,MAAI,IAAA,KAAA,CAAM,0BAA0B,OAAS,EAAA;AAC3C,QAAA,OACE,KAAM,CAAA,kBAAA,IACN,cAAe,CAAA,KAAA,IACf,eAAe,KAAU,KAAA,QAAA,CAAA;AAAA,OAEtB,MAAA;AAEL,QAAA,OAAO,KAAM,CAAA,kBAAA,CAAA;AAAA,OACf;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,GAAA,GAAM,gBAAgB,WAAW,CAAA,CAAA;AAGvC,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AACd,MAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AAAA,KACrB,CAAA;AACA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,KACZ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,7 +6,6 @@ function useScroll() {
6
6
  const scrollPosition = ref();
7
7
  const isHasScrollBar = ref(false);
8
8
  let observer;
9
- let timer;
10
9
  const handleScroll = (event) => {
11
10
  const target = event.target;
12
11
  getSrcollPosition(target);
@@ -27,58 +26,20 @@ function useScroll() {
27
26
  scrollPosition.value = "top";
28
27
  }
29
28
  };
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
29
  watch(
63
30
  scrollRef,
64
31
  () => {
65
32
  if (scrollRef.value) {
66
33
  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
- });
34
+ observer = new ResizeObserver(() => {
35
+ if (scrollRef.value.scrollHeight > scrollRef.value.offsetHeight) {
36
+ isHasScrollBar.value = true;
37
+ } else {
38
+ isHasScrollBar.value = false;
39
+ }
74
40
  });
75
- const config = {
76
- childList: true,
77
- // 观察直接子节点
78
- subtree: true
79
- // 及其更低的后代节点
80
- };
81
- observer.observe(scrollRef.value, config);
41
+ scrollRef.value.addEventListener("scroll", handleScroll);
42
+ observer.observe(scrollRef.value);
82
43
  }
83
44
  }
84
45
  },
@@ -87,25 +48,11 @@ function useScroll() {
87
48
  deep: true
88
49
  }
89
50
  );
90
- onUnmounted(() => {
91
- if (scrollRef.value) {
92
- scrollRef.value?.removeEventListener("scroll", handleScroll);
93
- }
94
- });
95
- onUnmounted(() => {
96
- window.removeEventListener("resize", handleWindowResize);
97
- });
98
51
  onUnmounted(() => {
99
52
  if (observer) {
100
53
  observer.disconnect();
101
54
  }
102
55
  });
103
- onUnmounted(() => {
104
- if (timer) {
105
- clearTimeout(timer);
106
- timer = null;
107
- }
108
- });
109
56
  return { scrollRef, isHasScrollBar, scrollPosition };
110
57
  }
111
58
 
@@ -1 +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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"}
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' // 滚动到最顶部、滚动中、滚动到最底部\n\nexport function useScroll() {\n const scrollRef = ref<HTMLElement>() // 监听滚动的dom\n const scrollPosition = ref<IScrollPosition>() // 滚动到的位置\n const isHasScrollBar = ref(false) // 是否有滚动条\n let observer: ResizeObserver // 监听dom内容发生变化\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 // 监听滚动容器高度的变化\n watch(\n scrollRef,\n () => {\n if (scrollRef.value) {\n if (!observer) {\n observer = new ResizeObserver(() => {\n // 检查容器的高度变化\n if (scrollRef.value!.scrollHeight > scrollRef.value!.offsetHeight) {\n isHasScrollBar.value = true\n } else {\n isHasScrollBar.value = false\n }\n })\n scrollRef.value!.addEventListener('scroll', handleScroll)\n observer.observe(scrollRef.value)\n }\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n\n // 组件卸载停止监听\n onUnmounted(() => {\n if (observer) {\n observer.disconnect()\n }\n })\n\n return { scrollRef, isHasScrollBar, scrollPosition }\n}\n"],"names":[],"mappings":";;;AASO,SAAS,SAAY,GAAA;AAC1B,EAAA,MAAM,YAAY,GAAiB,EAAA,CAAA;AACnC,EAAA,MAAM,iBAAiB,GAAqB,EAAA,CAAA;AAC5C,EAAM,MAAA,cAAA,GAAiB,IAAI,KAAK,CAAA,CAAA;AAChC,EAAI,IAAA,QAAA,CAAA;AAGJ,EAAM,MAAA,YAAA,GAAe,CAAC,KAAiB,KAAA;AACrC,IAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AACrB,IAAA,iBAAA,CAAkB,MAAM,CAAA,CAAA;AAAA,GAC1B,CAAA;AAEA,EAAM,MAAA,iBAAA,GAAoB,CAAC,MAAwB,KAAA;AAEjD,IAAI,IAAA,MAAA,CAAO,YAAe,GAAA,MAAA,CAAO,YAAc,EAAA;AAC7C,MAAA,cAAA,CAAe,KAAQ,GAAA,IAAA,CAAA;AAAA,KAClB,MAAA;AACL,MAAA,cAAA,CAAe,KAAQ,GAAA,KAAA,CAAA;AAAA,KACzB;AACA,IAAI,IAAA,CAAC,CAAC,MAAA,CAAO,SAAW,EAAA;AAEtB,MAAA,IAAI,OAAO,SAAY,GAAA,MAAA,CAAO,YAAgB,IAAA,MAAA,CAAO,eAAe,CAAG,EAAA;AAErE,QAAA,cAAA,CAAe,KAAQ,GAAA,QAAA,CAAA;AAAA,OAClB,MAAA;AAEL,QAAA,cAAA,CAAe,KAAQ,GAAA,WAAA,CAAA;AAAA,OACzB;AAAA,KACK,MAAA;AAEL,MAAA,cAAA,CAAe,KAAQ,GAAA,KAAA,CAAA;AAAA,KACzB;AAAA,GACF,CAAA;AAGA,EAAA,KAAA;AAAA,IACE,SAAA;AAAA,IACA,MAAM;AACJ,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,IAAI,CAAC,QAAU,EAAA;AACb,UAAW,QAAA,GAAA,IAAI,eAAe,MAAM;AAElC,YAAA,IAAI,SAAU,CAAA,KAAA,CAAO,YAAe,GAAA,SAAA,CAAU,MAAO,YAAc,EAAA;AACjE,cAAA,cAAA,CAAe,KAAQ,GAAA,IAAA,CAAA;AAAA,aAClB,MAAA;AACL,cAAA,cAAA,CAAe,KAAQ,GAAA,KAAA,CAAA;AAAA,aACzB;AAAA,WACD,CAAA,CAAA;AACD,UAAU,SAAA,CAAA,KAAA,CAAO,gBAAiB,CAAA,QAAA,EAAU,YAAY,CAAA,CAAA;AACxD,UAAS,QAAA,CAAA,OAAA,CAAQ,UAAU,KAAK,CAAA,CAAA;AAAA,SAClC;AAAA,OACF;AAAA,KACF;AAAA,IACA;AAAA,MACE,SAAW,EAAA,IAAA;AAAA,MACX,IAAM,EAAA,IAAA;AAAA,KACR;AAAA,GACF,CAAA;AAGA,EAAA,WAAA,CAAY,MAAM;AAChB,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,QAAA,CAAS,UAAW,EAAA,CAAA;AAAA,KACtB;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,EAAE,SAAW,EAAA,cAAA,EAAgB,cAAe,EAAA,CAAA;AACrD;;;;"}
package/index.full.js CHANGED
@@ -5378,7 +5378,6 @@
5378
5378
  const scrollPosition = require$$0.ref();
5379
5379
  const isHasScrollBar = require$$0.ref(false);
5380
5380
  let observer;
5381
- let timer;
5382
5381
  const handleScroll = (event) => {
5383
5382
  const target = event.target;
5384
5383
  getSrcollPosition(target);
@@ -5399,58 +5398,20 @@
5399
5398
  scrollPosition.value = "top";
5400
5399
  }
5401
5400
  };
5402
- require$$0.watch(
5403
- scrollRef,
5404
- () => {
5405
- if (scrollRef.value) {
5406
- timer = setTimeout(() => {
5407
- if (scrollRef.value.scrollHeight > scrollRef.value.offsetHeight) {
5408
- isHasScrollBar.value = true;
5409
- }
5410
- }, 10);
5411
- scrollRef.value.addEventListener("scroll", handleScroll);
5412
- }
5413
- },
5414
- {
5415
- immediate: true,
5416
- deep: true
5417
- }
5418
- );
5419
- const handleWindowResize = () => {
5420
- getSrcollPosition(scrollRef.value);
5421
- };
5422
- require$$0.watch(
5423
- scrollRef,
5424
- () => {
5425
- if (scrollRef.value) {
5426
- window.addEventListener("resize", handleWindowResize);
5427
- }
5428
- },
5429
- {
5430
- immediate: true,
5431
- deep: true
5432
- }
5433
- );
5434
5401
  require$$0.watch(
5435
5402
  scrollRef,
5436
5403
  () => {
5437
5404
  if (scrollRef.value) {
5438
5405
  if (!observer) {
5439
- observer = new MutationObserver(function(mutations) {
5440
- mutations.forEach(function() {
5441
- if (scrollRef.value.scrollHeight > scrollRef.value.offsetHeight) {
5442
- isHasScrollBar.value = true;
5443
- }
5444
- scrollRef.value.addEventListener("scroll", handleScroll);
5445
- });
5406
+ observer = new ResizeObserver(() => {
5407
+ if (scrollRef.value.scrollHeight > scrollRef.value.offsetHeight) {
5408
+ isHasScrollBar.value = true;
5409
+ } else {
5410
+ isHasScrollBar.value = false;
5411
+ }
5446
5412
  });
5447
- const config = {
5448
- childList: true,
5449
- // 观察直接子节点
5450
- subtree: true
5451
- // 及其更低的后代节点
5452
- };
5453
- observer.observe(scrollRef.value, config);
5413
+ scrollRef.value.addEventListener("scroll", handleScroll);
5414
+ observer.observe(scrollRef.value);
5454
5415
  }
5455
5416
  }
5456
5417
  },
@@ -5459,25 +5420,11 @@
5459
5420
  deep: true
5460
5421
  }
5461
5422
  );
5462
- require$$0.onUnmounted(() => {
5463
- if (scrollRef.value) {
5464
- scrollRef.value?.removeEventListener("scroll", handleScroll);
5465
- }
5466
- });
5467
- require$$0.onUnmounted(() => {
5468
- window.removeEventListener("resize", handleWindowResize);
5469
- });
5470
5423
  require$$0.onUnmounted(() => {
5471
5424
  if (observer) {
5472
5425
  observer.disconnect();
5473
5426
  }
5474
5427
  });
5475
- require$$0.onUnmounted(() => {
5476
- if (timer) {
5477
- clearTimeout(timer);
5478
- timer = null;
5479
- }
5480
- });
5481
5428
  return { scrollRef, isHasScrollBar, scrollPosition };
5482
5429
  }
5483
5430
 
@@ -65069,7 +65016,6 @@
65069
65016
  open: _ctx.open,
65070
65017
  title: _ctx.title,
65071
65018
  "wrap-class-name": `${require$$0.unref(bem).b()} ${_ctx.wrapClassName}`,
65072
- class: require$$0.unref(bem).is("confirm"),
65073
65019
  onCancel: handleCancel,
65074
65020
  onOk: handleOk
65075
65021
  }), require$$0.createSlots({
@@ -65120,7 +65066,7 @@
65120
65066
  ]),
65121
65067
  key: "0"
65122
65068
  } : void 0
65123
- ]), 1040, ["open", "title", "wrap-class-name", "class"]);
65069
+ ]), 1040, ["open", "title", "wrap-class-name"]);
65124
65070
  };
65125
65071
  }
65126
65072
  });