Make the Name Box interactive: jump-to-reference + table/sheet/named-range autocomplete

The top-left Name Box was a plain read-only display of the current
selection ("Umsatz::B2:E6"). It's now an editable input that navigates
on Enter, using the same reference syntax a formula would: a bare cell
or range on the active table, a table/sheet-qualified reference
(Tabelle::A1, Blatt!Tabelle::A1:B5), a named range's name, or -- beyond
what's valid formula syntax -- a bare table name (selects the whole
table) or bare sheet name (switches to it).

Autocompletes against named ranges, table names, and sheet names as you
type (Tab accepts the highlighted suggestion, click jumps there
directly); an unresolvable entry reports via a toast and leaves the text
selected for a quick retry rather than silently reverting.

document.ts gains two new functions (jumpToNameInput, nameBoxSuggestions)
built on the existing parseFormula/resolveTableName/resolveNamedRange
machinery already used elsewhere in the store -- no engine changes.
FormulaSuggest.vue's prop type was loosened so the same dropdown
component serves both this and the existing formula function-name
autocomplete.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
wkh
2026-09-09 23:54:01 +02:00
co-authored by Claude Sonnet 5
parent d0500fcaf5
commit 06fea34f82
6 changed files with 380 additions and 17 deletions
+26 -5
View File
@@ -190,11 +190,32 @@ Zeilenhöhe der Tabelle geklemmt.
an der unteren Kante lässt sie sich per **Maus** (natives `resize: vertical`)
auf beliebig viele Zeilen aufziehen, um mehr auf einmal zu sehen. `Alt`+`Enter`
bzw. `Cmd`+`Enter`, `F4` und `Esc` verhalten sich wie im In-Zellen-Editor. Das
Namensfeld links davon (ebenso das Pendant links in der **Statuszeile**, die
mit den Blatt-Reitern eine gemeinsame Zeile am unteren Rand teilt) zeigt bei
einer Mehrfachauswahl nicht nur die aktive Zelle, sondern den ganzen markierten
**Bereich** (`Umsatz::B2:E6`), bei einer diskontinuierlichen Auswahl zusätzlich
`+N` für die weiteren Rechtecke.
Namensfeld links davon (ebenso das rein lesende Pendant links in der
**Statuszeile**, die mit den Blatt-Reitern eine gemeinsame Zeile am unteren
Rand teilt) zeigt bei einer Mehrfachauswahl nicht nur die aktive Zelle,
sondern den ganzen markierten **Bereich** (`Umsatz::B2:E6`), bei einer
diskontinuierlichen Auswahl zusätzlich `+N` für die weiteren Rechtecke.
**Namensfeld als Sprungmarke** (Exceleigenschaft, hier zusätzlich mit
Autovervollständigung): das Feld selbst ist editierbar. Eingetippt und mit
`Enter` bestätigt springt es zu jedem gültigen Ziel — derselben Syntax, die
auch eine Formel verwenden würde:
- eine **Zelle** (`A1`) oder ein **Bereich** (`A1:C10`) auf der gerade
aktiven Tabelle,
- ein **qualifizierter** Bezug auf eine andere Tabelle/ein anderes Blatt
(`Tabelle::A1`, `Blatt!Tabelle::A1:B5`) — wechselt Blatt/Auswahl mit,
- ein **benannter Bereich** (`Umsatz_Q1`) — markiert dessen Zielbereich,
- ein bloßer **Tabellenname** (`Kosten`) — markiert die ganze Tabelle,
- ein bloßer **Blattname** (`Blatt 2`) — wechselt dorthin.
Während des Tippens schlägt eine Dropdown-Liste passende **benannte
Bereiche**, **Tabellennamen** und **Blattnamen** vor (Präfix, groß-/
kleinschreibungsunabhängig; `↑`/`↓` navigiert, `Tab` übernimmt den markierten
Vorschlag ins Feld, ein Klick springt direkt dorthin). Ein nicht auflösbarer
Text (z. B. eine echte Formel wie `SUM(A1;A2)` — das Feld navigiert, es
wertet nicht aus) meldet sich per Toast und lässt den Text zum Korrigieren
markiert stehen; `Esc` verwirft die Eingabe und zeigt wieder die aktuelle
Auswahl.
**Bezüge per Maus einfügen ("Point-Mode")**: sobald der Editor (Zelle oder
Formelleiste) eine Formel (`=…`) enthält, fügt ein **Klick** auf eine Zelle —