feat: collapse the ribbon to its tab strip

A chevron in the tab strip drops the band, leaving the strip; persisted, so
it survives a reload. Clicking a tab expands again, since a collapsed strip
whose tabs do nothing is a trap.

Word puts that chevron in the band's corner. It rides the strip so the band
keeps its full width: a flex row can only reserve a column, never a corner.

Skipped: Word floats the band over the document until the next click lands
in the text.
This commit is contained in:
Steffen Becker committed 2026-08-12 19:51:35 +02:00
1 parent 33784b239f
commit c334b5368e
6 files changed
+48 -2

No files matched your search

+9
View File
@@ -53,6 +53,15 @@ The band's height never changes: it scrolls horizontally with a hidden scrollbar
collapsing groups into popovers the way Word does when the window narrows. That is the single
biggest simplification here, and the reason two things below are necessary.
A chevron in the tab strip drops the band entirely, leaving the strip (`odf-editor-ribbon-collapsed`).
Clicking any tab brings it back — Word instead floats it over the document until the next click
lands in the text, which is the part not built.
Word puts that chevron in the band's bottom-right corner, and this one did too. Both ways of
reserving that corner failed: as a layer it covered whichever group's dialog launcher reached the
edge, and since the band scrolls, which one that is varies; in the flow it cost the band a column
at every height. A flex row cannot reserve width in part of its height, so it moved to the strip.
- **A menu must leave the flow.** `.ribbon-body` clips its own overflow, so the `anchored` action
(`ribbon/menu.svelte.ts`) switches a panel to `position: fixed` and pins it under its wrapper,
clamped inside the window. Panels drop below the **whole band**, not below their own button —