From 619d71b039b05a5e26f85d9358bbf47c0ddd28f9 Mon Sep 17 00:00:00 2001 From: Maciej Stosio Date: Thu, 27 Jul 2023 22:24:53 +0200 Subject: [PATCH 1/2] Update index.ts --- src/index.ts | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/index.ts b/src/index.ts index a39355e..45b90e2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,6 +30,8 @@ interface config { minLength?: number, /** Ignore scan input if this node is focused.*/ ignoreIfFocusOn?: Node, + /** nodes to skip i.e. text useful when you want to stick to default behaviour for inputs, but trigger something special otherwise */ + skipNodeTypes?: string[]; /** Stop propagation on keydown event. Defaults to false.*/ stopPropagation?: Boolean, /** Prevent default on keydown event. Defaults to false.*/ @@ -51,6 +53,7 @@ const useScanDetection = ({ onError, minLength = 1, ignoreIfFocusOn, + skipNodeTypes = [], stopPropagation = false, preventDefault = false, container = document @@ -87,22 +90,26 @@ const useScanDetection = ({ } const onKeyDown: Function = useCallback((event: KeyboardEvent) => { - if (event.currentTarget !== ignoreIfFocusOn) { - if (endCharacter.includes(event.keyCode)) { - evaluateBuffer() - } - if (buffer.current.length > 0 || startCharacter.includes(event.keyCode) || startCharacter.length === 0) { - clearTimeout(timeout.current) - timeout.current = setTimeout(evaluateBuffer, timeToEvaluate) - buffer.current.push({ time: performance.now(), char: event.key }) - } - } if (stopPropagation) { event.stopPropagation() } if (preventDefault) { event.preventDefault() } + if (event.currentTarget !== ignoreIfFocusOn) { + return + } + if(!skipNodeTypes.includes((event.target as any).type)) { + return + } + if (endCharacter.includes(event.keyCode)) { + evaluateBuffer() + } + if (buffer.current.length > 0 || startCharacter.includes(event.keyCode) || startCharacter.length === 0) { + clearTimeout(timeout.current) + timeout.current = setTimeout(evaluateBuffer, timeToEvaluate) + buffer.current.push({time: performance.now(), char: event.key}) + } }, [ startCharacter, endCharacter, From 69268e4783a5512671baed1dec5528cff1addfc7 Mon Sep 17 00:00:00 2001 From: Maciej Stosio Date: Thu, 27 Jul 2023 22:26:20 +0200 Subject: [PATCH 2/2] reverse condition --- src/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 45b90e2..85e5b80 100644 --- a/src/index.ts +++ b/src/index.ts @@ -96,10 +96,10 @@ const useScanDetection = ({ if (preventDefault) { event.preventDefault() } - if (event.currentTarget !== ignoreIfFocusOn) { + if (event.currentTarget === ignoreIfFocusOn) { return } - if(!skipNodeTypes.includes((event.target as any).type)) { + if(skipNodeTypes.includes((event.target as any).type)) { return } if (endCharacter.includes(event.keyCode)) {