electron-editor-context-menu

Enable the native right-click menu in Electron.

  • Owner: mixmaxhq/electron-editor-context-menu
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

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.

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 https://github.com/atom/electron/pull/942#issuecomment-171445954 for
the initial sketch of this.

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.

Main metrics

Overview
Name With Ownermixmaxhq/electron-editor-context-menu
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2016-02-06 00:56:10
Pushed At2021-06-25 19:01:09
Last Commit At2021-06-25 12:01:06
Release Count3
Last Release Namev1.1.1 (Posted on 2016-03-09 11:47:05)
First Release Namev1.0.0 (Posted on )
用户参与
Stargazers Count49
Watchers Count6
Fork Count9
Commits Count24
Has Issues Enabled
Issues Count7
Issue Open Count3
Pull Requests Count7
Pull Requests Open Count0
Pull Requests Close Count3
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private