allow passing html strings to setContent

This commit is contained in:
Philipp Kühn
2018-09-25 08:08:51 +02:00
parent 2dd2e3361e
commit 3e20386a36
2 changed files with 23 additions and 3 deletions

View File

@@ -171,10 +171,11 @@ export default {
this.html = getHTML() this.html = getHTML()
}, },
clearContent() { clearContent() {
this.$refs.editor.clearContent() this.$refs.editor.clearContent(true)
this.$refs.editor.focus() this.$refs.editor.focus()
}, },
setContent() { setContent() {
// you can pass a json document
this.$refs.editor.setContent({ this.$refs.editor.setContent({
type: 'doc', type: 'doc',
content: [{ content: [{
@@ -186,7 +187,11 @@ export default {
}, },
], ],
}], }],
}) }, true)
// HTML string is also supported
// this.$refs.editor.setContent('<p>This is some inserted text. 👋</p>')
this.$refs.editor.focus() this.$refs.editor.focus()
}, },
}, },

View File

@@ -255,10 +255,25 @@ export default {
}) })
}, },
getDocFromContent(content) {
if (typeof content === 'object') {
return this.schema.nodeFromJSON(content)
}
if (typeof content === 'string') {
const element = document.createElement('div')
element.innerHTML = content.trim()
return DOMParser.fromSchema(this.schema).parse(element)
}
return false
},
setContent(content = {}, emitUpdate = false) { setContent(content = {}, emitUpdate = false) {
this.state = EditorState.create({ this.state = EditorState.create({
schema: this.state.schema, schema: this.state.schema,
doc: this.schema.nodeFromJSON(content), doc: this.getDocFromContent(content),
plugins: this.state.plugins, plugins: this.state.plugins,
}) })