diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js index a57d82abc27b0778175a70fc464f27668c3d2c2b..a31255fefd391f3b24bfcf540f28c9ebc0972437 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/QuestionComponent.js @@ -77,10 +77,10 @@ export default ({ node, view, getPos }) => { }); const removeOption = () => { - main.state.doc.nodesBetween(getPos(), getPos() + 1, (nodes, pos) => { - if (nodes.attrs.id === node.attrs.id) { + main.state.doc.nodesBetween(getPos(), getPos() + 1, (sinlgeNode, pos) => { + if (sinlgeNode.attrs.id === node.attrs.id) { main.dispatch( - main.state.tr.deleteRange(getPos(), getPos() + nodes.nodeSize), + main.state.tr.deleteRange(getPos(), getPos() + sinlgeNode.nodeSize), ); } }); @@ -111,7 +111,7 @@ export default ({ node, view, getPos }) => { // create Empty Paragraph setTimeout(() => { helpers.createEmptyParagraph(context, newAnswerId); - }, 100); + }, 30); } } }); diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js index 46f1fda2084d69517ff32d653e9b27e97659a196..537c87cab809865caebe35a5ea90724b7e88352b 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/helpers/helpers.js @@ -10,21 +10,22 @@ const createEmptyParagraph = (context, newAnswerId) => { ), ), ); - - let type = context.view.main.state.schema.nodes.paragraph; + if (context.view[newAnswerId].dispatch) { + let type = context.view.main.state.schema.nodes.paragraph; + context.view[newAnswerId].dispatch( + context.view[newAnswerId].state.tr.insert(0, type.create()), + ); + } context.view[newAnswerId].dispatch( - context.view[newAnswerId].state.tr.insert(0, type.create()), + context.view[newAnswerId].state.tr.setSelection( + TextSelection.between( + context.view[newAnswerId].state.selection.$anchor, + context.view[newAnswerId].state.selection.$head, + ), + ), ); + context.view[newAnswerId].focus(); } - context.view[newAnswerId].dispatch( - context.view[newAnswerId].state.tr.setSelection( - TextSelection.between( - context.view[newAnswerId].state.selection.$anchor, - context.view[newAnswerId].state.selection.$head, - ), - ), - ); - context.view[newAnswerId].focus(); }; export default { diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js index 371f84ada30d33a47c5ed7936b1ef5d25428b96d..5df549c85ac9cb922fb3750764b6392d6cf8ea20 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js @@ -1,5 +1,6 @@ const multipleChoiceNode = { attrs: { + class: { default: 'mutiple-choice-option' }, id: { default: '' }, correct: { default: false }, feedback: { default: '' }, @@ -7,17 +8,18 @@ const multipleChoiceNode = { group: 'block', content: 'block*', // atom: true, - toDOM: node => ['multiple-choice', node.attrs, 0], parseDOM: [ { - tag: 'multiple-choice', + tag: 'div.mutiple-choice-option', getAttrs(dom) { return { id: dom.getAttribute('id'), + class: dom.getAttribute('class'), }; }, }, ], + toDOM: node => ['div', node.attrs, 0], }; export default multipleChoiceNode;