bitwarden-desktop/src/main/menu/menu.view.ts

136 lines
3.3 KiB
TypeScript

import { MenuItemConstructorOptions } from "electron";
import { I18nService } from "jslib-common/abstractions/i18n.service";
import { MessagingService } from "jslib-common/abstractions/messaging.service";
import { IMenubarMenu } from "./menubar";
export class ViewMenu implements IMenubarMenu {
readonly id: "viewMenu";
get label(): string {
return this.localize("view");
}
get items(): MenuItemConstructorOptions[] {
return [
this.searchVault,
this.separator,
this.generator,
this.passwordHistory,
this.separator,
this.zoomIn,
this.zoomOut,
this.resetZoom,
this.separator,
this.toggleFullscreen,
this.separator,
this.reload,
this.toggleDevTools,
];
}
private readonly _i18nService: I18nService;
private readonly _messagingService: MessagingService;
private readonly _isLocked: boolean;
constructor(i18nService: I18nService, messagingService: MessagingService, isLocked: boolean) {
this._i18nService = i18nService;
this._messagingService = messagingService;
this._isLocked = isLocked;
}
private get searchVault(): MenuItemConstructorOptions {
return {
id: "searchVault",
label: this.localize("searchVault"),
click: () => this.sendMessage("focusSearch"),
accelerator: "CmdOrCtrl+F",
enabled: !this._isLocked,
};
}
private get separator(): MenuItemConstructorOptions {
return { type: "separator" };
}
private get generator(): MenuItemConstructorOptions {
return {
id: "generator",
label: this.localize("generator"),
click: () => this.sendMessage("openGenerator"),
accelerator: "CmdOrCtrl+G",
enabled: !this._isLocked,
};
}
private get passwordHistory(): MenuItemConstructorOptions {
return {
id: "passwordHistory",
label: this.localize("passwordHistory"),
click: () => this.sendMessage("openPasswordHistory"),
enabled: !this._isLocked,
};
}
private get zoomIn(): MenuItemConstructorOptions {
return {
id: "zoomIn",
label: this.localize("zoomIn"),
role: "zoomIn",
accelerator: "CmdOrCtrl+=",
};
}
private get zoomOut(): MenuItemConstructorOptions {
return {
id: "zoomOut",
label: this.localize("zoomOut"),
role: "zoomOut",
accelerator: "CmdOrCtrl+-",
};
}
private get resetZoom(): MenuItemConstructorOptions {
return {
id: "resetZoom",
label: this.localize("resetZoom"),
role: "resetZoom",
accelerator: "CmdOrCtrl+0",
};
}
private get toggleFullscreen(): MenuItemConstructorOptions {
return {
id: "toggleFullScreen",
label: this.localize("toggleFullScreen"),
role: "togglefullscreen",
};
}
private get reload(): MenuItemConstructorOptions {
return {
id: "reload",
label: this.localize("reload"),
role: "forceReload",
};
}
private get toggleDevTools(): MenuItemConstructorOptions {
return {
id: "toggleDevTools",
label: this.localize("toggleDevTools"),
role: "toggleDevTools",
accelerator: "F12",
};
}
private localize(s: string) {
return this._i18nService.t(s);
}
private sendMessage(message: string) {
this._messagingService.send(message);
}
}