From 8e91e4a8e5385d2a97bc6f94d0f6fb69792aea01 Mon Sep 17 00:00:00 2001 From: Braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Fri, 29 Apr 2022 18:26:54 +0200 Subject: [PATCH] refactor: use watchEffect for keypress --- package/src/composables/useKeyPress.ts | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/package/src/composables/useKeyPress.ts b/package/src/composables/useKeyPress.ts index 0d7fb433..c25f6f10 100644 --- a/package/src/composables/useKeyPress.ts +++ b/package/src/composables/useKeyPress.ts @@ -7,44 +7,46 @@ import { isInputDOMNode } from '~/utils' export default (keyCode: Ref, onChange?: (keyPressed: boolean) => void): Ref => { const window = useWindow() - const isPressed = controlledRef(false, { - onBeforeChange(val, oldVal) { - if (val === oldVal) return false + let isPressed = $ref(false) + + watchEffect( + () => { + if (onChange && typeof onChange === 'function') onChange(isPressed) }, - onChanged() { - if (onChange && typeof onChange === 'function') onChange(isPressed.value) - }, - }) + { flush: 'post' }, + ) onKeyPressed( (e) => !isInputDOMNode(e) && (e.key === keyCode.value || e.keyCode === keyCode.value), (e) => { e.preventDefault() - isPressed.value = true + isPressed = true }, ) + onKeyDown( (e) => !isInputDOMNode(e) && (e.key === keyCode.value || e.keyCode === keyCode.value), (e) => { e.preventDefault() - isPressed.value = true + isPressed = true }, ) + onKeyUp( (e) => !isInputDOMNode(e) && (e.key === keyCode.value || e.keyCode === keyCode.value), (e) => { e.preventDefault() - isPressed.value = false + isPressed = false }, ) if (typeof window.addEventListener !== 'undefined') { useEventListener(window, 'blur', () => { - isPressed.value = false + isPressed = false }) } - if (onChange && typeof onChange === 'function') onChange(isPressed.value) + if (onChange && typeof onChange === 'function') onChange(isPressed) - return isPressed + return $$(isPressed) }