This PR includes stricter testing for empty objects so that false context menus are not created along with the tests to ensure future compatibility.
5.1 KiB
Class: MenuItem
Add items to native application menus and context menus.
Process: Main
See Menu
for examples.
new MenuItem(options)
options
Objectclick
Function (optional) - Will be called withclick(menuItem, browserWindow, event)
when the menu item is clicked.menuItem
MenuItembrowserWindow
BrowserWindowevent
Event
role
String (optional) - Define the action of the menu item, when specified theclick
property will be ignored. See roles.type
String (optional) - Can benormal
,separator
,submenu
,checkbox
orradio
.label
String (optional)sublabel
String (optional)accelerator
Accelerator (optional)icon
(NativeImage | String) (optional)enabled
Boolean (optional) - If false, the menu item will be greyed out and unclickable.visible
Boolean (optional) - If false, the menu item will be entirely hidden.checked
Boolean (optional) - Should only be specified forcheckbox
orradio
type menu items.submenu
(MenuItemConstructorOptions[] | Menu) (optional) - Should be specified forsubmenu
type menu items. Ifsubmenu
is specified, thetype: 'submenu'
can be omitted. If the value is not aMenu
then it will be automatically converted to one usingMenu.buildFromTemplate
.id
String (optional) - Unique within a single menu. If defined then it can be used as a reference to this item by the position attribute.position
String (optional) - This field allows fine-grained definition of the specific location within a given menu.
Roles
Roles allow menu items to have predefined behaviors.
It is best to specify role
for any menu item that matches a standard role,
rather than trying to manually implement the behavior in a click
function.
The built-in role
behavior will give the best native experience.
The label
and accelerator
values are optional when using a role
and will
default to appropriate values for each platform.
Every menu item must have either a role
, label
, or in the case of a separator
a type
.
The role
property can have following values:
undo
redo
cut
copy
paste
pasteAndMatchStyle
selectAll
delete
minimize
- Minimize current window.close
- Close current window.quit
- Quit the application.reload
- Reload the current window.forceReload
- Reload the current window ignoring the cache.toggleDevTools
- Toggle developer tools in the current window.toggleFullScreen
- Toggle full screen mode on the current window.resetZoom
- Reset the focused page's zoom level to the original size.zoomIn
- Zoom in the focused page by 10%.zoomOut
- Zoom out the focused page by 10%.editMenu
- Whole default "Edit" menu (Undo, Copy, etc.).windowMenu
- Whole default "Window" menu (Minimize, Close, etc.).
The following additional roles are available on macOS:
about
- Map to theorderFrontStandardAboutPanel
action.hide
- Map to thehide
action.hideOthers
- Map to thehideOtherApplications
action.unhide
- Map to theunhideAllApplications
action.startSpeaking
- Map to thestartSpeaking
action.stopSpeaking
- Map to thestopSpeaking
action.front
- Map to thearrangeInFront
action.zoom
- Map to theperformZoom
action.toggleTabBar
- Map to thetoggleTabBar
action.selectNextTab
- Map to theselectNextTab
action.selectPreviousTab
- Map to theselectPreviousTab
action.mergeAllWindows
- Map to themergeAllWindows
action.moveTabToNewWindow
- Map to themoveTabToNewWindow
action.window
- The submenu is a "Window" menu.help
- The submenu is a "Help" menu.services
- The submenu is a "Services" menu.recentDocuments
- The submenu is an "Open Recent" menu.clearRecentDocuments
- Map to theclearRecentDocuments
action.
When specifying a role
on macOS, label
and accelerator
are the only
options that will affect the menu item. All other options will be ignored.
Lowercase role
, e.g. toggledevtools
, is still supported.
Instance Properties
The following properties are available on instances of MenuItem
:
menuItem.enabled
A Boolean
indicating whether the item is enabled, this property can be
dynamically changed.
menuItem.visible
A Boolean
indicating whether the item is visible, this property can be
dynamically changed.
menuItem.checked
A Boolean
indicating whether the item is checked, this property can be
dynamically changed.
A checkbox
menu item will toggle the checked
property on and off when
selected.
A radio
menu item will turn on its checked
property when clicked, and
will turn off that property for all adjacent items in the same menu.
You can add a click
function for additional behavior.
menuItem.label
A String
representing the menu items visible label.
menuItem.click
A Function
that is fired when the MenuItem receives a click event.