メインコンテンツへ飛ぶ

Class: MenuItem

Class: MenuItem

ネイティブアプリケーションメニューとコンテキストメニューに項目を追加します。

プロセス: Main

サンプルについては Menu を参照して下さい。

new MenuItem(options)

  • options Object
    • click Function (任意) - メニューアイテムがクリックされたとき、 click(menuItem, browserWindow, event) で呼び出されます。
      • menuItem MenuItem
      • browserWindow BrowserWindow | undefined - ウインドウが開かれていないときは undefined になります。
      • event KeyboardEvent
    • role string (任意) - undo, redo, cut, copy, paste, pasteAndMatchStyle, delete, selectAll, reload, forceReload, toggleDevTools, resetZoom, zoomIn, zoomOut, toggleSpellChecker, togglefullscreen, window, minimize, close, help, about, services, hide, hideOthers, unhide, quit, showSubstitutions, toggleSmartQuotes, toggleSmartDashes, toggleTextReplacement, startSpeaking, stopSpeaking, zoom, front, appMenu, fileMenu, editMenu, viewMenu, shareMenu, recentDocuments, toggleTabBar, selectNextTab, selectPreviousTab, showAllTabs, mergeAllWindows, clearRecentDocuments, moveTabToNewWindow, windowMenu のいずれかにできます。メニューアイテムのアクションを定義します。指定すると click プロパティは無視されます。 役割 (roles) を参照してください。
    • type string (任意) - normalseparatorsubmenucheckboxradio にできます。
    • label string (任意)
    • sublabel string (任意)
    • toolTip string (任意) macOS - このメニューアイテムに浮かび上がるテキスト。
    • accelerator Accelerator (任意)
    • icon (NativeImage | string) (任意)
    • enabled boolean (任意) - もし false なら、メニューアイテムは灰色になりクリックできません。
    • acceleratorWorksWhenHidden boolean (任意) macOS - 省略値は true です。false のときは、アイテムが表示されていない場合にアクセラレータがアイテムをトリガーするのを防ぎます。
    • visible boolean (任意) - もし false なら、メニューアイテムは全く見えなくなります。
    • checked boolean (任意) - type が checkboxradio のメニューアイテムに対しては指定する必要があります。
    • registerAccelerator boolean (任意) Linux Windows - false の場合、アクセラレータはシステムに登録されませんが、それでも表示はされます。 省略値は true です。
    • sharingItem SharingItem (任意) macOS - roleshareMenu の場合に共有するアイテムです。
    • submenu (MenuItemConstructorOptions[] | Menu) (任意) - submenu 型メニューアイテムを指定する必要があります。 もし submenu を指定した場合、type: 'submenu' は省略できます。 値が Menu でない場合は、Menu.buildFromTemplate を用いて自動的に変換されます。
    • id string (任意) - 単一のメニュー内で一意。 宣言されている場合は、位置属性によってこのアイテムへの参照として使用できます。
    • before string[] (optional) - Inserts this item before the item with the specified id. 参照された項目が存在しない場合、アイテムはメニューの最後に挿入されます。 また、与えられたメニューアイテムをそのアイテムと同じ「グループ」に配置する必要があることを意味します。
    • after string[] (optional) - Inserts this item after the item with the specified id. 参照された項目が存在しない場合、アイテムはメニューの最後に挿入されます。
    • beforeGroupContaining string[] (optional) - Provides a means for a single context menu to declare the placement of their containing group before the containing group of the item with the specified id.
    • afterGroupContaining string[] (optional) - Provides a means for a single context menu to declare the placement of their containing group after the containing group of the item with the specified id.

注釈: Windows と Linux でアイテムが非表示になっている場合のアクセラレータは常に機能するため、acceleratorWorksWhenHidden は macOS 専用として指定されています。 これはネイティブの macOS 開発では可能なので、オプションを無効にするオプションをユーザーに提供するためにユーザーに公開されます。

役割 (roles)

Roles を使用すると、メニューアイテムに定義済みの動作を持たせることができます。

click 関数で手動で動作を実装しようとするのではなく、標準の role に一致するメニューアイテムに対して role を指定することが最善です。 組み込み role の動作は最適なネイティブの操作感を得られます。

roleを使用する場合、labelaccelerator の値は任意で、各プラットフォームに最適な値がデフォルトになっています。

すべてのメニューアイテムは、rolelabel、セパレータの場合は type のいずれかを保持する必要があります。

role プロパティは、以下の値を持つことができます。

  • undo
  • about - ネイティブのこの App についてのパネル (専用のパネルを提供しない、Window 上のカスタムメッセージボックス) をトリガーします。
  • redo
  • cut
  • copy
  • paste
  • pasteAndMatchStyle
  • selectAll
  • delete
  • minimize - 現在のウィンドウを最小化する。
  • close - 現在のウィンドウを閉じる。
  • quit - アプリケーションを終了する。
  • reload - 現在のウィンドウをリロードする。
  • forceReload - キャッシュを無視して現在のウィンドウをリロードする。
  • toggleDevTools - 現在のウィンドウの開発者向けツールのトグル切り替えをする。
  • togglefullscreen - 現在のウインドウの全画面モードのトグル切り替え.
  • resetZoom - フォーカス中のページのズームレベルを元のサイズにリセットする。
  • zoomIn - フォーカス中のページを 10% 拡大する。
  • zoomOut - フォーカス中のページを 10% 縮小する。
  • toggleSpellChecker - 組み込みスペルチェッカーを有効/無効にします。
  • fileMenu - デフォルト"ファイル" メニュー全体 (Close / Quit)
  • editMenu - デフォルトの"編集"メニュー全体 (元に戻す、コピー、等)。
  • viewMenu - デフォルトの"表示"メニュー全体 (リロード、開発ツールON/OFF等)
  • windowMenu - デフォルトの"ウインドウ"メニュー全体 (最小化、ズーム等)。

以下は macOS で有効な追加の role です。

  • appMenu - デフォルトの"App"メニュー全体 (Electronについて、サービス等)
  • hide - hide アクションに割り当てる。
  • hideOthers - hideOtherApplications アクションに割り当てる。
  • unhide - unhideAllApplications アクションに割り当てる。
  • showSubstitutions - orderFrontSubstitutionsPanel アクションに割り当てる。
  • toggleSmartQuotes - toggleAutomaticQuoteSubstitution アクションに割り当てる。
  • toggleSmartDashes - toggleAutomaticDashSubstitution アクションに割り当てる。
  • toggleTextReplacement - toggleAutomaticTextReplacement アクションに割り当てる。
  • startSpeaking - startSpeaking アクションに割り当てる。
  • stopSpeaking - stopSpeaking アクションに割り当てる。
  • front - arrangeInFront アクションに割り当てる。
  • zoom - performZoom アクションに割り当てる。
  • toggleTabBar - toggleTabBar アクションに割り当てる。
  • selectNextTab - selectNextTab アクションに割り当てる。
  • selectPreviousTab - selectPreviousTab アクションに割り当てる。
  • showAllTabs - showAllTabs アクションに割り当てる。
  • mergeAllWindows - mergeAllWindows アクションに割り当てる。
  • moveTabToNewWindow - moveTabToNewWindow アクションに割り当てる。
  • window - "ウインドウ"サブメニュー。
  • help - "ヘルプ"サブメニュー。
  • services - "サービス" メニューのサブメニュー。 これはこのアプリケーションのメニューにのみ使うことを意図しており、macOS アプリのコンテキストメニューで使用される "サービス" サブメニューと同じでは ありません。そのような "サービス" サブメニューは Electron では実装されていません。
  • recentDocuments - "最近使った項目を開く"サブメニュー。
  • clearRecentDocuments - clearRecentDocuments アクションに割り当てる。
  • shareMenu - このサブメニューは 共有メニュー です。 sharingItem プロパティは、共有アイテムを示すためにも設定する必要があります。

macOS の role を指定するとき、labelaccelerator がメニューアイテムに影響を与える唯一のオプションです。 ほかのすべてのオプションは無視されます。 小文字の roletoggledevtools などもまだサポートしています。

注意: macOS 上の tray 内の最上層にあるメニューアイテムでは、enabledvisibility プロパティは利用できません。

インスタンスプロパティ

MenuItem のインスタンスには以下のプロパティがあります。

アイテムの一意な id を示す string。このプロパティは動的に変更できます。

そのアイテムに表示されるラベルを示す string

MenuItem がクリックイベントを受け取った時に発火される Function。 これは menuItem.click(event, focusedWindow, focusedWebContents) で呼び出されます。

存在する場合、メニューアイテムのサブメニューを格納する Menu (任意)。

そのアイテムの種類を示す stringnormalseparatorsubmenucheckboxradio のいずれか。

セットされている場合、アイテムの役割を示す string (任意)。 undo, redo, cut, copy, paste, pasteAndMatchStyle, delete, selectAll, reload, forceReload, toggleDevTools, resetZoom, zoomIn, zoomOut, toggleSpellChecker, togglefullscreen, window, minimize, close, help, about, services, hide, hideOthers, unhide, quit, startSpeaking, stopSpeaking, zoom, front, appMenu, fileMenu, editMenu, viewMenu, shareMenu, recentDocuments, toggleTabBar, selectNextTab, selectPreviousTab, showAllTabs, mergeAllWindows, clearRecentDocuments, moveTabToNewWindow, windowMenu のいずれかにできます。

Accelerator (任意) 型で、セットされているならばそのアイテムのアクセラレータになります。

Accelerator | null 型で、メニューアイテムの ユーザーが割り当てたアクセラレータ を表します。

注意: このプロパティは MenuItemMenu に追加された後にのみ初期化されます。 Menu.buildFromTemplate または Menu.append()/insert() を介してください。 初期化前にアクセスすると null を返します。

セットされている場合、アイテムのアイコンを示す NativeImage | string (任意)。

そのアイテムのサブラベルを示す string

そのアイテムに浮かび上がるテキストを示す string

アイテムが有効かどうかを示す boolean。このプロパティは動的に変更できます。

アイテムが見えるかどうかを示す boolean。このプロパティは動的に変更できます。

アイテムがチェックされたかどうかを示す boolean。このプロパティは動的に変更できます。

checkbox メニューアイテムは、選択された時に checked プロパティをオンかオフにトグル切り替えします。

radio メニューアイテムは、クリックされると checked がオンになり、同じメニュー内の隣接するアイテムすべてのこのプロパティをオフにします。

更なる動作は、click 関数の追加で可能です。

boolean 型で、アクセラレータをシステムに登録する必要があるのか、ただ表示するだけなのかを示します。

このプロパティは動的に変更できます。

SharingItem 型で、roleshareMenu の場合に共有するアイテムを示します。

このプロパティは動的に変更できます。

アイテムの一意な連番 id を示す number

そのアイテムが属する Menu