In Electron, right-clicking in text editors does… nothing.
This module enables the menu you'd expect, with optional spell-checker integration.
npm install electron-editor-context-menu
or
npm install electron-editor-context-menu --save
// In the renderer process:
var remote = require('electron').remote;
// `remote.require` since `Menu` is a main-process module.
var buildEditorContextMenu = remote.require('electron-editor-context-menu');
window.addEventListener('contextmenu', function(e) {
// Only show the context menu in text editors.
if (!e.target.closest('textarea, input, [contenteditable="true"]')) return;
var menu = buildEditorContextMenu();
// The 'contextmenu' event is emitted after 'selectionchange' has fired but possibly before the
// visible selection has changed. Try to wait to show the menu until after that, otherwise the
// visible selection will update after the menu dismisses and look weird.
setTimeout(function() {
menu.popup(remote.getCurrentWindow());
}, 30);
});
Show spelling suggestions by passing a selection object when building the menu:
var selection = {
isMisspelled: true,
spellingSuggestions: [
'men',
'mean',
'menu'
]
};
var menu = buildEditorContextMenu(selection);
Get these suggestions when your spell-check provider runs
—Electron will poll it immediately before the 'contextmenu'
event fires.
For a complete example using electron-spell-check-provider
, see
here.
You can add or remove items to the menu, or replace it entirely, by providing
mainTemplate
and/or suggestionsTemplate
parameters when building the menu:
var menu = buildEditorContextMenu(selection, mainTemplate, suggestionsTemplate);
The mainTemplate
parameter customizes the always-present menu items; the
suggestionsTemplate
parameter customizes the spelling suggestion items.
Pass an array of items to replace the default items entirely; pass a function
to add/remove/edit the default items. The function will be passed the default
array of items as a parameter and should return an array of items.
Created by Jeff Wear.
Thanks to electron/electron#942 (comment) for the initial sketch of this.
Copyright 2016 Mixmax, Inc., licensed under the MIT License.
- 1.1.1 Fix compatibility with electron-builder
- 1.1.0 Add the ability to customize the main template and the suggestions template.
- 1.0.0 Initial release.