From 418f152d4ba46dbcd8024dc53b9c64134b248b24 Mon Sep 17 00:00:00 2001 From: Steffen Becker Date: Sun, 28 Jun 2026 12:23:41 +0200 Subject: [PATCH] feat: header row toggle --- CHANGELOG.md | 3 +- src/lib/components/TableToolbar.svelte | 27 +++++ src/lib/components/Toolbar.svelte | 17 +-- src/lib/editor/extensions.ts | 3 + .../editor/extensions/tableCellBackground.ts | 7 +- src/lib/editor/extensions/tableHeaderRow.ts | 91 ++++++++++++++++ src/lib/export/odt.ts | 16 ++- src/lib/import/odt.ts | 28 ++--- src/styles/editor.css | 8 ++ tests/roundtrip.test.ts | 36 +++++++ tests/unit/table-header-row.test.ts | 101 ++++++++++++++++++ 11 files changed, 312 insertions(+), 25 deletions(-) create mode 100644 src/lib/editor/extensions/tableHeaderRow.ts create mode 100644 tests/unit/table-header-row.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index f8c7112..9a2fc79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,7 @@ - Tab stops (real tab character) and manual line breaks (Shift+Enter) **Insert** -- Tables: insert via size picker, Word-style row/column drag-resize, add / delete rows & columns, delete table, cell borders, merge cells and split cells (N×M, Word/LibreOffice-style), cell background shading; a table splits cleanly across page boundaries +- Tables: insert via size picker, Word-style row/column drag-resize, add / delete rows & columns, delete table, cell borders, merge cells and split cells (N×M, Word/LibreOffice-style), cell background shading, header-row toggle (bold + shading); a table splits cleanly across page boundaries - Images: inline or floating with text wrap (left / right / top-bottom), resize handles, rotation, live size badge; insert via toolbar, drag-and-drop, or paste - Special characters picker - Hyperlinks: create / edit / remove (toolbar + Ctrl+K), Ctrl/Cmd+click to open, hover hint showing the URL; ODF `text:a` round-trip @@ -65,7 +65,6 @@ ### Not yet implemented Planned word-processor features (to match Word/LibreOffice): -- Table cells: header-row toggle - Footnotes / endnotes (currently dropped on import) - Clear formatting (remove all marks) - Multi-column (newspaper) layout diff --git a/src/lib/components/TableToolbar.svelte b/src/lib/components/TableToolbar.svelte index 3e1e3f1..ac1353b 100644 --- a/src/lib/components/TableToolbar.svelte +++ b/src/lib/components/TableToolbar.svelte @@ -1,6 +1,7 @@