From a3166f027461f5de16c2c6bed398eb2bcd635863 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Fri, 23 Apr 2021 12:43:22 +0300 Subject: [PATCH] pass dynamic id for each nodeView --- .../components/TestComponent.js | 4 ++-- wax-prosemirror-core/src/PortalContext.js | 3 +++ .../components/PortalComponent.js | 18 ++++++++++++------ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/TestComponent.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/TestComponent.js index 558008049..2be18416a 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/TestComponent.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/TestComponent.js @@ -92,7 +92,7 @@ export default ({ node, view, getPos }) => { console.log(node.attrs); setShowExplanation(true); showExp = true; - view.dispatch(view.state.tr); + // view.dispatch(view.state.tr); }; const MemorizedComponent = useMemo( @@ -110,7 +110,7 @@ export default ({ node, view, getPos }) => { <> <EditorWrapper ref={setEditorRef} style={styles} /> <button onClick={clickMe}>Show Explanation</button> - {showExp && ( + {showExplanation && ( <input type="text" placeholder="type your explanation"></input> )} </> diff --git a/wax-prosemirror-core/src/PortalContext.js b/wax-prosemirror-core/src/PortalContext.js index 78e364e18..8e5b7d9a6 100644 --- a/wax-prosemirror-core/src/PortalContext.js +++ b/wax-prosemirror-core/src/PortalContext.js @@ -1,6 +1,7 @@ /* eslint react/prop-types: 0 */ /* eslint react/destructuring-assignment: 0 */ import React, { useState } from 'react'; +import { v4 as uuidv4 } from 'uuid'; export const PortalContext = React.createContext({ createPortal: () => {}, @@ -13,11 +14,13 @@ export default props => { component: {}, node: {}, view: {}, + id: null, getPos: () => {}, decorations: [], createPortal: (element, component, node, view, getPos, decorations) => { setPortal({ ...portal, + id: uuidv4(), element, component, node, diff --git a/wax-prosemirror-services/src/PortalService/components/PortalComponent.js b/wax-prosemirror-services/src/PortalService/components/PortalComponent.js index a27c133f4..f8999f946 100644 --- a/wax-prosemirror-services/src/PortalService/components/PortalComponent.js +++ b/wax-prosemirror-services/src/PortalService/components/PortalComponent.js @@ -6,15 +6,21 @@ import { isEmpty } from 'lodash'; export default () => { // eslint-disable-next-line no-unused-vars - const { element, component, node, view, getPos, decorations } = useContext( - PortalContext, - ); + const { + element, + component, + node, + view, + getPos, + decorations, + id, + } = useContext(PortalContext); const [portals, setPortals] = useState([]); useEffect(() => { if (!isEmpty(element)) { - portals.push({ dom: element, component, active: true }); + portals.push({ dom: element, component, active: true, id }); setPortals([...portals]); } }, [element]); @@ -22,7 +28,7 @@ export default () => { return ( <> {portals.length > 0 && - portals.map(({ dom, component: Component }) => { + portals.map(({ dom, component: Component, id }) => { return ReactDOM.createPortal( <Component node={node} @@ -31,7 +37,7 @@ export default () => { decorations={decorations} />, dom, - uuidv4(), + id, ); })} </> -- GitLab