add node view playground

This commit is contained in:
Philipp Kühn
2020-11-18 22:50:07 +01:00
parent 8146dd0842
commit b8886fa408
8 changed files with 138 additions and 3 deletions

View File

@@ -120,7 +120,7 @@ export default {
}
})
.filter(item => {
return ['vue', 'jsx', 'scss'].includes(item.extension)
return ['vue', 'ts', 'jsx', 'scss'].includes(item.extension)
})
.sortBy(item => item.path.split('/').length && !item.path.endsWith('index.vue'))
.toArray()

View File

@@ -0,0 +1,15 @@
<template>
<div>
node view
</div>
</template>
<script>
export default {
}
</script>
<style>
</style>

View File

@@ -0,0 +1,29 @@
import { Node } from '@tiptap/core'
import { VueRenderer } from '@tiptap/vue'
import Component from './Component.vue'
export default Node.create({
name: 'test',
group: 'block',
draggable: true,
selectable: false,
parseHTML() {
return [
{
tag: 'div[data-type="test"]',
},
]
},
renderHTML() {
return ['div', { 'data-type': 'test' }]
},
addNodeView() {
return VueRenderer(Component)
},
})

View File

@@ -0,0 +1,65 @@
<template>
<div v-if="editor">
<editor-content :editor="editor" />
</div>
</template>
<script>
import { Editor } from '@tiptap/core'
import { EditorContent } from '@tiptap/vue'
import Dropcursor from '@tiptap/extension-dropcursor'
import Document from '@tiptap/extension-document'
import Paragraph from '@tiptap/extension-paragraph'
import Text from '@tiptap/extension-text'
import Test from './Test.ts'
export default {
components: {
EditorContent,
},
data() {
return {
editor: null,
}
},
mounted() {
this.editor = new Editor({
extensions: [
Dropcursor,
Document,
Paragraph,
Text,
Test,
],
content: `
<p>test</p>
<div data-type="test"></div>
<p>test</p>
`,
})
},
beforeDestroy() {
this.editor.destroy()
},
}
</script>
<style lang="scss">
ul[data-type="taskList"] {
list-style: none;
padding: 0;
li {
display: flex;
align-items: center;
> input {
flex: 0 0 auto;
margin-right: 0.5rem;
}
}
}
</style>

View File

@@ -0,0 +1,3 @@
# Node View
<demo name="Examples/NodeView" />