From 2c691090277ca0d4834a012a8b718ce9e0d85347 Mon Sep 17 00:00:00 2001 From: Johannes Raggam Date: Mon, 20 Nov 2023 17:57:47 +0100 Subject: [PATCH 1/3] fix: Make fixed-paragraph selectable to make the corresponding table selectable. --- src/extensions/fixed-paragraph.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extensions/fixed-paragraph.js b/src/extensions/fixed-paragraph.js index 772ed18..66c8815 100644 --- a/src/extensions/fixed-paragraph.js +++ b/src/extensions/fixed-paragraph.js @@ -15,7 +15,7 @@ export const factory = () => { group: "block", isolating: true, - selectable: false, + selectable: true, parseHTML() { return [ From aa71dfc6cac2a10757791671eb55f5fb2140e049 Mon Sep 17 00:00:00 2001 From: Johannes Raggam Date: Wed, 22 Nov 2023 21:26:40 +0100 Subject: [PATCH 2/3] fix: Allow to select the figcaption node. --- src/extensions/figcaption.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extensions/figcaption.js b/src/extensions/figcaption.js index 0a30d5e..3f395cc 100644 --- a/src/extensions/figcaption.js +++ b/src/extensions/figcaption.js @@ -16,7 +16,7 @@ export const factory = () => { allowGapCursor: false, draggable: false, isolating: true, - selectable: false, + selectable: true, parseHTML() { return [ From 16e1cc5899f2d0783aace74dc61bda195b474c73 Mon Sep 17 00:00:00 2001 From: Johannes Raggam Date: Wed, 22 Nov 2023 21:27:25 +0100 Subject: [PATCH 3/3] feat: Always wrap tables in a div.scroll-table wrapper. --- src/extensions/table.js | 33 +++++++++++++++++++++++++++++++++ src/toolbar.js | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/extensions/table.js diff --git a/src/extensions/table.js b/src/extensions/table.js new file mode 100644 index 0000000..cf40d32 --- /dev/null +++ b/src/extensions/table.js @@ -0,0 +1,33 @@ +import { mergeAttributes } from "@tiptap/core"; +import { Table as TipTapTable } from "@tiptap/extension-table"; + +export const factory = () => { + return TipTapTable.extend({ + parseHTML() { + return [ + { + tag: "table", + getAttrs: (node) => + node.closest("div.scroll-table") === null && null, + }, + { + tag: "div", + getAttrs: (node) => + node.matches(".scroll-table").getElementsByTagName("table") !== + null && null, + }, + ]; + }, + renderHTML({ HTMLAttributes }) { + return [ + "div", + { class: "scroll-table" }, + [ + "table", + mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), + 0, + ], + ]; + }, + }); +}; diff --git a/src/toolbar.js b/src/toolbar.js index e49a01e..9e344c1 100644 --- a/src/toolbar.js +++ b/src/toolbar.js @@ -139,7 +139,7 @@ export async function init_extensions({ app }) { tb.table_remove_row ) { extensions.push( - (await import("@tiptap/extension-table")).default.configure({ + (await import("./extensions/table")).factory().configure({ resizable: false, }) );