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
For Ă„ forklare feil eller uventede lasteproblemer
Spinner kan brukes i Punkts button for Ä gi indikasjon pÄ opplastning
Hvis du vil vise status eller forklaring i stedet for animasjon
Varianter
Typer
I Punkt finnes det to ulike typer loader
Type | Beskrivelse |
---|---|
Oslo-loader (shapes) | En animert bĂžlge med Oslo-former som skifter mellom brandfargene. Egner seg godt til hele sider eller stĂžrre seksjoner |
Spinner | En 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
Variant | Beskrivelse |
---|---|
Blue | Statisk Oslo-blÄ, brukes i formelle og nÞytrale grensesnitt |
Rainbow | Animeres med flere brandfarger, mer leken |
StĂžrrelser
Begge variantene kommer i tre stĂžrrelser
Variant | Beskrivelse |
---|---|
Small | Brukes 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 |
Large | For 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
UnngÄ
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 brukerole="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:
Hvordan du bĂžr kode statusbeskjeder og hvordan de bĂžr skrives
Hvordan du implementerer statusmeldinger
Anatomi
Element | Beskrivelse |
---|---|
1. Loader-element | Enten Oslo-logo (shapes) eller spinner |
2. Tekst | Valgfri beskrivelse som vises visuelt og leses opp av skjermleser |
Implementasjon i kode
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-loader.js;
import { PktLoader } from '@oslokommune/punkt-react';
<script src="https://punkt-cdn.oslo.kommune.no/latest/elements/pkt-loader.js" type="module"></script>
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
Prop | Type | Beskrivelse |
---|---|---|
message | string | Tekst som vises under loaderen |
size | small medium large | StÞrrelse pÄ loaderen |
variant | rainbow blue shapes | Fargevariant pÄ loaderen |
delay | number | Tid i millisekunder fĂžr loaderen vises |
inline | boolean | Loader er en del av sidens floatelementer |
isLoading | boolean | Loader er aktiv |
Slot (children) | Beskrivelse |
---|---|
default | Innholdet som lastes inn |