@touchvue/ui 1.0.0-beta.4 → 1.0.0-beta.5
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/components/box/src/box.vue.d.ts +2 -0
- package/es/components/index.d.ts +3 -3
- package/es/components/tooltip/index.d.ts +4 -0
- package/es/components/tooltip/src/instance.d.ts +2 -0
- package/es/index.mjs +2 -2
- package/es/packages/components/box/src/box.vue2.mjs +5 -1
- package/es/packages/components/box/src/box.vue2.mjs.map +1 -1
- package/es/packages/components/checkboxes/src/Checkboxes.vue2.mjs +0 -3
- package/es/packages/components/checkboxes/src/Checkboxes.vue2.mjs.map +1 -1
- package/es/packages/components/index.mjs +4 -4
- package/es/packages/components/scroll/src/Scroll.vue2.mjs +1 -3
- package/es/packages/components/scroll/src/Scroll.vue2.mjs.map +1 -1
- package/es/packages/components/tag/src/tag.vue2.mjs +8 -1
- package/es/packages/components/tag/src/tag.vue2.mjs.map +1 -1
- package/es/packages/components/tooltip/index.mjs +7 -0
- package/es/packages/components/tooltip/index.mjs.map +1 -0
- package/es/packages/components/{toolTip/src/toolTip.mjs → tooltip/src/tooltip.mjs} +1 -1
- package/es/packages/components/tooltip/src/tooltip.mjs.map +1 -0
- package/es/packages/components/tooltip/src/tooltip.vue.mjs +6 -0
- package/es/packages/components/tooltip/src/tooltip.vue.mjs.map +1 -0
- package/es/packages/components/{toolTip/src/toolTip.vue2.mjs → tooltip/src/tooltip.vue2.mjs} +2 -2
- package/es/packages/components/tooltip/src/tooltip.vue2.mjs.map +1 -0
- package/es/packages/components/tree/src/tree.vue2.mjs +26 -9
- package/es/packages/components/tree/src/tree.vue2.mjs.map +1 -1
- package/es/packages/directives/tip/src/tip.mjs +2 -2
- package/es/packages/directives/tip/src/tip.mjs.map +1 -1
- package/es/packages/utils/index.mjs +1 -1
- package/es/packages/utils/validate.mjs +319 -2
- package/es/packages/utils/validate.mjs.map +1 -1
- package/es/utils/validate.d.ts +13 -2
- package/global.d.ts +1 -1
- package/lib/components/box/src/box.vue.d.ts +2 -0
- package/lib/components/index.d.ts +3 -3
- package/lib/components/tooltip/index.d.ts +4 -0
- package/lib/components/tooltip/src/instance.d.ts +2 -0
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -1
- package/lib/packages/components/box/src/box.vue2.js +5 -1
- package/lib/packages/components/box/src/box.vue2.js.map +1 -1
- package/lib/packages/components/checkboxes/src/Checkboxes.vue2.js +0 -3
- package/lib/packages/components/checkboxes/src/Checkboxes.vue2.js.map +1 -1
- package/lib/packages/components/index.js +8 -8
- package/lib/packages/components/scroll/src/Scroll.vue2.js +1 -3
- package/lib/packages/components/scroll/src/Scroll.vue2.js.map +1 -1
- package/lib/packages/components/tag/src/tag.vue2.js +8 -1
- package/lib/packages/components/tag/src/tag.vue2.js.map +1 -1
- package/lib/packages/components/tooltip/index.js +9 -0
- package/lib/packages/components/tooltip/index.js.map +1 -0
- package/lib/packages/components/{toolTip/src/toolTip.js → tooltip/src/tooltip.js} +1 -1
- package/lib/packages/components/tooltip/src/tooltip.js.map +1 -0
- package/lib/packages/components/tooltip/src/tooltip.vue.js +10 -0
- package/lib/packages/components/tooltip/src/tooltip.vue.js.map +1 -0
- package/lib/packages/components/{toolTip/src/toolTip.vue2.js → tooltip/src/tooltip.vue2.js} +4 -4
- package/lib/packages/components/tooltip/src/tooltip.vue2.js.map +1 -0
- package/lib/packages/components/tree/src/tree.vue2.js +25 -8
- package/lib/packages/components/tree/src/tree.vue2.js.map +1 -1
- package/lib/packages/directives/tip/src/tip.js +2 -2
- package/lib/packages/directives/tip/src/tip.js.map +1 -1
- package/lib/packages/utils/index.js +1 -0
- package/lib/packages/utils/index.js.map +1 -1
- package/lib/packages/utils/validate.js +319 -1
- package/lib/packages/utils/validate.js.map +1 -1
- package/lib/utils/validate.d.ts +13 -2
- package/package.json +1 -1
- package/theme/base.css +0 -143
- package/theme/components/index.css +34 -154
- package/theme/index.css +34 -154
- package/theme/skin/default.css +34 -154
- package/types/global.d.ts +1 -1
- package/es/components/toolTip/index.d.ts +0 -4
- package/es/components/toolTip/src/instance.d.ts +0 -2
- package/es/packages/components/toolTip/index.mjs +0 -7
- package/es/packages/components/toolTip/index.mjs.map +0 -1
- package/es/packages/components/toolTip/src/toolTip.mjs.map +0 -1
- package/es/packages/components/toolTip/src/toolTip.vue.mjs +0 -6
- package/es/packages/components/toolTip/src/toolTip.vue.mjs.map +0 -1
- package/es/packages/components/toolTip/src/toolTip.vue2.mjs.map +0 -1
- package/lib/components/toolTip/index.d.ts +0 -4
- package/lib/components/toolTip/src/instance.d.ts +0 -2
- package/lib/packages/components/toolTip/index.js +0 -9
- package/lib/packages/components/toolTip/index.js.map +0 -1
- package/lib/packages/components/toolTip/src/toolTip.js.map +0 -1
- package/lib/packages/components/toolTip/src/toolTip.vue.js +0 -10
- package/lib/packages/components/toolTip/src/toolTip.vue.js.map +0 -1
- package/lib/packages/components/toolTip/src/toolTip.vue2.js.map +0 -1
- /package/es/components/{toolTip/src/toolTip.d.ts → tooltip/src/tooltip.d.ts} +0 -0
- /package/es/components/{toolTip/src/toolTip.vue.d.ts → tooltip/src/tooltip.vue.d.ts} +0 -0
- /package/es/packages/components/{toolTip → tooltip}/src/instance.mjs +0 -0
- /package/es/packages/components/{toolTip → tooltip}/src/instance.mjs.map +0 -0
- /package/lib/components/{toolTip/src/toolTip.d.ts → tooltip/src/tooltip.d.ts} +0 -0
- /package/lib/components/{toolTip/src/toolTip.vue.d.ts → tooltip/src/tooltip.vue.d.ts} +0 -0
- /package/lib/packages/components/{toolTip → tooltip}/src/instance.js +0 -0
- /package/lib/packages/components/{toolTip → tooltip}/src/instance.js.map +0 -0
|
@@ -8,6 +8,7 @@ export interface Props {
|
|
|
8
8
|
shadow?: boolean;
|
|
9
9
|
trigger?: 'hover' | 'always';
|
|
10
10
|
clip?: boolean;
|
|
11
|
+
link?: boolean;
|
|
11
12
|
}
|
|
12
13
|
declare function __VLS_template(): {
|
|
13
14
|
default?(_: {}): any;
|
|
@@ -16,6 +17,7 @@ declare const __VLS_component: import("vue").DefineComponent<Props, {}, {}, {},
|
|
|
16
17
|
mode: string;
|
|
17
18
|
color: string;
|
|
18
19
|
shadow: boolean;
|
|
20
|
+
link: boolean;
|
|
19
21
|
height: "" | "full" | number | string;
|
|
20
22
|
padding: string | number;
|
|
21
23
|
paddingPosition: string;
|
package/es/components/index.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ import { ToTable, ToTableHead, ToTableBody, ToTableConfig } from './table';
|
|
|
27
27
|
import { ToTag } from './tag';
|
|
28
28
|
import { ToText } from './text';
|
|
29
29
|
import { ToTip } from './tip';
|
|
30
|
-
import {
|
|
30
|
+
import { ToTooltip } from './tooltip';
|
|
31
31
|
import { ToSegment } from './segment';
|
|
32
32
|
import { ToDialog } from './dialog';
|
|
33
33
|
import { ToEllipsis } from './ellipsis';
|
|
@@ -48,7 +48,7 @@ import { ToTimeline } from './timeline';
|
|
|
48
48
|
import { ToGuider } from './guider';
|
|
49
49
|
import { ToTransfer } from './transfer';
|
|
50
50
|
import { ToUpload } from './upload';
|
|
51
|
-
export { ToButton, ToIcon, ToArticle, ToBox, ToSelect, ToCalendar, ToGap, ToStep, ToForm, ToFormItem, ToGrid, ToGridItem, ToHeader, ToInput, ToLine, ToMsg, ToPadding, ToPage, ToCard, ToCheckbox, ToCheckboxes, ToCenterScroll, ToDatePicker, ToSwitch, ToTab, ToTabItem, ToTable, ToTableHead, ToTableBody, ToTableConfig, ToTag, ToText, ToTip, ToDialog, ToEllipsis, ToFix, ToFloat,
|
|
51
|
+
export { ToButton, ToIcon, ToArticle, ToBox, ToSelect, ToCalendar, ToGap, ToStep, ToForm, ToFormItem, ToGrid, ToGridItem, ToHeader, ToInput, ToLine, ToMsg, ToPadding, ToPage, ToCard, ToCheckbox, ToCheckboxes, ToCenterScroll, ToDatePicker, ToSwitch, ToTab, ToTabItem, ToTable, ToTableHead, ToTableBody, ToTableConfig, ToTag, ToText, ToTip, ToDialog, ToEllipsis, ToFix, ToFloat, ToTooltip, ToSegment, ToPic, ToParam, ToProgress, ToScroll, ToScrollPoint, ToSubmit, ToSlide, ToBreadcrumb, ToBreadcrumbItem, ToTree, ToCascader, ToTimeline, ToCollapse, ToCollapseItem, ToRange, ToGuider, ToTransfer, ToUpload };
|
|
52
52
|
export * from '@touchvue/ui/es/directives';
|
|
53
53
|
export * from './button';
|
|
54
54
|
export * from './icon';
|
|
@@ -76,7 +76,7 @@ export * from './table';
|
|
|
76
76
|
export * from './tag';
|
|
77
77
|
export * from './text';
|
|
78
78
|
export * from './tip';
|
|
79
|
-
export * from './
|
|
79
|
+
export * from './tooltip';
|
|
80
80
|
export * from './segment';
|
|
81
81
|
export * from './dialog';
|
|
82
82
|
export * from './ellipsis';
|
package/es/index.mjs
CHANGED
|
@@ -43,7 +43,7 @@ export { ToTable, ToTableBody, ToTableConfig, ToTableHead } from './packages/com
|
|
|
43
43
|
export { ToTag } from './packages/components/tag/index.mjs';
|
|
44
44
|
export { ToText } from './packages/components/text/index.mjs';
|
|
45
45
|
export { $tip, ToTip } from './packages/components/tip/index.mjs';
|
|
46
|
-
export {
|
|
46
|
+
export { ToTooltip } from './packages/components/tooltip/index.mjs';
|
|
47
47
|
export { ToSegment } from './packages/components/segment/index.mjs';
|
|
48
48
|
export { dialogEmits, dialogProps } from './packages/components/dialog/src/dialog.mjs';
|
|
49
49
|
export { ToDialog } from './packages/components/dialog/index.mjs';
|
|
@@ -87,7 +87,7 @@ export { compare } from './packages/utils/compare.mjs';
|
|
|
87
87
|
export { isModified } from './packages/utils/isModified.mjs';
|
|
88
88
|
export { disabledArea } from './packages/utils/disabledArea.mjs';
|
|
89
89
|
export { getTheme, setTheme } from './packages/utils/theme.mjs';
|
|
90
|
-
export { validate } from './packages/utils/validate.mjs';
|
|
90
|
+
export { validate, validateAll } from './packages/utils/validate.mjs';
|
|
91
91
|
export { print } from './packages/utils/print.mjs';
|
|
92
92
|
export { getDeviceType, isMobileDevice, isPadDevice, isPcDevice, isPhoneDevice, useDevice } from './packages/hooks/useDevice.mjs';
|
|
93
93
|
export { useFormItem } from './packages/hooks/useFormItem.mjs';
|
|
@@ -14,7 +14,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14
14
|
checked: { type: Boolean, default: false },
|
|
15
15
|
shadow: { type: Boolean, default: false },
|
|
16
16
|
trigger: { default: "always" },
|
|
17
|
-
clip: { type: Boolean }
|
|
17
|
+
clip: { type: Boolean },
|
|
18
|
+
link: { type: Boolean, default: false }
|
|
18
19
|
},
|
|
19
20
|
setup(__props) {
|
|
20
21
|
const props = __props;
|
|
@@ -35,6 +36,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
35
36
|
if (props.clip) {
|
|
36
37
|
arr.push("is-clip");
|
|
37
38
|
}
|
|
39
|
+
if (props.link) {
|
|
40
|
+
arr.push("is-link");
|
|
41
|
+
}
|
|
38
42
|
if (props.shadow) {
|
|
39
43
|
arr.push("is-shadow");
|
|
40
44
|
if (props.trigger) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"box.vue2.mjs","sources":["../../../../../../packages/components/box/src/box.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToBox'\n});\n</script>\n<template>\n\t<div class=\"to-box\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<slot></slot>\n\t\t<div class=\"to-box-check\"></div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { CSSProperties, computed } from 'vue'\n\n\n\nexport interface Props {\n\tmode?: string\n\tcolor?: string\n\tpadding?: string | number\n\tpaddingPosition?: string\n\theight?: '' | 'full' | number | string\n\tchecked?: boolean\n\tshadow?: boolean\n\ttrigger?: 'hover' | 'always'\n\tclip?: boolean\n}\nconst props = withDefaults(defineProps<Props>(), {\n\tmode: 'default',\n\tcolor: 'default',\n\tpadding: '',\n\tpaddingPosition: '',\n\theight: '',\n\tchecked: false,\n\tshadow: false,\n\ttrigger: 'always'\n})\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\tif (props.color) {\n\t\tarr.push(`color-${props.color}`)\n\t}\n\tif (props.height && props.height === 'full') {\n\t\tarr.push('height-full')\n\t}\n\tif (props.checked) {\n\t\tarr.push('is-checked')\n\t}\n\tif (props.clip) {\n\t\tarr.push('is-clip')\n\t}\n\tif (props.shadow) {\n\t\tarr.push('is-shadow')\n\t\tif (props.trigger) {\n\t\t\tarr.push(`trigger-${props.trigger}`)\n\t\t}\n\t}\n\treturn arr\n})\nconst setStyle = computed(() => {\n\tconst obj: CSSProperties = {}\n\tif (props.height && props.height !== 'full') {\n\t\tif (!isNaN(Number(props.height))) {\n\t\t\tobj.height = props.height + 'em'\n\t\t} else {\n\t\t\tobj.height = props.height\n\t\t}\n\t}\n\tconst hasUnit = (val: string) => /[a-z%]+$/i.test(val)\n\tif (String(props.padding).trim()) {\n\t\t// 分割成各个值\n\t\tconst padded = String(props.padding)\n\t\t\t.trim()\n\t\t\t.split(/\\s+/)\n\t\t\t.map(val => {\n\t\t\t\treturn hasUnit(val) ? val : `${val}em`\n\t\t\t})\n\t\t\t.join(' ')\n\t\tobj.padding = padded\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('t')) {\n\t\t\tobj.paddingTop = 0\n\t\t}\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('r')) {\n\t\t\tobj.paddingRight = 0\n\t\t}\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('b')) {\n\t\t\tobj.paddingBottom = 0\n\t\t}\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('l')) {\n\t\t\tobj.paddingLeft = 0\n\t\t}\n\t}\n\treturn obj\n})\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_normalizeClass","_renderSlot","_createElementVNode"],"mappings":";;AAEA,MAAA,cAA6BA,eAAmB,CAAA;AAAA,EAC/C,IAAM,EAAA,OAAA;AACP,CAAC,CAAA,CAAA
|
|
1
|
+
{"version":3,"file":"box.vue2.mjs","sources":["../../../../../../packages/components/box/src/box.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToBox'\n});\n</script>\n<template>\n\t<div class=\"to-box\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<slot></slot>\n\t\t<div class=\"to-box-check\"></div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { CSSProperties, computed } from 'vue'\n\n\n\nexport interface Props {\n\tmode?: string\n\tcolor?: string\n\tpadding?: string | number\n\tpaddingPosition?: string\n\theight?: '' | 'full' | number | string\n\tchecked?: boolean\n\tshadow?: boolean\n\ttrigger?: 'hover' | 'always'\n\tclip?: boolean\n\tlink?: boolean\n}\nconst props = withDefaults(defineProps<Props>(), {\n\tmode: 'default',\n\tcolor: 'default',\n\tpadding: '',\n\tpaddingPosition: '',\n\theight: '',\n\tchecked: false,\n\tshadow: false,\n\tlink: false,\n\ttrigger: 'always'\n})\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\tif (props.color) {\n\t\tarr.push(`color-${props.color}`)\n\t}\n\tif (props.height && props.height === 'full') {\n\t\tarr.push('height-full')\n\t}\n\tif (props.checked) {\n\t\tarr.push('is-checked')\n\t}\n\tif (props.clip) {\n\t\tarr.push('is-clip')\n\t}\n\tif (props.link) {\n\t\tarr.push('is-link')\n\t}\n\tif (props.shadow) {\n\t\tarr.push('is-shadow')\n\t\tif (props.trigger) {\n\t\t\tarr.push(`trigger-${props.trigger}`)\n\t\t}\n\t}\n\treturn arr\n})\nconst setStyle = computed(() => {\n\tconst obj: CSSProperties = {}\n\tif (props.height && props.height !== 'full') {\n\t\tif (!isNaN(Number(props.height))) {\n\t\t\tobj.height = props.height + 'em'\n\t\t} else {\n\t\t\tobj.height = props.height\n\t\t}\n\t}\n\tconst hasUnit = (val: string) => /[a-z%]+$/i.test(val)\n\tif (String(props.padding).trim()) {\n\t\t// 分割成各个值\n\t\tconst padded = String(props.padding)\n\t\t\t.trim()\n\t\t\t.split(/\\s+/)\n\t\t\t.map(val => {\n\t\t\t\treturn hasUnit(val) ? val : `${val}em`\n\t\t\t})\n\t\t\t.join(' ')\n\t\tobj.padding = padded\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('t')) {\n\t\t\tobj.paddingTop = 0\n\t\t}\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('r')) {\n\t\t\tobj.paddingRight = 0\n\t\t}\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('b')) {\n\t\t\tobj.paddingBottom = 0\n\t\t}\n\t\tif (props.paddingPosition && !props.paddingPosition.includes('l')) {\n\t\t\tobj.paddingLeft = 0\n\t\t}\n\t}\n\treturn obj\n})\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_normalizeClass","_renderSlot","_createElementVNode"],"mappings":"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"}
|
|
@@ -43,9 +43,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
const change = (checked, value2, label) => {
|
|
46
|
-
if (props.beforeChange) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
46
|
let arr = [];
|
|
50
47
|
checks.value = options.value.filter((item) => item.checked);
|
|
51
48
|
checks.value.forEach((el) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkboxes.vue2.mjs","sources":["../../../../../../packages/components/checkboxes/src/Checkboxes.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToCheckboxes'\n});\n</script>\n<template>\n\t<div :id=\"id\">\n\t\t<span v-if=\"validateRequired\" v-show=\"false\" class=\"to-validate\" :req=\"validateRequired\" :desc=\"validateDesc\" :value=\"checks.length > 0 ? 'true' : ''\"></span>\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, inject, onBeforeUnmount, watch } from 'vue'\n\n\n\nexport interface ToCheckboxesProps {\n\t// 表单校验\n\tdesc?: string\n\tid?: string\n\trequired?: boolean\n\tvalue?: string\n\tmodelValue: string\n\tbeforeChange?(): boolean\n}\n\nconst props = withDefaults(defineProps<ToCheckboxesProps>(), {\n\tdesc: '',\n\tid: '',\n\trequired: false,\n\tvalue: '',\n\tbeforeChange: () => true\n})\n\nconst emit = defineEmits(['change', 'update:modelValue'])\n\n// 注入表单相关\nconst ToFormItem = inject('ToFormItem', '')\n\n// 响应式数据\nconst value = ref<string>(props.modelValue)\nconst maxId = ref<number>(-1)\nconst options = ref<any[]>([])\nconst checks = ref<any[]>([])\nconst removeItems = ref<any[]>([])\nconst timer = ref<NodeJS.Timeout | null>(null)\n\n// 计算属性\nconst validateRequired = computed(() => {\n\tif (props.required) {\n\t\treturn 'true'\n\t} else if (ToFormItem && (ToFormItem as any).required) {\n\t\treturn 'true'\n\t} else {\n\t\treturn 'false'\n\t}\n})\n\nconst validateDesc = computed(() => {\n\tif (props.desc) {\n\t\treturn props.desc\n\t} else if (ToFormItem && (ToFormItem as any).label) {\n\t\treturn (ToFormItem as any).label\n\t} else {\n\t\treturn ''\n\t}\n})\n\n// 方法\nconst change = (checked: boolean, value: string, label: string) => {\n\
|
|
1
|
+
{"version":3,"file":"Checkboxes.vue2.mjs","sources":["../../../../../../packages/components/checkboxes/src/Checkboxes.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToCheckboxes'\n});\n</script>\n<template>\n\t<div :id=\"id\">\n\t\t<span v-if=\"validateRequired\" v-show=\"false\" class=\"to-validate\" :req=\"validateRequired\" :desc=\"validateDesc\" :value=\"checks.length > 0 ? 'true' : ''\"></span>\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, inject, onBeforeUnmount, watch } from 'vue'\n\n\n\nexport interface ToCheckboxesProps {\n\t// 表单校验\n\tdesc?: string\n\tid?: string\n\trequired?: boolean\n\tvalue?: string\n\tmodelValue: string\n\tbeforeChange?(): boolean\n}\n\nconst props = withDefaults(defineProps<ToCheckboxesProps>(), {\n\tdesc: '',\n\tid: '',\n\trequired: false,\n\tvalue: '',\n\tbeforeChange: () => true\n})\n\nconst emit = defineEmits(['change', 'update:modelValue'])\n\n// 注入表单相关\nconst ToFormItem = inject('ToFormItem', '')\n\n// 响应式数据\nconst value = ref<string>(props.modelValue)\nconst maxId = ref<number>(-1)\nconst options = ref<any[]>([])\nconst checks = ref<any[]>([])\nconst removeItems = ref<any[]>([])\nconst timer = ref<NodeJS.Timeout | null>(null)\n\n// 计算属性\nconst validateRequired = computed(() => {\n\tif (props.required) {\n\t\treturn 'true'\n\t} else if (ToFormItem && (ToFormItem as any).required) {\n\t\treturn 'true'\n\t} else {\n\t\treturn 'false'\n\t}\n})\n\nconst validateDesc = computed(() => {\n\tif (props.desc) {\n\t\treturn props.desc\n\t} else if (ToFormItem && (ToFormItem as any).label) {\n\t\treturn (ToFormItem as any).label\n\t} else {\n\t\treturn ''\n\t}\n})\n\n// 方法\nconst change = (checked: boolean, value: string, label: string) => {\n\tlet arr: string[] = []\n\tchecks.value = options.value.filter(item => item.checked)\n\tchecks.value.forEach(el => {\n\t\tarr.push(el.value)\n\t})\n\temit('change', arr.join(','), checked, value, label)\n\temit('update:modelValue', arr.join(','))\n}\n\nconst clear = () => {\n\temit('change', '', false)\n\temit('update:modelValue', '')\n}\n\nconst all = () => {\n\tlet arr: string[] = []\n\toptions.value.forEach(el => {\n\t\tif (!el.readonly) {\n\t\t\tarr.push(el.value)\n\t\t}\n\t})\n\temit('change', arr.join(','))\n\temit('update:modelValue', arr.join(','))\n}\n\nconst observe = () => {\n\tlet arr: string[] = []\n\toptions.value\n\t\t.filter(item => !item.checked)\n\t\t.forEach(el => {\n\t\t\tarr.push(el.value)\n\t\t})\n\temit('change', arr.join(','))\n\temit('update:modelValue', arr.join(','))\n}\n\nconst removeItemValue = (itemOldValue: string) => {\n\tif (timer.value) {\n\t\tclearTimeout(timer.value)\n\t}\n\tremoveItems.value.push(itemOldValue)\n\n\ttimer.value = setTimeout(() => {\n\t\tlet arr = props.value.split(',')\n\t\tarr = arr.filter(item => !removeItems.value.includes(item))\n\t\toptions.value = options.value.filter(item => !removeItems.value.includes(item.value))\n\t\temit('change', arr.join(','))\n\t\temit('update:modelValue', arr.join(','))\n\t}, 1)\n}\n\nconst pushOptions = (option: { value: any; checked: boolean }) => {\n\tconst selectedValues = value.value.split(',').filter(v => v !== '')\n\tif (selectedValues.includes(String(option.value))) {\n\t\toption.checked = true\n\t}\n\toptions.value.push(option)\n\tchecks.value = options.value.filter(item => item.checked)\n}\n\n// 清理定时器\nonBeforeUnmount(() => {\n\tif (timer.value) {\n\t\tclearTimeout(timer.value)\n\t}\n})\n\n// 监听value变化,同步checkbox状态\nwatch(\n\t() => props.modelValue,\n\tnewVal => {\n\t\tif (newVal !== undefined) {\n\t\t\tconst selectedValues = newVal.split(',').filter(v => v !== '')\n\t\t\toptions.value.forEach(option => {\n\t\t\t\toption.checked = selectedValues.includes(String(option.value))\n\t\t\t})\n\t\t\tchecks.value = options.value.filter(item => item.checked)\n\t\t}\n\t}\n)\n\n// 暴露方法和数据给子组件\ndefineExpose({\n\tmaxId,\n\toptions,\n\tchecks,\n\tvalue: computed(() => props.value),\n\tchange,\n\tclear,\n\tall,\n\tobserve,\n\tremoveItemValue,\n\tpushOptions\n})\n</script>\n"],"names":["DO_defineComponent","value","_createElementBlock","id","_renderSlot"],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export { ToTable, ToTableBody, ToTableConfig, ToTableHead } from './table/index.
|
|
|
25
25
|
export { ToTag } from './tag/index.mjs';
|
|
26
26
|
export { ToText } from './text/index.mjs';
|
|
27
27
|
export { $tip, ToTip } from './tip/index.mjs';
|
|
28
|
-
export {
|
|
28
|
+
export { ToTooltip } from './tooltip/index.mjs';
|
|
29
29
|
export { ToSegment } from './segment/index.mjs';
|
|
30
30
|
export { ToDialog } from './dialog/index.mjs';
|
|
31
31
|
export { ToEllipsis } from './ellipsis/index.mjs';
|
|
@@ -46,15 +46,15 @@ export { ToTimeline } from './timeline/index.mjs';
|
|
|
46
46
|
export { ToGuider } from './guider/index.mjs';
|
|
47
47
|
export { ToTransfer } from './transfer/index.mjs';
|
|
48
48
|
export { ToUpload } from './upload/index.mjs';
|
|
49
|
-
export { default as Icon } from './icon/src/icon.vue2.mjs';
|
|
50
|
-
export { default as Article } from './article/src/article.vue2.mjs';
|
|
51
|
-
export { default as Box } from './box/src/box.vue2.mjs';
|
|
52
49
|
export { default as vAlign } from '../directives/align/src/align.mjs';
|
|
53
50
|
export { default as vColor } from '../directives/color/src/color.mjs';
|
|
54
51
|
export { default as vDis } from '../directives/dis/src/dis.mjs';
|
|
55
52
|
export { default as vLoading } from '../directives/loading/src/loading.mjs';
|
|
56
53
|
export { default as vSize } from '../directives/size/src/size.mjs';
|
|
57
54
|
export { default as vTip } from '../directives/tip/src/tip.mjs';
|
|
55
|
+
export { default as Icon } from './icon/src/icon.vue2.mjs';
|
|
56
|
+
export { default as Article } from './article/src/article.vue2.mjs';
|
|
57
|
+
export { default as Box } from './box/src/box.vue2.mjs';
|
|
58
58
|
export { vHide } from '../directives/hide/src/hide.mjs';
|
|
59
59
|
export { articleProps } from './article/src/article.mjs';
|
|
60
60
|
export { boxProps } from './box/src/box.mjs';
|
|
@@ -380,9 +380,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
380
380
|
};
|
|
381
381
|
});
|
|
382
382
|
const setStyle = computed(() => {
|
|
383
|
-
const obj = {
|
|
384
|
-
backgroundColor: "#ffffff"
|
|
385
|
-
};
|
|
383
|
+
const obj = {};
|
|
386
384
|
if (props.height) {
|
|
387
385
|
if (!isNaN(Number(props.height))) {
|
|
388
386
|
obj.height = props.height + "em";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scroll.vue2.mjs","sources":["../../../../../../packages/components/scroll/src/Scroll.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToScroll',\n});\n</script>\n<template>\n\t<div ref=\"scrollRef\" class=\"to-scroll\" :class=\"setClass\" :style=\"setStyle\" @scroll=\"handleScroll\">\n\t\t<!-- 自定义滚动条 -->\n\t\t<div v-if=\"props.virtual\" class=\"to-scroll-bar\" :class=\"[barVisibleClass, { active: isScrolling || isHovering }]\">\n\t\t\t<div ref=\"barThumb\" class=\"to-scroll-thumb\" :style=\"thumbStyle\" @mousedown=\"onThumbMousedown\"></div>\n\t\t</div>\n\n\t\t<!-- 横向滚动条 -->\n\t\t<div v-if=\"props.virtual && hasHorizontalScroll\" class=\"to-scroll-bar horizontal\" :class=\"[barVisibleClass, { active: isScrolling || isHovering }]\">\n\t\t\t<div ref=\"horizontalBarThumb\" class=\"to-scroll-thumb\" :style=\"horizontalThumbStyle\" @mousedown=\"onHorizontalThumbMousedown\"></div>\n\t\t</div>\n\n\t\t<!-- 滚动内容区域 -->\n\t\t<div class=\"to-scroll-content\" :style=\"setContentStyle\" :class=\"{ 'virtual-scroll': props.virtual }\">\n\t\t\t<!-- 默认内容插槽 -->\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch, nextTick, onMounted, onUnmounted, provide } from 'vue'\nimport { scrollProps, ScrollContext } from './scroll'\n\n\n\nconst props = defineProps(scrollProps)\nconst emit = defineEmits<{\n\t(e: 'scroll', event: Event): void\n\t(e: 'scrollEnd'): void\n\t(e: 'change', position: number): void\n\t(e: 'update:value', position: number | string): void\n\t(e: 'update:modelValue', position: number | string): void\n\t(e: 'bottom'): void\n}>()\n\nconst scrollRef = ref<HTMLElement | null>(null)\nconst barThumb = ref<HTMLElement | null>(null)\nconst horizontalBarThumb = ref<HTMLElement | null>(null)\nconst isScrolling = ref(false)\nconst isHovering = ref(false)\n// 添加一个标志来标识是否由tab点击导致的滚动\nlet isTabTriggeredScroll = false\n// 添加自动滚动的节流控制\nlet autoScrollThrottleTimer: ReturnType<typeof setTimeout> | null = null\n// 滚动防抖定时器\nlet scrollUpdateTimer: ReturnType<typeof setTimeout> | null = null\nlet isDragging = ref(false)\nlet isHorizontalDragging = ref(false)\nlet startY = 0\nlet startX = 0\nlet startScrollTop = 0\nlet startScrollLeft = 0\nconst hasHorizontalScroll = ref(false)\n// 存储滚动点信息\nconst scrollPoints = ref<Array<{ value: string | number; start: number; end: number }>>([])\n// 获取当前绑定值(优先使用modelValue,兼容value)\nconst bindValue = computed(() => props.modelValue || props.value)\n// 当前选中的滚动点值\nconst currentPointValue = ref<string | number | null>(bindValue.value || null)\n\n// 提供给子组件的上下文\nprovide<ScrollContext>('ToScroll', {\n\tregisterScrollPoint: (_el: HTMLElement, _value: string | number) => {\n\t\t// 在下一个渲染周期更新滚动点\n\t\tnextTick(() => {\n\t\t\tsetScrollPoints()\n\t\t})\n\t},\n})\n\n// 提供当前值给子组件\nprovide('scrollValue', currentPointValue)\n\n// 计算属性\nconst barVisibleClass = computed(() => {\n\treturn `bar-${String(props.barDisplay)}`\n})\n\n// 检查是否需要横向滚动条\nconst checkHorizontalScroll = () => {\n\tif (scrollRef.value) {\n\t\tconst { scrollWidth, clientWidth } = scrollRef.value\n\t\thasHorizontalScroll.value = scrollWidth > clientWidth\n\t}\n}\n\n// 设置滚动点\nconst setScrollPoints = () => {\n\tif (!scrollRef.value) return\n\n\t// 先清空现有的滚动点\n\tscrollPoints.value = []\n\n\t// 查找所有滚动点元素\n\tconst nodes = scrollRef.value.querySelectorAll('.to-scroll-point')\n\tif (!nodes || nodes.length === 0) {\n\t\treturn\n\t}\n\n\t// 收集滚动点信息\n\tnodes.forEach(item => {\n\t\tconst itemEl = item as HTMLElement\n\t\t// 获取滚动点的值\n\t\tconst pointValue = itemEl.getAttribute('data-point-value') || ''\n\n\t\t// 获取元素相对于滚动容器的精确位置\n\t\tconst offsetTop = itemEl.offsetTop\n\t\tconst height = itemEl.offsetHeight\n\n\t\t// 记录滚动点信息\n\t\tscrollPoints.value.push({\n\t\t\tvalue: pointValue,\n\t\t\tstart: offsetTop,\n\t\t\tend: offsetTop + height,\n\t\t})\n\t})\n\n\t// 初始滚动到指定位置\n\tif (props.value && scrollRef.value) {\n\t\tscrollToValue(props.value, 'auto')\n\t}\n}\n\n// 滚动到指定值对应的位置\nconst scrollToValue = (value: string | number, behavior: ScrollBehavior = 'smooth') => {\n\tif (!scrollRef.value || !scrollPoints.value.length) return false\n\n\t// 查找匹配值的滚动点\n\tconst targetPoint = scrollPoints.value.find(p => String(p.value) === String(value))\n\tif (targetPoint) {\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: targetPoint.start,\n\t\t\tbehavior: behavior,\n\t\t})\n\n\t\t// 主动触发滚动点高亮状态更新\n\t\tnotifyScrollPointsActive(value)\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n// 主动通知滚动点更新高亮状态\nconst notifyScrollPointsActive = (activeValue: string | number) => {\n\t// 使用事件通知,避免直接操作DOM\n\tif (scrollRef.value) {\n\t\tconst event = new CustomEvent('scroll-point-active', {\n\t\t\tdetail: { value: activeValue },\n\t\t\tbubbles: true,\n\t\t})\n\t\tscrollRef.value.dispatchEvent(event)\n\n\t\t// 确保更新内部状态\n\t\tcurrentPointValue.value = activeValue\n\t}\n}\n\n// 根据当前滚动位置查找对应的滚动点值\nconst findScrollPoint = (scrollTop: number): string | number | null => {\n\tif (!scrollPoints.value.length || !scrollRef.value) return null\n\n\tconst clientHeight = scrollRef.value.clientHeight\n\tconst scrollBottom = scrollTop + clientHeight\n\n\t// 1. 精确匹配:如果滚动位置恰好在某个滚动点的顶部附近\n\tfor (const point of scrollPoints.value) {\n\t\t// 如果滚动位置在点顶部的±10px范围内,优先选择该点\n\t\tif (Math.abs(scrollTop - point.start) < 10) {\n\t\t\treturn point.value\n\t\t}\n\t}\n\n\t// 2. 完全包含的滚动点:如果视口完全包含某个滚动点\n\tfor (const point of scrollPoints.value) {\n\t\tif (scrollTop <= point.start && scrollBottom >= point.end) {\n\t\t\treturn point.value\n\t\t}\n\t}\n\n\t// 3. 查找当前在视口中显示最多的点\n\tlet bestPoint = null\n\tlet maxVisibleHeight = 0\n\n\tfor (const point of scrollPoints.value) {\n\t\t// 计算可见部分\n\t\tconst visibleTop = Math.max(scrollTop, point.start)\n\t\tconst visibleBottom = Math.min(scrollBottom, point.end)\n\t\tconst visibleHeight = visibleBottom - visibleTop\n\n\t\t// 如果有可见部分,并且可见高度最大,选择该点\n\t\tif (visibleHeight > 0 && visibleHeight > maxVisibleHeight) {\n\t\t\tmaxVisibleHeight = visibleHeight\n\t\t\tbestPoint = point\n\t\t}\n\t}\n\n\t// 4. 特殊情况处理:滚动到顶部或底部\n\tif (scrollTop < 5 && scrollPoints.value.length > 0) {\n\t\treturn scrollPoints.value[0].value // 顶部\n\t}\n\n\tif (scrollBottom >= scrollRef.value.scrollHeight - 5 && scrollPoints.value.length > 0) {\n\t\treturn scrollPoints.value[scrollPoints.value.length - 1].value // 底部\n\t}\n\n\t// 5. 如果找到了最佳点,返回它的值\n\tif (bestPoint) {\n\t\treturn bestPoint.value\n\t}\n\n\t// 6. 后备方案:返回最接近当前滚动位置的点\n\tlet closestPoint = null\n\tlet minDistance = Infinity\n\n\tfor (const point of scrollPoints.value) {\n\t\tconst distance = Math.min(Math.abs(scrollTop - point.start), Math.abs(scrollBottom - point.end))\n\n\t\tif (distance < minDistance) {\n\t\t\tminDistance = distance\n\t\t\tclosestPoint = point\n\t\t}\n\t}\n\n\treturn closestPoint ? closestPoint.value : null\n}\n\n// 监听value/modelValue变化\nwatch(\n\t() => bindValue.value,\n\t(newVal, oldVal) => {\n\t\t// 避免重复处理相同的值\n\t\tif (newVal === oldVal || newVal === currentPointValue.value) return\n\n\t\t// 更新内部记录的值\n\t\tcurrentPointValue.value = newVal\n\n\t\t// 如果是由Tab变化引起的,滚动到对应位置\n\t\tif (!isScrolling.value) {\n\t\t\t// 标记为Tab触发的滚动,避免滚动过程中再次触发更新\n\t\t\tisTabTriggeredScroll = true\n\n\t\t\tnextTick(() => {\n\t\t\t\t// 尝试滚动到对应位置\n\t\t\t\tconst scrollSuccess = scrollToValue(newVal)\n\n\t\t\t\t// 如果滚动失败(没找到对应的滚动点),尝试重新计算滚动点后再滚动\n\t\t\t\tif (!scrollSuccess) {\n\t\t\t\t\tsetScrollPoints()\n\t\t\t\t\tscrollToValue(newVal)\n\t\t\t\t}\n\n\t\t\t\t// 滚动动作完成后重置标记\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tisTabTriggeredScroll = false\n\t\t\t\t}, 500) // 等待滚动动画完成\n\t\t\t})\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\nonMounted(() => {\n\t// 组件挂载后,设置滚动点\n\tnextTick(() => {\n\t\t// 收集滚动点\n\t\tsetScrollPoints()\n\n\t\t// 设置观察器,监听DOM变化重新收集滚动点\n\t\tconst observer = new MutationObserver(() => {\n\t\t\tsetScrollPoints()\n\t\t})\n\n\t\tif (scrollRef.value) {\n\t\t\tobserver.observe(scrollRef.value, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t\tattributes: true,\n\t\t\t\tattributeFilter: ['data-point-value'],\n\t\t\t})\n\n\t\t\t// 如果有初始值,滚动到对应位置\n\t\t\tif (props.value) {\n\t\t\t\t// 延迟执行,确保DOM完全渲染\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (typeof props.value === 'string' || typeof props.value === 'number') {\n\t\t\t\t\t\tscrollToValue(props.value, 'auto')\n\t\t\t\t\t}\n\t\t\t\t}, 100)\n\t\t\t}\n\t\t}\n\t})\n\n\tif (props.virtual) {\n\t\twindow.addEventListener('mousemove', onMousemove)\n\t\twindow.addEventListener('mouseup', onMouseup)\n\t\twindow.addEventListener('mouseleave', onMouseup)\n\n\t\t// 添加鼠标进入和离开事件\n\t\tif (scrollRef.value) {\n\t\t\tscrollRef.value.addEventListener('mouseenter', onMouseenter)\n\t\t\tscrollRef.value.addEventListener('mouseleave', onMouseleave)\n\t\t}\n\n\t\t// 检查是否需要横向滚动条\n\t\tnextTick(() => {\n\t\t\tcheckHorizontalScroll()\n\t\t})\n\t}\n})\n\nonUnmounted(() => {\n\tif (props.virtual) {\n\t\twindow.removeEventListener('mousemove', onMousemove)\n\t\twindow.removeEventListener('mouseup', onMouseup)\n\t\twindow.removeEventListener('mouseleave', onMouseup)\n\n\t\t// 移除鼠标进入和离开事件\n\t\tif (scrollRef.value) {\n\t\t\tscrollRef.value.removeEventListener('mouseenter', onMouseenter)\n\t\t\tscrollRef.value.removeEventListener('mouseleave', onMouseleave)\n\t\t}\n\t}\n\n\t// 清除所有定时器\n\tif (scrollUpdateTimer) {\n\t\tclearTimeout(scrollUpdateTimer)\n\t\tscrollUpdateTimer = null\n\t}\n\n\tif (autoScrollThrottleTimer) {\n\t\tclearTimeout(autoScrollThrottleTimer)\n\t\tautoScrollThrottleTimer = null\n\t}\n})\n\n// 鼠标进入滚动区域\nconst onMouseenter = () => {\n\tisHovering.value = true\n}\n\n// 鼠标离开滚动区域\nconst onMouseleave = () => {\n\tif (!isDragging.value && !isHorizontalDragging.value) {\n\t\tisHovering.value = false\n\t}\n}\n\n// 虚拟滚动条垂直拖动\nconst onThumbMousedown = (e: MouseEvent) => {\n\tif (!scrollRef.value || !props.virtual) return\n\te.preventDefault()\n\te.stopPropagation()\n\n\t// 添加拖动状态的类,用于CSS样式调整\n\tif (scrollRef.value) {\n\t\tscrollRef.value.classList.add('dragging-scrollbar')\n\t}\n\n\tstartY = e.clientY\n\tstartScrollTop = scrollRef.value.scrollTop\n\tisDragging.value = true\n}\n\n// 虚拟滚动条水平拖动\nconst onHorizontalThumbMousedown = (e: MouseEvent) => {\n\tif (!scrollRef.value || !props.virtual) return\n\te.preventDefault()\n\te.stopPropagation()\n\n\t// 添加拖动状态的类,用于CSS样式调整\n\tif (scrollRef.value) {\n\t\tscrollRef.value.classList.add('dragging-scrollbar-horizontal')\n\t}\n\n\tstartX = e.clientX\n\tstartScrollLeft = scrollRef.value.scrollLeft\n\tisHorizontalDragging.value = true\n}\n\nconst onMousemove = (e: MouseEvent) => {\n\t// 处理垂直拖动\n\tif (isDragging.value && scrollRef.value && barThumb.value) {\n\t\tconst deltaY = e.clientY - startY\n\t\tconst contentHeight = scrollRef.value.scrollHeight\n\t\tconst containerHeight = scrollRef.value.clientHeight\n\t\tconst ratio = containerHeight / contentHeight\n\n\t\tscrollRef.value.scrollTop = startScrollTop + deltaY / ratio\n\t}\n\n\t// 处理水平拖动\n\tif (isHorizontalDragging.value && scrollRef.value && horizontalBarThumb.value) {\n\t\tconst deltaX = e.clientX - startX\n\t\tconst contentWidth = scrollRef.value.scrollWidth\n\t\tconst containerWidth = scrollRef.value.clientWidth\n\t\tconst ratio = containerWidth / contentWidth\n\n\t\tscrollRef.value.scrollLeft = startScrollLeft + deltaX / ratio\n\t}\n}\n\nconst onMouseup = () => {\n\tisDragging.value = false\n\tisHorizontalDragging.value = false\n\n\t// 拖动结束后,如果鼠标不在滚动区域内,则隐藏滚动条\n\tif (!isHovering.value) {\n\t\tsetTimeout(() => {\n\t\t\tisHovering.value = false\n\t\t}, 300)\n\t}\n\n\t// 移除拖动状态的类\n\tif (scrollRef.value) {\n\t\tscrollRef.value.classList.remove('dragging-scrollbar')\n\t\tscrollRef.value.classList.remove('dragging-scrollbar-horizontal')\n\t}\n}\n\n// 处理滚动事件\nconst handleScroll = (event: Event) => {\n\t// 触发原始滚动事件\n\temit('scroll', event)\n\n\t// 如果是由Tab触发的滚动,不处理滚动检测\n\tif (isTabTriggeredScroll) {\n\t\treturn\n\t}\n\n\tif (!scrollRef.value) return\n\n\t// 获取当前滚动位置\n\tconst scrollTop = scrollRef.value.scrollTop\n\n\t// 触发滚动位置变化事件\n\temit('change', scrollTop)\n\n\t// 检测是否滚动到底部\n\tconst { scrollHeight, clientHeight } = scrollRef.value\n\tif (scrollTop + clientHeight >= scrollHeight - 5) {\n\t\temit('bottom')\n\t}\n\n\t// 如果有滚动点,立即检测当前位置对应哪个点\n\tif (scrollPoints.value.length > 0) {\n\t\t// 先清除之前的定时器\n\t\tif (autoScrollThrottleTimer) {\n\t\t\tclearTimeout(autoScrollThrottleTimer)\n\t\t\tautoScrollThrottleTimer = null\n\t\t}\n\t\tif (scrollUpdateTimer) {\n\t\t\tclearTimeout(scrollUpdateTimer)\n\t\t\tscrollUpdateTimer = null\n\t\t}\n\n\t\t// 使用requestAnimationFrame确保滚动过程中能平滑更新\n\t\trequestAnimationFrame(() => {\n\t\t\t// 重新查找当前滚动位置对应的点\n\t\t\tconst pointValue = findScrollPoint(scrollTop)\n\n\t\t\t// 如果找到点且与当前值不同,立即更新值\n\t\t\tif (pointValue !== null && pointValue !== currentPointValue.value) {\n\t\t\t\t// 更新内部记录的值\n\t\t\t\tcurrentPointValue.value = pointValue\n\n\t\t\t\t// 同时发送两种事件,确保兼容性\n\t\t\t\temit('update:modelValue', pointValue)\n\t\t\t\temit('update:value', pointValue)\n\n\t\t\t\t// 通知滚动点更新高亮状态\n\t\t\t\tnotifyScrollPointsActive(pointValue)\n\n\t\t\t\t// 如果使用了虚拟滚动条,确保它的位置也正确更新\n\t\t\t\tif (props.virtual && barThumb.value) {\n\t\t\t\t\tupdateVirtualScrollbar()\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\t// 标记为正在滚动\n\tisScrolling.value = true\n\n\t// 滚动结束后重置状态\n\tclearTimeout(scrollUpdateTimer)\n\tscrollUpdateTimer = setTimeout(() => {\n\t\tisScrolling.value = false\n\t\temit('scrollEnd')\n\t}, 100)\n}\n\n// 更新虚拟滚动条位置(如果使用)\nconst updateVirtualScrollbar = () => {\n\tif (!scrollRef.value || !props.virtual) return\n\n\t// 强制更新滚动条位置\n\tnextTick(() => {\n\t\tconst { scrollTop, scrollHeight, clientHeight } = scrollRef.value\n\t\tconst thumbHeight = Math.max(30, (clientHeight / scrollHeight) * clientHeight)\n\t\tconst thumbTop = (scrollTop / (scrollHeight - clientHeight)) * (clientHeight - thumbHeight)\n\n\t\tif (barThumb.value) {\n\t\t\tbarThumb.value.style.transform = `translateY(${thumbTop}px)`\n\t\t}\n\t})\n}\n\n// 统一的滚动方法,支持多种参数类型\nconst to = (target: HTMLElement | string | number | any) => {\n\tif (!scrollRef.value) return\n\n\t// 滚动到底部\n\tif (target === '$bottom') {\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: scrollRef.value.scrollHeight - scrollRef.value.clientHeight,\n\t\t\tbehavior: props.virtual ? 'smooth' : 'auto',\n\t\t})\n\t\treturn\n\t}\n\n\t// 滚动到指定元素\n\tif (target instanceof HTMLElement) {\n\t\tconst elementTop = target.getBoundingClientRect().top\n\t\tconst containerTop = scrollRef.value.getBoundingClientRect().top\n\t\tconst relativeTop = elementTop - containerTop + scrollRef.value.scrollTop\n\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: relativeTop,\n\t\t\tbehavior: props.virtual ? 'smooth' : 'auto',\n\t\t})\n\t\treturn\n\t}\n\n\t// 滚动到指定位置(数字或数字字符串)\n\tif (typeof target === 'number' || (typeof target === 'string' && !isNaN(Number(target)))) {\n\t\tconst position = typeof target === 'string' ? Number(target) : target\n\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: position,\n\t\t\tleft: 0,\n\t\t\tbehavior: props.virtual ? 'smooth' : 'auto',\n\t\t})\n\t\treturn\n\t}\n\n\t// 滚动到指定选项配置\n\tif (typeof target === 'object' && target !== null) {\n\t\tscrollRef.value.scrollTo(target)\n\t\treturn\n\t}\n}\n\n// 垂直滚动条样式计算\nconst thumbStyle = computed(() => {\n\tif (!scrollRef.value || !props.virtual) return {}\n\n\tconst { clientHeight, scrollHeight, scrollTop } = scrollRef.value\n\n\t// 计算滚动条高度比例\n\tconst thumbHeight = Math.max(30, (clientHeight / scrollHeight) * clientHeight)\n\n\t// 计算滚动条位置比例\n\tconst thumbTop = (scrollTop / (scrollHeight - clientHeight)) * (clientHeight - thumbHeight)\n\n\treturn {\n\t\theight: `${thumbHeight}px`,\n\t\ttransform: `translateY(${thumbTop}px)`,\n\t\twidth: '6px',\n\t}\n})\n\n// 水平滚动条样式计算\nconst horizontalThumbStyle = computed(() => {\n\tif (!scrollRef.value || !props.virtual) return {}\n\n\tconst { clientWidth, scrollWidth, scrollLeft } = scrollRef.value\n\n\t// 计算滚动条宽度比例\n\tconst thumbWidth = Math.max(30, (clientWidth / scrollWidth) * clientWidth)\n\n\t// 计算滚动条位置比例\n\tconst thumbLeft = (scrollLeft / (scrollWidth - clientWidth)) * (clientWidth - thumbWidth)\n\n\treturn {\n\t\twidth: `${thumbWidth}px`,\n\t\ttransform: `translateX(${thumbLeft}px)`,\n\t\theight: '6px',\n\t}\n})\n\nconst setStyle = computed(() => {\n\tconst obj: {\n\t\theight?: string\n\t\tbackgroundColor: string\n\t} = {\n\t\tbackgroundColor: '#ffffff',\n\t}\n\n\tif (props.height) {\n\t\tif (!isNaN(Number(props.height))) {\n\t\t\tobj.height = props.height + 'em'\n\t\t} else {\n\t\t\tobj.height = String(props.height)\n\t\t}\n\t}\n\n\treturn obj\n})\n\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\n\tif (props.virtual) {\n\t\tarr.push('hide-scrollbar')\n\t}\n\n\t// 添加mode类名\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\n\treturn arr\n})\n\nconst setContentStyle = computed(() => {\n\tconst obj: {\n\t\theight?: string\n\t\tpadding?: string | number\n\t\tpaddingTop?: string\n\t\tpaddingRight?: string\n\t\tpaddingBottom?: string\n\t\tpaddingLeft?: string\n\t\tmaxHeight?: string\n\t\toverflow?: string\n\t\tposition?: 'relative' | 'absolute' | 'fixed' | 'sticky'\n\t\twidth?: string\n\t\tdisplay?: string\n\t} = {}\n\n\tconst hasUnit = (val: string) => /[a-z%]+$/i.test(val)\n\tif (String(props.padding).trim()) {\n\t\t// 分割成各个值\n\t\tconst padded = String(props.padding)\n\t\t\t.trim()\n\t\t\t.split(/\\s+/)\n\t\t\t.map(val => {\n\t\t\t\t// 如果是数字(或纯数字字符串),或末尾无单位,就加 em\n\t\t\t\treturn hasUnit(val) ? val : `${val}em`\n\t\t\t})\n\t\t\t.join(' ')\n\n\t\tobj.padding = padded\n\t}\n\n\tif (props.paddingPosition) {\n\t\t// 根据paddingPosition设置padding位置\n\t\tconst padding = String(props.padding || '0')\n\t\tconst hasUnit = (val: string) => /[a-z%]+$/i.test(val)\n\t\tconst paddingValue = hasUnit(padding) ? padding : `${padding}em`\n\n\t\tswitch (props.paddingPosition) {\n\t\t\tcase 'top':\n\t\t\t\tobj.paddingTop = paddingValue\n\t\t\t\tbreak\n\t\t\tcase 'right':\n\t\t\t\tobj.paddingRight = paddingValue\n\t\t\t\tbreak\n\t\t\tcase 'bottom':\n\t\t\t\tobj.paddingBottom = paddingValue\n\t\t\t\tbreak\n\t\t\tcase 'left':\n\t\t\t\tobj.paddingLeft = paddingValue\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tif (props.virtual) {\n\t\tobj.overflow = 'auto'\n\t\tobj.position = 'relative'\n\t\tobj.width = '100%'\n\t}\n\n\t// 根据 mode 设置特定样式\n\tif (props.mode === 'horizontal') {\n\t\tobj.width = props.virtual ? '100%' : 'max-content'\n\t\tobj.display = 'inline-block'\n\t}\n\n\treturn obj\n})\n\n// 导出方法供父组件调用\ndefineExpose({\n\tto,\n\tscrollRef,\n\tisScrolling,\n\tsetScrollPoints,\n\tfindScrollPoint,\n\tcheckHorizontalScroll,\n})\n</script>\n"],"names":["DO_defineComponent","hasUnit","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Scroll.vue2.mjs","sources":["../../../../../../packages/components/scroll/src/Scroll.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToScroll'\n});\n</script>\n<template>\n\t<div ref=\"scrollRef\" class=\"to-scroll\" :class=\"setClass\" :style=\"setStyle\" @scroll=\"handleScroll\">\n\t\t<!-- 自定义滚动条 -->\n\t\t<div v-if=\"props.virtual\" class=\"to-scroll-bar\" :class=\"[barVisibleClass, { active: isScrolling || isHovering }]\">\n\t\t\t<div ref=\"barThumb\" class=\"to-scroll-thumb\" :style=\"thumbStyle\" @mousedown=\"onThumbMousedown\"></div>\n\t\t</div>\n\n\t\t<!-- 横向滚动条 -->\n\t\t<div v-if=\"props.virtual && hasHorizontalScroll\" class=\"to-scroll-bar horizontal\" :class=\"[barVisibleClass, { active: isScrolling || isHovering }]\">\n\t\t\t<div ref=\"horizontalBarThumb\" class=\"to-scroll-thumb\" :style=\"horizontalThumbStyle\" @mousedown=\"onHorizontalThumbMousedown\"></div>\n\t\t</div>\n\n\t\t<!-- 滚动内容区域 -->\n\t\t<div class=\"to-scroll-content\" :style=\"setContentStyle\" :class=\"{ 'virtual-scroll': props.virtual }\">\n\t\t\t<!-- 默认内容插槽 -->\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch, nextTick, onMounted, onUnmounted, provide } from 'vue'\nimport { scrollProps, ScrollContext } from './scroll'\n\n\n\nconst props = defineProps(scrollProps)\nconst emit = defineEmits<{\n\t(e: 'scroll', event: Event): void\n\t(e: 'scrollEnd'): void\n\t(e: 'change', position: number): void\n\t(e: 'update:value', position: number | string): void\n\t(e: 'update:modelValue', position: number | string): void\n\t(e: 'bottom'): void\n}>()\n\nconst scrollRef = ref<HTMLElement | null>(null)\nconst barThumb = ref<HTMLElement | null>(null)\nconst horizontalBarThumb = ref<HTMLElement | null>(null)\nconst isScrolling = ref(false)\nconst isHovering = ref(false)\n// 添加一个标志来标识是否由tab点击导致的滚动\nlet isTabTriggeredScroll = false\n// 添加自动滚动的节流控制\nlet autoScrollThrottleTimer: ReturnType<typeof setTimeout> | null = null\n// 滚动防抖定时器\nlet scrollUpdateTimer: ReturnType<typeof setTimeout> | null = null\nlet isDragging = ref(false)\nlet isHorizontalDragging = ref(false)\nlet startY = 0\nlet startX = 0\nlet startScrollTop = 0\nlet startScrollLeft = 0\nconst hasHorizontalScroll = ref(false)\n// 存储滚动点信息\nconst scrollPoints = ref<Array<{ value: string | number; start: number; end: number }>>([])\n// 获取当前绑定值(优先使用modelValue,兼容value)\nconst bindValue = computed(() => props.modelValue || props.value)\n// 当前选中的滚动点值\nconst currentPointValue = ref<string | number | null>(bindValue.value || null)\n\n// 提供给子组件的上下文\nprovide<ScrollContext>('ToScroll', {\n\tregisterScrollPoint: (_el: HTMLElement, _value: string | number) => {\n\t\t// 在下一个渲染周期更新滚动点\n\t\tnextTick(() => {\n\t\t\tsetScrollPoints()\n\t\t})\n\t}\n})\n\n// 提供当前值给子组件\nprovide('scrollValue', currentPointValue)\n\n// 计算属性\nconst barVisibleClass = computed(() => {\n\treturn `bar-${String(props.barDisplay)}`\n})\n\n// 检查是否需要横向滚动条\nconst checkHorizontalScroll = () => {\n\tif (scrollRef.value) {\n\t\tconst { scrollWidth, clientWidth } = scrollRef.value\n\t\thasHorizontalScroll.value = scrollWidth > clientWidth\n\t}\n}\n\n// 设置滚动点\nconst setScrollPoints = () => {\n\tif (!scrollRef.value) return\n\n\t// 先清空现有的滚动点\n\tscrollPoints.value = []\n\n\t// 查找所有滚动点元素\n\tconst nodes = scrollRef.value.querySelectorAll('.to-scroll-point')\n\tif (!nodes || nodes.length === 0) {\n\t\treturn\n\t}\n\n\t// 收集滚动点信息\n\tnodes.forEach(item => {\n\t\tconst itemEl = item as HTMLElement\n\t\t// 获取滚动点的值\n\t\tconst pointValue = itemEl.getAttribute('data-point-value') || ''\n\n\t\t// 获取元素相对于滚动容器的精确位置\n\t\tconst offsetTop = itemEl.offsetTop\n\t\tconst height = itemEl.offsetHeight\n\n\t\t// 记录滚动点信息\n\t\tscrollPoints.value.push({\n\t\t\tvalue: pointValue,\n\t\t\tstart: offsetTop,\n\t\t\tend: offsetTop + height\n\t\t})\n\t})\n\n\t// 初始滚动到指定位置\n\tif (props.value && scrollRef.value) {\n\t\tscrollToValue(props.value, 'auto')\n\t}\n}\n\n// 滚动到指定值对应的位置\nconst scrollToValue = (value: string | number, behavior: ScrollBehavior = 'smooth') => {\n\tif (!scrollRef.value || !scrollPoints.value.length) return false\n\n\t// 查找匹配值的滚动点\n\tconst targetPoint = scrollPoints.value.find(p => String(p.value) === String(value))\n\tif (targetPoint) {\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: targetPoint.start,\n\t\t\tbehavior: behavior\n\t\t})\n\n\t\t// 主动触发滚动点高亮状态更新\n\t\tnotifyScrollPointsActive(value)\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n// 主动通知滚动点更新高亮状态\nconst notifyScrollPointsActive = (activeValue: string | number) => {\n\t// 使用事件通知,避免直接操作DOM\n\tif (scrollRef.value) {\n\t\tconst event = new CustomEvent('scroll-point-active', {\n\t\t\tdetail: { value: activeValue },\n\t\t\tbubbles: true\n\t\t})\n\t\tscrollRef.value.dispatchEvent(event)\n\n\t\t// 确保更新内部状态\n\t\tcurrentPointValue.value = activeValue\n\t}\n}\n\n// 根据当前滚动位置查找对应的滚动点值\nconst findScrollPoint = (scrollTop: number): string | number | null => {\n\tif (!scrollPoints.value.length || !scrollRef.value) return null\n\n\tconst clientHeight = scrollRef.value.clientHeight\n\tconst scrollBottom = scrollTop + clientHeight\n\n\t// 1. 精确匹配:如果滚动位置恰好在某个滚动点的顶部附近\n\tfor (const point of scrollPoints.value) {\n\t\t// 如果滚动位置在点顶部的±10px范围内,优先选择该点\n\t\tif (Math.abs(scrollTop - point.start) < 10) {\n\t\t\treturn point.value\n\t\t}\n\t}\n\n\t// 2. 完全包含的滚动点:如果视口完全包含某个滚动点\n\tfor (const point of scrollPoints.value) {\n\t\tif (scrollTop <= point.start && scrollBottom >= point.end) {\n\t\t\treturn point.value\n\t\t}\n\t}\n\n\t// 3. 查找当前在视口中显示最多的点\n\tlet bestPoint = null\n\tlet maxVisibleHeight = 0\n\n\tfor (const point of scrollPoints.value) {\n\t\t// 计算可见部分\n\t\tconst visibleTop = Math.max(scrollTop, point.start)\n\t\tconst visibleBottom = Math.min(scrollBottom, point.end)\n\t\tconst visibleHeight = visibleBottom - visibleTop\n\n\t\t// 如果有可见部分,并且可见高度最大,选择该点\n\t\tif (visibleHeight > 0 && visibleHeight > maxVisibleHeight) {\n\t\t\tmaxVisibleHeight = visibleHeight\n\t\t\tbestPoint = point\n\t\t}\n\t}\n\n\t// 4. 特殊情况处理:滚动到顶部或底部\n\tif (scrollTop < 5 && scrollPoints.value.length > 0) {\n\t\treturn scrollPoints.value[0].value // 顶部\n\t}\n\n\tif (scrollBottom >= scrollRef.value.scrollHeight - 5 && scrollPoints.value.length > 0) {\n\t\treturn scrollPoints.value[scrollPoints.value.length - 1].value // 底部\n\t}\n\n\t// 5. 如果找到了最佳点,返回它的值\n\tif (bestPoint) {\n\t\treturn bestPoint.value\n\t}\n\n\t// 6. 后备方案:返回最接近当前滚动位置的点\n\tlet closestPoint = null\n\tlet minDistance = Infinity\n\n\tfor (const point of scrollPoints.value) {\n\t\tconst distance = Math.min(Math.abs(scrollTop - point.start), Math.abs(scrollBottom - point.end))\n\n\t\tif (distance < minDistance) {\n\t\t\tminDistance = distance\n\t\t\tclosestPoint = point\n\t\t}\n\t}\n\n\treturn closestPoint ? closestPoint.value : null\n}\n\n// 监听value/modelValue变化\nwatch(\n\t() => bindValue.value,\n\t(newVal, oldVal) => {\n\t\t// 避免重复处理相同的值\n\t\tif (newVal === oldVal || newVal === currentPointValue.value) return\n\n\t\t// 更新内部记录的值\n\t\tcurrentPointValue.value = newVal\n\n\t\t// 如果是由Tab变化引起的,滚动到对应位置\n\t\tif (!isScrolling.value) {\n\t\t\t// 标记为Tab触发的滚动,避免滚动过程中再次触发更新\n\t\t\tisTabTriggeredScroll = true\n\n\t\t\tnextTick(() => {\n\t\t\t\t// 尝试滚动到对应位置\n\t\t\t\tconst scrollSuccess = scrollToValue(newVal)\n\n\t\t\t\t// 如果滚动失败(没找到对应的滚动点),尝试重新计算滚动点后再滚动\n\t\t\t\tif (!scrollSuccess) {\n\t\t\t\t\tsetScrollPoints()\n\t\t\t\t\tscrollToValue(newVal)\n\t\t\t\t}\n\n\t\t\t\t// 滚动动作完成后重置标记\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tisTabTriggeredScroll = false\n\t\t\t\t}, 500) // 等待滚动动画完成\n\t\t\t})\n\t\t}\n\t},\n\t{ immediate: true }\n)\n\nonMounted(() => {\n\t// 组件挂载后,设置滚动点\n\tnextTick(() => {\n\t\t// 收集滚动点\n\t\tsetScrollPoints()\n\n\t\t// 设置观察器,监听DOM变化重新收集滚动点\n\t\tconst observer = new MutationObserver(() => {\n\t\t\tsetScrollPoints()\n\t\t})\n\n\t\tif (scrollRef.value) {\n\t\t\tobserver.observe(scrollRef.value, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t\tattributes: true,\n\t\t\t\tattributeFilter: ['data-point-value']\n\t\t\t})\n\n\t\t\t// 如果有初始值,滚动到对应位置\n\t\t\tif (props.value) {\n\t\t\t\t// 延迟执行,确保DOM完全渲染\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (typeof props.value === 'string' || typeof props.value === 'number') {\n\t\t\t\t\t\tscrollToValue(props.value, 'auto')\n\t\t\t\t\t}\n\t\t\t\t}, 100)\n\t\t\t}\n\t\t}\n\t})\n\n\tif (props.virtual) {\n\t\twindow.addEventListener('mousemove', onMousemove)\n\t\twindow.addEventListener('mouseup', onMouseup)\n\t\twindow.addEventListener('mouseleave', onMouseup)\n\n\t\t// 添加鼠标进入和离开事件\n\t\tif (scrollRef.value) {\n\t\t\tscrollRef.value.addEventListener('mouseenter', onMouseenter)\n\t\t\tscrollRef.value.addEventListener('mouseleave', onMouseleave)\n\t\t}\n\n\t\t// 检查是否需要横向滚动条\n\t\tnextTick(() => {\n\t\t\tcheckHorizontalScroll()\n\t\t})\n\t}\n})\n\nonUnmounted(() => {\n\tif (props.virtual) {\n\t\twindow.removeEventListener('mousemove', onMousemove)\n\t\twindow.removeEventListener('mouseup', onMouseup)\n\t\twindow.removeEventListener('mouseleave', onMouseup)\n\n\t\t// 移除鼠标进入和离开事件\n\t\tif (scrollRef.value) {\n\t\t\tscrollRef.value.removeEventListener('mouseenter', onMouseenter)\n\t\t\tscrollRef.value.removeEventListener('mouseleave', onMouseleave)\n\t\t}\n\t}\n\n\t// 清除所有定时器\n\tif (scrollUpdateTimer) {\n\t\tclearTimeout(scrollUpdateTimer)\n\t\tscrollUpdateTimer = null\n\t}\n\n\tif (autoScrollThrottleTimer) {\n\t\tclearTimeout(autoScrollThrottleTimer)\n\t\tautoScrollThrottleTimer = null\n\t}\n})\n\n// 鼠标进入滚动区域\nconst onMouseenter = () => {\n\tisHovering.value = true\n}\n\n// 鼠标离开滚动区域\nconst onMouseleave = () => {\n\tif (!isDragging.value && !isHorizontalDragging.value) {\n\t\tisHovering.value = false\n\t}\n}\n\n// 虚拟滚动条垂直拖动\nconst onThumbMousedown = (e: MouseEvent) => {\n\tif (!scrollRef.value || !props.virtual) return\n\te.preventDefault()\n\te.stopPropagation()\n\n\t// 添加拖动状态的类,用于CSS样式调整\n\tif (scrollRef.value) {\n\t\tscrollRef.value.classList.add('dragging-scrollbar')\n\t}\n\n\tstartY = e.clientY\n\tstartScrollTop = scrollRef.value.scrollTop\n\tisDragging.value = true\n}\n\n// 虚拟滚动条水平拖动\nconst onHorizontalThumbMousedown = (e: MouseEvent) => {\n\tif (!scrollRef.value || !props.virtual) return\n\te.preventDefault()\n\te.stopPropagation()\n\n\t// 添加拖动状态的类,用于CSS样式调整\n\tif (scrollRef.value) {\n\t\tscrollRef.value.classList.add('dragging-scrollbar-horizontal')\n\t}\n\n\tstartX = e.clientX\n\tstartScrollLeft = scrollRef.value.scrollLeft\n\tisHorizontalDragging.value = true\n}\n\nconst onMousemove = (e: MouseEvent) => {\n\t// 处理垂直拖动\n\tif (isDragging.value && scrollRef.value && barThumb.value) {\n\t\tconst deltaY = e.clientY - startY\n\t\tconst contentHeight = scrollRef.value.scrollHeight\n\t\tconst containerHeight = scrollRef.value.clientHeight\n\t\tconst ratio = containerHeight / contentHeight\n\n\t\tscrollRef.value.scrollTop = startScrollTop + deltaY / ratio\n\t}\n\n\t// 处理水平拖动\n\tif (isHorizontalDragging.value && scrollRef.value && horizontalBarThumb.value) {\n\t\tconst deltaX = e.clientX - startX\n\t\tconst contentWidth = scrollRef.value.scrollWidth\n\t\tconst containerWidth = scrollRef.value.clientWidth\n\t\tconst ratio = containerWidth / contentWidth\n\n\t\tscrollRef.value.scrollLeft = startScrollLeft + deltaX / ratio\n\t}\n}\n\nconst onMouseup = () => {\n\tisDragging.value = false\n\tisHorizontalDragging.value = false\n\n\t// 拖动结束后,如果鼠标不在滚动区域内,则隐藏滚动条\n\tif (!isHovering.value) {\n\t\tsetTimeout(() => {\n\t\t\tisHovering.value = false\n\t\t}, 300)\n\t}\n\n\t// 移除拖动状态的类\n\tif (scrollRef.value) {\n\t\tscrollRef.value.classList.remove('dragging-scrollbar')\n\t\tscrollRef.value.classList.remove('dragging-scrollbar-horizontal')\n\t}\n}\n\n// 处理滚动事件\nconst handleScroll = (event: Event) => {\n\t// 触发原始滚动事件\n\temit('scroll', event)\n\n\t// 如果是由Tab触发的滚动,不处理滚动检测\n\tif (isTabTriggeredScroll) {\n\t\treturn\n\t}\n\n\tif (!scrollRef.value) return\n\n\t// 获取当前滚动位置\n\tconst scrollTop = scrollRef.value.scrollTop\n\n\t// 触发滚动位置变化事件\n\temit('change', scrollTop)\n\n\t// 检测是否滚动到底部\n\tconst { scrollHeight, clientHeight } = scrollRef.value\n\tif (scrollTop + clientHeight >= scrollHeight - 5) {\n\t\temit('bottom')\n\t}\n\n\t// 如果有滚动点,立即检测当前位置对应哪个点\n\tif (scrollPoints.value.length > 0) {\n\t\t// 先清除之前的定时器\n\t\tif (autoScrollThrottleTimer) {\n\t\t\tclearTimeout(autoScrollThrottleTimer)\n\t\t\tautoScrollThrottleTimer = null\n\t\t}\n\t\tif (scrollUpdateTimer) {\n\t\t\tclearTimeout(scrollUpdateTimer)\n\t\t\tscrollUpdateTimer = null\n\t\t}\n\n\t\t// 使用requestAnimationFrame确保滚动过程中能平滑更新\n\t\trequestAnimationFrame(() => {\n\t\t\t// 重新查找当前滚动位置对应的点\n\t\t\tconst pointValue = findScrollPoint(scrollTop)\n\n\t\t\t// 如果找到点且与当前值不同,立即更新值\n\t\t\tif (pointValue !== null && pointValue !== currentPointValue.value) {\n\t\t\t\t// 更新内部记录的值\n\t\t\t\tcurrentPointValue.value = pointValue\n\n\t\t\t\t// 同时发送两种事件,确保兼容性\n\t\t\t\temit('update:modelValue', pointValue)\n\t\t\t\temit('update:value', pointValue)\n\n\t\t\t\t// 通知滚动点更新高亮状态\n\t\t\t\tnotifyScrollPointsActive(pointValue)\n\n\t\t\t\t// 如果使用了虚拟滚动条,确保它的位置也正确更新\n\t\t\t\tif (props.virtual && barThumb.value) {\n\t\t\t\t\tupdateVirtualScrollbar()\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\t// 标记为正在滚动\n\tisScrolling.value = true\n\n\t// 滚动结束后重置状态\n\tclearTimeout(scrollUpdateTimer)\n\tscrollUpdateTimer = setTimeout(() => {\n\t\tisScrolling.value = false\n\t\temit('scrollEnd')\n\t}, 100)\n}\n\n// 更新虚拟滚动条位置(如果使用)\nconst updateVirtualScrollbar = () => {\n\tif (!scrollRef.value || !props.virtual) return\n\n\t// 强制更新滚动条位置\n\tnextTick(() => {\n\t\tconst { scrollTop, scrollHeight, clientHeight } = scrollRef.value\n\t\tconst thumbHeight = Math.max(30, (clientHeight / scrollHeight) * clientHeight)\n\t\tconst thumbTop = (scrollTop / (scrollHeight - clientHeight)) * (clientHeight - thumbHeight)\n\n\t\tif (barThumb.value) {\n\t\t\tbarThumb.value.style.transform = `translateY(${thumbTop}px)`\n\t\t}\n\t})\n}\n\n// 统一的滚动方法,支持多种参数类型\nconst to = (target: HTMLElement | string | number | any) => {\n\tif (!scrollRef.value) return\n\n\t// 滚动到底部\n\tif (target === '$bottom') {\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: scrollRef.value.scrollHeight - scrollRef.value.clientHeight,\n\t\t\tbehavior: props.virtual ? 'smooth' : 'auto'\n\t\t})\n\t\treturn\n\t}\n\n\t// 滚动到指定元素\n\tif (target instanceof HTMLElement) {\n\t\tconst elementTop = target.getBoundingClientRect().top\n\t\tconst containerTop = scrollRef.value.getBoundingClientRect().top\n\t\tconst relativeTop = elementTop - containerTop + scrollRef.value.scrollTop\n\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: relativeTop,\n\t\t\tbehavior: props.virtual ? 'smooth' : 'auto'\n\t\t})\n\t\treturn\n\t}\n\n\t// 滚动到指定位置(数字或数字字符串)\n\tif (typeof target === 'number' || (typeof target === 'string' && !isNaN(Number(target)))) {\n\t\tconst position = typeof target === 'string' ? Number(target) : target\n\n\t\tscrollRef.value.scrollTo({\n\t\t\ttop: position,\n\t\t\tleft: 0,\n\t\t\tbehavior: props.virtual ? 'smooth' : 'auto'\n\t\t})\n\t\treturn\n\t}\n\n\t// 滚动到指定选项配置\n\tif (typeof target === 'object' && target !== null) {\n\t\tscrollRef.value.scrollTo(target)\n\t\treturn\n\t}\n}\n\n// 垂直滚动条样式计算\nconst thumbStyle = computed(() => {\n\tif (!scrollRef.value || !props.virtual) return {}\n\n\tconst { clientHeight, scrollHeight, scrollTop } = scrollRef.value\n\n\t// 计算滚动条高度比例\n\tconst thumbHeight = Math.max(30, (clientHeight / scrollHeight) * clientHeight)\n\n\t// 计算滚动条位置比例\n\tconst thumbTop = (scrollTop / (scrollHeight - clientHeight)) * (clientHeight - thumbHeight)\n\n\treturn {\n\t\theight: `${thumbHeight}px`,\n\t\ttransform: `translateY(${thumbTop}px)`,\n\t\twidth: '6px'\n\t}\n})\n\n// 水平滚动条样式计算\nconst horizontalThumbStyle = computed(() => {\n\tif (!scrollRef.value || !props.virtual) return {}\n\n\tconst { clientWidth, scrollWidth, scrollLeft } = scrollRef.value\n\n\t// 计算滚动条宽度比例\n\tconst thumbWidth = Math.max(30, (clientWidth / scrollWidth) * clientWidth)\n\n\t// 计算滚动条位置比例\n\tconst thumbLeft = (scrollLeft / (scrollWidth - clientWidth)) * (clientWidth - thumbWidth)\n\n\treturn {\n\t\twidth: `${thumbWidth}px`,\n\t\ttransform: `translateX(${thumbLeft}px)`,\n\t\theight: '6px'\n\t}\n})\n\nconst setStyle = computed(() => {\n\tconst obj: {\n\t\theight?: string\n\t} = {}\n\n\tif (props.height) {\n\t\tif (!isNaN(Number(props.height))) {\n\t\t\tobj.height = props.height + 'em'\n\t\t} else {\n\t\t\tobj.height = String(props.height)\n\t\t}\n\t}\n\n\treturn obj\n})\n\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\n\tif (props.virtual) {\n\t\tarr.push('hide-scrollbar')\n\t}\n\n\t// 添加mode类名\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\n\treturn arr\n})\n\nconst setContentStyle = computed(() => {\n\tconst obj: {\n\t\theight?: string\n\t\tpadding?: string | number\n\t\tpaddingTop?: string\n\t\tpaddingRight?: string\n\t\tpaddingBottom?: string\n\t\tpaddingLeft?: string\n\t\tmaxHeight?: string\n\t\toverflow?: string\n\t\tposition?: 'relative' | 'absolute' | 'fixed' | 'sticky'\n\t\twidth?: string\n\t\tdisplay?: string\n\t} = {}\n\n\tconst hasUnit = (val: string) => /[a-z%]+$/i.test(val)\n\tif (String(props.padding).trim()) {\n\t\t// 分割成各个值\n\t\tconst padded = String(props.padding)\n\t\t\t.trim()\n\t\t\t.split(/\\s+/)\n\t\t\t.map(val => {\n\t\t\t\t// 如果是数字(或纯数字字符串),或末尾无单位,就加 em\n\t\t\t\treturn hasUnit(val) ? val : `${val}em`\n\t\t\t})\n\t\t\t.join(' ')\n\n\t\tobj.padding = padded\n\t}\n\n\tif (props.paddingPosition) {\n\t\t// 根据paddingPosition设置padding位置\n\t\tconst padding = String(props.padding || '0')\n\t\tconst hasUnit = (val: string) => /[a-z%]+$/i.test(val)\n\t\tconst paddingValue = hasUnit(padding) ? padding : `${padding}em`\n\n\t\tswitch (props.paddingPosition) {\n\t\t\tcase 'top':\n\t\t\t\tobj.paddingTop = paddingValue\n\t\t\t\tbreak\n\t\t\tcase 'right':\n\t\t\t\tobj.paddingRight = paddingValue\n\t\t\t\tbreak\n\t\t\tcase 'bottom':\n\t\t\t\tobj.paddingBottom = paddingValue\n\t\t\t\tbreak\n\t\t\tcase 'left':\n\t\t\t\tobj.paddingLeft = paddingValue\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tif (props.virtual) {\n\t\tobj.overflow = 'auto'\n\t\tobj.position = 'relative'\n\t\tobj.width = '100%'\n\t}\n\n\t// 根据 mode 设置特定样式\n\tif (props.mode === 'horizontal') {\n\t\tobj.width = props.virtual ? '100%' : 'max-content'\n\t\tobj.display = 'inline-block'\n\t}\n\n\treturn obj\n})\n\n// 导出方法供父组件调用\ndefineExpose({\n\tto,\n\tscrollRef,\n\tisScrolling,\n\tsetScrollPoints,\n\tfindScrollPoint,\n\tcheckHorizontalScroll\n})\n</script>\n"],"names":["DO_defineComponent","hasUnit","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot"],"mappings":"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"}
|
|
@@ -40,6 +40,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
40
40
|
}
|
|
41
41
|
return arr;
|
|
42
42
|
});
|
|
43
|
+
const setStyle = computed(() => {
|
|
44
|
+
const obj = {};
|
|
45
|
+
if (props.offset) {
|
|
46
|
+
obj["--rotate-offset"] = props.offset + "em";
|
|
47
|
+
}
|
|
48
|
+
return obj;
|
|
49
|
+
});
|
|
43
50
|
const extractTextFromSlot = () => {
|
|
44
51
|
if (!slots.default)
|
|
45
52
|
return "";
|
|
@@ -65,7 +72,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
65
72
|
return (_ctx, _cache) => {
|
|
66
73
|
return openBlock(), createElementBlock("div", {
|
|
67
74
|
class: normalizeClass(["to-tag", setClass.value]),
|
|
68
|
-
style: normalizeStyle(
|
|
75
|
+
style: normalizeStyle(setStyle.value)
|
|
69
76
|
}, [
|
|
70
77
|
createElementVNode("div", { class: "to-tag-wrapper" }, [
|
|
71
78
|
unref(slots).icon ? (openBlock(), createElementBlock("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.vue2.mjs","sources":["../../../../../../packages/components/tag/src/tag.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToTag',\n\tcomponentName: 'ToTag'\n});\n</script>\n<template>\n\t<div class=\"to-tag\" :class=\"setClass\" :style=\"
|
|
1
|
+
{"version":3,"file":"tag.vue2.mjs","sources":["../../../../../../packages/components/tag/src/tag.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToTag',\n\tcomponentName: 'ToTag'\n});\n</script>\n<template>\n\t<div class=\"to-tag\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<div class=\"to-tag-wrapper\">\n\t\t\t<div v-if=\"slots.icon\" class=\"to-tag-icon\">\n\t\t\t\t<slot name=\"icon\"></slot>\n\t\t\t</div>\n\t\t\t<div class=\"to-tag-text\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t\t<div v-if=\"removable\" class=\"to-tag-remove\" @click.stop=\"removeHandle\"></div>\n\t\t</div>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport { CSSProperties, computed, useSlots } from 'vue'\n\nconst slots = useSlots()\nconst slotText = computed(() => extractTextFromSlot())\ninterface Props {\n\tmode?: string\n\tcolor?: string\n\tremovable?: boolean\n\tposition?: string\n\tlink?: boolean\n\ttype?: string\n\toffset?: number | string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n\tmode: 'default',\n\tcolor: '',\n\tremovable: false,\n\tposition: '',\n\tlink: false,\n\ttype: 'normal',\n\toffset: 0\n})\n\nconst emit = defineEmits<{\n\t/**\n\t * @deprecated use remove event\n\t */\n\tremove: [data: any]\n\tbeforeRemove: [data: any]\n}>()\n\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\tif (props.color) {\n\t\tarr.push(`color-${props.color}`)\n\t}\n\tif (props.type) {\n\t\tarr.push(`type-${props.type}`)\n\t}\n\tif (props.position) {\n\t\tarr.push(`position-${props.position}`)\n\t}\n\tif (props.link) {\n\t\tarr.push('is-link')\n\t}\n\treturn arr\n})\nconst setStyle = computed(() => {\n\tconst obj: CSSProperties = {}\n\n\t// 设置 offset\n\tif (props.offset) {\n\t\tobj['--rotate-offset'] = props.offset + 'em'\n\t}\n\n\treturn obj\n})\n\n// 提取插槽文本\nconst extractTextFromSlot = (): string => {\n\tif (!slots.default) return ''\n\n\tconst content = slots.default()\n\treturn extractTextFromVNodes(content)\n}\n\nconst extractTextFromVNodes = (vnodes: any[]): string => {\n\treturn vnodes\n\t\t.map(vnode => {\n\t\t\tif (typeof vnode.children === 'string') {\n\t\t\t\treturn vnode.children\n\t\t\t} else if (Array.isArray(vnode.children)) {\n\t\t\t\treturn extractTextFromVNodes(vnode.children)\n\t\t\t}\n\t\t\treturn ''\n\t\t})\n\t\t.join('')\n\t\t.trim()\n}\n\n// 删除处理函数\nconst removeHandle = () => {\n\temit('beforeRemove', slotText.value)\n\tsetTimeout(() => {\n\t\temit('remove', slotText.value)\n\t})\n}\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_normalizeClass","_createElementVNode","_unref","_renderSlot","removable"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../packages/components/tooltip/index.ts"],"sourcesContent":["import Tooltip from './src/tooltip.vue'\nimport { SFCWithInstall, withInstall } from '@touchvue/utils'\n\nexport const ToTooltip: SFCWithInstall<typeof Tooltip> = withInstall(Tooltip)\n\nexport * from './src/instance'\n"],"names":["Tooltip"],"mappings":";;;AAGa,MAAA,SAAA,GAA4C,YAAYA,SAAO;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.mjs","sources":["../../../../../../packages/components/tooltip/src/tooltip.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue'\n\nexport const tooltipProps = {\n\tevent: {\n\t\ttype: String,\n\t\tdefault: ''\n\t},\n\tshadow: Boolean,\n\tposition: {\n\t\ttype: String,\n\t\tdefault: 'auto'\n\t},\n\talign: {\n\t\ttype: String,\n\t\tdefault: 'auto'\n\t},\n\tcolor: {\n\t\ttype: String,\n\t\tdefault: ''\n\t},\n\twidth: {\n\t\ttype: [Number, String],\n\t\tdefault: ''\n\t},\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault() {\n\t\t\t// if (this.$TouchUI && this.$TouchUI.tooltip && this.$TouchUI.tooltip.lazy === false) {\n\t\t\t// \treturn false\n\t\t\t// } else {\n\t\t\t// \treturn true\n\t\t\t// }\n\t\t\treturn true\n\t\t}\n\t},\n\tcloseOnBlur: {\n\t\t// 是否可以通过点击 modal 关闭 Tooltip\n\t\ttype: Boolean,\n\t\tdefault: true\n\t},\n\tisScrollClose: {\n\t\t// 鼠标滚动时,是否关闭 tooltip\n\t\ttype: Boolean,\n\t\tdefault: true\n\t},\n\tdelay: {\n\t\ttype: [Number, String],\n\t\tdefault: 0\n\t},\n\tmode: {\n\t\ttype: String,\n\t\tdefault: ''\n\t},\n\tzIndex: {\n\t\ttype: Number,\n\t\tdefault: 0\n\t}\n}\n\nexport type TooltipPropsProps = ExtractPropTypes<typeof tooltipProps>\n\nexport const tooltipEmits = ['beforeOpen', 'opened']\n\nexport type TooltipEmits = typeof tooltipEmits\n"],"names":[],"mappings":"AAEO,MAAM,YAAe,GAAA;AAAA,EAC3B,KAAO,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACV;AAAA,EACA,MAAQ,EAAA,OAAA;AAAA,EACR,QAAU,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACV;AAAA,EACA,KAAO,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACV;AAAA,EACA,KAAO,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACV;AAAA,EACA,KAAO,EAAA;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,IACrB,OAAS,EAAA,EAAA;AAAA,GACV;AAAA,EACA,IAAM,EAAA;AAAA,IACL,IAAM,EAAA,OAAA;AAAA,IACN,OAAU,GAAA;AAMT,MAAO,OAAA,IAAA,CAAA;AAAA,KACR;AAAA,GACD;AAAA,EACA,WAAa,EAAA;AAAA;AAAA,IAEZ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACV;AAAA,EACA,aAAe,EAAA;AAAA;AAAA,IAEd,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACV;AAAA,EACA,KAAO,EAAA;AAAA,IACN,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,IACrB,OAAS,EAAA,CAAA;AAAA,GACV;AAAA,EACA,IAAM,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACV;AAAA,EACA,MAAQ,EAAA;AAAA,IACP,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACV;AACD,EAAA;AAIa,MAAA,YAAA,GAAe,CAAC,YAAA,EAAc,QAAQ;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/es/packages/components/{toolTip/src/toolTip.vue2.mjs → tooltip/src/tooltip.vue2.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, ref, getCurrentInstance, computed, onDeactivated, onBeforeUnmount, nextTick, openBlock, createElementBlock, normalizeClass, normalizeStyle, createElementVNode, renderSlot, createCommentVNode } from 'vue';
|
|
2
|
-
import { tooltipProps, tooltipEmits } from './
|
|
2
|
+
import { tooltipProps, tooltipEmits } from './tooltip.mjs';
|
|
3
3
|
|
|
4
4
|
const __default__ = defineComponent({
|
|
5
5
|
name: "ToTooltip"
|
|
@@ -340,4 +340,4 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
340
340
|
});
|
|
341
341
|
|
|
342
342
|
export { _sfc_main as default };
|
|
343
|
-
//# sourceMappingURL=
|
|
343
|
+
//# sourceMappingURL=tooltip.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.vue2.mjs","sources":["../../../../../../packages/components/tooltip/src/tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToTooltip'\n});\n</script>\n<template>\n\t<div v-if=\"lazy ? show : true\" ref=\"tooltip\" class=\"to-tooltip\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<div ref=\"arrow\" class=\"arrow\"></div>\n\t\t<div ref=\"content\" class=\"content\" :class=\"setContentClass\">\n\t\t\t<slot></slot>\n\t\t</div>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, computed, onDeactivated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\nimport { tooltipProps, tooltipEmits } from './tooltip'\n\nconst props = defineProps(tooltipProps)\nconst emit = defineEmits(tooltipEmits)\nconst blurable = ref(false)\nconst ialign = ref('')\nconst iarrow = ref('')\nconst iposition = ref('')\nconst show = ref(false)\nconst timer = ref(null)\nconst link = ref(null)\n\n// dom\nconst arrow = ref(null)\nconst content = ref(null)\nconst scrollNode = ref(null)\nconst tooltip = ref(null)\nconst instance = getCurrentInstance()\n\nconst setClass = computed(() => {\n\tlet arr = []\n\tif (props.shadow) {\n\t\tarr.push('to-tooltip-shadow')\n\t}\n\tif (props.color) {\n\t\tif (props.color !== 'radam') {\n\t\t\tarr.push(`to-tooltip-color-${props.color}`)\n\t\t}\n\t\t// else {\n\t\t// \tlet colors = this.$TouchUI.colors\n\t\t// \tlet number = Math.round(Math.random() * 6)\n\t\t// \tarr.push(`to-tooltip-color-${ colors[number]}`);\n\t\t// }\n\t}\n\tif (iposition.value) {\n\t\tarr.push(`to-tooltip-position-${iposition.value}`)\n\t}\n\tif (iarrow.value) {\n\t\tarr.push(`to-tooltip-arrow-${iarrow.value}`)\n\t}\n\tif (show.value) {\n\t\tarr.push('to-tooltip-show')\n\t}\n\treturn arr\n})\nconst setContentClass = computed(() => {\n\tlet arr = []\n\tif (props.mode) {\n\t\tarr.push(`to-tooltip-mode-${props.mode}`)\n\t}\n\treturn arr\n})\nconst setStyle = computed(() => {\n\tlet obj: {\n\t\twidth: string\n\t} = {\n\t\twidth: ''\n\t}\n\tif (props.width) {\n\t\tif (!isNaN(props.width as number)) {\n\t\t\tobj.width = props.width + 'em'\n\t\t} else if (props.width === 'full') {\n\t\t\tobj.width = '100%'\n\t\t} else {\n\t\t\tobj.width = props.width as string\n\t\t}\n\t}\n\treturn obj\n})\nonDeactivated(() => {\n\t// 组件销毁时销毁事件\n\tdestroy()\n})\nonBeforeUnmount(() => {\n\t// 组件销毁时销毁事件\n\tdestroy()\n})\nconst destroy = () => {\n\t// 销毁事件绑定\n\tif (document.body && document.body.removeEventListener) {\n\t\tdocument.body.removeEventListener('click', blur)\n\t}\n\n\tif (scrollNode.value && scrollNode.value.removeEventListener) {\n\t\tscrollNode.value.removeEventListener('scroll', close)\n\t}\n\n\t// 销毁移动过的 DOM\n\t// if (this.$el.parentNode) {\n\t// \tthis.$el.parentNode.removeChild(this.$el)\n\t// }\n\n\tif (timer.value) {\n\t\tclearTimeout(timer.value)\n\t\ttimer.value = null\n\t}\n}\nconst set = link => {\n\t// 整体参数\n\tconst bodyHeight = document.body.clientHeight\n\tconst bodyWidth = document.body.clientWidth\n\n\t// 目标参数\n\tconst linkHeight = link.offsetHeight\n\tconst linkWidth = link.offsetWidth\n\tconst linkTop = link.getBoundingClientRect().top\n\tconst linkLeft = link.getBoundingClientRect().left\n\tconst linkBottom = bodyHeight - linkTop - linkHeight\n\tconst linkRight = bodyWidth - linkLeft - linkWidth\n\tconst linkX = linkLeft + linkWidth / 2\n\tconst linkY = linkTop + linkHeight / 2\n\tconst arrowSize = arrow.value.offsetHeight\n\n\t// 提示参数\n\tlet tipWidth = content.value.offsetWidth\n\tlet tipHeight = content.value.offsetHeight\n\n\t// 已定义直接取值\n\tif (props.position !== 'auto') {\n\t\tiposition.value = props.position\n\t}\n\n\t// 未定义位置则需要计算从上还是从下弹出\n\telse {\n\t\t// 顶部空间足够则从顶部显示\n\t\tif (linkTop >= tipHeight + arrowSize / 2) {\n\t\t\tiposition.value = 'top'\n\t\t}\n\n\t\t// 底部空间足够则从底部显示\n\t\telse if (linkBottom >= tipHeight + arrowSize / 2) {\n\t\t\tiposition.value = 'bottom'\n\t\t}\n\n\t\t// 顶部底部空间都不足够时,放在文档顶部\n\t\telse {\n\t\t\tiposition.value = 'top-ab'\n\t\t}\n\t}\n\n\t// 计算提示对齐方式\n\tif (props.align !== 'auto') {\n\t\tialign.value = props.align\n\t} else {\n\t\t// 位置在上下的情况\n\t\tif (iposition.value === 'top' || iposition.value === 'bottom') {\n\t\t\t// 不能居中完整显示则看哪边空间大\n\t\t\tif ((tipWidth / 2 > linkLeft + linkWidth / 2 || tipWidth / 2 > linkRight + linkWidth / 2) && tipWidth > linkWidth) {\n\t\t\t\tif (linkLeft > linkRight) {\n\t\t\t\t\tialign.value = 'right'\n\t\t\t\t} else {\n\t\t\t\t\tialign.value = 'left'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 能居中完整显示则居中完整显示\n\t\t\telse {\n\t\t\t\tialign.value = 'center'\n\t\t\t}\n\t\t}\n\n\t\t// 位置在左右的情况\n\t\telse {\n\t\t\t// 不能居中完整显示则看哪边空间大\n\t\t\tif ((tipHeight / 2 > linkTop + linkHeight / 2 || tipHeight / 2 > linkBottom + linkHeight / 2) && tipHeight > linkHeight) {\n\t\t\t\tif (linkTop > linkBottom) {\n\t\t\t\t\tialign.value = 'bottom'\n\t\t\t\t} else {\n\t\t\t\t\tialign.value = 'top'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 能居中完整显示则居中完整显示\n\t\t\telse {\n\t\t\t\tialign.value = 'middle'\n\t\t\t}\n\t\t}\n\t}\n\n\t// 计算箭头对齐方式\n\tif ((ialign.value === 'top' || ialign.value === 'bottom' || ialign.value === 'middle') && tipHeight < linkHeight) {\n\t\tiarrow.value = 'middle'\n\t} else if ((ialign.value === 'left' || ialign.value === 'right' || ialign.value === 'center') && tipWidth < linkWidth) {\n\t\tiarrow.value = 'center'\n\t} else {\n\t\tiarrow.value = ialign.value\n\t}\n\n\t// 计算位置\n\tnextTick(() => {\n\t\t// 因为 position 会导致 tip 高宽的变化,设置前需要重新获取一次\n\t\ttipWidth = tooltip.value.offsetWidth\n\t\ttipHeight = tooltip.value.offsetHeight\n\t\tarrow.value.style.left = ''\n\t\tarrow.value.style.right = ''\n\t\tarrow.value.style.top = ''\n\t\tarrow.value.style.bottom = ''\n\t\ttooltip.value.style.left = ''\n\t\ttooltip.value.style.right = ''\n\t\ttooltip.value.style.top = ''\n\t\ttooltip.value.style.bottom = ''\n\n\t\tif (iposition.value === 'top-ab') {\n\t\t\ttooltip.value.style.top = 0\n\t\t}\n\t\tif (iposition.value === 'top') {\n\t\t\ttooltip.value.style.top = linkTop - tipHeight + 'px'\n\t\t}\n\t\tif (iposition.value === 'bottom') {\n\t\t\ttooltip.value.style.top = linkTop + linkHeight + 'px'\n\t\t}\n\t\tif (iposition.value === 'left') {\n\t\t\ttooltip.value.style.left = linkLeft - tipWidth + 'px'\n\t\t}\n\t\tif (iposition.value === 'right') {\n\t\t\ttooltip.value.style.left = linkLeft + linkWidth + 'px'\n\t\t}\n\n\t\tif (ialign.value === 'left') {\n\t\t\ttooltip.value.style.left = linkLeft + 'px'\n\t\t\tarrow.value.style.left = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'right') {\n\t\t\ttooltip.value.style.left = bodyWidth - tipWidth - linkRight + 'px'\n\t\t\tarrow.value.style.right = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'center') {\n\t\t\ttooltip.value.style.left = linkX - tipWidth / 2 + 'px'\n\t\t\tarrow.value.style.left = ''\n\t\t\tarrow.value.style.right = ''\n\t\t}\n\t\tif (ialign.value === 'top') {\n\t\t\ttooltip.value.style.top = linkTop + 'px'\n\t\t\tarrow.value.style.top = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'bottom') {\n\t\t\ttooltip.value.style.top = linkTop - tipHeight + linkHeight + 'px'\n\t\t\tarrow.value.style.bottom = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'middle') {\n\t\t\ttooltip.value.style.top = linkY - tipHeight / 2 + 'px'\n\t\t\tarrow.value.style.top = ''\n\t\t\tarrow.value.style.bottom = ''\n\t\t}\n\n\t\tif (iarrow.value === 'left') {\n\t\t\tarrow.value.style.left = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'right') {\n\t\t\tarrow.value.style.right = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'center') {\n\t\t\tarrow.value.style.left = ''\n\t\t\tarrow.value.style.right = ''\n\t\t}\n\t\tif (iarrow.value === 'top') {\n\t\t\tarrow.value.style.top = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'bottom') {\n\t\t\tarrow.value.style.bottom = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'middle') {\n\t\t\tarrow.value.style.top = ''\n\t\t\tarrow.value.style.bottom = ''\n\t\t}\n\t})\n}\nconst open = by => {\n\t// 延时显示\n\tif (props.delay) {\n\t\tif (timer.value) {\n\t\t\tclearTimeout(timer.value)\n\t\t\ttimer.value = null\n\t\t}\n\t\ttimer.value = setTimeout(() => {\n\t\t\topenHandle(by)\n\t\t}, props.delay as number)\n\t} else {\n\t\topenHandle(by)\n\t}\n}\nconst openHandle = by => {\n\temit('beforeOpen')\n\tblurable.value = false\n\tif (!by) {\n\t\treturn\n\t}\n\tlink.value = by\n\tshow.value = true\n\tnextTick(() => {\n\t\t// 把 DOM 结构放到 body:last-child 位置,避免被 overflow\n\t\tdocument.body.appendChild(tooltip.value)\n\n\t\t// 点击层外关闭\n\t\tdocument.body.addEventListener('click', blur)\n\t\tset(by)\n\t\tif (link.value && props.isScrollClose) {\n\t\t\tsetScrollStatus()\n\t\t}\n\t\t// 设置 z-index\n\t\tif (props.zIndex) {\n\t\t\t;(instance?.proxy?.$el as HTMLElement).style.zIndex = props.zIndex.toString()\n\t\t} else {\n\t\t\t;(instance?.proxy?.$el as HTMLElement).style.zIndex = (window as any).$TouchUI?.zIndex.toString()\n\t\t\t;(window as any).$TouchUI ? (window as any).$TouchUI.zIndex++ : ((window as any).$TouchUI = { zIndex: 1 })\n\t\t}\n\t})\n\n\t// 防止点开后立即因为 blur 事件而关闭掉\n\tlet timer = null\n\ttimer = setTimeout(() => {\n\t\tblurable.value = true\n\t\tclearTimeout(timer)\n\t\ttimer = null\n\t}, 100)\n\n\t// 显示\n\temit('opened')\n}\n// type?: number\nconst close = () => {\n\t// && type !== 1\n\tif (!tooltip.value || !blurable.value || !props.closeOnBlur) return\n\tif (props.delay) {\n\t\tif (timer.value) {\n\t\t\tclearTimeout(timer.value)\n\t\t\ttimer.value = null\n\t\t}\n\t\ttimer.value = setTimeout(() => {\n\t\t\tcloseHandle()\n\t\t}, 500)\n\t} else {\n\t\tcloseHandle()\n\t}\n}\nconst closeHandle = () => {\n\tshow.value = false\n\tif (scrollNode.value && scrollNode.value.removeEventListener) {\n\t\tscrollNode.value.removeEventListener('scroll', close)\n\t}\n}\nconst setScrollStatus = () => {\n\tconst searchNode = Node => {\n\t\tif (Node.nodeName === 'BODY') {\n\t\t\treturn Node\n\t\t} else {\n\t\t\tif (Node.nodeName === 'DIV' && typeof Node.className === 'string' && Node.className.indexOf('to-scroll-content') > -1) {\n\t\t\t\treturn Node\n\t\t\t} else {\n\t\t\t\treturn searchNode(Node.parentNode)\n\t\t\t}\n\t\t}\n\t}\n\tscrollNode.value = searchNode(link.value.parentNode)\n\n\tif (scrollNode.value) {\n\t\t// 鼠标滚动时,直接关闭\n\t\t// 设置延时是因为表单校验的时候,获取焦点同时要展示 tooltip,获取焦点的对象如果只有半边在视角以内,则会自动触发滚动条滚动事件\n\t\tlet timer = null\n\t\ttimer = setTimeout(() => {\n\t\t\tscrollNode.value.addEventListener('scroll', close)\n\t\t\tclearTimeout(timer)\n\t\t\ttimer = null\n\t\t}, 0)\n\t}\n}\n// 点击层外关闭,通过递归判断点击是否在绑定此对象实例的 DOM 之内\nconst blur = e => {\n\t// if (!tooltip.value || !blurable.value || !props.closeOnBlur) return\n\tnextTick(() => {\n\t\tlet node = e.target\n\t\twhile (node && node !== tooltip.value && node !== link.value && node.nodeName !== 'BODY') {\n\t\t\tnode = node.parentNode\n\t\t}\n\t\tif (node && node.nodeName === 'BODY') {\n\t\t\t// close(1)\n\t\t\tclose()\n\t\t}\n\t})\n}\n// 暴露方法\ndefineExpose({ open, close })\n</script>\n"],"names":["DO_defineComponent","link","timer","lazy","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot"],"mappings":"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"}
|