refactoring

This commit is contained in:
Philipp Kühn
2021-01-19 12:50:09 +01:00
parent 6b517a47ef
commit 7e88257a45
2 changed files with 58 additions and 39 deletions

View File

@@ -31,6 +31,7 @@ export default {
Paragraph, Paragraph,
Text, Text,
Mention.configure({ Mention.configure({
suggestionOptions: {
items: query => { items: query => {
return ['Hans', 'Philipp', 'Kris'].filter(item => item.startsWith(query)) return ['Hans', 'Philipp', 'Kris'].filter(item => item.startsWith(query))
}, },
@@ -71,6 +72,7 @@ export default {
}, },
} }
}, },
},
}), }),
], ],
content: ` content: `

View File

@@ -1,14 +1,22 @@
import { Node } from '@tiptap/core' import { Node } from '@tiptap/core'
import Suggestion, { SuggestionOptions } from '@tiptap/suggestion' import Suggestion, { SuggestionOptions } from '@tiptap/suggestion'
export type MentionOptions = Omit<SuggestionOptions, 'editor'> export type MentionOptions = {
HTMLAttributes: {
[key: string]: any,
},
suggestionOptions: Omit<SuggestionOptions, 'editor'>,
}
export const Mention = Node.create({ export const Mention = Node.create({
name: 'mention', name: 'mention',
defaultOptions: <MentionOptions>{ defaultOptions: <MentionOptions>{
HTMLAttributes: {},
suggestionOptions: {
char: '@', char: '@',
}, },
},
group: 'inline', group: 'inline',
@@ -27,6 +35,15 @@ export const Mention = Node.create({
id: element.getAttribute('data-mention'), id: element.getAttribute('data-mention'),
} }
}, },
renderHTML: attributes => {
if (!attributes.id) {
return {}
}
return {
'data-mention': attributes.id,
}
},
}, },
} }
}, },
@@ -47,7 +64,7 @@ export const Mention = Node.create({
return [ return [
Suggestion({ Suggestion({
editor: this.editor, editor: this.editor,
...this.options, ...this.options.suggestionOptions,
command: ({ range, attributes }) => { command: ({ range, attributes }) => {
this.editor this.editor
.chain() .chain()