Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Feb 8, 2023. It is now read-only.

mixmaxhq/electron-editor-context-menu

Open more actions menu

Repository files navigation

electron-editor-context-menu

In Electron, right-clicking in text editors does… nothing.

This module enables the menu you'd expect, with optional spell-checker integration.

menu

Installation

npm install electron-editor-context-menu

or

npm install electron-editor-context-menu --save

Usage

// 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);
});

Spell-checker integration

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.

Customizing the menu

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.

Credits

Created by Jeff Wear.

Thanks to electron/electron#942 (comment) for the initial sketch of this.

Copyright and License

Copyright 2016 Mixmax, Inc., licensed under the MIT License.

Release History

  • 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.

About

Enable the native right-click menu in Electron.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.