diff --git a/wax-prosemirror-services/src/EssayService/EssayService.js b/wax-prosemirror-services/src/EssayService/EssayService.js index be7bd38ff191131b224a0c4edcc6df928347f859..947e8477f5dcef24a248df1d522d61e1e8aa7c2d 100644 --- a/wax-prosemirror-services/src/EssayService/EssayService.js +++ b/wax-prosemirror-services/src/EssayService/EssayService.js @@ -2,8 +2,8 @@ import Service from '../Service'; import EssayQuestion from './EssayQuestion'; import essayContainerNode from './schema/essayContainerNode'; import essayQuestionNode from './schema/essayQuestionNode'; -import essayFeedBackNode from './schema/essayFeedBackNode'; -import EssayComponent from './components/EssayComponent'; +import essayAnswerNode from './schema/essayAnswerNode'; +import EssayQuestionComponent from './components/EssayQuestionComponent'; import EssayNodeView from './EssayNodeView'; class EssayService extends Service { @@ -21,12 +21,12 @@ class EssayService extends Service { }); createNode({ - essay_feedback: essayFeedBackNode, + essay_answer: essayAnswerNode, }); addPortal({ nodeView: EssayNodeView, - component: EssayComponent, + component: EssayQuestionComponent, context: this.app, }); } diff --git a/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js new file mode 100644 index 0000000000000000000000000000000000000000..42e07f530ce9630f2a17f47566adcc65ae858b75 --- /dev/null +++ b/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js @@ -0,0 +1,7 @@ +/* eslint-disable react/prop-types */ +import React from 'react'; +import styled from 'styled-components'; + +export default ({ node, view, getPos }) => { + return <span>Answer</span>; +}; diff --git a/wax-prosemirror-services/src/EssayService/components/EssayComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayComponent.js deleted file mode 100644 index 419fe5f6e2e352677da4ff1c910f4672d253e492..0000000000000000000000000000000000000000 --- a/wax-prosemirror-services/src/EssayService/components/EssayComponent.js +++ /dev/null @@ -1,27 +0,0 @@ -/* eslint-disable react/prop-types */ -import React from 'react'; -import styled from 'styled-components'; -import EditorComponent from './EditorComponent'; -import FeedBackComponent from './FeedBackComponent'; - -const EssayWrapper = styled.div` - border: 3px solid #f5f5f7; - height: auto; - padding: 10px; - .ProseMirror { - padding: 5px !important; - box-shadow: none !important; - } -`; - -export default ({ node, view, getPos }) => { - return ( - <> - <span>Essay</span> - <EssayWrapper> - <EditorComponent getPos={getPos} node={node} view={view} /> - <FeedBackComponent getPos={getPos} node={node} view={view} /> - </EssayWrapper> - </> - ); -}; diff --git a/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js new file mode 100644 index 0000000000000000000000000000000000000000..8dcbcc26be350b2836cc74e337d468f2135100e4 --- /dev/null +++ b/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js @@ -0,0 +1,7 @@ +/* eslint-disable react/prop-types */ +import React from 'react'; +import styled from 'styled-components'; + +export default ({ node, view, getPos }) => { + return <span>Question</span>; +}; diff --git a/wax-prosemirror-services/src/EssayService/components/FeedBackComponent.js b/wax-prosemirror-services/src/EssayService/components/FeedBackComponent.js deleted file mode 100644 index 3c417aa899ef4e00bbc3bca7d75f4ed9a71c8ebd..0000000000000000000000000000000000000000 --- a/wax-prosemirror-services/src/EssayService/components/FeedBackComponent.js +++ /dev/null @@ -1,75 +0,0 @@ -/* eslint-disable react/destructuring-assignment */ -/* eslint-disable react/prop-types */ - -import React, { useContext, useRef, useState, useEffect } from 'react'; -import styled from 'styled-components'; -import { TextSelection } from 'prosemirror-state'; -import { WaxContext } from 'wax-prosemirror-core'; -import { grid, th } from '@pubsweet/ui-toolkit'; - -const FeedBack = styled.div` - color: black; - margin-top: 10px; -`; - -const FeedBackLabel = styled.span` - font-weight: 700; -`; - -const FeedBackTextArea = styled.textarea` - background: none; - border: 1px solid rgba(0, 0, 0, 0.2); - font-family: ${th('fontWriting')}; - position: relative; - right: 5px; - width: 100%; - min-height: 20px; - - &:focus { - outline: none; - } -`; - -export default ({ node, view, getPos }) => { - const context = useContext(WaxContext); - const [feedBack, setFeedBack] = useState(''); - const feedBackRef = useRef(null); - - useEffect(() => {}, []); - - const handleKeyDown = e => {}; - - const feedBackInput = () => { - setFeedBack(feedBackRef.current.value); - }; - - const saveFeedBack = () => { - return true; - }; - - const onFocus = () => { - context.view.main.dispatch( - context.view.main.state.tr.setSelection( - TextSelection.create(context.view.main.state.tr.doc, null), - ), - ); - }; - - return ( - <FeedBack> - <FeedBackLabel>Feedback</FeedBackLabel> - <FeedBackTextArea - cols="2" - onBlur={saveFeedBack} - onChange={feedBackInput} - onFocus={onFocus} - onKeyDown={handleKeyDown} - placeholder="Insert feedback" - ref={feedBackRef} - rows="2" - type="text" - value={feedBack} - /> - </FeedBack> - ); -}; diff --git a/wax-prosemirror-services/src/EssayService/schema/essayAnswerNode.js b/wax-prosemirror-services/src/EssayService/schema/essayAnswerNode.js new file mode 100644 index 0000000000000000000000000000000000000000..7685c2757993f9001c34366acd80e1806c6fa0b3 --- /dev/null +++ b/wax-prosemirror-services/src/EssayService/schema/essayAnswerNode.js @@ -0,0 +1,26 @@ +import { v4 as uuidv4 } from 'uuid'; + +const essayAnswerNode = { + attrs: { + class: { default: 'essay-answer' }, + id: { default: uuidv4() }, + }, + group: 'block questions', + content: 'block*', + defining: true, + + parseDOM: [ + { + tag: 'div.essay-answer', + getAttrs(dom) { + return { + id: dom.getAttribute('id'), + class: dom.getAttribute('class'), + }; + }, + }, + ], + toDOM: node => ['div', node.attrs, 0], +}; + +export default essayAnswerNode; diff --git a/wax-prosemirror-services/src/EssayService/schema/essayFeedBackNode.js b/wax-prosemirror-services/src/EssayService/schema/essayFeedBackNode.js deleted file mode 100644 index 227917bb1ff922f3fd42982fc5e50c65bffa21b3..0000000000000000000000000000000000000000 --- a/wax-prosemirror-services/src/EssayService/schema/essayFeedBackNode.js +++ /dev/null @@ -1,3 +0,0 @@ -const essayFeedBackNode = {}; - -export default essayFeedBackNode; diff --git a/wax-prosemirror-services/src/EssayService/schema/essayQuestionNode.js b/wax-prosemirror-services/src/EssayService/schema/essayQuestionNode.js index dcbd7868387ac5f273131f4be34c14b6c20bc9f9..f9dbe435564830c4c82b930ed72a0ef471500dd1 100644 --- a/wax-prosemirror-services/src/EssayService/schema/essayQuestionNode.js +++ b/wax-prosemirror-services/src/EssayService/schema/essayQuestionNode.js @@ -1,3 +1,26 @@ -const essayQuestionNode = {}; +import { v4 as uuidv4 } from 'uuid'; + +const essayQuestionNode = { + attrs: { + class: { default: 'essay-question' }, + id: { default: uuidv4() }, + }, + group: 'block questions', + content: 'block*', + defining: true, + + parseDOM: [ + { + tag: 'div.essay-question', + getAttrs(dom) { + return { + id: dom.getAttribute('id'), + class: dom.getAttribute('class'), + }; + }, + }, + ], + toDOM: node => ['div', node.attrs, 0], +}; export default essayQuestionNode;