diff --git a/core/src/utils/gesture/recognizers/press.ts b/core/src/utils/gesture/recognizers/press.ts index e9f5b3933b..4276373009 100644 --- a/core/src/utils/gesture/recognizers/press.ts +++ b/core/src/utils/gesture/recognizers/press.ts @@ -4,7 +4,8 @@ export interface PressRecognizerOptions { el: HTMLElement; time: number; threshold: number; - onPressHandler: () => void; + onPressHandler?: () => void; + onPressUpHandler?: () => void; } export const createPressRecognizer = (opts: PressRecognizerOptions) => { @@ -15,7 +16,10 @@ export const createPressRecognizer = (opts: PressRecognizerOptions) => { clearGestureTimeout(); timeout = setTimeout(() => { - opts.onPressHandler(); + if (opts.onPressHandler) { + opts.onPressHandler(); + } + clearGestureTimeout(); }, opts.time || 500); }; @@ -28,6 +32,14 @@ export const createPressRecognizer = (opts: PressRecognizerOptions) => { clearGestureTimeout(); }; + const onEnd = () => { + if (opts.onPressUpHandler) { + opts.onPressUpHandler(); + } + + clearGestureTimeout(); + }; + const clearGestureTimeout = () => { if (timeout) { clearTimeout(timeout); @@ -41,6 +53,6 @@ export const createPressRecognizer = (opts: PressRecognizerOptions) => { threshold: 0, onStart, onMove, - onEnd: () => clearGestureTimeout() + onEnd }); };