Merge pull request #2843 from NoelDeMartin/MOBILE-3320

MOBILE-3320 UX: Trigger long press on down event
main
Pau Ferrer Ocaña 2021-06-21 15:14:24 +02:00 committed by GitHub
commit c9796eb3c2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 4 deletions

View File

@ -25,9 +25,11 @@ import { GestureController } from '@singletons';
})
export class CoreLongPressDirective implements OnInit, OnDestroy {
readonly HOLD_DURATION = 500;
element: HTMLElement;
pressGesture?: Gesture;
protected moved = false;
timeout?: NodeJS.Timeout;
@Output() longPress = new EventEmitter();
@ -45,9 +47,15 @@ export class CoreLongPressDirective implements OnInit, OnDestroy {
threshold: 0,
disableScroll: true,
gestureName: 'longpress',
onStart: () => this.moved = false,
onMove: () => this.moved = true,
onEnd: ev => !this.moved && this.longPress.emit(ev.event),
onStart: (event) => {
this.timeout = setTimeout(() => {
this.longPress.emit(event);
delete this.timeout;
}, this.HOLD_DURATION);
},
onMove: () => this.clearTimeout(),
onEnd: () => this.clearTimeout(),
}, true);
this.pressGesture.enable();
@ -58,6 +66,16 @@ export class CoreLongPressDirective implements OnInit, OnDestroy {
*/
ngOnDestroy(): void {
this.pressGesture?.destroy();
this.clearTimeout();
}
protected clearTimeout(): void {
if (!this.timeout) {
return;
}
clearTimeout(this.timeout);
delete this.timeout;
}
}