Hopp til innhold
Aksel

Søk

Ctrl+K for å søkeEsc for å lukke

Aksel

Designsystemet
God praksisBloggen

Komponenter

ToggleGroup

ToggleGroup lar brukeren ta valg som påvirker innholdet på siden. Komponenten består av en gruppe knapper som henger sammen og bare én knapp kan være valgt om gangen.

StabilOppdatert 9. mai 2025

Egnet til:

  • Filtrering av innhold
  • Veksling av datavisninger og innhold

Uegnet til:

  • Erstatning for radio eller checkbox
  • Navigasjon

Eksempler

Varianter

Størrelser

Komponenten kommer i to størrelser: medium og small. Medium er standard, og brukes både på eksterne og interne flater. Small brukes på interne flater der det er behov for et mer komprimert grensesnitt.

Action eller neutral

Du kan bruke den blå (action) eller den grå (neutral) avhengig av kontekst. Neutral brukes til handlinger som man ønsker å tone ned.

Med eller uten label

Komponenten fungerer med og uten label. Vær oppmerksom på at label gjør det lettere for brukeren å skjønne hva komponenten skal brukes til. Om du ikke bruker label bør knappeinnholdet beskrive valgene godt.

Knappeinnhold

En ToggleGroup har 3 innholdsvarianter:

  • Kun tekst
  • Tekst med ikon på venstre side
  • Kun ikon

Tips

Om knappeinnholdet kun er ikoner er det stor fare for at brukerne ikke forstår valgene. Dette alternativet bør bare brukes i tjenester for ekspertbrukere eller i situasjoner hvor det er en global forståelse av hva ikonet betyr. På eksterne flater bør det ikke brukes kun ikon.

Retningslinjer

Plassering

Det må være plass til hele komponenten på skjermen, slik at alle valg er godt synlig for bruker. Om det ikke er plass (på mobil eller i andre grensesnitt med liten plass) kan ToggleGroup byttes ut med en Select.

Unngå
Toggle button med tekst over 2 linjer
Ikke klem sammen komponenten slik at teksten går over 2 linjer.
Unngå
Toggle button group som strekker seg utenfor skjermen.
Sørg for at det er stor nok plass i UI slik at hele komponenten er synlig.

Antall valg

Det bør være minst 2 og maks 5 valg i en ToggleGroup. Om du har flere valg bør du bruke en Select.

Unngå
ToggleGroup med ett valg.
Unngå
ToggleGroup med for mange valg.

Forklare handling

Det er god praksis å legge på en Tooltip som forklarer handlingen til en toggle-knapp. Det er ekstra viktig om du kun bruker ikoner.

Gjør
En toggle item med Tooltip som forklarer handlingen.

Egnet til filtrering

ToggleGroup egner seg til mange typer filtrering. Et vanlig scenario er filtrering av lister og tabeller.

Gjør
Toggle button group brukt til filtrering
Komponenten filtrerer dataene som vises i tabellen.

Egnet til innholdsveksling

Komponenten egner seg godt til å veksle mellom innhold. For eksempel kan den brukes til å veksle mellom datavisning med "tabell" og "graf", eller å vise en løsning som "saksbehandler" eller "bruker".

Gjør
ToggleGroup som veksler mellom graf og tabell.
ToggleGroup lar deg veksle mellom graf og tabell.

Egnet til skjemafilter

ToggleGroup kan brukes for å styre hvilke felter i et skjema som skal vises.

Gjør
Toggle button group brukt som skjemafilter.
Komponenten styrer hvordan noen av feltene i et skjema vises.

Uegnet som skjemaelement

Denne komponenten egner seg ikke som et skjemaelement. Det anbefales å heller bruke RadioGroup.

Unngå
ToggleGroup brukt som skjemaelement, som er feil.
ToggleGroup passer ikke som skjemaelement.
Gjør
RadioGroup brukt i skjema
I dette tilfellet er det bedre å bruke RadioGroup.

Uegnet til navigasjon

Denne komponenten egner seg ikke til navigasjon, siden dette vil være uventet oppførsel og potensielt forvirrende. Om det gjelder panelnavigasjon er det bedre å bruke Tabs.

Husk at du fint kan endre URLen uten at dette nødvendigvis teller som navigasjon, som en måte å knytte komponentens tilstand til URLen.

Unngå
ToggleGroup brukt som navigasjon
ToggleGroup passer ikke til navigasjon mellom paneler.
Gjør
Tabs brukt til panelnavigasjon
Tabs er designet for å brukes til panelnavigasjon.

Tekniske retningslinjer

Innholdet som styres bør helst befinne seg umiddelbart etter ToggleGroup i DOMen. Hvis ikke, bør du bruke aria-controls på ToggleGroup for å henvise til containeren til innholdet som endrer seg.

Tilgjengelighet

Tastaturinteraksjon

Komponenten implementerer roving tabindex for fokus og tastaturnavigering mellom knappene.

Props

ToggleGroup

children

  • Type:
    ReactNode
  • Description:

    Toggles.Item elements.

size?

  • Type:
    "medium" | "small"
  • Default:
    ""medium""
  • Description:

    Changes padding and font-size.

value?

  • Type:
    string
  • Description:

    Controlled selected value.

defaultValue?

  • Type:
    string
  • Description:

    If not controlled, a default-value needs to be set.

onChange

  • Type:
    (value: string) => void
  • Description:

    Callback for selected toggle.

label?

  • Type:
    ReactNode
  • Description:

    Label describing ToggleGroup.

variant?

  • Type:
    "action" | "neutral"
  • Default:
    ""action""
  • Description:

    Changes design and interaction-visuals.

fill?

  • Type:
    boolean
  • Default:
    false
  • Description:

    Stretch each button to fill avaliable space in container.

className?

  • Type:
    string

data-color?

  • Type:
    (string & {}) | AkselColor

ref?

  • Type:
    LegacyRef<HTMLDivElement>
  • Description:

    Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). React Docs

ToggleGroup.Item

className?

  • Type:
    string

data-color?

  • Type:
    (string & {}) | AkselColor

value

  • Type:
    string
  • Description:

    Value for state-handling.

label?

  • Type:
    ReactNode
  • Description:

    Item label.

icon?

  • Type:
    ReactNode
  • Description:

    Item Icon.

ref?

  • Type:
    LegacyRef<HTMLButtonElement>
  • Description:

    Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). React Docs

children?

  • Deprecated:
    Use `label` and/or `icon` as replacement.
  • Type:
    ReactNode

Tokens

Deprecation warning: I det nye systemet for theming og darkmode, er komponent-tokens fjernet. Mer dokumentasjon for dette kommer, midlertidig dokumentasjon finner du her.

TokenFallback
--ac-toggle-group-bg--a-surface-transparent
--ac-toggle-group-border--a-border-default
--ac-toggle-group-button-bg--a-surface-transparent
--ac-toggle-group-button-text--a-text-default
--ac-toggle-group-button-hover-bg--a-surface-action-subtle
--ac-toggle-group-button-hover-text--a-text-default
--ac-toggle-group-selected-bg--a-surface-action-selected
--ac-toggle-group-selected-text--a-text-on-action
--ac-toggle-group-button-neutral-bg--a-surface-transparent
--ac-toggle-group-button-neutral-text--a-text-default
--ac-toggle-group-button-neutral-hover-bg--a-surface-neutral-subtle-hover
--ac-toggle-group-button-neutral-hover-text--a-text-default
--ac-toggle-group-neutral-selected-bg--a-surface-neutral-selected
--ac-toggle-group-neutral-selected-text--a-text-on-neutral