diff --git a/docs/src/demos/Nodes/Table/index.vue b/docs/src/demos/Nodes/Table/index.vue index 4e028811..d9bb6dd4 100644 --- a/docs/src/demos/Nodes/Table/index.vue +++ b/docs/src/demos/Nodes/Table/index.vue @@ -38,11 +38,13 @@ export default { content: `

Example Text

- - - - - + + + + + + +
TestTestTest
TestTestTest

Example Text

`, @@ -56,7 +58,7 @@ export default { diff --git a/packages/extension-table-cell/src/table-cell.ts b/packages/extension-table-cell/src/table-cell.ts index fd16c216..48143fb9 100644 --- a/packages/extension-table-cell/src/table-cell.ts +++ b/packages/extension-table-cell/src/table-cell.ts @@ -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: { + 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' { diff --git a/packages/extension-table-row/src/table-row.ts b/packages/extension-table-row/src/table-row.ts index b9adf247..0a6f2fc8 100644 --- a/packages/extension-table-row/src/table-row.ts +++ b/packages/extension-table-row/src/table-row.ts @@ -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: { + 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' { diff --git a/packages/extension-table/src/table.ts b/packages/extension-table/src/table.ts index 4ba4d518..ceb1399b 100644 --- a/packages/extension-table/src/table.ts +++ b/packages/extension-table/src/table.ts @@ -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: { + 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' {