mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
import keyboardActionsService from "../../services/keyboard_actions.js";
|
|
import AbstractButtonWidget from "./abstract_button.js";
|
|
|
|
let actions;
|
|
|
|
keyboardActionsService.getActions().then(as => actions = as);
|
|
|
|
export default class CommandButtonWidget extends AbstractButtonWidget {
|
|
doRender() {
|
|
super.doRender();
|
|
|
|
if (this.settings.command) {
|
|
this.$widget.on("click", () => {
|
|
this.$widget.tooltip("hide");
|
|
|
|
this.triggerCommand(this._command);
|
|
});
|
|
} else {
|
|
console.warn(`Button widget '${this.componentId}' has no defined command`, this.settings);
|
|
}
|
|
}
|
|
|
|
getTitle() {
|
|
const title = super.getTitle();
|
|
|
|
const action = actions.find(act => act.actionName === this._command);
|
|
|
|
if (action && action.effectiveShortcuts.length > 0) {
|
|
return `${title} (${action.effectiveShortcuts.join(", ")})`;
|
|
} else {
|
|
return title;
|
|
}
|
|
}
|
|
|
|
onClick(handler) {
|
|
this.settings.onClick = handler;
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* @param {function|string} command
|
|
* @returns {this}
|
|
*/
|
|
command(command) {
|
|
this.settings.command = command;
|
|
return this;
|
|
}
|
|
|
|
get _command() {
|
|
return typeof this.settings.command === "function"
|
|
? this.settings.command()
|
|
: this.settings.command;
|
|
}
|
|
}
|