-
Notifications
You must be signed in to change notification settings - Fork 126
/
Index.vue
126 lines (121 loc) · 3.14 KB
/
Index.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<template>
<div>
<!-- :toolbar-attributes="{ color: 'yellow' }"
min-height="500"
max-height="600"
:editor-properties="editorProperties"
output-format="json"
-->
<tiptap-vuetify
v-model="content"
:extensions="extensions"
placeholder="Write something …"
@keydown="onkeydown"
/>
<br><br>
<h1>Preview</h1>
<hr>
<div
class="tiptap-vuetify-editor__content"
v-html="content"
/>
</div>
</template>
<script>
import { MAIN_MODULE } from '../config'
import MyCustomExtension from '../MyCustomExtension'
import FileSelector from '../Components/FileSelector'
export default {
components: {
TiptapVuetify: () => MAIN_MODULE.then(({ TiptapVuetify }) => TiptapVuetify)
},
data: () => ({
// editorProperties: {
// editorProps: {
// handleKeyDown (a, b, c) {
// console.log('handleKeyDown', a, b, c)
// }
// }
// },
extensions: null,
content: `
<h1>Yay Headlines!</h1>
<blockquote>Test quote.</blockquote>
<p>All these <strong>cool tags</strong> are working now.</p>
<p>
There is always something to do. Thankfully, there are checklists for that. Don't forget to call mom.
</p>
<ul data-type="todo_list">
<li data-type="todo_item" data-done="true">
Buy beer
</li>
<li data-type="todo_item" data-done="true">
Buy meat
</li>
<li data-type="todo_item" data-done="true">
Buy milk
</li>
<li data-type="todo_item" data-done="false">
Call mom
</li>
</ul>
`
}),
async created () {
const {
Heading, Bold, Italic, Strike, Underline, Code, CodeBlock, Paragraph, BulletList, OrderedList, ListItem,
Link, Blockquote, HardBreak, HorizontalRule, History, Image, TodoList, TodoItem
} = await MAIN_MODULE
this.extensions = [
MyCustomExtension,
TodoList,
[TodoItem, {
options: {
nested: true
}
}],
Code,
CodeBlock,
HorizontalRule,
Paragraph,
History,
HardBreak, // позволяет переносить через Shift + Ctrl + Enter
Underline,
Strike,
Italic,
ListItem, // если нужно использовать список (BulletList, OrderedList)
BulletList,
OrderedList,
[Image, {
options: {
imageSources: [{ component: FileSelector, name: 'File Selector' }]
}
}],
[Heading, {
// Опции которые попадают в расширение tiptap
options: {
levels: [1, 2, 3]
}
}],
// но опции не обязательно указывать если нужно чтобы renderIn: 'toolbar', это по умолчанию.
[Bold, {
renderIn: 'toolbar'
}],
[Blockquote, {
renderIn: 'bubbleMenu',
options: {
levels: [1, 2, 3]
}
}],
[Link, {
renderIn: 'bubbleMenu'
}]
]
},
methods: {
onkeydown (event) {
// console.log('event', event.key)
}
}
}
</script>