open-nomad/ui/app/modifiers/keyboard-shortcut.js

39 lines
754 B
JavaScript

import { inject as service } from '@ember/service';
import Modifier from 'ember-modifier';
import { registerDestructor } from '@ember/destroyable';
export default class KeyboardShortcutModifier extends Modifier {
@service keyboard;
@service router;
modify(
element,
_positional,
{
label,
pattern = '',
action = () => {},
menuLevel = false,
enumerated = false,
exclusive = false,
}
) {
let commands = [
{
label,
action,
pattern,
element,
menuLevel,
enumerated,
exclusive,
},
];
this.keyboard.addCommands(commands);
registerDestructor(this, () => {
this.keyboard.removeCommands(commands);
});
}
}