Merge pull request #493 from Dammmien/fix_list_item_reordering
Fix list item reordering #437
This commit is contained in:
@ -105,29 +105,44 @@ export default class Editor extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { schema, parser } = this.state;
|
|
||||||
const doc = parser.parse(this.props.value || '');
|
|
||||||
this.view = new EditorView(this.ref, {
|
this.view = new EditorView(this.ref, {
|
||||||
state: EditorState.create({
|
state: this.createEditorState(),
|
||||||
doc,
|
|
||||||
schema,
|
|
||||||
plugins: [
|
|
||||||
inputRules({
|
|
||||||
rules: allInputRules.concat(buildInputRules(schema)),
|
|
||||||
}),
|
|
||||||
keymap(buildKeymap(schema)),
|
|
||||||
keymap(baseKeymap),
|
|
||||||
history.history(),
|
|
||||||
keymap({
|
|
||||||
'Mod-z': history.undo,
|
|
||||||
'Mod-y': history.redo,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
onAction: this.handleAction,
|
onAction: this.handleAction,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createEditorState() {
|
||||||
|
const { schema, parser } = this.state;
|
||||||
|
const doc = parser.parse(this.props.value || '');
|
||||||
|
|
||||||
|
return EditorState.create({
|
||||||
|
doc,
|
||||||
|
schema,
|
||||||
|
plugins: [
|
||||||
|
inputRules({
|
||||||
|
rules: allInputRules.concat(buildInputRules(schema)),
|
||||||
|
}),
|
||||||
|
keymap(buildKeymap(schema)),
|
||||||
|
keymap(baseKeymap),
|
||||||
|
history.history(),
|
||||||
|
keymap({
|
||||||
|
'Mod-z': history.undo,
|
||||||
|
'Mod-y': history.redo,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidUpdate(prevProps, prevState) {
|
||||||
|
const editorValue = this.state.serializer.serialize(this.view.state.doc);
|
||||||
|
// Check that the content of the editor is well synchronized with the props value after rendering.
|
||||||
|
// Sometimes the editor isn't well updated (eg. after items reordering)
|
||||||
|
if (editorValue !== this.props.value && editorValue !== prevProps.value) {
|
||||||
|
// If the content of the editor isn't correct, we update its state with a new one.
|
||||||
|
this.view.updateState(this.createEditorState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
handleAction = (action) => {
|
handleAction = (action) => {
|
||||||
const { serializer } = this.state;
|
const { serializer } = this.state;
|
||||||
const newState = this.view.state.applyAction(action);
|
const newState = this.view.state.applyAction(action);
|
||||||
|
Reference in New Issue
Block a user