From db938e876f1d5a0cf14368ad9dccb1c7ca17b1f1 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Tue, 24 May 2022 17:02:59 +0300
Subject: [PATCH] new oen elements

---
 editors/demo/src/OEN/OEN.js                   |  6 ++-
 wax-prosemirror-schema/index.js               |  2 +-
 .../nodes/{ => oenNodes}/OenContainerNode.js  |  0
 .../src/nodes/oenNodes/OenSectionNode.js      | 24 +++++++++++
 .../src/nodes/oenNodes/index.js               |  7 ++++
 .../schema/matchingOptionNode.js              |  2 +-
 .../OENContainersService.js                   |  8 ++--
 .../OENContainersService/oenContainers.css    | 42 +++++++++++++++++++
 8 files changed, 84 insertions(+), 7 deletions(-)
 rename wax-prosemirror-schema/src/nodes/{ => oenNodes}/OenContainerNode.js (100%)
 create mode 100644 wax-prosemirror-schema/src/nodes/oenNodes/OenSectionNode.js
 create mode 100644 wax-prosemirror-schema/src/nodes/oenNodes/index.js

diff --git a/editors/demo/src/OEN/OEN.js b/editors/demo/src/OEN/OEN.js
index d311b98dd..29b6c46c7 100644
--- a/editors/demo/src/OEN/OEN.js
+++ b/editors/demo/src/OEN/OEN.js
@@ -26,8 +26,10 @@ const user = {
   username: 'admin',
 };
 
-const val = `<div class="introduction" data-type="content_structure_element"><p>Intro</p></div>
-              <div class="outline" data-type="content_structure_element"><p>outline</p></div> `;
+const val = `<section class="section"><div class="introduction" data-type="content_structure_element"><p>Intro</p></div>
+              <div class="outline" data-type="content_structure_element"><p>outline</p></div></section>
+              <section class="section"><div class="introduction" data-type="content_structure_element"><p>Intro</p></div>
+              <div class="outline" data-type="content_structure_element"><p>outline</p></div></section>`;
 
 const Oen = () => {
   const editorRef = useRef();
diff --git a/wax-prosemirror-schema/index.js b/wax-prosemirror-schema/index.js
index 46b0496e8..581f1fe54 100644
--- a/wax-prosemirror-schema/index.js
+++ b/wax-prosemirror-schema/index.js
@@ -45,7 +45,7 @@ export { default as codeBlockNode } from './src/nodes/codeBlockNode';
 export { default as mathInlineNode } from './src/nodes/mathInlineNode';
 export { default as mathDisplayNode } from './src/nodes/mathDisplayNode';
 export { default as customBlockNode } from './src/nodes/customBlockNode';
-export { default as OenContainerNode } from './src/nodes/OenContainerNode';
+export { default as OenNodes } from './src/nodes/oenNodes';
 /*
 LIST OF TRACK CHANGES NODES
 */
diff --git a/wax-prosemirror-schema/src/nodes/OenContainerNode.js b/wax-prosemirror-schema/src/nodes/oenNodes/OenContainerNode.js
similarity index 100%
rename from wax-prosemirror-schema/src/nodes/OenContainerNode.js
rename to wax-prosemirror-schema/src/nodes/oenNodes/OenContainerNode.js
diff --git a/wax-prosemirror-schema/src/nodes/oenNodes/OenSectionNode.js b/wax-prosemirror-schema/src/nodes/oenNodes/OenSectionNode.js
new file mode 100644
index 000000000..698ced757
--- /dev/null
+++ b/wax-prosemirror-schema/src/nodes/oenNodes/OenSectionNode.js
@@ -0,0 +1,24 @@
+const OenSectionNode = {
+  content: 'block+',
+  group: 'block',
+  attrs: {
+    class: { default: 'section' },
+  },
+  defining: true,
+  parseDOM: [
+    {
+      tag: 'section.section',
+      getAttrs(dom) {
+        return {
+          class: dom.getAttribute('class'),
+          type: dom.dataset.group,
+        };
+      },
+    },
+  ],
+  toDOM(node) {
+    return ['section', node.attrs, 0];
+  },
+};
+
+export default OenSectionNode;
diff --git a/wax-prosemirror-schema/src/nodes/oenNodes/index.js b/wax-prosemirror-schema/src/nodes/oenNodes/index.js
new file mode 100644
index 000000000..29c443ff0
--- /dev/null
+++ b/wax-prosemirror-schema/src/nodes/oenNodes/index.js
@@ -0,0 +1,7 @@
+import OenContainerNode from './OenContainerNode';
+import OenSectionNode from './OenSectionNode';
+
+export default {
+  oen_container: OenContainerNode,
+  oen_section: OenSectionNode,
+};
diff --git a/wax-prosemirror-services/src/MatchingService/schema/matchingOptionNode.js b/wax-prosemirror-services/src/MatchingService/schema/matchingOptionNode.js
index 7b3d0294e..df7775865 100644
--- a/wax-prosemirror-services/src/MatchingService/schema/matchingOptionNode.js
+++ b/wax-prosemirror-services/src/MatchingService/schema/matchingOptionNode.js
@@ -8,7 +8,7 @@ const matchingOptionNode = {
     options: { default: [] },
   },
   group: 'inline questions',
-  content: 'text*',
+  content: 'inline*',
   inline: true,
   atom: true,
   defining: true,
diff --git a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
index cbe0d4685..b082eaa13 100644
--- a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
+++ b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
@@ -1,4 +1,4 @@
-import { OenContainerNode } from 'wax-prosemirror-schema';
+import { OenNodes } from 'wax-prosemirror-schema';
 import Service from '../Service';
 import './oenContainers.css';
 
@@ -10,8 +10,10 @@ class OENContainersService extends Service {
   register() {
     const createNode = this.container.get('CreateNode');
 
-    createNode({
-      oen_container: OenContainerNode,
+    Object.keys(OenNodes).forEach(node => {
+      createNode({
+        [node]: OenNodes[node],
+      });
     });
   }
 }
diff --git a/wax-prosemirror-services/src/OENContainersService/oenContainers.css b/wax-prosemirror-services/src/OENContainersService/oenContainers.css
index 559d7ae14..d60ea4364 100644
--- a/wax-prosemirror-services/src/OENContainersService/oenContainers.css
+++ b/wax-prosemirror-services/src/OENContainersService/oenContainers.css
@@ -11,6 +11,32 @@ div[data-type="content_structure_element"]::before {
     display: block;
 }
 
+.section {
+    position: relative;
+    padding: 10px 10px 0 10px;
+    margin-top: 20px;
+    border: 3px solid #E2EBFF;
+}
+
+.section::before {
+    content: 'Section';
+    color: #c7d8fc;
+    font-weight: bold;
+    position: absolute;
+    display: inline-block;
+    bottom: 0;
+    top: -25px;
+    left: -3px;
+}
+
+.ProseMirror>section.section:nth-of-type(1) {
+  margin-top: 0px;
+}
+
+.section>div:nth-of-type(1) {
+    padding-top: 0;
+}
+
 .introduction::before {
     content: 'Introduction Section';
 }
@@ -45,4 +71,20 @@ content: 'Objectives Section';
 
 .references::before {
     content: 'References Section';
+}
+
+.main-content::before {
+    content: 'Main Content Section';
+}
+
+.bibliography::before {
+    content: 'Bibliography Section';
+}
+
+.further-reading::before {
+    content: 'Further Reading Section';
+}
+
+.content-opener-image::before {
+    content: 'Content Opener Image Section';
 }
\ No newline at end of file
-- 
GitLab