From 3efba17dbe44c94f28dc38d8548a97cb80c260ca Mon Sep 17 00:00:00 2001 From: hns258 Date: Thu, 11 Aug 2022 18:53:40 -0400 Subject: [PATCH] Add `showSelectAll` option (#160) Co-authored-by: Sindre Sorhus --- fixtures/fixture.js | 1 + index.d.ts | 16 +++++++++++++++- index.js | 9 +++++++++ readme.md | 11 ++++++++++- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/fixtures/fixture.js b/fixtures/fixture.js index f5b70da..91f0877 100644 --- a/fixtures/fixture.js +++ b/fixtures/fixture.js @@ -36,6 +36,7 @@ contextMenu({ } ], append: () => {}, + showSelectAll: true, showCopyImageAddress: true, showSaveImageAs: true, showInspectElement: false, diff --git a/index.d.ts b/index.d.ts index cdacb66..9320c1b 100644 --- a/index.d.ts +++ b/index.d.ts @@ -40,6 +40,11 @@ declare namespace contextMenu { */ readonly paste?: string; + /** + @default 'Select All' + */ + readonly selectAll?: string; + /** @default 'Save Image' */ @@ -98,6 +103,7 @@ declare namespace contextMenu { readonly cut: (options: ActionOptions) => MenuItemConstructorOptions; readonly copy: (options: ActionOptions) => MenuItemConstructorOptions; readonly paste: (options: ActionOptions) => MenuItemConstructorOptions; + readonly selectAll: (options: ActionOptions) => MenuItemConstructorOptions; readonly saveImage: (options: ActionOptions) => MenuItemConstructorOptions; readonly saveImageAs: (options: ActionOptions) => MenuItemConstructorOptions; readonly copyLink: (options: ActionOptions) => MenuItemConstructorOptions; @@ -161,6 +167,13 @@ declare namespace contextMenu { */ readonly showSearchWithGoogle?: boolean; + /** + Show the `Select All` menu item when right-clicking in a window. + + Default: `false` on macOS, `true` on Windows and Linux + */ + readonly showSelectAll?: boolean; + /** Show the `Copy Image` menu item when right-clicking on an image. @@ -266,6 +279,7 @@ declare namespace contextMenu { - `showLearnSpelling` - `showLookUpSelection` - `showSearchWithGoogle` + - `showSelectAll` - `showCopyImage` - `showCopyImageAddress` - `showSaveImageAs` @@ -275,7 +289,7 @@ declare namespace contextMenu { To get spellchecking, “Correct Automatically”, and “Learn Spelling” in the menu, please enable the `spellcheck` preference in browser window: `new BrowserWindow({webPreferences: {spellcheck: true}})` - @default [...dictionarySuggestions, defaultActions.separator(), defaultActions.separator(), defaultActions.learnSpelling(), defaultActions.separator(), defaultActions.lookUpSelection(), defaultActions.separator(),defaultActions.searchWithGoogle(), defaultActions.cut(), defaultActions.copy(), defaultActions.paste(), defaultActions.separator(), defaultActions.saveImage(), defaultActions.saveImageAs(), defaultActions.copyLink(), defaultActions.copyImage(), defaultActions.copyImageAddress(), defaultActions.separator(), defaultActions.copyLink(), defaultActions.saveLinkAs(), defaultActions.separator(), defaultActions.inspect()] + @default [...dictionarySuggestions, defaultActions.separator(), defaultActions.separator(), defaultActions.learnSpelling(), defaultActions.separator(), defaultActions.lookUpSelection(), defaultActions.separator(),defaultActions.searchWithGoogle(), defaultActions.cut(), defaultActions.copy(), defaultActions.paste(), defaultActions.selectAll(), defaultActions.separator(), defaultActions.saveImage(), defaultActions.saveImageAs(), defaultActions.copyLink(), defaultActions.copyImage(), defaultActions.copyImageAddress(), defaultActions.separator(), defaultActions.copyLink(), defaultActions.saveLinkAs(), defaultActions.separator(), defaultActions.inspect()] */ readonly menu?: ( defaultActions: Actions, diff --git a/index.js b/index.js index 407c0b4..25017c1 100644 --- a/index.js +++ b/index.js @@ -119,6 +119,13 @@ const create = (win, options) => { } } }), + selectAll: decorateMenuItem({ + id: 'selectAll', + label: 'Select &All', + click() { + webContents(win).selectAll(); + } + }), saveImage: decorateMenuItem({ id: 'saveImage', label: 'Save I&mage', @@ -200,6 +207,7 @@ const create = (win, options) => { }; const shouldShowInspectElement = typeof options.showInspectElement === 'boolean' ? options.showInspectElement : isDev; + const shouldShowSelectAll = options.showSelectAll || (options.showSelectAll !== false && process.platform !== 'darwin'); function word(suggestion) { return { @@ -240,6 +248,7 @@ const create = (win, options) => { defaultActions.cut(), defaultActions.copy(), defaultActions.paste(), + shouldShowSelectAll && defaultActions.selectAll(), defaultActions.separator(), options.showSaveImage && defaultActions.saveImage(), options.showSaveImageAs && defaultActions.saveImageAs(), diff --git a/readme.md b/readme.md index 6e4bb7d..8107df3 100644 --- a/readme.md +++ b/readme.md @@ -143,6 +143,13 @@ Default: `true` Show the `Search with Google` menu item when right-clicking text. +#### showSelectAll + +Type: `boolean`\ +Default: `false` on macOS, `true` on Windows and Linux + +Show the `Select All` menu item when right-clicking in a window. + #### showCopyImage Type: `boolean`\ @@ -249,13 +256,14 @@ To get spellchecking, “Correct Automatically”, and “Learn Spelling” in t The following options are ignored when `menu` is used: - `showLookUpSelection` +- `showSearchWithGoogle` +- `showSelectAll` - `showCopyImage` - `showCopyImageAddress` - `showSaveImageAs` - `showSaveLinkAs` - `showInspectElement` - `showServices` -- `showSearchWithGoogle` Default actions: @@ -267,6 +275,7 @@ Default actions: - `cut` - `copy` - `paste` +- `selectAll` - `saveImage` - `saveImageAs` - `copyImage`