Sie befinden sich hier: start » de » Interne Dokumentation » DokuWiki-Erweiterungen (WvdS) » FluentUI (Design-System-Bibliothek) » FluentUI: Komponenten-Referenzen » FluentUI: Tree List — Demo-Übersicht » Tree List: Expand/Collapse

Tree List: Expand/Collapse

Zurück: Demo-Übersicht


1. Übersicht und Zweck

Status: [Live].

2. Voraussetzungen

Tree-List- Basiskontrakt bereits verstanden (expanded/childrenKey).

3. Konzepte

Client-/Server-Dualismus wie bei Sorting: $opts['expandUrl'] liefert den No-JS-Fallback (analog zu sortUrl bei dataGrid() Sorting); scripts/treelist.js übernimmt bei vorhandenem JavaScript das Auf-/Zuklappen clientseitig, ohne Seiten-Reload.

4. Erste Schritte

$expandUrl = static fn (string $key, bool $expand) => wl($ID, ['toggle' => $key, 'x' => $expand ? 1 : 0]);
echo $widgets->treeList($columns, $rows, [
    'rowKey'    => 'id',
    'expanded'  => $_SESSION['treelist_expanded'] ?? [],
    'expandUrl' => $expandUrl,
]);

5. Verwendung

Bedarf Muster
Einzelne Zeile auf-/zuklappen expandUrl je Zeile
Alle Zeilen auf einmal Toolbar-Buttons „Alle aufklappen„/„Alle zuklappen“ (Abschnitt 6)

6. API-Referenz: No-JS-Basis

Jede Elternzeile trägt einen sichtbaren Auf-/Zuklapp-Link (.wk-treelist__toggle, ▶/▼, mit dynamischem aria-label „Aufklappen„/„Zuklappen“) in ihrer ersten Spalte: $opts['expandUrl'](string $key, bool $expand) liefert die Server-URL, die $opts['expanded'] für den nächsten Render aktualisiert.

Alle aufklappen / zuklappen: rendert expandUrl automatisch als Toolbar oberhalb der Liste (toolbar()-Aufruf) — die Buttons rufen dasselbe Callable mit den Pseudo-Keys *all bzw. *none auf; der Server setzt expanded auf alle Elternzeilen-Keys bzw. ein leeres Array. Normale Links, kein Sonderfall gegenüber einer einzelnen Zeile.

Client-Schicht (scripts/treelist.js): bereits gerenderte (server-aufgeklappte) Teilbäume klappen clientseitig ohne Reload zu und wieder auf (hidden-Attribut, aria-expanded-Sync); das Aufklappen einer server-zugeklappten Zeile folgt dem Link — deren Kinder sind bewusst nicht im DOM (Render-Grenze aus Grundlagen).

7. Parameter, Optionen und Zustände

Schlüssel Typ Bedeutung
$opts['expandUrl'] callable (string $key, bool $expand): string Toggle-Link je Elternzeile; Pseudo-Keys *all/*none für die Sammel-Buttons
$opts['expanded'] array aufgeklappte rowKey-Werte (Server-Zustand, z. B. Session)

8. Vollständige Beispiele

Siehe Abschnitt 4; der Screen-Handler aktualisiert expanded aus dem toggle/x-Parameter (bzw. setzt bei *all/*none alle/ keine) und rendert neu.

9. Einschränkungen und Randfälle

  • Client-Zuklappen ist rein visuell — der Server-Zustand (expanded) ändert sich erst über die Links; nach einem Reload gilt wieder der Server-Zustand.

10. Accessibility und Kompatibilität

Der Auf-/Zuklapp-Toggle ist ein nativer, fokussierbarer Link mit dynamischem aria-label — Tastatur- und Screenreader-Bedienung funktioniert ohne Zusatzcode; aria-expanded an der Zeile folgt dem Zustand.

11. Troubleshooting

Symptom: „Alle aufklappen„ wirkt, aber einzelne Zeilen klappen nach Reload wieder zu.

Ursache: der Screen-Handler persistiert expanded nicht (z. B. Session vergessen).

Lösung: expanded serverseitig speichern und beim Render durchreichen (Abschnitt 4).

12. Verwandte Themen

de/wiki/dwe/wkfluentui/component/treelist/expand-collapse.txt · Zuletzt geändert: von 0.0.0.0