Trenutno dejavna stran: start » sl » Interna dokumentacija » Razširitve DokuWikija (WvdS) » FluentUI (knjižnica oblikovalskega sistema) » FluentUI: reference komponent » FluentUI: Tree List — predstavitveni pregled » Tree List: Expand/Collapse

Tree List: Expand/Collapse

1. Pregled in namen

Stanje: [Live].

2. Predpogoji

osnovna pogodba Tree Lista že razumljena (expanded/childrenKey).

3. Pojmi

Dualizem odjemalec/strežnik, tako kot pri razvrščanju: $opts['expandUrl'] ponuja rezervni način brez JS (analogno sortUrl-u pri dataGrid() Sorting-u); ob prisotnem JavaScriptu scripts/treelist.js prevzame razširjanje/strnjevanje na strani odjemalca, brez ponovnega nalaganja strani.

4. Prvi koraki

$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. Uporaba

Potreba Vzorec
Razširiti/strniti posamezno vrstico expandUrl na vrstico
Vse vrstice naenkrat gumbi orodne vrstice „Razširi vse„/„Strni vse“ (odsek 6)

6. API referenca: osnova brez JS

Vsaka nadrejena vrstica nosi vidno povezavo za razširjanje/strnjevanje (.wk-treelist__toggle, ▶/▼, z dinamičnim aria-label „razširi„/„strni“) v svojem prvem stolpcu: $opts['expandUrl'](string $key, bool $expand) priskrbi strežniški URL, ki posodobi $opts['expanded'] za naslednji izris.

Razširi vse / strni vse: expandUrl se samodejno izriše kot orodna vrstica nad seznamom (klic toolbar()), gumbi pokličejo isti callable s psevdoključema *all oziroma *none; strežnik nastavi expanded na vse ključe nadrejenih vrstic oziroma na prazno polje. To so navadne povezave, brez posebnega primera glede na posamezno vrstico.

Plast odjemalca (scripts/treelist.js): že izrisana (strežniško razširjena) poddrevesa se na strani odjemalca strnejo in ponovno razširijo brez ponovnega nalaganja (atribut hidden, sinhronizacija aria-expanded); razširjanje strežniško strnjene vrstice še vedno sledi povezavi — njeni otroci so namerno odsotni iz DOM (meja izrisa iz osnove).

7. Parametri, možnosti in stanja

Ključ Tip Pomen
$opts['expandUrl'] callable (string $key, bool $expand): string povezava za preklop na nadrejeno vrstico; psevdoključa *all/*none za skupinske gumbe
$opts['expanded'] array razširjene vrednosti rowKey (strežniško stanje, npr. seja)

8. Popolni primeri

Glej odsek 4; obravnavalnik zaslona posodobi expanded iz parametra toggle/x (oziroma nastavi vse/nobenega pri *all/*none) in znova izriše.

9. Omejitve in robni primeri

  • Strnjevanje na strani odjemalca je čisto vizualno — strežniško stanje (expanded) se spremeni šele prek povezav; po ponovnem nalaganju spet velja strežniško stanje.

10. Dostopnost in združljivost

Preklop za razširjanje/strnjevanje je nativna, fokusirljiva povezava z dinamičnim aria-label — upravljanje s tipkovnico in bralnikom zaslona deluje brez dodatne kode; aria-expanded na vrstici sledi stanju.

11. Odpravljanje težav

Simptom: „Razširi vse„ deluje, vendar se posamezne vrstice po ponovnem nalaganju znova strnejo.

Vzrok: obravnavalnik zaslona ne shrani expanded trajno (npr. pozabljena seja).

Rešitev: shraniti expanded na strani strežnika in ga posredovati pri izrisu (odsek 4).

12. Sorodne teme

sl/wiki/dwe/wkfluentui/component/treelist/expand-collapse.txt · Zadnja sprememba: uporabnika 0.0.0.0