From 9f0f19a78411e4cb6e66f5d4bbaf519e934f43a2 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Fri, 6 Aug 2021 09:30:51 +0300 Subject: [PATCH] introduce disallowedTools in views --- .../components/EditorComponent.js | 1 + wax-prosemirror-components/src/components/SaveButton.js | 3 +-- .../src/components/tables/CreateTable.js | 8 +++++--- wax-prosemirror-core/src/WaxView.js | 1 + wax-prosemirror-services/src/NoteService/Editor.js | 1 + .../InsertTableService/InsertTableService.js | 3 ++- .../src/TablesService/InsertTableService/Table.js | 5 +++-- 7 files changed, 14 insertions(+), 8 deletions(-) diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/EditorComponent.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/EditorComponent.js index c8afcc436..0cd32b264 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/EditorComponent.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/EditorComponent.js @@ -102,6 +102,7 @@ const EditorComponent = ({ node, view, getPos }) => { }), // This is the magic part dispatchTransaction, + disallowedTools: [], handleDOMEvents: { mousedown: () => { context.updateView({}, questionId); diff --git a/wax-prosemirror-components/src/components/SaveButton.js b/wax-prosemirror-components/src/components/SaveButton.js index 986f192d6..2d91b820f 100644 --- a/wax-prosemirror-components/src/components/SaveButton.js +++ b/wax-prosemirror-components/src/components/SaveButton.js @@ -19,8 +19,7 @@ const SaveButton = ({ view = {}, item }) => { const [isSaving, setIsSaving] = useState(false); const handleMouseDown = (e, editorState, editorDispatch) => { - // eslint-disable-next-line no-underscore-dangle - // view._props.onChange(state.doc.content); + // view.props.onChange(state.doc.content); setIsSaving(true); setTimeout(() => { setIsSaving(false); diff --git a/wax-prosemirror-components/src/components/tables/CreateTable.js b/wax-prosemirror-components/src/components/tables/CreateTable.js index 6dcac6066..78b1453da 100644 --- a/wax-prosemirror-components/src/components/tables/CreateTable.js +++ b/wax-prosemirror-components/src/components/tables/CreateTable.js @@ -24,20 +24,22 @@ const DropWrapper = styled.div` const CreateTable = ({ view = {}, item }) => { const { view: { main }, + activeView, activeViewId, } = useContext(WaxContext); if (item.onlyOnMain) { view = main; } - const { state } = view; const { icon, run, select, title } = item; const ref = useRef(); const [isOpen, setIsOpen] = useState(false); const dropComponent = ( <InsertTableTool - onGridSelect={colRows => handleSelect(colRows, view.state, view.dispatch)} + onGridSelect={colRows => + handleSelect(colRows, activeView.state, activeView.dispatch) + } /> ); @@ -46,7 +48,7 @@ const CreateTable = ({ view = {}, item }) => { setIsOpen(!isOpen); }; - let isDisabled = !select(state, activeViewId); + let isDisabled = !select(activeView, activeViewId); const isEditable = main.props.editable(editable => { return editable; diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js index 101389c3d..b11ef6393 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -68,6 +68,7 @@ export default props => { editable: () => !readonly, state: EditorState.create(options), dispatchTransaction, + disallowedTools: [], user, scrollMargin: 200, scrollThreshold: 200, diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js index a823668eb..21b868fcf 100644 --- a/wax-prosemirror-services/src/NoteService/Editor.js +++ b/wax-prosemirror-services/src/NoteService/Editor.js @@ -37,6 +37,7 @@ export default ({ node, view }) => { }), // This is the magic part dispatchTransaction, + disallowedTools: ['tables'], handleDOMEvents: { blur: () => { if (context.view[noteId]) { diff --git a/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js b/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js index d2214f8cd..135b4a9f8 100644 --- a/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js +++ b/wax-prosemirror-services/src/TablesService/InsertTableService/InsertTableService.js @@ -1,5 +1,5 @@ -import Service from '../../Service'; import { tableNodes, goToNextCell } from 'prosemirror-tables'; +import Service from '../../Service'; import Table from './Table'; class InsertTableService extends Service { @@ -14,6 +14,7 @@ class InsertTableService extends Service { register() { this.container.bind('Table').to(Table); + // eslint-disable-next-line camelcase const { table, table_row, table_cell, table_header } = tableNodes({ tableGroup: 'block', cellContent: 'block+', diff --git a/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js b/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js index 5ab8f5f42..b3e6bf75b 100644 --- a/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js +++ b/wax-prosemirror-services/src/TablesService/InsertTableService/Table.js @@ -19,8 +19,9 @@ class Table extends Tools { }; } - select = (state, activeViewId) => { - if (activeViewId !== 'main') return false; + select = (view, activeViewId) => { + const { disallowedTools } = view.props; + if (disallowedTools.includes('tables')) return false; return true; }; -- GitLab