39 lines
754 B
JavaScript
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);
|
||
|
});
|
||
|
}
|
||
|
}
|