From 04165dd4a947d4792e5ac2b4de2c2d7af2ca5acd Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Wed, 2 Mar 2022 11:43:44 +0200 Subject: [PATCH] keep selection --- editors/demo/src/Editors.js | 2 +- editors/demo/src/HHMI/config/config.js | 1 + wax-prosemirror-core/src/WaxView.js | 9 ++++++++- .../components/EditorComponent.js | 5 +++++ .../components/QuestionEditorComponent.js | 5 +++++ 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/editors/demo/src/Editors.js b/editors/demo/src/Editors.js index d19991a2e..abd0628fb 100644 --- a/editors/demo/src/Editors.js +++ b/editors/demo/src/Editors.js @@ -70,7 +70,7 @@ const Editors = () => { case 'ncbi': return <NCBI />; default: - return <HHMI />; + return <Editoria />; } }; diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js index ebb2aa943..78c6197dd 100644 --- a/editors/demo/src/HHMI/config/config.js +++ b/editors/demo/src/HHMI/config/config.js @@ -40,6 +40,7 @@ export default { 'Base', { name: 'Annotations', + exclude: ['LinkTool'], more: [ 'Superscript', 'Subscript', diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js index 3524bf111..7ff86c91d 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -11,7 +11,7 @@ import React, { } from 'react'; import applyDevTools from 'prosemirror-dev-tools'; -import { EditorState } from 'prosemirror-state'; +import { EditorState, TextSelection } from 'prosemirror-state'; import { EditorView } from 'prosemirror-view'; import { trackedTransaction } from 'wax-prosemirror-services'; import { WaxContext } from './WaxContext'; @@ -81,6 +81,13 @@ const WaxView = forwardRef((props, ref) => { attributes: { spellcheck: browserSpellCheck ? 'true' : 'false', }, + handleDOMEvents: { + blur: (editorView, event) => { + if (view && event.relatedTarget === null) { + view.focus(); + } + }, + }, }, ); diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js index 5a68b7d35..fd7478dff 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js @@ -125,6 +125,11 @@ const EditorComponent = ({ node, view, getPos }) => { // the parent editor is focused. if (questionView.hasFocus()) questionView.focus(); }, + blur: (editorView, event) => { + if (questionView && event.relatedTarget === null) { + questionView.focus(); + } + }, }, attributes: { diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js index e2540fc90..d06847833 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js @@ -154,6 +154,11 @@ const QuestionEditorComponent = ({ node, view, getPos }) => { // the parent editor is focused. if (questionView.hasFocus()) questionView.focus(); }, + blur: (editorView, event) => { + if (questionView && event.relatedTarget === null) { + questionView.focus(); + } + }, }, attributes: { -- GitLab