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

alter-schema

parent ca5edd79
No related branches found
No related tags found
1 merge request!307Answer nodeview
......@@ -4,6 +4,8 @@ import { injectable } from 'inversify';
import { Tools } from 'wax-prosemirror-services';
import { Commands } from 'wax-prosemirror-utilities';
import { Fragment } from 'prosemirror-model';
import { findWrapping } from 'prosemirror-transform';
import { v4 as uuidv4 } from 'uuid';
import helpers from './helpers/helpers';
import ToolBarBtn from './components/ToolBarBtn';
......@@ -42,26 +44,24 @@ class MultipleChoiceQuestion extends Tools {
const { from, to } = state.selection;
const { tr } = state;
state.schema.nodes.question_wrapper.spec.atom = false;
state.doc.nodesBetween(from, to, (node, pos) => {
if (node.type.name === 'question_wrapper') {
createQuestion(state, dispatch, tr, context);
} else {
let { $from, $to } = state.selection;
let range = $from.blockRange($to),
wrapping =
range &&
findWrapping(
range,
state.config.schema.nodes.question_wrapper,
{},
);
if (!wrapping) return false;
if (dispatch) tr.wrap(range, wrapping).scrollIntoView();
setTimeout(() => {
state.doc.nodesBetween(from, to, (node, pos) => {
if (node.type.name === 'question_wrapper') {
createQuestion(state, dispatch, tr, context);
} else {
tr.setBlockType(
from,
to,
state.config.schema.nodes.question_wrapper,
{
class: 'question',
},
);
if (!tr.steps.length) return false;
createQuestion(state, dispatch, tr, context);
}
});
state.schema.nodes.question_wrapper.spec.atom = true;
createQuestion(state, dispatch, tr, context);
}
});
};
}
......
......@@ -30,10 +30,10 @@ class MultipleChoiceQuestionService extends Service {
},
group: 'block',
atom: true,
content: 'inline*',
content: 'block+',
parseDOM: [
{
tag: 'p.mutiple-choice',
tag: 'div.mutiple-choice',
getAttrs(dom) {
return {
id: dom.dataset.id,
......@@ -43,7 +43,7 @@ class MultipleChoiceQuestionService extends Service {
},
],
toDOM(node) {
return ['p', node.attrs, 0];
return ['div', node.attrs, 0];
},
},
});
......
......@@ -4,9 +4,8 @@ const multipleChoiceNode = {
correct: { default: false },
feedback: { default: false },
},
group: 'inline',
content: 'block*',
inline: true,
group: 'block',
content: 'block+',
// atom: true,
toDOM: node => ['multiple-choice', node.attrs, 0],
parseDOM: [
......@@ -21,27 +20,4 @@ const multipleChoiceNode = {
],
};
// const multipleChoiceNode = {
// group: 'block multiple',
// content: 'text*',
// atom: true,
// code: true,
// toDOM: () => ['multiple-choice', { class: 'multiple-choice' }, 0],
// parseDOM: [
// {
// tag: 'multiple-choice',
// },
// ],
// };
// const multipleChoiceNode = {
// content: 'block+',
// group: 'block',
// defining: true,
// // parseDOM: [{ tag: 'multiple-choice' }],
// toDOM() {
// // return ['multiple-choice', 0];
// },
// };
export default multipleChoiceNode;
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