mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.0 KiB
36 lines
1.0 KiB
import * as TipTapMention from '@tiptap/extension-mention' |
|
|
|
export const Mention = TipTapMention.Mention.extend({ |
|
renderHTML({ HTMLAttributes }) { |
|
const attributes = |
|
typeof HTMLAttributes['data-id'] !== 'object' ? JSON.parse(HTMLAttributes['data-id']) : HTMLAttributes['data-id'] |
|
|
|
const innerText = attributes.name && attributes.name.length > 0 ? attributes.name : attributes.email |
|
|
|
const styles = |
|
attributes.isSameUser === true || attributes.isSameUser === 'true' |
|
? 'bg-[#D4F7E0] text-[#17803D]' |
|
: 'bg-brand-50 text-brand-500' |
|
|
|
return [ |
|
'span', |
|
{ |
|
'class': `mention font-semibold ${styles} rounded-md px-1`, |
|
'data-type': 'mention', |
|
'data-id': JSON.stringify(HTMLAttributes['data-id']), |
|
}, |
|
[ |
|
'span', |
|
{ |
|
style: 'font-weight: 800;', |
|
}, |
|
'@', |
|
], |
|
innerText, |
|
] |
|
}, |
|
renderText({ node }) { |
|
return `@${node.attrs.id.name || node.attrs.id.email || node.attrs.id.id}` |
|
}, |
|
deleteTriggerWithBackspace: true, |
|
})
|
|
|