2
0
mirror of https://github.com/frappe/books.git synced 2025-02-03 12:38:34 +00:00
books/src/utils/vueUtils.ts
18alantom e9226f38c8 incr: add MouseFollower
- unpaid invoices tooltips
- fix getstarted
2022-05-23 16:18:23 +05:30

50 lines
1.2 KiB
TypeScript

import { onMounted, onUnmounted, Ref, ref } from 'vue';
export function useKeys(callback?: (keys: Set<string>) => void) {
const keys: Ref<Set<string>> = ref(new Set());
const keydownListener = (e: KeyboardEvent) => {
keys.value.add(e.code);
callback?.(keys.value);
};
const keyupListener = (e: KeyboardEvent) => {
keys.value.delete(e.code);
// Key up won't trigger on macOS for other keys.
if (e.code === 'MetaLeft') {
keys.value.clear();
}
};
onMounted(() => {
window.addEventListener('keydown', keydownListener);
window.addEventListener('keyup', keyupListener);
});
onUnmounted(() => {
window.removeEventListener('keydown', keydownListener);
window.removeEventListener('keyup', keyupListener);
});
return keys;
}
export function useMouseLocation() {
const loc = ref({ clientX: 0, clientY: 0 });
const mousemoveListener = (e: MouseEvent) => {
loc.value.clientX = e.clientX;
loc.value.clientY = e.clientY;
};
onMounted(() => {
window.addEventListener('mousemove', mousemoveListener);
});
onUnmounted(() => {
window.removeEventListener('mousemove', mousemoveListener);
});
return loc;
}