diff --git a/editors/demo/src/OEN/OEN.js b/editors/demo/src/OEN/OEN.js index d311b98dd5d2efa25159d4a95f20ab934e489c79..29b6c46c7aead79e89f1f25a9061220787e0c772 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 46b0496e81eb4e7d583aaf20f48ec56af1bbe5ff..581f1fe54983dd7df6f015119c260597804565cc 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 0000000000000000000000000000000000000000..698ced7571da77b3f9b8a5adedc737a86b08524c --- /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 0000000000000000000000000000000000000000..29c443ff092bb657291261e82460e9ef41513a8b --- /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 7b3d0294e814235a7a0275fca2523f8785097875..df7775865e471f2c35a314b4899dcf50b6b0d140 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 cbe0d46856a1c1800b9016c72422cdbe90d016aa..b082eaa13c70a30136d7bf78850b7442bd3fa08f 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 559d7ae14351c3f0a8b2e192b317c6edbfcbcf6d..d60ea4364e447541f455e8cc5d2147e78b8633c6 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