open-nomad/ui/app/modifiers/keyboard-shortcut.js
2023-04-10 15:36:59 +00:00

44 lines
832 B
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
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);
});
}
}