add schema

This commit is contained in:
Hans Pagel 2021-01-20 23:53:53 +01:00
parent 6a1661cf9f
commit cfe0898fdd
4 changed files with 86 additions and 9 deletions

View File

@ -38,11 +38,13 @@ export default {
content: `
<p>Example Text</p>
<table>
<tr>
<td>Test</td>
<td>Test</td>
<td>Test</td>
</tr>
<tbody>
<tr>
<td>Test</td>
<td>Test</td>
<td>Test</td>
</tr>
</tbody>
</table>
<p>Example Text</p>
`,
@ -56,7 +58,7 @@ export default {
</script>
<style>
table {
table, tr, td {
border: 3px solid red;
}
</style>

View File

@ -1,7 +1,33 @@
import { Node } from '@tiptap/core'
import { Node, mergeAttributes } from '@tiptap/core'
export interface TableCellOptions {
HTMLAttributes: {
[key: string]: any
},
}
export const TableCell = Node.create({
name: 'tableCell',
defaultOptions: <TableCellOptions>{
HTMLAttributes: {},
},
// content: options.cellContent,
content: 'block+',
// attrs: cellAttrs,
// tableRole: 'cell',
isolating: true,
parseHTML() {
// return [{ tag: 'td', getAttrs: dom => getCellAttrs(dom, extraAttrs) }]
return [{ tag: 'td' }]
},
renderHTML({ HTMLAttributes }) {
// toDOM(node) { return ["td", setCellAttrs(node, extraAttrs), 0] }
return ['td', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]
},
})
declare module '@tiptap/core' {

View File

@ -1,7 +1,30 @@
import { Node } from '@tiptap/core'
import { Node, mergeAttributes } from '@tiptap/core'
export interface TableRowOptions {
HTMLAttributes: {
[key: string]: any
},
}
export const TableRow = Node.create({
name: 'tableRow',
defaultOptions: <TableRowOptions>{
HTMLAttributes: {},
},
// content: '(tableCell | tableHeader)*',
content: 'tableCell*',
// tableRole: 'row',
parseHTML() {
return [{ tag: 'tr' }]
},
renderHTML({ HTMLAttributes }) {
return ['tr', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]
},
})
declare module '@tiptap/core' {

View File

@ -1,7 +1,33 @@
import { Node } from '@tiptap/core'
import { Node, mergeAttributes } from '@tiptap/core'
export interface TableOptions {
HTMLAttributes: {
[key: string]: any
},
}
export const Table = Node.create({
name: 'table',
defaultOptions: <TableOptions>{
HTMLAttributes: {},
},
content: 'tableRow+',
// tableRole: 'table',
isolating: true,
group: 'block',
parseHTML() {
return [{ tag: 'table' }]
},
renderHTML({ HTMLAttributes }) {
return ['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), ['tbody', 0]]
},
})
declare module '@tiptap/core' {