mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 17:43:35 -06:00
* DashboardScene: Keybindings like v to view panel * more bindings * Fix imports * Progress * Nit update * Fix merge --------- Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
39 lines
787 B
TypeScript
39 lines
787 B
TypeScript
import Mousetrap from 'mousetrap';
|
|
|
|
export interface KeyBindingItem {
|
|
/** Key or key pattern like mod+o */
|
|
key: string;
|
|
/** Defaults to keydown */
|
|
type?: string;
|
|
/** The handler callback */
|
|
onTrigger: () => void;
|
|
}
|
|
|
|
/**
|
|
* Small util to make it easier to add and unbind Mousetrap keybindings
|
|
*/
|
|
export class KeybindingSet {
|
|
private _binds: KeyBindingItem[] = [];
|
|
|
|
addBinding(item: KeyBindingItem) {
|
|
Mousetrap.bind(
|
|
item.key,
|
|
(evt) => {
|
|
evt.preventDefault();
|
|
evt.stopPropagation();
|
|
evt.returnValue = false;
|
|
item.onTrigger();
|
|
},
|
|
'keydown'
|
|
);
|
|
this._binds.push(item);
|
|
}
|
|
|
|
removeAll() {
|
|
this._binds.forEach((item) => {
|
|
Mousetrap.unbind(item.key, item.type);
|
|
});
|
|
this._binds = [];
|
|
}
|
|
}
|