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