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
-
- | Test |
- Test |
- Test |
-
+
+
+ | Test |
+ Test |
+ Test |
+
+
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' {