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.
54 lines
951 B
54 lines
951 B
3 years ago
|
import { mergeAttributes, Node } from '@tiptap/core'
|
||
|
|
||
|
export interface TableHeaderOptions {
|
||
|
HTMLAttributes: Record<string, any>,
|
||
|
}
|
||
|
export const TableHeader = Node.create<TableHeaderOptions>({
|
||
|
name: 'tableHeader',
|
||
|
|
||
|
addOptions() {
|
||
|
return {
|
||
|
HTMLAttributes: {},
|
||
|
}
|
||
|
},
|
||
|
|
||
|
content: 'block+',
|
||
|
|
||
|
addAttributes() {
|
||
|
return {
|
||
|
colspan: {
|
||
|
default: 1,
|
||
|
},
|
||
|
rowspan: {
|
||
|
default: 1,
|
||
|
},
|
||
|
colwidth: {
|
||
|
default: null,
|
||
|
parseHTML: element => {
|
||
|
const colwidth = element.getAttribute('colwidth')
|
||
|
const value = colwidth
|
||
|
? [parseInt(colwidth, 10)]
|
||
|
: null
|
||
|
|
||
|
return value
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
},
|
||
|
|
||
|
tableRole: 'header_cell',
|
||
|
|
||
|
isolating: true,
|
||
|
|
||
|
parseHTML() {
|
||
|
return [
|
||
|
{ tag: 'th' },
|
||
|
]
|
||
|
},
|
||
|
|
||
|
renderHTML({ HTMLAttributes }) {
|
||
|
return ['th', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]
|
||
|
},
|
||
|
|
||
|
})
|