From dd0956afb9362be11879a7db77476c97c4fdaf66 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Sun, 15 May 2022 20:22:30 +0300
Subject: [PATCH] fix

---
 editors/demo/src/HHMI/HHMI.js                 |  2 +-
 .../components/DropDownComponent.js           | 30 +++++++++++++------
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/editors/demo/src/HHMI/HHMI.js b/editors/demo/src/HHMI/HHMI.js
index e9f619292..cc00d1390 100644
--- a/editors/demo/src/HHMI/HHMI.js
+++ b/editors/demo/src/HHMI/HHMI.js
@@ -55,7 +55,7 @@ const Hhmi = () => {
         value={aa}
         readonly={readOnly}
         layout={HhmiLayout}
-        // onChange={source => console.log(source)}
+        onChange={source => console.log(source)}
       />
     </>
   );
diff --git a/wax-prosemirror-services/src/MultipleDropDownService/components/DropDownComponent.js b/wax-prosemirror-services/src/MultipleDropDownService/components/DropDownComponent.js
index 1781c8757..94c9807a2 100644
--- a/wax-prosemirror-services/src/MultipleDropDownService/components/DropDownComponent.js
+++ b/wax-prosemirror-services/src/MultipleDropDownService/components/DropDownComponent.js
@@ -7,11 +7,11 @@ import React, {
   useEffect,
 } from 'react';
 import { WaxContext } from 'wax-prosemirror-core';
-import { DocumentHelpers } from 'wax-prosemirror-utilities';
 import { v4 as uuidv4 } from 'uuid';
 import styled from 'styled-components';
 import { Icon } from 'wax-prosemirror-components';
 import { NodeSelection } from 'prosemirror-state';
+
 const TriangleTop = styled.div`
   width: 0;
   height: 0;
@@ -90,7 +90,7 @@ const IconRemove = styled(Icon)`
   width: 10px;
 `;
 
-let PreviousNode = '';
+let previousNode = '';
 
 export default ({ setPosition, position }) => {
   const context = useContext(WaxContext);
@@ -127,16 +127,28 @@ export default ({ setPosition, position }) => {
 
   useEffect(() => {
     if (addOptionRef.current) addOptionRef.current.focus();
+
     const { tr } = activeView.state;
-    tr.setNodeMarkup(position.from, undefined, {
-      ...currentNode.node.attrs,
-      options,
-    });
+    if (previousNode.from !== currentNode.from) {
+      tr.setNodeMarkup(position.from, undefined, {
+        ...currentNode.node.attrs,
+        options: currentNode.node.attrs.options,
+      });
+      setOptions(currentNode.node.attrs.options);
+    } else {
+      tr.setNodeMarkup(position.from, undefined, {
+        ...currentNode.node.attrs,
+        options,
+      });
+    }
+    previousNode = currentNode;
+
+    if (!activeView.state.selection.node) return;
 
     const resolvedPos = tr.doc.resolve(position.from);
     tr.setSelection(new NodeSelection(resolvedPos));
-    activeView.dispatch(tr.setMeta('reject', true));
-  }, [position.from]);
+    activeView.dispatch(tr);
+  }, [options, position.from]);
 
   const updateOptionText = () => {
     setOptionText(addOptionRef.current.value);
@@ -166,7 +178,7 @@ export default ({ setPosition, position }) => {
       <TriangleTop />
       <DropDownComponent>
         <Options>
-          {currentOptions.map(value => {
+          {options.map(value => {
             return (
               <Option key={uuidv4()}>
                 <span>{value.label}</span>
-- 
GitLab