fix: add GridStackLayout showcase view (#7)
CI / build-and-test (pull_request) Successful in 1m13s

Adds a /gridstack route demonstrating GridStackLayout: four default
widgets (line/bar/pie chart cards plus a usage hint), buttons to add and
remove widgets at runtime, a reset-layout button and a layout-change
status line. Layout is persisted per browser via the existing
localStorage support. The view gets its own SideNavItem in MainLayout
and full de/en/es translations.

Fixes an infinite recursion in GridStackLayout.add(Component): a
single-argument add(item) resolves to that overload rather than the
varargs one, so its delegation to add(item) called itself. It now
appends through the element API and passes a GridStackItem through
unwrapped.

Adds the first test sources (browserless UI tests) covering the view's
widget count and the add/remove buttons.

Closes #7

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PYAcKoXKPN3rJ7nBroKZkc
This commit is contained in:
Pit Friedrich
2026-07-25 22:12:05 +02:00
parent 12761d53ca
commit 17396466a9
9 changed files with 268 additions and 4 deletions
@@ -10,16 +10,28 @@ lang.es=Español
nav.dashboard=Dashboard
nav.form=Formular
nav.table=Tabelle
nav.gridstack=Raster
page.dashboard=Dashboard
page.form=Formular
page.table=Tabelle
page.gridstack=Raster-Layout
card.revenueTrend=Umsatz-Entwicklung
card.revenueByMonth=Umsatz nach Monat
card.revenueByRegion=Umsatz nach Region
card.registration=Registrierung
card.employees=Mitarbeiter
card.gridstackHint=Bedienung
gridstack.hint=Karten am Titel greifen und verschieben, an der unteren rechten Ecke die Größe ändern. Das Layout wird im Browser gespeichert und beim nächsten Besuch wiederhergestellt.
gridstack.addWidget=Widget hinzufügen
gridstack.removeWidget=Letztes entfernen
gridstack.reset=Layout zurücksetzen
gridstack.status=Layout geändert {0} Widgets
gridstack.statusInitial=Layout unverändert
gridstack.widget=Widget {0}
gridstack.widgetText=Frei platzierbare Karte.
chart.revenueSeries=Umsatz 2026
chart.pointClick=Serie {0}, Punkt {1}