@touchvue/ui 1.0.0-beta.52 → 1.0.0-beta.54
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/calendar/src/calendar.d.ts +8 -1
- package/es/components/calendar/src/calendar.vue.d.ts +9 -0
- package/es/components/cascader/src/cascader-item.vue.d.ts +5 -1
- package/es/components/cascader/src/cascader.vue.d.ts +0 -7
- package/es/components/datepicker/src/DatePicker.vue.d.ts +9 -0
- package/es/components/datepicker/src/Picker.vue.d.ts +9 -0
- package/es/components/datepicker/src/date-picker.d.ts +1 -1
- package/es/components/datepicker/src/use-date-picker.d.ts +1 -0
- package/es/components/float/index.d.ts +15 -0
- package/es/components/float/src/Float.vue.d.ts +9 -0
- package/es/components/float/src/float.d.ts +4 -0
- package/es/components/icon/src/icon.vue.d.ts +2 -0
- package/es/components/slide/src/slide.vue.d.ts +4 -0
- package/es/components/tab/src/tab-item.vue.d.ts +2 -0
- package/es/components/timeline/src/timeline.vue.d.ts +5 -0
- package/es/directives/index.d.ts +2 -1
- package/es/directives/press/index.d.ts +2 -0
- package/es/directives/press/src/press.d.ts +20 -0
- package/es/index.d.mjs +1 -0
- package/es/index.d.mjs.map +1 -1
- package/es/index.mjs +1 -0
- package/es/index.mjs.map +1 -1
- package/es/packages/components/calendar/src/calendar.mjs +7 -0
- package/es/packages/components/calendar/src/calendar.mjs.map +1 -1
- package/es/packages/components/calendar/src/calendar.vue2.mjs +31 -38
- package/es/packages/components/calendar/src/calendar.vue2.mjs.map +1 -1
- package/es/packages/components/cascader/src/cascader-item.vue2.mjs +36 -84
- package/es/packages/components/cascader/src/cascader-item.vue2.mjs.map +1 -1
- package/es/packages/components/cascader/src/cascader.vue2.mjs +86 -28
- package/es/packages/components/cascader/src/cascader.vue2.mjs.map +1 -1
- package/es/packages/components/checkboxes/src/Checkboxes.vue2.mjs +2 -3
- package/es/packages/components/checkboxes/src/Checkboxes.vue2.mjs.map +1 -1
- package/es/packages/components/datepicker/src/DatePicker.vue2.mjs +9 -3
- package/es/packages/components/datepicker/src/DatePicker.vue2.mjs.map +1 -1
- package/es/packages/components/datepicker/src/Picker.vue2.mjs +4 -0
- package/es/packages/components/datepicker/src/Picker.vue2.mjs.map +1 -1
- package/es/packages/components/datepicker/src/date-picker.mjs.map +1 -1
- package/es/packages/components/datepicker/src/use-date-picker.mjs +8 -8
- package/es/packages/components/datepicker/src/use-date-picker.mjs.map +1 -1
- package/es/packages/components/float/src/Float.vue2.mjs +10 -3
- package/es/packages/components/float/src/Float.vue2.mjs.map +1 -1
- package/es/packages/components/float/src/float.mjs +1 -0
- package/es/packages/components/float/src/float.mjs.map +1 -1
- package/es/packages/components/header/src/header.vue2.mjs +1 -0
- package/es/packages/components/header/src/header.vue2.mjs.map +1 -1
- package/es/packages/components/icon/src/icon.vue2.mjs +7 -3
- package/es/packages/components/icon/src/icon.vue2.mjs.map +1 -1
- package/es/packages/components/index.d.mjs +1 -0
- package/es/packages/components/index.d.mjs.map +1 -1
- package/es/packages/components/index.mjs +1 -0
- package/es/packages/components/index.mjs.map +1 -1
- package/es/packages/components/input/src/input.vue2.mjs +9 -9
- package/es/packages/components/input/src/input.vue2.mjs.map +1 -1
- package/es/packages/components/select/src/select.vue2.mjs +0 -9
- package/es/packages/components/select/src/select.vue2.mjs.map +1 -1
- package/es/packages/components/slide/src/slide.vue2.mjs +3 -1
- package/es/packages/components/slide/src/slide.vue2.mjs.map +1 -1
- package/es/packages/components/tab/src/tab-item.vue2.mjs +3 -1
- package/es/packages/components/tab/src/tab-item.vue2.mjs.map +1 -1
- package/es/packages/components/tab/src/tab.vue2.mjs +54 -9
- package/es/packages/components/tab/src/tab.vue2.mjs.map +1 -1
- package/es/packages/components/tree/src/tree.vue2.mjs +2 -0
- package/es/packages/components/tree/src/tree.vue2.mjs.map +1 -1
- package/es/packages/directives/index.d.mjs +1 -0
- package/es/packages/directives/index.d.mjs.map +1 -1
- package/es/packages/directives/index.mjs +3 -3
- package/es/packages/directives/index.mjs.map +1 -1
- package/es/packages/directives/press/index.d.mjs +2 -0
- package/es/packages/directives/press/index.mjs +2 -0
- package/es/packages/directives/press/src/press.d.mjs +2 -0
- package/es/packages/directives/press/src/press.d.mjs.map +1 -0
- package/es/packages/directives/press/src/press.mjs +100 -0
- package/es/packages/directives/press/src/press.mjs.map +1 -0
- package/es/packages/locale/lang/en-US.mjs +6 -0
- package/es/packages/locale/lang/en-US.mjs.map +1 -1
- package/es/packages/locale/lang/zh-CN.mjs +6 -0
- package/es/packages/locale/lang/zh-CN.mjs.map +1 -1
- package/es/packages/utils/validate.mjs.map +1 -1
- package/lib/components/calendar/src/calendar.d.ts +8 -1
- package/lib/components/calendar/src/calendar.vue.d.ts +9 -0
- package/lib/components/cascader/src/cascader-item.vue.d.ts +5 -1
- package/lib/components/cascader/src/cascader.vue.d.ts +0 -7
- package/lib/components/datepicker/src/DatePicker.vue.d.ts +9 -0
- package/lib/components/datepicker/src/Picker.vue.d.ts +9 -0
- package/lib/components/datepicker/src/date-picker.d.ts +1 -1
- package/lib/components/datepicker/src/use-date-picker.d.ts +1 -0
- package/lib/components/float/index.d.ts +15 -0
- package/lib/components/float/src/Float.vue.d.ts +9 -0
- package/lib/components/float/src/float.d.ts +4 -0
- package/lib/components/icon/src/icon.vue.d.ts +2 -0
- package/lib/components/slide/src/slide.vue.d.ts +4 -0
- package/lib/components/tab/src/tab-item.vue.d.ts +2 -0
- package/lib/components/timeline/src/timeline.vue.d.ts +5 -0
- package/lib/directives/index.d.ts +2 -1
- package/lib/directives/press/index.d.ts +2 -0
- package/lib/directives/press/src/press.d.ts +20 -0
- package/lib/index.d.js +2 -0
- package/lib/index.d.js.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/packages/components/calendar/src/calendar.js +7 -0
- package/lib/packages/components/calendar/src/calendar.js.map +1 -1
- package/lib/packages/components/calendar/src/calendar.vue2.js +31 -38
- package/lib/packages/components/calendar/src/calendar.vue2.js.map +1 -1
- package/lib/packages/components/cascader/src/cascader-item.vue2.js +35 -83
- package/lib/packages/components/cascader/src/cascader-item.vue2.js.map +1 -1
- package/lib/packages/components/cascader/src/cascader.vue2.js +85 -27
- package/lib/packages/components/cascader/src/cascader.vue2.js.map +1 -1
- package/lib/packages/components/checkboxes/src/Checkboxes.vue2.js +1 -2
- package/lib/packages/components/checkboxes/src/Checkboxes.vue2.js.map +1 -1
- package/lib/packages/components/datepicker/src/DatePicker.vue2.js +9 -3
- package/lib/packages/components/datepicker/src/DatePicker.vue2.js.map +1 -1
- package/lib/packages/components/datepicker/src/Picker.vue2.js +4 -0
- package/lib/packages/components/datepicker/src/Picker.vue2.js.map +1 -1
- package/lib/packages/components/datepicker/src/date-picker.js.map +1 -1
- package/lib/packages/components/datepicker/src/use-date-picker.js +8 -8
- package/lib/packages/components/datepicker/src/use-date-picker.js.map +1 -1
- package/lib/packages/components/float/src/Float.vue2.js +9 -2
- package/lib/packages/components/float/src/Float.vue2.js.map +1 -1
- package/lib/packages/components/float/src/float.js +1 -0
- package/lib/packages/components/float/src/float.js.map +1 -1
- package/lib/packages/components/header/src/header.vue2.js +1 -0
- package/lib/packages/components/header/src/header.vue2.js.map +1 -1
- package/lib/packages/components/icon/src/icon.vue2.js +7 -3
- package/lib/packages/components/icon/src/icon.vue2.js.map +1 -1
- package/lib/packages/components/index.d.js +2 -0
- package/lib/packages/components/index.d.js.map +1 -1
- package/lib/packages/components/index.js +2 -0
- package/lib/packages/components/index.js.map +1 -1
- package/lib/packages/components/input/src/input.vue2.js +9 -9
- package/lib/packages/components/input/src/input.vue2.js.map +1 -1
- package/lib/packages/components/select/src/select.vue2.js +0 -9
- package/lib/packages/components/select/src/select.vue2.js.map +1 -1
- package/lib/packages/components/slide/src/slide.vue2.js +3 -1
- package/lib/packages/components/slide/src/slide.vue2.js.map +1 -1
- package/lib/packages/components/tab/src/tab-item.vue2.js +3 -1
- package/lib/packages/components/tab/src/tab-item.vue2.js.map +1 -1
- package/lib/packages/components/tab/src/tab.vue2.js +53 -8
- package/lib/packages/components/tab/src/tab.vue2.js.map +1 -1
- package/lib/packages/components/tree/src/tree.vue2.js +2 -0
- package/lib/packages/components/tree/src/tree.vue2.js.map +1 -1
- package/lib/packages/directives/index.d.js +2 -0
- package/lib/packages/directives/index.d.js.map +1 -1
- package/lib/packages/directives/index.js +3 -2
- package/lib/packages/directives/index.js.map +1 -1
- package/lib/packages/directives/press/index.d.js +8 -0
- package/lib/packages/directives/press/index.js +8 -0
- package/lib/packages/directives/press/src/press.d.js +3 -0
- package/lib/packages/directives/press/src/press.d.js.map +1 -0
- package/lib/packages/directives/press/src/press.js +102 -0
- package/lib/packages/directives/press/src/press.js.map +1 -0
- package/lib/packages/locale/lang/en-US.js +6 -0
- package/lib/packages/locale/lang/en-US.js.map +1 -1
- package/lib/packages/locale/lang/zh-CN.js +6 -0
- package/lib/packages/locale/lang/zh-CN.js.map +1 -1
- package/lib/packages/utils/validate.js.map +1 -1
- package/package.json +1 -1
- package/theme/components/index.css +74 -18
- package/theme/index.css +74 -18
- package/theme/skin/default.css +74 -18
- package/es/directives/longtap/index.d.ts +0 -2
- package/es/directives/longtap/src/longtap.d.ts +0 -7
- package/es/packages/directives/longtap/index.d.mjs +0 -2
- package/es/packages/directives/longtap/index.mjs +0 -2
- package/es/packages/directives/longtap/src/longtap.d.mjs +0 -2
- package/es/packages/directives/longtap/src/longtap.d.mjs.map +0 -1
- package/es/packages/directives/longtap/src/longtap.mjs +0 -80
- package/es/packages/directives/longtap/src/longtap.mjs.map +0 -1
- package/lib/directives/longtap/index.d.ts +0 -2
- package/lib/directives/longtap/src/longtap.d.ts +0 -7
- package/lib/packages/directives/longtap/index.d.js +0 -8
- package/lib/packages/directives/longtap/index.js +0 -8
- package/lib/packages/directives/longtap/src/longtap.d.js +0 -3
- package/lib/packages/directives/longtap/src/longtap.d.js.map +0 -1
- package/lib/packages/directives/longtap/src/longtap.js +0 -82
- package/lib/packages/directives/longtap/src/longtap.js.map +0 -1
- /package/es/packages/directives/{longtap → press}/index.d.mjs.map +0 -0
- /package/es/packages/directives/{longtap → press}/index.mjs.map +0 -0
- /package/lib/packages/directives/{longtap → press}/index.d.js.map +0 -0
- /package/lib/packages/directives/{longtap → press}/index.js.map +0 -0
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
const LONG_PRESS_DURATION = 500;
|
|
2
|
-
let handleStart = null;
|
|
3
|
-
let handleMove = null;
|
|
4
|
-
let handleEnd = null;
|
|
5
|
-
let handleClick = null;
|
|
6
|
-
const vLongtap = {
|
|
7
|
-
// Vue3的mounted对应Vue2的bind
|
|
8
|
-
mounted(el, binding) {
|
|
9
|
-
el._longtapHandler = binding.value;
|
|
10
|
-
if (typeof binding.value !== "function") {
|
|
11
|
-
console.warn("[v-longtap] Binding value must be a function");
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
let timer = null;
|
|
15
|
-
let startPos = { x: 0, y: 0 };
|
|
16
|
-
const noSelectClass = ["to-dis", "type-select"];
|
|
17
|
-
handleStart = (e) => {
|
|
18
|
-
const touch = e.touches[0];
|
|
19
|
-
startPos = { x: touch.clientX, y: touch.clientY };
|
|
20
|
-
el.classList.add(...noSelectClass);
|
|
21
|
-
timer = setTimeout(() => {
|
|
22
|
-
var _a;
|
|
23
|
-
(_a = el._longtapHandler) == null ? void 0 : _a.call(el, e);
|
|
24
|
-
el._longTaped = true;
|
|
25
|
-
e.preventDefault();
|
|
26
|
-
}, LONG_PRESS_DURATION);
|
|
27
|
-
};
|
|
28
|
-
handleMove = (e) => {
|
|
29
|
-
if (!timer)
|
|
30
|
-
return;
|
|
31
|
-
const touch = e.touches[0];
|
|
32
|
-
const dx = touch.clientX - startPos.x;
|
|
33
|
-
const dy = touch.clientY - startPos.y;
|
|
34
|
-
if (Math.abs(dx) > 5 || Math.abs(dy) > 5) {
|
|
35
|
-
clearTimeout(timer);
|
|
36
|
-
timer = null;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
handleEnd = (e) => {
|
|
40
|
-
el.classList.remove(...noSelectClass);
|
|
41
|
-
if (timer) {
|
|
42
|
-
clearTimeout(timer);
|
|
43
|
-
timer = null;
|
|
44
|
-
}
|
|
45
|
-
el._longTaped = false;
|
|
46
|
-
console.log(e);
|
|
47
|
-
};
|
|
48
|
-
handleClick = (e) => {
|
|
49
|
-
if (el._longTaped) {
|
|
50
|
-
el.classList.remove(...noSelectClass);
|
|
51
|
-
e.stopImmediatePropagation();
|
|
52
|
-
e.preventDefault();
|
|
53
|
-
el._longTaped = false;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
el.addEventListener("touchstart", handleStart, { passive: false });
|
|
57
|
-
el.addEventListener("touchmove", handleMove, { passive: true });
|
|
58
|
-
el.addEventListener("touchend", handleEnd);
|
|
59
|
-
el.addEventListener("touchcancel", handleEnd);
|
|
60
|
-
el.addEventListener("click", handleClick, true);
|
|
61
|
-
},
|
|
62
|
-
// Vue3的updated对应Vue2的update
|
|
63
|
-
updated(el, binding) {
|
|
64
|
-
el._longtapHandler = binding.value;
|
|
65
|
-
},
|
|
66
|
-
// Vue3的unmounted对应Vue2的unbind
|
|
67
|
-
unmounted(el) {
|
|
68
|
-
if (!handleStart || !handleMove || !handleEnd || !handleClick) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
el.removeEventListener("touchstart", handleStart);
|
|
72
|
-
el.removeEventListener("touchmove", handleMove);
|
|
73
|
-
el.removeEventListener("touchend", handleEnd);
|
|
74
|
-
el.removeEventListener("touchcancel", handleEnd);
|
|
75
|
-
el.removeEventListener("click", handleClick);
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export { vLongtap };
|
|
80
|
-
//# sourceMappingURL=longtap.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"longtap.mjs","sources":["../../../../../../packages/directives/longtap/src/longtap.ts"],"sourcesContent":["import type { DirectiveBinding, ObjectDirective } from 'vue'\n\n// 防止重复点击\nconst LONG_PRESS_DURATION = 500 // 长按判定时间(毫秒)\nlet handleStart: ((e: TouchEvent) => void) | null = null\nlet handleMove: ((e: TouchEvent) => void) | null = null\nlet handleEnd: ((e: TouchEvent) => void) | null = null\nlet handleClick: ((e: MouseEvent) => void) | null = null\n\ninterface LongTapElement extends HTMLElement {\n\t_longtapHandler?: (e: TouchEvent) => void\n\t_longTaped?: boolean\n}\n\n// 定义指令\nexport const vLongtap: ObjectDirective<LongTapElement> = {\n\t// Vue3的mounted对应Vue2的bind\n\tmounted(el: LongTapElement, binding: DirectiveBinding<(e: TouchEvent) => void>) {\n\t\tel._longtapHandler = binding.value\n\t\tif (typeof binding.value !== 'function') {\n\t\t\tconsole.warn('[v-longtap] Binding value must be a function')\n\t\t\treturn\n\t\t}\n\t\tlet timer: NodeJS.Timeout | null = null\n\t\tlet startPos = { x: 0, y: 0 }\n\t\tconst noSelectClass = ['to-dis', 'type-select']\n\n\t\t// 触摸开始处理\n\t\thandleStart = (e: TouchEvent) => {\n\t\t\t// 记录初始位置\n\t\t\tconst touch = e.touches[0]\n\t\t\tstartPos = { x: touch.clientX, y: touch.clientY }\n\t\t\t// 添加防选中样式\n\t\t\tel.classList.add(...noSelectClass)\n\t\t\t// 设置定时器\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\t// 触发长按回调\n\t\t\t\tel._longtapHandler?.(e)\n\t\t\t\t// 标记已触发长按\n\t\t\t\tel._longTaped = true\n\t\t\t\t// 在触发长按后阻止默认行为\n\t\t\t\te.preventDefault()\n\t\t\t}, LONG_PRESS_DURATION)\n\t\t}\n\n\t\t// 触摸移动处理(防止滑动误触发)\n\t\thandleMove = (e: TouchEvent) => {\n\t\t\tif (!timer) return\n\n\t\t\tconst touch = e.touches[0]\n\t\t\tconst dx = touch.clientX - startPos.x\n\t\t\tconst dy = touch.clientY - startPos.y\n\n\t\t\t// 移动超过阈值则取消长按\n\t\t\tif (Math.abs(dx) > 5 || Math.abs(dy) > 5) {\n\t\t\t\tclearTimeout(timer)\n\t\t\t\ttimer = null\n\t\t\t}\n\t\t}\n\n\t\t// 触摸结束处理\n\t\thandleEnd = (e: TouchEvent) => {\n\t\t\t// 清除样式和计时器\n\t\t\tel.classList.remove(...noSelectClass)\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer)\n\t\t\t\ttimer = null\n\t\t\t}\n\t\t\tel._longTaped = false\n\t\t\tconsole.log(e)\n\t\t}\n\n\t\t// 点击事件拦截处理\n\t\thandleClick = (e: MouseEvent) => {\n\t\t\tif (el._longTaped) {\n\t\t\t\t// 清除样式和计时器\n\t\t\t\tel.classList.remove(...noSelectClass)\n\t\t\t\te.stopImmediatePropagation()\n\t\t\t\te.preventDefault()\n\t\t\t\tel._longTaped = false\n\t\t\t}\n\t\t}\n\n\t\t// 事件监听\n\t\tel.addEventListener('touchstart', handleStart, { passive: false })\n\t\tel.addEventListener('touchmove', handleMove, { passive: true })\n\t\tel.addEventListener('touchend', handleEnd)\n\t\tel.addEventListener('touchcancel', handleEnd)\n\t\tel.addEventListener('click', handleClick, true)\n\t},\n\t// Vue3的updated对应Vue2的update\n\tupdated(el: LongTapElement, binding: DirectiveBinding<(e: TouchEvent) => void>) {\n\t\tel._longtapHandler = binding.value // 数据更新时同步最新处理函数\n\t},\n\t// Vue3的unmounted对应Vue2的unbind\n\tunmounted(el: LongTapElement) {\n\t\tif (!handleStart || !handleMove || !handleEnd || !handleClick) {\n\t\t\treturn\n\t\t}\n\t\t// 清理所有事件监听\n\t\tel.removeEventListener('touchstart', handleStart)\n\t\tel.removeEventListener('touchmove', handleMove)\n\t\tel.removeEventListener('touchend', handleEnd)\n\t\tel.removeEventListener('touchcancel', handleEnd)\n\t\tel.removeEventListener('click', handleClick)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"longtap.d.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const LONG_PRESS_DURATION = 500;
|
|
4
|
-
let handleStart = null;
|
|
5
|
-
let handleMove = null;
|
|
6
|
-
let handleEnd = null;
|
|
7
|
-
let handleClick = null;
|
|
8
|
-
const vLongtap = {
|
|
9
|
-
// Vue3的mounted对应Vue2的bind
|
|
10
|
-
mounted(el, binding) {
|
|
11
|
-
el._longtapHandler = binding.value;
|
|
12
|
-
if (typeof binding.value !== "function") {
|
|
13
|
-
console.warn("[v-longtap] Binding value must be a function");
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
let timer = null;
|
|
17
|
-
let startPos = { x: 0, y: 0 };
|
|
18
|
-
const noSelectClass = ["to-dis", "type-select"];
|
|
19
|
-
handleStart = (e) => {
|
|
20
|
-
const touch = e.touches[0];
|
|
21
|
-
startPos = { x: touch.clientX, y: touch.clientY };
|
|
22
|
-
el.classList.add(...noSelectClass);
|
|
23
|
-
timer = setTimeout(() => {
|
|
24
|
-
var _a;
|
|
25
|
-
(_a = el._longtapHandler) == null ? void 0 : _a.call(el, e);
|
|
26
|
-
el._longTaped = true;
|
|
27
|
-
e.preventDefault();
|
|
28
|
-
}, LONG_PRESS_DURATION);
|
|
29
|
-
};
|
|
30
|
-
handleMove = (e) => {
|
|
31
|
-
if (!timer)
|
|
32
|
-
return;
|
|
33
|
-
const touch = e.touches[0];
|
|
34
|
-
const dx = touch.clientX - startPos.x;
|
|
35
|
-
const dy = touch.clientY - startPos.y;
|
|
36
|
-
if (Math.abs(dx) > 5 || Math.abs(dy) > 5) {
|
|
37
|
-
clearTimeout(timer);
|
|
38
|
-
timer = null;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
handleEnd = (e) => {
|
|
42
|
-
el.classList.remove(...noSelectClass);
|
|
43
|
-
if (timer) {
|
|
44
|
-
clearTimeout(timer);
|
|
45
|
-
timer = null;
|
|
46
|
-
}
|
|
47
|
-
el._longTaped = false;
|
|
48
|
-
console.log(e);
|
|
49
|
-
};
|
|
50
|
-
handleClick = (e) => {
|
|
51
|
-
if (el._longTaped) {
|
|
52
|
-
el.classList.remove(...noSelectClass);
|
|
53
|
-
e.stopImmediatePropagation();
|
|
54
|
-
e.preventDefault();
|
|
55
|
-
el._longTaped = false;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
el.addEventListener("touchstart", handleStart, { passive: false });
|
|
59
|
-
el.addEventListener("touchmove", handleMove, { passive: true });
|
|
60
|
-
el.addEventListener("touchend", handleEnd);
|
|
61
|
-
el.addEventListener("touchcancel", handleEnd);
|
|
62
|
-
el.addEventListener("click", handleClick, true);
|
|
63
|
-
},
|
|
64
|
-
// Vue3的updated对应Vue2的update
|
|
65
|
-
updated(el, binding) {
|
|
66
|
-
el._longtapHandler = binding.value;
|
|
67
|
-
},
|
|
68
|
-
// Vue3的unmounted对应Vue2的unbind
|
|
69
|
-
unmounted(el) {
|
|
70
|
-
if (!handleStart || !handleMove || !handleEnd || !handleClick) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
el.removeEventListener("touchstart", handleStart);
|
|
74
|
-
el.removeEventListener("touchmove", handleMove);
|
|
75
|
-
el.removeEventListener("touchend", handleEnd);
|
|
76
|
-
el.removeEventListener("touchcancel", handleEnd);
|
|
77
|
-
el.removeEventListener("click", handleClick);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
exports.vLongtap = vLongtap;
|
|
82
|
-
//# sourceMappingURL=longtap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"longtap.js","sources":["../../../../../../packages/directives/longtap/src/longtap.ts"],"sourcesContent":["import type { DirectiveBinding, ObjectDirective } from 'vue'\n\n// 防止重复点击\nconst LONG_PRESS_DURATION = 500 // 长按判定时间(毫秒)\nlet handleStart: ((e: TouchEvent) => void) | null = null\nlet handleMove: ((e: TouchEvent) => void) | null = null\nlet handleEnd: ((e: TouchEvent) => void) | null = null\nlet handleClick: ((e: MouseEvent) => void) | null = null\n\ninterface LongTapElement extends HTMLElement {\n\t_longtapHandler?: (e: TouchEvent) => void\n\t_longTaped?: boolean\n}\n\n// 定义指令\nexport const vLongtap: ObjectDirective<LongTapElement> = {\n\t// Vue3的mounted对应Vue2的bind\n\tmounted(el: LongTapElement, binding: DirectiveBinding<(e: TouchEvent) => void>) {\n\t\tel._longtapHandler = binding.value\n\t\tif (typeof binding.value !== 'function') {\n\t\t\tconsole.warn('[v-longtap] Binding value must be a function')\n\t\t\treturn\n\t\t}\n\t\tlet timer: NodeJS.Timeout | null = null\n\t\tlet startPos = { x: 0, y: 0 }\n\t\tconst noSelectClass = ['to-dis', 'type-select']\n\n\t\t// 触摸开始处理\n\t\thandleStart = (e: TouchEvent) => {\n\t\t\t// 记录初始位置\n\t\t\tconst touch = e.touches[0]\n\t\t\tstartPos = { x: touch.clientX, y: touch.clientY }\n\t\t\t// 添加防选中样式\n\t\t\tel.classList.add(...noSelectClass)\n\t\t\t// 设置定时器\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\t// 触发长按回调\n\t\t\t\tel._longtapHandler?.(e)\n\t\t\t\t// 标记已触发长按\n\t\t\t\tel._longTaped = true\n\t\t\t\t// 在触发长按后阻止默认行为\n\t\t\t\te.preventDefault()\n\t\t\t}, LONG_PRESS_DURATION)\n\t\t}\n\n\t\t// 触摸移动处理(防止滑动误触发)\n\t\thandleMove = (e: TouchEvent) => {\n\t\t\tif (!timer) return\n\n\t\t\tconst touch = e.touches[0]\n\t\t\tconst dx = touch.clientX - startPos.x\n\t\t\tconst dy = touch.clientY - startPos.y\n\n\t\t\t// 移动超过阈值则取消长按\n\t\t\tif (Math.abs(dx) > 5 || Math.abs(dy) > 5) {\n\t\t\t\tclearTimeout(timer)\n\t\t\t\ttimer = null\n\t\t\t}\n\t\t}\n\n\t\t// 触摸结束处理\n\t\thandleEnd = (e: TouchEvent) => {\n\t\t\t// 清除样式和计时器\n\t\t\tel.classList.remove(...noSelectClass)\n\t\t\tif (timer) {\n\t\t\t\tclearTimeout(timer)\n\t\t\t\ttimer = null\n\t\t\t}\n\t\t\tel._longTaped = false\n\t\t\tconsole.log(e)\n\t\t}\n\n\t\t// 点击事件拦截处理\n\t\thandleClick = (e: MouseEvent) => {\n\t\t\tif (el._longTaped) {\n\t\t\t\t// 清除样式和计时器\n\t\t\t\tel.classList.remove(...noSelectClass)\n\t\t\t\te.stopImmediatePropagation()\n\t\t\t\te.preventDefault()\n\t\t\t\tel._longTaped = false\n\t\t\t}\n\t\t}\n\n\t\t// 事件监听\n\t\tel.addEventListener('touchstart', handleStart, { passive: false })\n\t\tel.addEventListener('touchmove', handleMove, { passive: true })\n\t\tel.addEventListener('touchend', handleEnd)\n\t\tel.addEventListener('touchcancel', handleEnd)\n\t\tel.addEventListener('click', handleClick, true)\n\t},\n\t// Vue3的updated对应Vue2的update\n\tupdated(el: LongTapElement, binding: DirectiveBinding<(e: TouchEvent) => void>) {\n\t\tel._longtapHandler = binding.value // 数据更新时同步最新处理函数\n\t},\n\t// Vue3的unmounted对应Vue2的unbind\n\tunmounted(el: LongTapElement) {\n\t\tif (!handleStart || !handleMove || !handleEnd || !handleClick) {\n\t\t\treturn\n\t\t}\n\t\t// 清理所有事件监听\n\t\tel.removeEventListener('touchstart', handleStart)\n\t\tel.removeEventListener('touchmove', handleMove)\n\t\tel.removeEventListener('touchend', handleEnd)\n\t\tel.removeEventListener('touchcancel', handleEnd)\n\t\tel.removeEventListener('click', handleClick)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|