feat(ui): Platzhalter beim Laden und ordentliche Leerzustände
Beim Laden stand ein Kreisel in der Mitte. Der sagt „warte", aber nicht, worauf – und wenn die Daten kommen, klappt das Layout um. Jetzt steht dort ein Platzhalter in der Form des Kommenden: Kacheln in der Kachelansicht, Zeilen in der Liste. Die Maße sind aus FileViews.tsx abgeschrieben, nicht geschätzt; weichen sie ab, springt es beim Wechsel wieder und der Zweck wäre dahin. Leerzustände sagen jetzt, warum nichts da ist, und bieten den Knopf an, der an dieser Stelle weiterhilft. Der leere Papierkorb bekommt bewusst keinen: Er ist ein guter Zustand, kein Mangel, und ein Knopf, der nur da ist damit einer da ist, führt nirgendwohin. Beides respektiert prefers-reduced-motion. Nebenbei gefunden: `@keyframes spin` lag als Inline-<style> in **sechs** Komponenten, und zwei Nutzer (AuditTab, SearchBox) hatten gar keine eigene Kopie. Dass es lief, war Zufall – @keyframes gilt fürs ganze Dokument, es genügte also, dass irgendeine der sechs gerade im Bild war. Kaputt wäre es an dem Tag gewesen, an dem jemand die letzte Kopie entfernt. Steht jetzt einmal in index.css. Nicht angefasst: der Sprachmix. CalendarPage ist durchgehend deutsch, die übrige Oberfläche englisch, betroffen sind sechs Dateien. Eine halbe Übersetzung wäre schlimmer als keine – das gehört in einem Zug gemacht, samt der Entscheidung, welche Sprache die Oberfläche spricht. In TESTING.md notiert. Geprüft: tsc sauber, 41 Vitest-Tests, alle 234 Prüfungen der sieben Selbsttest-Suiten grün. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
94a803bf7a
commit
1d10c6bd0e
13 files changed
+281
-57
No files matched your search
+53
@@ -1525,6 +1525,59 @@ bleibt `node` (schnell); wer ein DOM braucht, schreibt
|
||||
|
||||
---
|
||||
|
||||
## Platzhalter und Leerzustände (18.09.2026)
|
||||
|
||||
Beim Laden stand ein Kreisel in der Mitte, danach klappte das Layout um. Jetzt
|
||||
steht dort ein Platzhalter **in der Form des Kommenden** – Kacheln in der
|
||||
Kachelansicht, Zeilen in der Liste –, und nichts springt mehr, wenn die Daten
|
||||
ankommen. Die Maße sind aus `FileViews.tsx` abgeschrieben, nicht geschätzt;
|
||||
weichen sie ab, springt es wieder.
|
||||
|
||||
- [ ] Ordner öffnen → Platzhalter in der Form der gewählten Ansicht 🔎
|
||||
- [ ] Beim Umschalten zwischen Kachel und Liste wechselt auch der Platzhalter
|
||||
- [ ] Datenankunft ohne Sprung: Die Kacheln stehen dort, wo die Platzhalter
|
||||
standen
|
||||
- [ ] Papierkorb, „Für mich freigegeben", Etiketten, Kalender: ebenfalls
|
||||
Platzhalter statt „Loading…"
|
||||
- [ ] Betriebssystem auf „Bewegung reduzieren" → kein Pulsieren, nur gedämpfte
|
||||
Flächen
|
||||
|
||||
Leerzustände sagen jetzt, **warum** nichts da ist, und bieten den Knopf an,
|
||||
der an dieser Stelle weiterhilft:
|
||||
|
||||
- [ ] Leerer Ordner → „This folder is empty" mit Knopf „Upload files"
|
||||
- [ ] Wurzel ohne Inhalt → „Nothing here yet"
|
||||
- [ ] Leerer Papierkorb → **kein** Knopf (ein leerer Papierkorb ist ein guter
|
||||
Zustand, kein Mangel)
|
||||
- [ ] Nichts freigegeben → „Nothing shared with you yet"
|
||||
- [ ] Etikett ohne Dateien → Hinweis auf „Organise…"
|
||||
|
||||
### Der Kreisel stand sechsmal im Quelltext
|
||||
|
||||
`@keyframes spin` lag als Inline-`<style>` in sechs Komponenten – und zwei
|
||||
Nutzer (`AuditTab`, `SearchBox`) hatten **gar keine** eigene Kopie. Dass es
|
||||
trotzdem lief, war Zufall: `@keyframes` gilt fürs ganze Dokument, es genügte
|
||||
also, dass irgendeine der sechs gerade im Bild war. Kaputt wäre es an dem Tag
|
||||
gewesen, an dem jemand die letzte Kopie entfernt. Steht jetzt einmal in
|
||||
`index.css`.
|
||||
|
||||
- [ ] Kreisel dreht sich noch: Suchfeld tippen, Admin → Audit laden,
|
||||
Versionen-Dialog öffnen 🔎
|
||||
|
||||
### Offen: der Sprachmix
|
||||
|
||||
`CalendarPage.tsx` ist durchgehend deutsch („Kalender", „Lädt…", „Keine
|
||||
Termine"), die übrige Oberfläche englisch. Betroffen sind sechs Dateien:
|
||||
CalendarPage, Shell, calendar/controls, calendar/EventDialog, TagChip,
|
||||
UserMenu.
|
||||
|
||||
Bewusst **nicht** nebenbei erledigt: Eine halbe Übersetzung ist schlimmer als
|
||||
gar keine, weil dann eine Seite in sich gemischt ist. Das gehört in einem Zug
|
||||
gemacht – samt der Entscheidung, welche Sprache die Oberfläche eigentlich
|
||||
spricht.
|
||||
|
||||
---
|
||||
|
||||
## Absender / Korrespondent (23.08.2026)
|
||||
|
||||
Das zweite Ordnungsmerkmal neben den Etiketten. Unterschied: genau **einer**
|
||||
|
||||
Reference in new issue
Block a user