MacでElectronを使ったアプリを開発していますが、テキストボックス等でコピー&ペーストが効かないことがわかりました。
以下のサイトにあるように、Mac版のElectronアプリだとできないもんらしいです。
tech.kurojica.com
私の場合は以下のエラーが出て素直に実装できませんでした。
'selector' は型 'MenuItemConstructorOptions' に存在しません。
MenuItemConstructorOptionsにselectorというキーワードを足してやる必要があるようです。
以下のサイトではMenuItemConstructorOptionsを継承してselectorを追加しています。
qiita.com
この辺りを参考に私の環境では以下のようにすると無事Mac環境でもコピー&ペーストできました。
import { Menu, MenuItem } from "electron";
import { MenuItemConstructorOptions } from "electron/main";
const template: Array<MenuItemConstructorOptions | DarwinMenuItemConstructorOptions | MenuItem> = [];
interface DarwinMenuItemConstructorOptions extends MenuItemConstructorOptions {
selector?: string;
submenu?: DarwinMenuItemConstructorOptions[] | Menu;
}
template.push({
label: "Edit",
submenu: [
{ label: "Undo", accelerator: "CmdOrCtrl+Z", selector: "undo:" },
{ label: "Redo", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
{ type: "separator" },
{ label: "Cut", accelerator: "CmdOrCtrl+X", selector: "cut:" },
{ label: "Copy", accelerator: "CmdOrCtrl+C", selector: "copy:" },
{ label: "Paste", accelerator: "CmdOrCtrl+V", selector: "paste:" },
{ label: "Select All", accelerator: "CmdOrCtrl+A", selector: "selectAll:" },
],
});
export const appMenu = Menu.buildFromTemplate(template);