Jøkul · Komponenter
Pakke: @fremtind/jokul
Installasjon: Se relevant guide
Skeleton loader er Jøkul sitt mønster for ventetilstander der layouten allerede er kjent. I stedet for en generell spinner får brukeren en plassholder som speiler den endelige strukturen.
Den lokale forhåndsvisningen bruker Jøkul sine faktiske klasser fra monopakka `@fremtind/jokul` og den ekte `skeleton-loader.min.css`-fila.
Playgrounden under styrer hele den dokumenterte markupkontrakten for element-, input- og table-variantene.
Props Jøkul-props Playground-kontroller og sentrale primitive props som styrer struktur og form i den lokale skjelettvisningen.
Prop Type Standard Beskrivelse pattern "element" | "input" | "table" "element" Velger hvilken ferdig skeleton-struktur du vil bruke i markupen. compact boolean false Legg til compact-modifieren når skeletonen må samsvare med en kompakt layout eller tabell. shape "rectangle" | "circle" "rectangle" Styrer form på `jkl-skeleton-element` når du bruker den enkleste element-varianten.
React-props Eksplisitte props på de eksporterte skeleton-primitivene i `@fremtind/jokul/loader`.
Prop Type Standard Beskrivelse className string ingen Ekstra klasse på skeleton-wrapperen eller den aktuelle primitive varianten når du må koble den til lokal layout eller sporing. children ReactNode påkrevd for animasjons- og tabellvarianter Innholdet som pakkes inn i `SkeletonAnimation`, `SkeletonTableHeader` og `SkeletonTableRow` for å bygge den endelige plassholderstrukturen. textDescription string "Vennligst vent" Skjult statusbeskrivelse for `SkeletonAnimation` når ventetilstanden må forklares tekstlig for skjermlesere. delay number 0 Forsinker rendringen av skeletonen når du vil unngå flimring ved svært korte ventetider. style CSSProperties ingen inline-stiler Brukes når den enkelte primitive skeleton-varianten trenger eksplisitt bredde eller høyde via inline-stiler. width number | string påkrevd for element- og tabellvarianter Styrer bredden på `SkeletonElement`, `SkeletonButton` og `SkeletonTable` når plassholderen må speile det endelige innholdet. height number | string påkrevd for `SkeletonElement` Styrer høyden på `SkeletonElement` når du vil etterligne en konkret blokk eller avatar. labelProps SkeletonLabelProps ingen Lar sammensatte skeleton-varianter styre label-plassholderen separat fra inputdelen. inputProps SkeletonElementProps ingen Tilpasser formen og størrelsen på inputdelen i skjelettvarianter for feltgrupper. checkboxes number påkrevd for `SkeletonCheckboxGroup` Antall checkbox-rader som skal vises i en skjelettgruppe. radioButtons number påkrevd for `SkeletonRadioButtonGroup` Antall radio button-rader som skal vises i en skjelettgruppe.
Native HTML-props Tilgjengelighets- og rolleattributter som kan knyttes til animasjonswrapperen.
Prop Type Standard Beskrivelse role AriaRole ingen Kan brukes på `SkeletonAnimation` når ventetilstanden skal bo i en eksplisitt live region.
Komposisjoner Element Minste gyldige komposisjon. Bruk denne når du kjenner formen på ett enkelt element, som en avatar eller en kort tekstlinje.
Påkrevde deler:
Animation wrapper , Element placeholder
pattern="element" · compact=false · shape="circle"
Brukes når du kjenner til ett konkret element eller en avatar.
Kode HTML · html<div class="jkl-skeleton-animation" aria-hidden="true">
<div class="jkl-skeleton-element jkl-skeleton-element--circle" style="inline-size: 3rem; block-size: 3rem;"></div>
</div>CSS-importer · tsimport "@fremtind/jokul/styles/core/core.css";
import "@fremtind/jokul/styles/components/loader/skeleton-loader.min.css";Notater Circle-varianten passer når sluttresultatet er et rundt element, for eksempel en avatar. Ferdig komposisjon for skjemaområder der du vil beholde rytmen mellom label, felt og tilvalg mens innholdet lastes.
Påkrevde deler:
Input container , Animation wrapper , Element placeholder , Checkbox row
pattern="input" · compact=false · shape="rectangle"
Passer når et skjema eller en feltgruppe er på vei inn.
Kode HTML · html<div class="jkl-skeleton-input" aria-hidden="true">
<div class="jkl-skeleton-animation">
<div class="jkl-skeleton-element" style="inline-size: 6rem; block-size: 0.75rem;"></div>
</div>
<div class="jkl-skeleton-animation">
<div class="jkl-skeleton-element" style="inline-size: 18rem; block-size: 2.75rem;"></div>
</div>
<div class="jkl-skeleton-input__checkbox">
<div class="jkl-skeleton-animation">
<div class="jkl-skeleton-element" style="inline-size: 1.5rem; block-size: 1.5rem;"></div>
</div>
<div class="jkl-skeleton-animation">
<div class="jkl-skeleton-element" style="inline-size: 10rem; block-size: 1rem;"></div>
</div>
</div>
</div>CSS-importer · tsimport "@fremtind/jokul/styles/core/core.css";
import "@fremtind/jokul/styles/components/loader/skeleton-loader.min.css";Notater Input-komposisjonen er nyttig når brukeren venter på at et skjema eller en feltgruppe skal bli klar. Table Brukes når tabellstrukturen er kjent og du vil vise kolonner og radrytme før dataene kommer.
Påkrevde deler:
Table container , Table header , Table row , Animation wrapper , Element placeholder
pattern="table" · compact=true · shape="rectangle"
Passer når tabellstrukturen er kjent, men radinnholdet ikke er klart ennå.
Kode HTML · html<div class="jkl-skeleton-table jkl-skeleton-table--compact" aria-hidden="true">
<div class="jkl-skeleton-table__header">
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 5rem; block-size: 1rem;"></div>
</div>
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 7rem; block-size: 1rem;"></div>
</div>
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 4rem; block-size: 1rem;"></div>
</div>
</div>
<div class="jkl-skeleton-table__row">
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 9rem; block-size: 1rem;"></div>
</div>
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 6rem; block-size: 1rem;"></div>
</div>
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 4rem; block-size: 1rem;"></div>
</div>
</div>
<div class="jkl-skeleton-table__row">
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 7rem; block-size: 1rem;"></div>
</div>
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 8rem; block-size: 1rem;"></div>
</div>
<div class="jkl-skeleton-animation jkl-skeleton-animation--compact">
<div class="jkl-skeleton-element" style="inline-size: 3rem; block-size: 1rem;"></div>
</div>
</div>
</div>CSS-importer · tsimport "@fremtind/jokul/styles/core/core.css";
import "@fremtind/jokul/styles/components/loader/skeleton-loader.min.css";Notater Tabell-komposisjonen bør speile en konkret tabellvisning, ikke brukes som generell sidefyll. Anatomi Del Selektor Forelder Kreves Gjentas Beskrivelse Animation wrapper .jkl-skeleton-animation Ingen Ja Ja Omslutter en enkelt plassholder og tegner sweep-animasjonen over innholdet. Element placeholder .jkl-skeleton-element Animation wrapper Ja Ja Selve flaten som representerer det fremtidige innholdet. Kan gjøres rund med circle-modifier. Input container .jkl-skeleton-input Ingen Nei Nei Ferdig struktur for feltgrupper med label, input og eventuelle checkbox-rader. Checkbox row .jkl-skeleton-input__checkbox Input container Nei Ja Brukes når input-skjelettet også skal vise en tilhørende checkbox-rad. Table container .jkl-skeleton-table Ingen Nei Nei Ferdig struktur for tabeller der kolonner og rytme er kjent før dataene kommer. Table row .jkl-skeleton-table__row Table container Nei Ja Gjentas for hver forventede datarad i tabellskjelettet.
Når du skal bruke Skeleton loader Bruk skeleton loader når plasseringen og formen på innholdet er kjent, men dataene ikke er klare ennå.
Hvis brukeren heller trenger beskjed om at et system jobber uten at layouten er bestemt, er en vanlig Loader ofte bedre.
Velg en skeleton-struktur som ligner det endelige innholdet tett nok til å sette riktig forventning. Hold skeletonen lokal til området som faktisk venter på data. Unngå store skjelettflater som ikke sier noe om hva som kommer. Tilgjengelighet Skeleton loader er dekorativ og må ikke være den eneste formidlingen av lastetilstanden.
Brukeren trenger fortsatt status gjennom kontekst, overskrift, hjelpetekst eller live region dersom oppdateringen er viktig å få med seg.
Skjul den visuelle skeleton-markupen fra skjermlesere med `aria-hidden="true"`. Bruk heller ekte tekst eller statusmelding rundt skeletonen enn å prøve å gjøre selve plassholderen tilgjengelig. Komponentprofil Klient-JS Ingen Hydrering Ingen Ikoner Ingen Dekket API-props 12 Playground-kontroller 3 Delkomponenter 0 Anatomideler 7 Komposisjoner 3 Utfasete props 0 Stiler @fremtind/jokul/styles/core/core.css@fremtind/jokul/styles/components/loader/skeleton-loader.min.css Ikonkontrakt Bruk: Ingen
Komponenten krever ingen egen ikonkontrakt i grunnoppsettet.
Propkontrakt
Dekning: Komplett
Scope: Pakkens offentlige props, uten generiske DOM-props
Skeleton loader · SkeletonAnimationProps · @fremtind/jokul/loader · 5 props
Skeleton loader · SkeletonElementProps · @fremtind/jokul/loader · 4 props
Skeleton loader · SkeletonButtonProps · @fremtind/jokul/loader · 3 props
Skeleton loader · SkeletonCheckboxGroupProps · @fremtind/jokul/loader · 4 props
Skeleton loader · SkeletonInputProps · @fremtind/jokul/loader · 3 props
Skeleton loader · SkeletonRadioButtonGroupProps · @fremtind/jokul/loader · 4 props
Skeleton loader · SkeletonTableProps · @fremtind/jokul/loader · 3 props
Skeleton loader · SkeletonTableHeaderProps · @fremtind/jokul/loader · 2 props
Skeleton loader · SkeletonTableRowProps · @fremtind/jokul/loader · 2 props
Skeleton loader · SkeletonTextAreaProps · @fremtind/jokul/loader · 3 props
Dekningen følger offentlige props som kommer fra Jøkul-pakken og dens egne basetyper, men ikke generiske DOM-props fra React. Tilgjengelighet Tastatur: Ingen egen tastaturmodell; skeleton loader er dekorativ og skal ikke være fokusbar.
Semantikk som kreves Skeleton-markupen må være dekorativ og skjules med aria-hidden="true". Bruk separat status eller konteksttekst når ventetilstanden er viktig å forstå. Velg en plassholderstruktur som faktisk matcher det ferdige innholdet. Automatiserte kontroller Dokssiden inngår i prosjektets route smoke og a11y-kjøring. Forhåndsvisningen rendres server-side uten Astro islands eller klienthydrering. Manuelle kontroller Bekreft at skjelettet ligner nok på sluttresultatet til å sette riktige forventninger. Bekreft at plassholderen forsvinner raskt når dataene er klare. Ytelse Sweep-animasjonen er CSS-basert og krever ikke klient-JS. Hold antall samtidige plassholdere nede for å begrense visuell støy. Relasjoner Foreldre Mønsterområdet bygges opp på nytt for å koble generelle lastetilstandsmønstre tilbake til konkrete komponentdocsider.
Mønster : Her ligger planen for hvordan nye mønstre skal knyttes til blant annet Skeleton loader. Søsken Nærliggende komponenter som løser samme ventetid på andre måter.
Loader : Bruk den vanlige loaderen når du trenger generell status i stedet for en kjent struktur. Relatert Installer Jøkul : Bruk installasjonsguiden for å hente inn Jøkul-stilene fra monopakka.