electron/docs/api/menu-item.md

132 lines
5 KiB
Markdown
Raw Normal View History

2016-11-15 00:24:48 +00:00
## Class: MenuItem
2015-08-28 23:19:28 +00:00
> Add items to native application menus and context menus.
2015-08-28 23:19:28 +00:00
2016-11-23 19:20:56 +00:00
Process: [Main](../glossary.md#main-process)
2016-11-03 17:26:00 +00:00
2016-06-22 04:23:07 +00:00
See [`Menu`](menu.md) for examples.
2013-09-09 07:35:57 +00:00
2016-08-22 18:29:15 +00:00
### `new MenuItem(options)`
2013-08-14 22:43:35 +00:00
* `options` Object
2016-12-29 22:11:26 +00:00
* `click` Function (optional) - Will be called with
2016-06-22 04:23:07 +00:00
`click(menuItem, browserWindow, event)` when the menu item is clicked.
2016-10-13 06:30:57 +00:00
* `menuItem` MenuItem
* `browserWindow` [BrowserWindow](browser-window.md)
2016-10-13 06:30:57 +00:00
* `event` Event
2016-12-29 22:11:26 +00:00
* `role` String (optional) - Define the action of the menu item, when specified the
`click` property will be ignored. See [roles](#roles).
2016-12-29 22:11:26 +00:00
* `type` String (optional) - Can be `normal`, `separator`, `submenu`, `checkbox` or
2016-06-22 04:23:07 +00:00
`radio`.
2017-11-28 17:15:15 +00:00
* `label` String (optional)
* `sublabel` String (optional)
2016-12-29 22:11:26 +00:00
* `accelerator` [Accelerator](accelerator.md) (optional)
* `icon` ([NativeImage](native-image.md) | String) (optional)
* `enabled` Boolean (optional) - If false, the menu item will be greyed out and
unclickable.
2016-12-29 22:11:26 +00:00
* `visible` Boolean (optional) - If false, the menu item will be entirely hidden.
* `checked` Boolean (optional) - Should only be specified for `checkbox` or `radio` type
2016-06-22 04:23:07 +00:00
menu items.
* `submenu` (MenuItemConstructorOptions[] | [Menu](menu.md)) (optional) - Should be specified for `submenu` type menu items. If
2016-06-22 04:23:07 +00:00
`submenu` is specified, the `type: 'submenu'` can be omitted. If the value
is not a [`Menu`](menu.md) then it will be automatically converted to one using
2016-06-22 04:23:07 +00:00
`Menu.buildFromTemplate`.
2016-12-29 22:11:26 +00:00
* `id` String (optional) - Unique within a single menu. If defined then it can be used
2016-06-22 04:23:07 +00:00
as a reference to this item by the position attribute.
2016-12-29 22:11:26 +00:00
* `position` String (optional) - This field allows fine-grained definition of the
2016-06-22 04:23:07 +00:00
specific location within a given menu.
2015-09-02 01:19:18 +00:00
### 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.
2015-09-02 01:19:18 +00:00
The `label` and `accelerator` values are optional when using a `role` and will
default to appropriate values for each platform.
2016-06-22 21:10:38 +00:00
2015-09-02 01:19:18 +00:00
The `role` property can have following values:
* `undo`
* `redo`
* `cut`
* `copy`
* `paste`
2017-12-28 05:22:39 +00:00
* `pasteAndMatchStyle`
* `selectAll`
* `delete`
* `minimize` - Minimize current window.
* `close` - Close current window.
* `quit`- Quit the application.
* `reload` - Reload the current window.
2017-12-28 05:22:39 +00:00
* `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 the `orderFrontStandardAboutPanel` action.
* `hide` - Map to the `hide` action.
2017-12-28 05:22:39 +00:00
* `hideOthers` - Map to the `hideOtherApplications` action.
* `unhide` - Map to the `unhideAllApplications` action.
2017-12-28 05:22:39 +00:00
* `startSpeaking` - Map to the `startSpeaking` action.
* `stopSpeaking` - Map to the `stopSpeaking` action.
* `front` - Map to the `arrangeInFront` action.
* `zoom` - Map to the `performZoom` action.
2017-12-28 05:22:39 +00:00
* `toggleTabBar` - Map to the `toggleTabBar` action.
* `selectNextTab` - Map to the `selectNextTab` action.
* `selectPreviousTab` - Map to the `selectPreviousTab` action.
* `mergeAllWindows` - Map to the `mergeAllWindows` action.
* `moveTabToNewWindow` - Map to the `moveTabToNewWindow` action.
* `window` - The submenu is a "Window" menu.
* `help` - The submenu is a "Help" menu.
* `services` - The submenu is a "Services" menu.
2017-12-28 05:22:39 +00:00
* `recentDocuments` - The submenu is an "Open Recent" menu.
* `clearRecentDocuments` - Map to the `clearRecentDocuments` 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.
2017-12-28 05:22:39 +00:00
Lowercase `role`, e.g. `toggledevtools`, is still supported.
2016-06-22 04:23:07 +00:00
### Instance Properties
2016-06-22 04:23:07 +00:00
The following properties are available on instances of `MenuItem`:
2016-06-22 04:23:07 +00:00
#### `menuItem.enabled`
2017-07-24 08:29:03 +00:00
A `Boolean` indicating whether the item is enabled, this property can be
2016-06-22 04:23:07 +00:00
dynamically changed.
2016-06-22 04:23:07 +00:00
#### `menuItem.visible`
2017-07-24 08:29:03 +00:00
A `Boolean` indicating whether the item is visible, this property can be
2016-06-22 04:23:07 +00:00
dynamically changed.
#### `menuItem.checked`
2017-07-24 08:29:03 +00:00
A `Boolean` indicating whether the item is checked, this property can be
2016-06-22 04:23:07 +00:00
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
2016-06-22 04:23:07 +00:00
will turn off that property for all adjacent items in the same menu.
You can add a `click` function for additional behavior.
2016-11-25 12:17:31 +00:00
#### `menuItem.label`
A `String` representing the menu items visible label.
2016-11-25 12:17:31 +00:00
#### `menuItem.click`
A `Function` that is fired when the MenuItem receives a click event.