Skip to main content

Skeleton

Skeleton vo WebJET Elements nie je samostatný tag ako wje-button alebo wje-card. Je to loading pattern vstavaný do základného WJElement, ktorý počas asynchrónneho renderu dočasne zobrazí placeholder markup.

Ak už vlastný element načítava dáta asynchrónne, stačí zapnúť atribút skeleton a dodať placeholder cez slot="skeleton" alebo hook renderSkeleton().

Základné použitie

Najbežnejší scenár je integrácia cez slot="skeleton". Element si ponechá svoj štandardný async render a pri čakaní iba dočasne zobrazí placeholder, ktorý tvarom kopíruje finálny layout.

Delay a minimálne trvanie

Atribúty skeleton-delay a skeleton-min-duration slúžia na potlačenie bliknutia. Delay skeleton odloží a minimálne trvanie ho po zobrazení chvíľu podrží, aby prechod nepôsobil trhano.

renderSkeleton() vo vlastnom elemente

Ak tvoríte vlastný komponent nad WJElement, placeholder môžete vrátiť priamo z hooku renderSkeleton(). Tento prístup je vhodný vtedy, keď má byť skeleton súčasťou implementácie komponentu a nie externého slotovaného obsahu.

Kedy použiť

Použite skeleton vtedy, keď komponent načítava obsah asynchrónne a chcete počas čakania zachovať stabilný layout bez poskakovania okolia.

Kedy nepoužiť

Nepoužívajte skeleton ako náhradu za prázdny stav, chybový stav alebo spinner v miestach, kde ešte nepoznáte tvar výsledného obsahu.

Prístupnosť

Skeleton by nemal byť jediný nositeľ informácie o stave. Pri dôležitých scenároch doplňte aj textový loading stav, aria-busy, prípadne zrozumiteľnú informáciu o tom, že obsah sa ešte načítava.

Odporúčané postupy

  • Placeholder držte čo najbližšie finálnemu layoutu.
  • Preferujte slot="skeleton" pre integráciu a renderSkeleton() pre autorov komponentov.
  • skeleton-delay zvyšujte len tam, kde reálne bojujete s bliknutím pri krátkych requestoch.
  • skeleton-min-duration používajte striedmo, aby loading nepôsobil umelo dlhý.

Atribúty a vlastnosti

NázovTypDefaultPopis
skeletonbooleanfalseZapne skeleton režim počas async renderu.
skeleton-delaynumber150Oneskorenie v milisekundách, po ktorom sa skeleton môže zobraziť.
skeleton-min-durationnumber300Minimálna viditeľnosť skeletonu v milisekundách po tom, čo sa už raz ukázal.
skeletonDelayproperty<number>150Property alias k atribútu skeleton-delay.
skeletonMinDurationproperty<number>300Property alias k atribútu skeleton-min-duration.

Udalosti

NázovDetailPopis
wj-skeleton:show{ delay }Skeleton sa reálne zobrazil.
wj-skeleton:skip{ reason: 'render-finished-fast', elapsedMs, delay }Render sa dokončil skôr, ako vypršal delay, takže skeleton sa neukázal.
wj-skeleton:hidenajčastejšie { reason: 'render-finished', visibleMs, delay, minDuration }, fallback { reason: 'finally' }Po štandardnom render cykle príde render-finished. Pri niektorých cestách, najmä pri priamom volaní display(), môže prísť aj dodatočný fallback finally, preto je dobré sa riadiť hodnotou reason.

Sloty

NázovPopis
skeletonPlaceholder markup zobrazený počas loading stavu. Preferovaný integračný spôsob.

Metódy a hooky

NázovPopis
renderSkeleton(params)Voliteľný hook na vrátenie skeleton markup pri tvorbe vlastného elementu nad WJElement.