diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js index 0ad8492495012ad46d505a6c9f69913862b90ef0..7cf556de2063655f7e777eb587ed105f1c75e69a 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -77,6 +77,9 @@ const WaxView = forwardRef((props, ref) => { attributes: { spellcheck: browserSpellCheck ? 'true' : 'false', }, + handlePaste: (view, event, slice) => { + if (view.state.selection.from === null) return true; + }, }, ); diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js index 0fa7d157c701c499a128e98776835af53f5db5b7..e1619f25ae6a21a910b801402de2ef5cab7002ea 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js @@ -47,7 +47,7 @@ export default ({ node, view, getPos }) => { if (e.key === 'Backspace') { context.view.main.dispatch( context.view.main.state.tr.setSelection( - TextSelection.create(context.view.main.state.tr.doc, 0), + TextSelection.create(context.view.main.state.tr.doc, null), ), ); } @@ -81,6 +81,12 @@ export default ({ node, view, getPos }) => { ); }; + const handleOnPaste = e => { + const clipboardData = e.clipboardData || window.clipboardData; + const pastedData = clipboardData.getData('Text'); + setFeedBack(pastedData); + }; + return ( <FeedBack> <FeedBackLabel>Feedback</FeedBackLabel> @@ -88,6 +94,7 @@ export default ({ node, view, getPos }) => { onBlur={saveFeedBack} onChange={feedBackInput} onFocus={onFocus} + onPaste={e => handleOnPaste(e)} onKeyDown={handleKeyDown} placeholder="Insert feedback" ref={feedBackRef} diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js new file mode 100644 index 0000000000000000000000000000000000000000..fcab65db1f08881155f2ee10ab87475db3c3dd2b --- /dev/null +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js @@ -0,0 +1,15 @@ +/* eslint-disable no-param-reassign */ +import { Plugin, PluginKey } from 'prosemirror-state'; + +const PasteIntoFeedbackPlugin = new PluginKey('pasteIntoFeedbackPlugin'); + +export default (props, context) => { + return new Plugin({ + key: PasteIntoFeedbackPlugin, + props: { + handlePaste: (view, event, slice) => { + if (view.state.selection.from === null) return true; + }, + }, + }); +}; diff --git a/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js b/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js index 7f3e507c513b884eca0bc08c77da1b1128a3a81f..80044aa84a31101205bee46a11b55d823997c636 100644 --- a/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js @@ -122,8 +122,12 @@ export default ({ node, view, getPos }) => { const getIsDisabled = () => { context.view.main.state.doc.descendants((editorNode, index) => { - if (editorNode.type.name === 'multiple_choice_single_correct') { - console.log(editorNode); + if (editorNode.type.name === 'multiple_choice_single_correct_container') { + editorNode.content.content.forEach(element => { + if (element.attrs.correct) { + console.log(element); + } + }); } }); }; @@ -139,8 +143,8 @@ export default ({ node, view, getPos }) => { <QuestionNunber /> <SwitchComponent getPos={getPos} - node={node} isDisabled={getIsDisabled()} + node={node} /> </InfoRow> <QuestionWrapper> diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js new file mode 100644 index 0000000000000000000000000000000000000000..eb82a09620b77449f60309129fd5e0d630b1a05c --- /dev/null +++ b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js @@ -0,0 +1,30 @@ +import Service from '../Service'; +import TrueFalseQuestion from './TrueFalseQuestion'; +// import multipleChoiceSingleCorrectNode from './schema/multipleChoiceSingleCorrectNode'; +// import multipleChoiceSingleCorrectContainerNode from './schema/multipleChoiceSingleCorrectContainerNode'; +// import QuestionComponent from './components/QuestionComponent'; +import TrueFalseNodeView from './TrueFalseNodeView'; + +class TrueFalseQuestionService extends Service { + register() { + this.container.bind('TrueFalseQuestion').to(TrueFalseQuestion); + const createNode = this.container.get('CreateNode'); + const addPortal = this.container.get('AddPortal'); + + // createNode({ + // multiple_choice_single_correct: multipleChoiceSingleCorrectNode, + // }); + + // createNode({ + // multiple_choice_single_correct_container: multipleChoiceSingleCorrectContainerNode, + // }); + + // addPortal({ + // nodeView: TrueFalseNodeView, + // component: QuestionComponent, + // context: this.app, + // }); + } +} + +export default TrueFalseQuestionService;