From 8debe7dcc90a6a6d297d4904073de2e1fa77334a Mon Sep 17 00:00:00 2001 From: btzr-io Date: Thu, 21 Jun 2018 11:21:57 -0600 Subject: [PATCH 1/5] refactor context-menu logic - Add support for textarea --- src/renderer/util/contextMenu.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/renderer/util/contextMenu.js b/src/renderer/util/contextMenu.js index 900ebf54a..95bccfc92 100644 --- a/src/renderer/util/contextMenu.js +++ b/src/renderer/util/contextMenu.js @@ -21,11 +21,11 @@ function injectDevelopmentTemplate(event, templates) { return templates; } -export function openContextMenu(event, templates = []) { +export function openContextMenu(event, templates = [], canEdit = false) { + const { type, value } = event.target; const isSomethingSelected = window.getSelection().toString().length > 0; - const { type } = event.target; const isInput = event.target.matches('input') && (type === 'text' || type === 'number'); - const { value } = event.target; + const isTextField = canEdit || isInput || event.target.matches('textarea'); templates.push({ label: 'Copy', @@ -36,12 +36,12 @@ export function openContextMenu(event, templates = []) { // If context menu is opened on Input and there is text on the input and something is selected. const { selectionStart, selectionEnd } = event.target; - if (!!value && isInput && selectionStart !== selectionEnd) { + if (!!value && isTextField && selectionStart !== selectionEnd) { templates.push({ label: 'Cut', accelerator: 'CmdOrCtrl+X', role: 'cut' }); } // If context menu is opened on Input and text is present on clipboard - if (clipboard.readText().length > 0 && isInput) { + if (clipboard.readText().length > 0 && isTextField) { templates.push({ label: 'Paste', accelerator: 'CmdOrCtrl+V', @@ -50,7 +50,7 @@ export function openContextMenu(event, templates = []) { } // If context menu is opened on Input - if (isInput && value) { + if (isTextField && value) { templates.push({ label: 'Select All', accelerator: 'CmdOrCtrl+A', @@ -70,5 +70,5 @@ export function openCopyLinkMenu(text, event) { }, }, ]; - openContextMenu(event, templates, false); + openContextMenu(event, templates); } -- 2.45.3 From c9ae62a38eaa1159b463901a26198728253ad847 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 25 Jun 2018 11:20:23 -0600 Subject: [PATCH 2/5] bump react-simplemde-editor 3.6.16 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 305698c0a..6810d3f02 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "react-modal": "^3.1.7", "react-paginate": "^5.2.1", "react-redux": "^5.0.3", - "react-simplemde-editor": "^3.6.15", + "react-simplemde-editor": "^3.6.16", "react-toggle": "^4.0.2", "react-transition-group": "1.x", "redux": "^3.6.0", -- 2.45.3 From be9c16cbdec789b557da118b1fc09b950be7171a Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 25 Jun 2018 14:42:49 -0600 Subject: [PATCH 3/5] fix context-menu of markdown editor --- .../common/form-components/form-field.jsx | 13 ++++++++- src/renderer/util/contextMenu.js | 28 +++++++++++++++++-- yarn.lock | 6 ++-- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/renderer/component/common/form-components/form-field.jsx b/src/renderer/component/common/form-components/form-field.jsx index 0b23e49e8..0cac65160 100644 --- a/src/renderer/component/common/form-components/form-field.jsx +++ b/src/renderer/component/common/form-components/form-field.jsx @@ -6,6 +6,7 @@ import MarkdownPreview from 'component/common/markdown-preview'; import SimpleMDE from 'react-simplemde-editor'; import 'simplemde/dist/simplemde.min.css'; import Toggle from 'react-toggle'; +import { openEditorMenu } from 'util/contextMenu'; type Props = { name: string, @@ -54,11 +55,21 @@ export class FormField extends React.PureComponent { ); } else if (type === 'markdown') { + const stopContextMenu = event => { + event.preventDefault(); + event.stopPropagation(); + }; + const handleEvents = { + contextmenu(codeMirror, event) { + openEditorMenu(event, codeMirror); + }, + }; input = ( -
+
0; + const isSomethingSelected = selection.length > 0 || window.getSelection().toString().length > 0; const isInput = event.target.matches('input') && (type === 'text' || type === 'number'); const isTextField = canEdit || isInput || event.target.matches('textarea'); @@ -61,6 +61,30 @@ export function openContextMenu(event, templates = [], canEdit = false) { injectDevelopmentTemplate(event, templates); remote.Menu.buildFromTemplate(templates).popup(); } + +export function openEditorMenu(event, codeMirror) { + const value = codeMirror.doc.getValue(); + const selection = codeMirror.doc.getSelection(); + const templates = [ + { + label: 'Select All', + accelerator: 'CmdOrCtrl+A', + role: 'selectall', + click: () => { + codeMirror.execCommand('selectAll'); + }, + enabled: value.length > 0, + }, + { + label: 'Cut', + accelerator: 'CmdOrCtrl+X', + role: 'cut', + enabled: selection.length > 0, + }, + ]; + openContextMenu(event, templates, true, selection); +} + export function openCopyLinkMenu(text, event) { const templates = [ { diff --git a/yarn.lock b/yarn.lock index e272149a0..8bb0709a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7626,9 +7626,9 @@ react-redux@^5.0.3: loose-envify "^1.1.0" prop-types "^15.6.0" -react-simplemde-editor@^3.6.15: - version "3.6.15" - resolved "https://registry.yarnpkg.com/react-simplemde-editor/-/react-simplemde-editor-3.6.15.tgz#b4991304c7e1cac79258bb225579d008c13b5991" +react-simplemde-editor@^3.6.16: + version "3.6.16" + resolved "https://registry.yarnpkg.com/react-simplemde-editor/-/react-simplemde-editor-3.6.16.tgz#33633259478d3395f2c7b70deb56a1a40e863bea" dependencies: simplemde "^1.11.2" -- 2.45.3 From 767f6642dd74218a37476523a71771ca53160a55 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Mon, 25 Jun 2018 16:18:20 -0600 Subject: [PATCH 4/5] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08a622e12..ff799b679 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/). ### Fixed * Take previous bid amount into account when determining how much users have available to deposit ([#1725](https://github.com/lbryio/lbry-app/pull/1725)) + * Fix can't right click > paste into description on publish ([#1664](https://github.com/lbryio/lbry-app/issues/1664)) ### Changed -- 2.45.3 From b92597b74e9961d38341221f82df779d8b8f995b Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 3 Jul 2018 00:37:48 -0400 Subject: [PATCH 5/5] add comment --- src/renderer/util/contextMenu.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/util/contextMenu.js b/src/renderer/util/contextMenu.js index 26e601a9a..0bad608d7 100644 --- a/src/renderer/util/contextMenu.js +++ b/src/renderer/util/contextMenu.js @@ -62,6 +62,7 @@ export function openContextMenu(event, templates = [], canEdit = false, selectio remote.Menu.buildFromTemplate(templates).popup(); } +// This function is used for the markdown description on the publish page export function openEditorMenu(event, codeMirror) { const value = codeMirror.doc.getValue(); const selection = codeMirror.doc.getSelection(); -- 2.45.3