diff --git a/wax-prosemirror-core/src/utilities/commands/Commands.js b/wax-prosemirror-core/src/utilities/commands/Commands.js index 99c34a84eb224e16eb38666c2cecb4321974da10..b096a3efd040ebac88354d4a1ff7f1fcc97a87ff 100644 --- a/wax-prosemirror-core/src/utilities/commands/Commands.js +++ b/wax-prosemirror-core/src/utilities/commands/Commands.js @@ -258,6 +258,7 @@ const isParentOfType = (state, nodeType) => { const predicate = node => node.type === nodeType; for (let i = state.selection.$from.depth; i > 0; i -= 1) { const node = state.selection.$from.node(i); + console.log(node); if (predicate(node)) { status = true; } diff --git a/wax-prosemirror-services/src/MatchingService/MatchingQuestion.js b/wax-prosemirror-services/src/MatchingService/MatchingQuestion.js index 2fb469e76cede7ff2931763691f4be1cd8997b8c..57a60d7f828542808683b0c68dda6f0cdbd43e90 100644 --- a/wax-prosemirror-services/src/MatchingService/MatchingQuestion.js +++ b/wax-prosemirror-services/src/MatchingService/MatchingQuestion.js @@ -54,6 +54,10 @@ class MatchingQuestion extends Tools { Commands.isParentOfType( state, state.config.schema.nodes.matching_container, + ) || + Commands.isParentOfType( + state, + state.config.schema.nodes.matching_option, ) ) { return true; diff --git a/wax-prosemirror-services/src/MatchingService/components/EditorComponent.js b/wax-prosemirror-services/src/MatchingService/components/EditorComponent.js index 6f2b08ca8d782e3b5292006b6b129d3cb72f35b2..914b1a1e64d9f9accef169539a53a5cc11fb1799 100644 --- a/wax-prosemirror-services/src/MatchingService/components/EditorComponent.js +++ b/wax-prosemirror-services/src/MatchingService/components/EditorComponent.js @@ -125,9 +125,7 @@ const EditorComponent = ({ node, view, getPos }) => { .setSelection( new TextSelection( main.state.tr.doc.resolve( - getPos() + - 2 + - context.pmViews[questionId].state.selection.to, + getPos() + context.pmViews[questionId].state.selection.to, ), ), ), diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectQuestion.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectQuestion.js index 0861b08bd6061989e6193fa71e4992c6b2b92c3c..1815d024e6fd67e254ff640d9768d32314aff2b9 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectQuestion.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectQuestion.js @@ -28,6 +28,10 @@ class MultipleChoiceSingleCorrectQuestion extends Tools { get active() { return state => { if ( + Commands.isParentOfType( + state, + state.config.schema.nodes.multiple_choice_single_correct_container, + ) || Commands.isParentOfType( state, state.config.schema.nodes.multiple_choice_single_correct, diff --git a/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDown.js b/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDown.js index 817627ecbccb2181254d7b50fb93b934fa682f94..c0e6860ea3fcc852bbbe0cd131d0961bc361a754 100644 --- a/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDown.js +++ b/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDown.js @@ -32,7 +32,7 @@ class CreateDropDown extends Tools { select = (state, activeViewId, activeView) => { if ( activeView.props.type && - activeView.props.type === 'MultipleDropDownContaier' + activeView.props.type === 'MultipleDropDownContainer' ) return true; diff --git a/wax-prosemirror-services/src/MultipleDropDownService/components/ContainerEditor.js b/wax-prosemirror-services/src/MultipleDropDownService/components/ContainerEditor.js index 71632a7df8370379ef6656d2c1c1e218bff3fba9..543328588fd7a460066b3375d9ae3e6d51e7ed12 100644 --- a/wax-prosemirror-services/src/MultipleDropDownService/components/ContainerEditor.js +++ b/wax-prosemirror-services/src/MultipleDropDownService/components/ContainerEditor.js @@ -120,7 +120,7 @@ const ContainerEditor = ({ node, view, getPos }) => { }), dispatchTransaction, disallowedTools: ['Images', 'FillTheGap', 'MultipleChoice'], - type: 'MultipleDropDownContaier', + type: 'MultipleDropDownContainer', handleDOMEvents: { mousedown: () => { main.dispatch( diff --git a/wax-prosemirror-services/src/WaxToolGroups/QuestionsDropDownToolGroupService/DropDownComponent.js b/wax-prosemirror-services/src/WaxToolGroups/QuestionsDropDownToolGroupService/DropDownComponent.js index 4375340884dbcceb9866716f53e2f2839b26bf7b..0c7a842ae63554f18b6460da58877848a38c50cd 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/QuestionsDropDownToolGroupService/DropDownComponent.js +++ b/wax-prosemirror-services/src/WaxToolGroups/QuestionsDropDownToolGroupService/DropDownComponent.js @@ -123,7 +123,7 @@ const DropDownComponent = ({ view, tools }) => { const [isOpen, setIsOpen] = useState(false); useOnClickOutside(wrapperRef, () => setIsOpen(false)); - const [label, setLabel] = useState(null); + const [label, setLabel] = useState('Question Type'); const isEditable = main.props.editable(editable => { return editable; }); @@ -132,9 +132,8 @@ const DropDownComponent = ({ view, tools }) => { setLabel('Question Type'); dropDownOptions.forEach(option => { if (option.item.active(main.state)) { - setTimeout(() => { - setLabel(option.label); - }); + setLabel(option.label); + setTimeout(() => {}); } }); }, [activeViewId]); @@ -186,6 +185,11 @@ const DropDownComponent = ({ view, tools }) => { } }; + const onChange = option => { + tools[option.value].run(main, context); + openCloseMenu(); + }; + const MultipleDropDown = useMemo( () => ( <Wrapper disabled={isDisabled} ref={wrapperRef}> @@ -202,7 +206,7 @@ const DropDownComponent = ({ view, tools }) => { tabIndex="0" type="button" > - <span>Question type</span> <StyledIcon name="expand" /> + <span>{label}</span> <StyledIcon name="expand" /> </DropDownButton> <DropDownMenu isOpen={isOpen} role="menu"> {dropDownOptions.map((option, index) => { @@ -210,9 +214,7 @@ const DropDownComponent = ({ view, tools }) => { return ( <span key={option.value} - onClick={() => { - openCloseMenu(); - }} + onClick={() => onChange(option)} onKeyDown={e => onKeyDown(e, index)} ref={itemRefs.current[index]} role="menuitem" @@ -225,7 +227,7 @@ const DropDownComponent = ({ view, tools }) => { </DropDownMenu> </Wrapper> ), - [isDisabled, isOpen], + [isDisabled, isOpen, label], ); return MultipleDropDown;