From 5cffe8846bc393c07ee3d93d67988d5ab290efb4 Mon Sep 17 00:00:00 2001 From: Yuri Karamian Date: Fri, 19 Jun 2026 14:34:28 +0200 Subject: [PATCH] Fix table menu overflow and conditional reset button --- src/lib/components/Editor.svelte | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/lib/components/Editor.svelte b/src/lib/components/Editor.svelte index 6926bd3..9978077 100644 --- a/src/lib/components/Editor.svelte +++ b/src/lib/components/Editor.svelte @@ -278,7 +278,7 @@ return linkSuggestTitles.filter(e => e.title.toLowerCase().includes(q)).slice(0, 8); }); let textContextMenu = $state<{ x: number; y: number; submenuLeft: boolean } | null>(null); - let tableContextMenu = $state<{ x: number; y: number } | null>(null); + let tableContextMenu = $state<{ x: number; y: number; hasStyling: boolean } | null>(null); let tablePickerOpen = $state(false); let tablePickerHover = $state({ rows: 0, cols: 0 }); let imageToolbar = $state<{ pos: number; x: number; y: number; size: string; src: string } | null>(null); @@ -4057,12 +4057,29 @@ let x = event.clientX; let y = event.clientY; const menuWidth = 220; - const menuHeight = 560; + const menuHeight = 600; if (x + menuWidth > window.innerWidth) x = window.innerWidth - menuWidth - 8; if (y + menuHeight > window.innerHeight) y = window.innerHeight - menuHeight - 8; if (x < 4) x = 4; if (y < 4) y = 4; - tableContextMenu = { x, y }; + let hasStyling = false; + const $editor = editor; + if ($editor) { + const pos = $editor.view.posAtDOM(event.target as Node, 0); + let resolved = $editor.state.doc.resolve(pos); + for (let d = resolved.depth; d >= 0; d--) { + if (resolved.node(d).type.name === 'table') { + resolved.node(d).descendants((n: any) => { + if (n.type.name === 'tableCell' || n.type.name === 'tableHeader') { + if (n.attrs.backgroundColor || (n.attrs.colspan > 1) || (n.attrs.rowspan > 1)) hasStyling = true; + } + return true; + }); + break; + } + } + } + tableContextMenu = { x, y, hasStyling }; return; } // Show text context menu for any right-click in editor @@ -6005,7 +6022,7 @@
-
e.stopPropagation()}> +
e.stopPropagation()}>
+ {#if tableContextMenu.hasStyling}
+ {/if}