Skip to content

Commit d83d076

Browse files
committed
feat: update long press functionality to allow customizable duration and improve gesture styles
1 parent b02aefe commit d83d076

File tree

6 files changed

+14
-11
lines changed

6 files changed

+14
-11
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ element.addEventListener('pointerdown', (e) => {
120120

121121
#### `long(e, handler, time?)`
122122

123-
Long press event, default 500ms.
123+
Long press event, default 300ms.
124124

125125
```typescript
126126
element.addEventListener('pointerdown', (e) => {

dist/index.esm.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -449,8 +449,9 @@ let lastLongTime = 0;
449449
* --- 绑定长按事件 ---
450450
* @param e 事件原型
451451
* @param long 长按回调
452+
* @param time 长按时间,默认 300ms
452453
*/
453-
function long(e, long) {
454+
function long(e, long, time) {
454455
const { 'x': tx, 'y': ty, } = getEventPos(e);
455456
let ox = 0, oy = 0, isLong = false;
456457
let timer = window.setTimeout(() => {
@@ -459,7 +460,7 @@ function long(e, long) {
459460
isLong = true;
460461
Promise.resolve(long(e)).catch((err) => { throw err; });
461462
}
462-
}, 300);
463+
}, time ?? 300);
463464
down(e, {
464465
move: (ne) => {
465466
const { x, y } = getEventPos(ne);
@@ -863,7 +864,7 @@ function getGestureEl() {
863864
gestureEl = document.createElement('div');
864865
gestureEl.className = 'pointer-gesture';
865866
document.body.appendChild(gestureEl);
866-
gestureEl.insertAdjacentHTML('afterend', `<style>.pointer-gesture{position:fixed;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.7);border:1px solid rgba(255,255,255,.9);pointer-events:none;z-index:999999;opacity:0;transition:opacity 0.2s;transform-origin:center;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3));}.pointer-gesture-done::before{content:'';background:rgba(255,255,255,.7);border-radius:50%;width:10px;height:10px;}</style>`);
867+
gestureEl.insertAdjacentHTML('afterend', `<style>.pointer-gesture{position:fixed;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.7);border:1px solid rgba(255,255,255,.7);pointer-events:none;z-index:999999;opacity:0;transition:opacity 0.2s;transform-origin:center;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3));}.pointer-gesture-done::before{content:'';background:rgba(255,255,255,.9);border-radius:50%;width:10px;height:10px;}</style>`);
867868
}
868869
return gestureEl;
869870
}

dist/index.umd.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -455,8 +455,9 @@
455455
* --- 绑定长按事件 ---
456456
* @param e 事件原型
457457
* @param long 长按回调
458+
* @param time 长按时间,默认 300ms
458459
*/
459-
function long(e, long) {
460+
function long(e, long, time) {
460461
const { 'x': tx, 'y': ty, } = getEventPos(e);
461462
let ox = 0, oy = 0, isLong = false;
462463
let timer = window.setTimeout(() => {
@@ -465,7 +466,7 @@
465466
isLong = true;
466467
Promise.resolve(long(e)).catch((err) => { throw err; });
467468
}
468-
}, 300);
469+
}, time ?? 300);
469470
down(e, {
470471
move: (ne) => {
471472
const { x, y } = getEventPos(ne);
@@ -869,7 +870,7 @@
869870
gestureEl = document.createElement('div');
870871
gestureEl.className = 'pointer-gesture';
871872
document.body.appendChild(gestureEl);
872-
gestureEl.insertAdjacentHTML('afterend', `<style>.pointer-gesture{position:fixed;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.7);border:1px solid rgba(255,255,255,.9);pointer-events:none;z-index:999999;opacity:0;transition:opacity 0.2s;transform-origin:center;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3));}.pointer-gesture-done::before{content:'';background:rgba(255,255,255,.7);border-radius:50%;width:10px;height:10px;}</style>`);
873+
gestureEl.insertAdjacentHTML('afterend', `<style>.pointer-gesture{position:fixed;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.7);border:1px solid rgba(255,255,255,.7);pointer-events:none;z-index:999999;opacity:0;transition:opacity 0.2s;transform-origin:center;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3));}.pointer-gesture-done::before{content:'';background:rgba(255,255,255,.9);border-radius:50%;width:10px;height:10px;}</style>`);
873874
}
874875
return gestureEl;
875876
}

dist/index.umd.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/click.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,9 @@ let lastLongTime: number = 0;
9090
* --- 绑定长按事件 ---
9191
* @param e 事件原型
9292
* @param long 长按回调
93+
* @param time 长按时间,默认 300ms
9394
*/
94-
export function long(e: PointerEvent, long: (e: PointerEvent) => void | Promise<void>): void {
95+
export function long(e: PointerEvent, long: (e: PointerEvent) => void | Promise<void>, time?: number): void {
9596
const { 'x': tx, 'y': ty, } = utils.getEventPos(e);
9697
let ox = 0, oy = 0, isLong = false;
9798
let timer: number | undefined = window.setTimeout(() => {
@@ -100,7 +101,7 @@ export function long(e: PointerEvent, long: (e: PointerEvent) => void | Promise<
100101
isLong = true;
101102
Promise.resolve(long(e)).catch((err) => { throw err; });
102103
}
103-
}, 300);
104+
}, time ?? 300);
104105
down(e, {
105106
move: (ne) => {
106107
const { x, y } = utils.getEventPos(ne);

src/gesture.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ function getGestureEl(): HTMLElement {
4444
gestureEl = document.createElement('div');
4545
gestureEl.className = 'pointer-gesture';
4646
document.body.appendChild(gestureEl);
47-
gestureEl.insertAdjacentHTML('afterend', `<style>.pointer-gesture{position:fixed;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.7);border:1px solid rgba(255,255,255,.9);pointer-events:none;z-index:999999;opacity:0;transition:opacity 0.2s;transform-origin:center;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3));}.pointer-gesture-done::before{content:'';background:rgba(255,255,255,.7);border-radius:50%;width:10px;height:10px;}</style>`);
47+
gestureEl.insertAdjacentHTML('afterend', `<style>.pointer-gesture{position:fixed;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.7);border:1px solid rgba(255,255,255,.7);pointer-events:none;z-index:999999;opacity:0;transition:opacity 0.2s;transform-origin:center;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.3));}.pointer-gesture-done::before{content:'';background:rgba(255,255,255,.9);border-radius:50%;width:10px;height:10px;}</style>`);
4848
}
4949
return gestureEl;
5050
}

0 commit comments

Comments
 (0)