Skip to content
Snippets Groups Projects
Commit ce2fbcd8 authored by chris's avatar chris
Browse files

fix deletions

parent 63377c01
No related branches found
No related tags found
No related merge requests found
import React, { useContext, useRef, useState } from 'react';
import { WaxContext, ComponentPlugin, Icon } from 'wax-prosemirror-core';
import {
WaxContext,
ComponentPlugin,
DocumentHelpers,
Icon,
} from 'wax-prosemirror-core';
import { th } from '@pubsweet/ui-toolkit';
import styled from 'styled-components';
......@@ -97,15 +102,18 @@ export default ({ node, view, getPos }) => {
};
const removeQuestion = () => {
const nodeFound = findNodes(context.pmViews.main.state, getPos(), node);
if (nodeFound) {
context.pmViews.main.dispatch(
context.pmViews.main.state.tr.delete(
getPos(),
getPos() + nodeFound.nodeSize,
),
);
}
const allNodes = getNodes(context.pmViews.main);
allNodes.forEach(singleNode => {
if (singleNode.node.attrs.id === node.attrs.id) {
context.pmViews.main.dispatch(
context.pmViews.main.state.tr.delete(
singleNode.pos,
singleNode.pos + singleNode.node.nodeSize,
),
);
}
});
};
return (
......@@ -152,15 +160,13 @@ export default ({ node, view, getPos }) => {
);
};
const findNodes = (state, pos, fillTheGapNode) => {
let nodeFound = '';
state.doc.nodesBetween(pos, pos + 2, (node, from) => {
if (
node.type.name === 'fill_the_gap_container' &&
node.attrs.id === fillTheGapNode.attrs.id
) {
nodeFound = node;
const getNodes = view => {
const allNodes = DocumentHelpers.findBlockNodes(view.state.doc);
const fillTheGapContainerNodes = [];
allNodes.forEach(node => {
if (node.node.type.name === 'fill_the_gap_container') {
fillTheGapContainerNodes.push(node);
}
});
return nodeFound;
return fillTheGapContainerNodes;
};
......@@ -264,7 +264,20 @@ export default ({ node, view, getPos }) => {
const { testMode } = customProps;
const { feedback } = node.attrs;
const removeQuestion = () => {};
const removeQuestion = () => {
const allNodes = getNodes(context.pmViews.main);
allNodes.forEach(singleNode => {
if (singleNode.node.attrs.id === node.attrs.id) {
context.pmViews.main.dispatch(
context.pmViews.main.state.tr.delete(
singleNode.pos,
singleNode.pos + singleNode.node.nodeSize,
),
);
}
});
};
return (
<MatchingWrapper>
......
import React, { useContext } from 'react';
import { WaxContext, ComponentPlugin, Icon } from 'wax-prosemirror-core';
import {
WaxContext,
ComponentPlugin,
DocumentHelpers,
Icon,
} from 'wax-prosemirror-core';
import styled from 'styled-components';
import ContainerEditor from './ContainerEditor';
import FeedbackComponent from '../../MultipleChoiceQuestionService/components/FeedbackComponent';
......@@ -58,7 +63,20 @@ export default ({ node, view, getPos }) => {
const { testMode } = customProps;
const { feedback } = node.attrs;
const removeQuestion = () => {};
const removeQuestion = () => {
const allNodes = getNodes(context.pmViews.main);
allNodes.forEach(singleNode => {
if (singleNode.node.attrs.id === node.attrs.id) {
context.pmViews.main.dispatch(
context.pmViews.main.state.tr.delete(
singleNode.pos,
singleNode.pos + singleNode.node.nodeSize,
),
);
}
});
};
return (
<MultipleDropDownpWrapper>
......@@ -91,3 +109,14 @@ export default ({ node, view, getPos }) => {
</MultipleDropDownpWrapper>
);
};
const getNodes = view => {
const allNodes = DocumentHelpers.findBlockNodes(view.state.doc);
const multipleDropContainerNodes = [];
allNodes.forEach(node => {
if (node.node.type.name === 'multiple_drop_down_container') {
multipleDropContainerNodes.push(node);
}
});
return multipleDropContainerNodes;
};
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment