24
packages/client/src/directives/hotkey.ts
Normal file
24
packages/client/src/directives/hotkey.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { Directive } from 'vue';
|
||||
import { makeHotkey } from '../scripts/hotkey';
|
||||
|
||||
export default {
|
||||
mounted(el, binding) {
|
||||
el._hotkey_global = binding.modifiers.global === true;
|
||||
|
||||
el._keyHandler = makeHotkey(binding.value);
|
||||
|
||||
if (el._hotkey_global) {
|
||||
document.addEventListener('keydown', el._keyHandler);
|
||||
} else {
|
||||
el.addEventListener('keydown', el._keyHandler);
|
||||
}
|
||||
},
|
||||
|
||||
unmounted(el) {
|
||||
if (el._hotkey_global) {
|
||||
document.removeEventListener('keydown', el._keyHandler);
|
||||
} else {
|
||||
el.removeEventListener('keydown', el._keyHandler);
|
||||
}
|
||||
}
|
||||
} as Directive;
|
Reference in New Issue
Block a user