Loader

Release dato: 14.02.2024

Sist oppdatert: 16.05.2025

Loader gir en visuell indikasjon pÄ at noe lastes, og forteller brukeren at systemet jobber i bakgrunnen. Den bidrar til Ä redusere usikkerhet, og hjelper brukeren med Ä forstÄ at de mÄ vente et Þyeblikk fÞr innholdet er klart.

FormÄlet med loader er Ä synliggjÞre systemstatus og forbedre brukeropplevelsen i situasjoner med ventetid.

Test komponenten

Relaterte komponenter

Varianter

Typer

I Punkt finnes det to ulike typer loader

TypeBeskrivelse
Oslo-loader (shapes)En animert bĂžlge med Oslo-former som skifter mellom brandfargene. Egner seg godt til hele sider eller stĂžrre seksjoner
SpinnerEn klassisk roterende sirkel. Kommer i blÄ og regnbue, men du kan ogsÄ bruke andre brandfarger. Egner seg godt i smÄ elementer og komponenter, som knapper

Farger

Spinner-varianten kan brukes i to ulike fargekombinasjoner

VariantBeskrivelse
BlueStatisk Oslo-blÄ, brukes i formelle og nÞytrale grensesnitt
RainbowAnimeres med flere brandfarger, mer leken

StĂžrrelser

Begge variantene kommer i tre stĂžrrelser

VariantBeskrivelse
SmallBrukes der plassen er begrenset, for eksempel inne i en knapp eller ved siden av et skjemafelt. Passer best med spinner-variant
Medium (default)StandardstÞrrelse som passer godt til komponenter og seksjoner. Fungerer bÄde med spinner og Oslo-loader
LargeFor stÞrre flater eller nÄr loaderen skal vÊre et sentralt blikkfang, som ved fullskjerm-visning

Retningslinjer for bruk

Bruk loader nÄr

  • systemet henter data og brukeren mĂ„ vente i mer enn 300 ms
  • du laster inn hele sider, seksjoner eller komponenter
  • du trenger Ă„ gi visuell tilbakemelding for handlinger (for eksempel i en button)

UnngÄ loader nÄr

  • innholdet laster raskere enn 300 ms (brukeren vil ikke bli pĂ„virket)
  • det er mer effektivt Ă„ vise skeleton eller tomtilstand mens man venter
  • du allerede bruker en annen visuell indikator for status, som progressbar eller alert

Velg riktig variant og plassering

Bruk Oslo-loader for stÞrre flater eller fullskjerm. Spinneren passer bedre i mindre omrÄder, som knapper, skjemafelt eller under tabs.

Legg til tekst ved lang ventetid

Dersom ventetiden overstiger 4 sekunder, bĂžr du legge til en forklarende tekst som informerer brukeren om hva som skjer. Eksempel: «Laster inn oversikt over sĂžknader »

Dersom innholdet ikke lastes som forventet, vurder Ă„ bruke en alert for Ă„ informere om feilen eller hva brukeren bĂžr gjĂžre videre.

GjĂžr slik

Eksempel pÄ anbefalt bruk av loader
Gi brukeren en indikasjon pÄ at noe skjer og hva hen venter pÄ

UnngÄ

Eksempel pÄ loader uten indikasjon  pÄ hva som skjer
UnngÄ Ä la en loader stÄ lenge uten Ä gi brukeren en indikasjon pÄ hva som skjer

Responsivitet

Automatisk skalering

Loader tilpasser seg tilgjengelig plass. PÄ smÄ skjermer legges loaderen midtstilt, med tekst under om nÞdvendig. Spinneren er godt egnet til kompakte flater, mens Oslo-loaderen gir bedre effekt pÄ stÞrre skjermer eller flater.

Tilgjengelighet pÄ mobil

NÄr du bruker loader pÄ mobil og nettbrett, mÄ du teste at

  • teksten under loaderen er synlig og lesbar
  • animasjonen holder seg innenfor synsfeltet
  • kontrasten er god nok, sĂŠrlig ved bruk av egendefinerte farger
  • trykkflater og knapper ikke havner bak en fullskjerm-loader

Universell utforming

Lesbarhet og skjermleser

Loader mÄ kunne oppfattes av brukere som navigerer med skjermleser eller tastatur.

Du mÄ

  • legge til aria-label="Laster inn" eller bruke role="status" med en beskrivende tekst
  • sĂžrge for at loaderen fjernes fra DOM nĂ„r lasting er fullfĂžrt
  • merke dekorative animasjoner med aria-hidden="true" slik at de ikke leses opp

I tillegg skal wrapper-elementet bruke aria-live="polite" for Ă„ gi skjermleseren beskjed om at innhold oppdateres.

Bruk aria-busy="true" pÄ containeren mens innhold lastes inn, og sett det til false nÄr oppdateringen er ferdig. Dette gir skjermleseren tydelig signal om at noe er i endring og at den bÞr vente fÞr den leser opp nytt innhold.

Dersom det ikke sendes inn tekst til komponenten, brukes aria-label="Loading" som fallback for Ă„ gi nĂždvendig kontekst.

Tastaturnavigasjon og fokus

En loader skal ikke blokkere interaksjon uten Ä forklare hvorfor. Hvis du bruker fullskjerm-loader, pass pÄ at den ikke hindrer fokus eller skjuler viktige elementer. Det mÄ vÊre tydelig at brukeren mÄ vente.

Mer om universell utforming av loader og statusbeskjeder:

Anatomi

ElementBeskrivelse
1. Loader-elementEnten Oslo-logo (shapes) eller spinner
2. TekstValgfri beskrivelse som vises visuelt og leses opp av skjermleser

Implementasjon i kode

Hvordan ta komponenten i bruk?

Testing

Elements og React: Dersom du skal skrive tester med JSDOM eller liknende er det viktig at du lar komponenten bli rendret ferdig fĂžr du tester den. Dette kan gjĂžres ved Ă„ kjĂžre denne kodelinjen fĂžr testene kjĂžres:

await window.customElements.whenDefined("pkt-loader");

Dersom du bruker verktÞyene i punkt-testing-utils sÄ kan dette bli gjort automatisk for deg.

Overstyring av sti til loading-animasjon

I likhet med Icon-komponentens overstyring av sti til ikoner kan man overstyre stien til loading-animasjonen globalt ved Ă„ sette sti i window.pktAnimationPath.

Props og tokens

PropTypeBeskrivelse
messagestringTekst som vises under loaderen
sizesmall
medium
large
StÞrrelse pÄ loaderen
variantrainbow
blue
shapes
Fargevariant pÄ loaderen
delaynumberTid i millisekunder fĂžr loaderen vises
inlinebooleanLoader er en del av sidens floatelementer
isLoadingbooleanLoader er aktiv
Slot (children)Beskrivelse
defaultInnholdet som lastes inn