2015-08-28 23:35:22 +00:00
|
|
|
# MenuItem
|
2015-08-28 23:19:28 +00:00
|
|
|
|
2016-04-22 18:42:54 +00:00
|
|
|
> Add items to native application menus and context menus.
|
2015-08-28 23:19:28 +00:00
|
|
|
|
2016-06-22 04:23:07 +00:00
|
|
|
See [`Menu`](menu.md) for examples.
|
2013-09-09 07:35:57 +00:00
|
|
|
|
2013-08-14 22:43:35 +00:00
|
|
|
## Class: MenuItem
|
|
|
|
|
2015-08-28 23:19:28 +00:00
|
|
|
Create a new `MenuItem` with the following method:
|
|
|
|
|
2016-08-22 18:29:15 +00:00
|
|
|
### `new MenuItem(options)`
|
2013-08-14 22:43:35 +00:00
|
|
|
|
|
|
|
* `options` Object
|
2016-06-22 02:22:14 +00:00
|
|
|
* `click` Function - Will be called with
|
2016-06-22 04:23:07 +00:00
|
|
|
`click(menuItem, browserWindow, event)` when the menu item is clicked.
|
|
|
|
* `role` String - Define the action of the menu item, when specified the
|
|
|
|
`click` property will be ignored.
|
2013-08-29 14:37:51 +00:00
|
|
|
* `type` String - Can be `normal`, `separator`, `submenu`, `checkbox` or
|
2016-06-22 04:23:07 +00:00
|
|
|
`radio`.
|
2013-08-14 22:43:35 +00:00
|
|
|
* `label` String
|
|
|
|
* `sublabel` String
|
2014-08-04 16:00:39 +00:00
|
|
|
* `accelerator` [Accelerator](accelerator.md)
|
2015-02-13 04:12:40 +00:00
|
|
|
* `icon` [NativeImage](native-image.md)
|
2016-04-22 13:53:26 +00:00
|
|
|
* `enabled` Boolean - If false, the menu item will be greyed out and
|
|
|
|
unclickable.
|
2016-03-31 03:57:28 +00:00
|
|
|
* `visible` Boolean - If false, the menu item will be entirely hidden.
|
2016-04-22 13:53:26 +00:00
|
|
|
* `checked` Boolean - Should only be specified for `checkbox` or `radio` type
|
2016-06-22 04:23:07 +00:00
|
|
|
menu items.
|
2016-03-31 03:57:28 +00:00
|
|
|
* `submenu` Menu - 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` then it will be automatically converted to one using
|
|
|
|
`Menu.buildFromTemplate`.
|
2015-04-07 15:14:28 +00:00
|
|
|
* `id` String - 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.
|
2015-04-13 03:22:33 +00:00
|
|
|
* `position` String - 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
|
|
|
|
2016-03-31 03:57:28 +00:00
|
|
|
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
|
|
|
|
2016-06-22 21:10:38 +00:00
|
|
|
The `label` and `accelerator` are optional when using a `role` and will default
|
|
|
|
to appropriate values for each platform.
|
|
|
|
|
2015-09-02 01:19:18 +00:00
|
|
|
The `role` property can have following values:
|
|
|
|
|
|
|
|
* `undo`
|
|
|
|
* `redo`
|
|
|
|
* `cut`
|
|
|
|
* `copy`
|
|
|
|
* `paste`
|
2016-06-04 15:23:35 +00:00
|
|
|
* `pasteandmatchstyle`
|
2015-09-02 01:19:18 +00:00
|
|
|
* `selectall`
|
2016-06-04 15:23:35 +00:00
|
|
|
* `delete`
|
2015-09-02 01:19:18 +00:00
|
|
|
* `minimize` - Minimize current window
|
|
|
|
* `close` - Close current window
|
2016-06-21 00:20:57 +00:00
|
|
|
* `quit`- Quit the application
|
2016-06-21 16:43:29 +00:00
|
|
|
* `togglefullscreen`- Toggle full screen mode on the current window
|
2016-08-08 17:09:45 +00:00
|
|
|
* `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%
|
2015-09-02 01:19:18 +00:00
|
|
|
|
2016-06-18 13:26:26 +00:00
|
|
|
On macOS `role` can also have following additional values:
|
2015-09-02 01:19:18 +00:00
|
|
|
|
|
|
|
* `about` - Map to the `orderFrontStandardAboutPanel` action
|
|
|
|
* `hide` - Map to the `hide` action
|
|
|
|
* `hideothers` - Map to the `hideOtherApplications` action
|
|
|
|
* `unhide` - Map to the `unhideAllApplications` action
|
2016-08-07 22:02:32 +00:00
|
|
|
* `startspeaking` - Map to the `startSpeaking` action
|
|
|
|
* `stopspeaking` - Map to the `stopSpeaking` action
|
2015-09-02 01:19:18 +00:00
|
|
|
* `front` - Map to the `arrangeInFront` action
|
2016-06-07 08:42:46 +00:00
|
|
|
* `zoom` - Map to the `performZoom` action
|
2015-09-02 01:19:18 +00:00
|
|
|
* `window` - The submenu is a "Window" menu
|
|
|
|
* `help` - The submenu is a "Help" menu
|
|
|
|
* `services` - The submenu is a "Services" menu
|
2016-03-31 03:57:28 +00:00
|
|
|
|
2016-06-18 13:26:26 +00:00
|
|
|
When specifying `role` on macOS, `label` and `accelerator` are the only options
|
2016-04-22 13:53:26 +00:00
|
|
|
that will affect the MenuItem. All other options will be ignored.
|
2016-04-20 01:12:37 +00:00
|
|
|
|
2016-06-22 04:23:07 +00:00
|
|
|
### Instance Properties
|
2016-03-31 03:57:28 +00:00
|
|
|
|
2016-06-22 04:23:07 +00:00
|
|
|
The following properties are available on instances of `MenuItem`:
|
2016-03-31 03:57:28 +00:00
|
|
|
|
2016-06-22 04:23:07 +00:00
|
|
|
#### `menuItem.enabled`
|
2016-03-31 03:57:28 +00:00
|
|
|
|
2016-06-22 04:23:07 +00:00
|
|
|
A Boolean indicating whether the item is enabled, this property can be
|
|
|
|
dynamically changed.
|
2016-03-31 03:57:28 +00:00
|
|
|
|
2016-06-22 04:23:07 +00:00
|
|
|
#### `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.
|
2016-03-31 03:57:28 +00:00
|
|
|
|
|
|
|
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.
|