From 84b78aa59ced17cb2424d021add4d0a94f9efbe1 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 20 Oct 2022 15:41:10 +0300 Subject: [PATCH] fix feedback insert --- editors/demo/src/HHMI/HHMI.js | 2 +- .../components/FeedbackComponent.js | 44 +---------------- .../components/FeedbackComponent.js | 47 ++----------------- .../components/FeedbackComponent.js | 47 ++----------------- .../schema/multipleChoiceNode.js | 2 +- .../components/FeedbackComponent.js | 47 ++----------------- 6 files changed, 13 insertions(+), 176 deletions(-) diff --git a/editors/demo/src/HHMI/HHMI.js b/editors/demo/src/HHMI/HHMI.js index 2b562b313..a232017d2 100644 --- a/editors/demo/src/HHMI/HHMI.js +++ b/editors/demo/src/HHMI/HHMI.js @@ -170,7 +170,7 @@ const Hhmi = () => { value={content} readonly={readOnly} layout={HhmiLayout} - // onChange={source => console.log(source)} + onChange={source => console.log(source)} /> </> ); diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js index 0928bfd37..71dc5a0e3 100644 --- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js +++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js @@ -37,42 +37,11 @@ export default ({ node, view, getPos, readOnly }) => { const { pmViews: { main }, } = context; - const [feedBack, setFeedBack] = useState(' '); - const [isFirstRun, setFirstRun] = useState(true); - const [typing, setTyping] = useState(false); + const [feedBack, setFeedBack] = useState(node.attrs.feedback); const feedBackRef = useRef(null); - useEffect(() => { - const allNodes = getNodes(main); - allNodes.forEach(singleNode => { - if (singleNode.node.attrs.id === node.attrs.id) { - if (!typing || context.transaction.meta.inputType === 'Redo') { - setFeedBack(singleNode.node.attrs.feedback); - } - if (!isFirstRun) { - if (singleNode.node.attrs.feedback === '') - setFeedBack(singleNode.node.attrs.feedback); - } - } - }); - }, [getNodes(main)]); - - const handleKeyDown = e => { - setTyping(true); - if (e.key === 'Backspace') { - main.dispatch( - main.state.tr.setSelection( - TextSelection.create(main.state.tr.doc, null), - ), - ); - } - }; - const feedBackInput = () => { setFeedBack(feedBackRef.current.value); - }; - - const saveFeedBack = () => { const allNodes = getNodes(main); allNodes.forEach(singleNode => { if (singleNode.node.attrs.id === node.attrs.id) { @@ -82,27 +51,18 @@ export default ({ node, view, getPos, readOnly }) => { feedback: feedBack, }), ); - setFirstRun(false); } }); return false; }; - const onFocus = () => { - main.dispatch( - main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)), - ); - }; - return ( <FeedBack> <FeedBackLabel>Feedback</FeedBackLabel> <FeedBackInput + autoFocus="autoFocus" disabled={readOnly} - onBlur={saveFeedBack} onChange={feedBackInput} - onFocus={onFocus} - onKeyDown={handleKeyDown} placeholder="Insert feedback" ref={feedBackRef} type="text" diff --git a/wax-prosemirror-services/src/MatchingService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MatchingService/components/FeedbackComponent.js index 7e95320ce..b32fba7fb 100644 --- a/wax-prosemirror-services/src/MatchingService/components/FeedbackComponent.js +++ b/wax-prosemirror-services/src/MatchingService/components/FeedbackComponent.js @@ -1,8 +1,7 @@ /* eslint-disable react/prop-types */ -import React, { useContext, useRef, useState, useEffect } from 'react'; +import React, { useContext, useRef, useState } from 'react'; import styled from 'styled-components'; -import { TextSelection } from 'prosemirror-state'; import { WaxContext } from 'wax-prosemirror-core'; import { DocumentHelpers } from 'wax-prosemirror-utilities'; @@ -36,42 +35,11 @@ export default ({ node, view, getPos, readOnly }) => { const { pmViews: { main }, } = context; - const [feedBack, setFeedBack] = useState(''); - const [isFirstRun, setFirstRun] = useState(true); - const [typing, setTyping] = useState(false); + const [feedBack, setFeedBack] = useState(node.attrs.feedback); const feedBackRef = useRef(null); - useEffect(() => { - const allNodes = getNodes(main); - allNodes.forEach(singleNode => { - if (singleNode.node.attrs.id === node.attrs.id) { - if (!typing || context.transaction.meta.inputType === 'Redo') { - setFeedBack(singleNode.node.attrs.feedback); - } - if (!isFirstRun) { - if (singleNode.node.attrs.feedback === '') - setFeedBack(singleNode.node.attrs.feedback); - } - } - }); - }, [getNodes(main)]); - - const handleKeyDown = e => { - setTyping(true); - if (e.key === 'Backspace') { - main.dispatch( - main.state.tr.setSelection( - TextSelection.create(main.state.tr.doc, null), - ), - ); - } - }; - const feedBackInput = () => { setFeedBack(feedBackRef.current.value); - }; - - const saveFeedBack = () => { const allNodes = getNodes(main); allNodes.forEach(singleNode => { if (singleNode.node.attrs.id === node.attrs.id) { @@ -81,27 +49,18 @@ export default ({ node, view, getPos, readOnly }) => { feedback: feedBack, }), ); - setFirstRun(false); } }); return false; }; - const onFocus = () => { - main.dispatch( - main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)), - ); - }; - return ( <FeedBack> <FeedBackLabel>Feedback</FeedBackLabel> <FeedBackInput + autoFocus="autoFocus" disabled={readOnly} - onBlur={saveFeedBack} onChange={feedBackInput} - onFocus={onFocus} - onKeyDown={handleKeyDown} placeholder="Insert feedback" ref={feedBackRef} type="text" diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js index 9de6f0ca4..24fb9e3a8 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js @@ -1,8 +1,7 @@ /* eslint-disable react/prop-types */ -import React, { useContext, useRef, useState, useEffect } from 'react'; +import React, { useContext, useRef, useState } from 'react'; import styled from 'styled-components'; -import { TextSelection } from 'prosemirror-state'; import { WaxContext } from 'wax-prosemirror-core'; import { DocumentHelpers } from 'wax-prosemirror-utilities'; @@ -36,42 +35,11 @@ export default ({ node, view, getPos, readOnly }) => { pmViews: { main }, } = context; - const [feedBack, setFeedBack] = useState(' '); - const [isFirstRun, setFirstRun] = useState(true); - const [typing, setTyping] = useState(false); + const [feedBack, setFeedBack] = useState(node.attrs.feedback); const feedBackRef = useRef(null); - useEffect(() => { - const allNodes = getNodes(main); - allNodes.forEach(singleNode => { - if (singleNode.node.attrs.id === node.attrs.id) { - if (!typing || context.transaction.meta.inputType === 'Redo') { - setFeedBack(singleNode.node.attrs.feedback); - } - if (!isFirstRun) { - if (singleNode.node.attrs.feedback === '') - setFeedBack(singleNode.node.attrs.feedback); - } - } - }); - }, [getNodes(main)]); - - const handleKeyDown = e => { - setTyping(true); - if (e.key === 'Backspace') { - main.dispatch( - main.state.tr.setSelection( - TextSelection.create(main.state.tr.doc, null), - ), - ); - } - }; - const feedBackInput = () => { setFeedBack(feedBackRef.current.value); - }; - - const saveFeedBack = () => { const allNodes = getNodes(main); allNodes.forEach(singleNode => { if (singleNode.node.attrs.id === node.attrs.id) { @@ -81,26 +49,17 @@ export default ({ node, view, getPos, readOnly }) => { feedback: feedBack, }), ); - setFirstRun(false); } }); return false; }; - const onFocus = () => { - main.dispatch( - main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)), - ); - }; - return ( <FeedBack> <FeedBackLabel>Feedback</FeedBackLabel> <FeedBackInput - onBlur={saveFeedBack} + autoFocus="autoFocus" onChange={feedBackInput} - onFocus={onFocus} - onKeyDown={handleKeyDown} placeholder="Insert feedback" readOnly={readOnly} ref={feedBackRef} diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/schema/multipleChoiceNode.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/schema/multipleChoiceNode.js index 5eea97cc0..daf0168fa 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/schema/multipleChoiceNode.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/schema/multipleChoiceNode.js @@ -7,7 +7,7 @@ const multipleChoiceNode = { feedback: { default: '' }, }, group: 'block questions', - content: 'block+', + content: 'block*', defining: true, parseDOM: [ { diff --git a/wax-prosemirror-services/src/MultipleDropDownService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleDropDownService/components/FeedbackComponent.js index d9a4b68f7..dcea073ae 100644 --- a/wax-prosemirror-services/src/MultipleDropDownService/components/FeedbackComponent.js +++ b/wax-prosemirror-services/src/MultipleDropDownService/components/FeedbackComponent.js @@ -1,8 +1,7 @@ /* eslint-disable react/prop-types */ -import React, { useContext, useRef, useState, useEffect } from 'react'; +import React, { useContext, useRef, useState } from 'react'; import styled from 'styled-components'; -import { TextSelection } from 'prosemirror-state'; import { WaxContext } from 'wax-prosemirror-core'; import { DocumentHelpers } from 'wax-prosemirror-utilities'; @@ -37,42 +36,11 @@ export default ({ node, view, getPos, readOnly }) => { const { pmViews: { main }, } = context; - const [feedBack, setFeedBack] = useState(' '); - const [isFirstRun, setFirstRun] = useState(true); - const [typing, setTyping] = useState(false); + const [feedBack, setFeedBack] = useState(node.attrs.feedback); const feedBackRef = useRef(null); - useEffect(() => { - const allNodes = getNodes(main); - allNodes.forEach(singleNode => { - if (singleNode.node.attrs.id === node.attrs.id) { - if (!typing || context.transaction.meta.inputType === 'Redo') { - setFeedBack(singleNode.node.attrs.feedback); - } - if (!isFirstRun) { - if (singleNode.node.attrs.feedback === '') - setFeedBack(singleNode.node.attrs.feedback); - } - } - }); - }, [getNodes(main)]); - - const handleKeyDown = e => { - setTyping(true); - if (e.key === 'Backspace') { - main.dispatch( - main.state.tr.setSelection( - TextSelection.create(main.state.tr.doc, null), - ), - ); - } - }; - const feedBackInput = () => { setFeedBack(feedBackRef.current.value); - }; - - const saveFeedBack = () => { const allNodes = getNodes(main); allNodes.forEach(singleNode => { if (singleNode.node.attrs.id === node.attrs.id) { @@ -82,27 +50,18 @@ export default ({ node, view, getPos, readOnly }) => { feedback: feedBack, }), ); - setFirstRun(false); } }); return false; }; - const onFocus = () => { - main.dispatch( - main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)), - ); - }; - return ( <FeedBack> <FeedBackLabel>Feedback</FeedBackLabel> <FeedBackInput + autoFocus="autoFocus" disabled={readOnly} - onBlur={saveFeedBack} onChange={feedBackInput} - onFocus={onFocus} - onKeyDown={handleKeyDown} placeholder="Insert feedback" ref={feedBackRef} type="text" -- GitLab