feat: Add cb to useKeyPress

This commit is contained in:
Braks
2021-08-18 09:51:10 +02:00
parent f6f7564894
commit 5ed1094dfe
2 changed files with 31 additions and 23 deletions
+13 -4
View File
@@ -1,9 +1,16 @@
import { ref, Ref } from 'vue';
import { Ref } from 'vue';
import { KeyCode } from '../types';
import { onKeyStroke, useEventListener } from '@vueuse/core';
import { controlledRef, onKeyStroke, useEventListener } from '@vueuse/core';
export default (keyCode?: KeyCode): Ref<boolean> => {
const keyPressed = ref<boolean>(false);
export default (keyCode?: KeyCode, cb?: (keyPress: boolean) => void): Ref<boolean> => {
const keyPressed = controlledRef<boolean>(false, {
onBeforeChange(val, oldVal) {
if (val === oldVal) return false;
},
onChanged() {
if (cb && typeof cb === 'function') cb(keyPressed.value);
}
});
onKeyStroke(
(event) => event.key === keyCode || event.keyCode === keyCode,
@@ -34,5 +41,7 @@ export default (keyCode?: KeyCode): Ref<boolean> => {
keyPressed.value = false;
});
if (cb && typeof cb === 'function') cb(keyPressed.value);
return keyPressed;
};