From 77f8fd166f288b04a3834fbb9a0cdd3b12f613ca Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 25 Apr 2022 16:38:01 +0300
Subject: [PATCH] schema

---
 .../MultipleDropDownService.js                | 10 +++++
 .../schema/multipleDropDownContainerNode.js   | 29 +++++++++++++
 .../schema/multipleDropDownOptionNode.js      | 42 +++++++++++++++++++
 3 files changed, 81 insertions(+)
 create mode 100644 wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js
 create mode 100644 wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js

diff --git a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js
index dc8a38533..8a7911bdc 100644
--- a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js
+++ b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js
@@ -1,6 +1,8 @@
 import Service from '../Service';
 import MultipleDropDownQuestion from './MultipleDropDownQuestion';
 import MultipleDropDownContainerNodeView from './MultipleDropDownContainerNodeView';
+import multipleDropDownContainerNode from './schema/multipleDropDownContainerNode';
+import multipleDropDownOptionNode from './schema/multipleDropDownOptionNode';
 import CreateDropDownService from './CreateDropDownService/CreateDropDownService';
 
 class MultipleDropDownService extends Service {
@@ -12,6 +14,14 @@ class MultipleDropDownService extends Service {
       .to(MultipleDropDownQuestion);
     const createNode = this.container.get('CreateNode');
     const addPortal = this.container.get('AddPortal');
+
+    createNode({
+      multiple_drop_down_container: multipleDropDownContainerNode,
+    });
+
+    createNode({
+      multiple_drop_down_option: multipleDropDownOptionNode,
+    });
   }
 
   dependencies = [new CreateDropDownService()];
diff --git a/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js
new file mode 100644
index 000000000..83884cd92
--- /dev/null
+++ b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js
@@ -0,0 +1,29 @@
+const multipleDropDownContainerNode = {
+  attrs: {
+    id: { default: '' },
+    class: { default: 'multiple-drop-down-container' },
+    feedback: { default: '' },
+  },
+  group: 'block questions',
+  atom: true,
+  selectable: false,
+  draggable: false,
+  content: 'block*',
+  parseDOM: [
+    {
+      tag: 'div.multiple-drop-down-container',
+      getAttrs(dom) {
+        return {
+          id: dom.getAttribute('id'),
+          class: dom.getAttribute('class'),
+          feedback: dom.getAttribute('feedback'),
+        };
+      },
+    },
+  ],
+  toDOM(node) {
+    return ['div', node.attrs, 0];
+  },
+};
+
+export default multipleDropDownContainerNode;
diff --git a/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js
new file mode 100644
index 000000000..5002ec17d
--- /dev/null
+++ b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js
@@ -0,0 +1,42 @@
+const multipleDropDownOptionNode = {
+  attrs: {
+    class: { default: 'multiple-drop-down-option' },
+    id: { default: '' },
+    isfirst: { default: false },
+    answer: { default: {} },
+    options: { default: [] },
+  },
+  group: 'inline questions',
+  content: 'text*',
+  inline: true,
+  atom: true,
+  defining: true,
+  parseDOM: [
+    {
+      tag: 'span.multiple-drop-down-option',
+      getAttrs(dom) {
+        return {
+          id: dom.getAttribute('id'),
+          class: dom.getAttribute('class'),
+          isfirst: JSON.parse(dom.getAttribute('isfirst').toLowerCase()),
+          answer: JSON.parse(dom.getAttribute('answer').toLowerCase()),
+        };
+      },
+    },
+  ],
+  toDOM(node) {
+    return [
+      'span',
+      {
+        id: node.attrs.id,
+        class: node.attrs.class,
+        isfirst: node.attrs.isfirst,
+        answer: JSON.stringify(node.attrs.answer),
+        feedback: node.attrs.feedback,
+      },
+      0,
+    ];
+  },
+};
+
+export default multipleDropDownOptionNode;
-- 
GitLab