forked from verdnatura/salix-front
feat: keyShortcut directive
This commit is contained in:
parent
8619abdfb4
commit
72388af418
|
@ -0,0 +1,32 @@
|
||||||
|
export default {
|
||||||
|
mounted: function (el, binding) {
|
||||||
|
const shortcut = binding.value ?? '+';
|
||||||
|
|
||||||
|
const { key, ctrl, alt, callback } =
|
||||||
|
typeof shortcut === 'string'
|
||||||
|
? {
|
||||||
|
key: shortcut,
|
||||||
|
ctrl: true,
|
||||||
|
alt: true,
|
||||||
|
callback: () =>
|
||||||
|
document.querySelector('button[shortcut="+"]')?.click(),
|
||||||
|
}
|
||||||
|
: binding.value;
|
||||||
|
|
||||||
|
const handleKeydown = (event) => {
|
||||||
|
if (event.key === key && (!ctrl || event.ctrlKey) && (!alt || event.altKey)) {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Attach the event listener to the window
|
||||||
|
window.addEventListener('keydown', handleKeydown);
|
||||||
|
|
||||||
|
el._handleKeydown = handleKeydown;
|
||||||
|
},
|
||||||
|
unmounted: function (el) {
|
||||||
|
if (el._handleKeydown) {
|
||||||
|
window.removeEventListener('keydown', el._handleKeydown);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
|
@ -1,6 +1,8 @@
|
||||||
import { boot } from 'quasar/wrappers';
|
import { boot } from 'quasar/wrappers';
|
||||||
import qFormMixin from './qformMixin';
|
import qFormMixin from './qformMixin';
|
||||||
|
import keyShortcut from './keyShortcut';
|
||||||
|
|
||||||
export default boot(({ app }) => {
|
export default boot(({ app }) => {
|
||||||
app.mixin(qFormMixin);
|
app.mixin(qFormMixin);
|
||||||
|
app.directive('shortcut', keyShortcut);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue