Hopp til hovedinnhold

Komponenter

Popover

Popover vises over andre elementer i grensesnittet og er koblet til et spesifikt element. Den brukes til å vise tilleggsinformasjon, interaktive elementer eller korte forklaringer uten å navigere bort fra siden.

id
Description

id to connect the trigger with the popover - required when not using Popover.Context.

Type
string
placement
Description

Placement of the popover on the trigger.

Type
Placement
Default
top
open
Description

When a boolean is provided, the popover will be controlled.

Type
boolean
Default
undefined
variant
Description

Change the background color of the popover.

Type
"default" | "tinted"
Default
default
onOpen
Description

Callback when the popover wants to open.

Type
(() => void)
onClose
Description

Callback when the popover wants to close.

Type
(() => void)
autoPlacement
Description

Whether to enable auto placement.

Type
boolean
Default
true
asChild
Description

Change the default rendered element for the one passed as a child, merging their props and behavior.

Type
boolean
Default
false
NameTypeDefaultDescription
idstring-

id to connect the trigger with the popover - required when not using Popover.Context.

placementPlacementtop

Placement of the popover on the trigger.

openbooleanundefined

When a boolean is provided, the popover will be controlled.

variant"default" | "tinted"default

Change the background color of the popover.

onOpen(() => void)-

Callback when the popover wants to open.

onClose(() => void)-

Callback when the popover wants to close.

autoPlacementbooleantrue

Whether to enable auto placement.

asChildbooleanfalse

Change the default rendered element for the one passed as a child, merging their props and behavior.

PopoverTrigger

inline
Description

Will render the trigger as inline text.

Type
boolean
Default
false false
asChild
Description

Change the default rendered element for the one passed as a child, merging their props and behavior.

Type
boolean
Default
false false
variant
Description

Specify which variant to use

Type
"primary" | "secondary" | "tertiary"
Default
'primary'
icon
Description

Toggle icon only styling, pass icon as children When combined with loading, the loading-icon will be shown instead of the icon.

Type
boolean
Default
false
loading
Description

Toggle loading state. Pass an element if you want to display a custom loader.

Type
ReactNode
Default
false
type
Description

Specify the type of button. Unset when `asChild` is true

Type
"button" | "submit" | "reset"
Default
'button'
NameTypeDefaultDescription
inlinebooleanfalse false

Will render the trigger as inline text.

asChildbooleanfalse false

Change the default rendered element for the one passed as a child, merging their props and behavior.

variant"primary" | "secondary" | "tertiary"'primary'

Specify which variant to use

iconbooleanfalse

Toggle icon only styling, pass icon as children When combined with loading, the loading-icon will be shown instead of the icon.

loadingReactNodefalse

Toggle loading state. Pass an element if you want to display a custom loader.

type"button" | "submit" | "reset"'button'

Specify the type of button. Unset when `asChild` is true

Bruk

React og popovertarget

Når du bruker Popover uten Popover.TriggerContext, kobler du selv sammen utløseren og Popover. Da brukes popovertarget i små bokstaver, slik at alle versjoner av React korrekt gjengir attributtet. Når du bruker @digdir/designsystemet-react utvider vi @types/react-dom til å akseptere dette.

Polyfill

Popover bruker popover (mozilla.org). Dette apiet er klassifisert som Baseline: Newly available (mozilla.org) fra april 2024, da Firefox som siste nettleser la det til. I noen tilfeller kan en oppleve at brukere av ulike grunner er låst til eldre nettleserversjoner, og da kan det være aktuelt å legge til en Popover-Polyfill (github.com) for å sikre at Popover fungerer for alle.

Eksempler

Standard

Inline trigger

Du kan bruke Popover inline i tekst med stiplet understrek:

Kontrollert

Du kan kontrollere når popover er åpen eller lukket:

Uten TriggerContext

Du kan også bruke Popover uten TriggerContext ved å bruke popovertarget:

HTML

Du kan bruke popover i ren HTML ved å bruke popover-attributtet på et element og koble det til en trigger med popovertarget. Klassenvnet ds-popover blir brukt på elementet som er popoveren.

I React bruker vi floating-ui (floating-ui.com) for plassering, og dette er et bibliotek som også kan brukes i rene JavaScript-applikasjoner.

Vi anbefaler å lese om popover (mozilla.org).

data-placement er brukt for å plassere pila riktig. Dette attributtet henger sammen med en "plugin" vi har laget for floating-ui. Den er portabel til andre som bruker floating-ui, og du finner koden på github.com.

Inline popover

Dersom du vil ha triggeren inline i tekst må du fortsatt bruke <button>, men du kan legge på data-popover="inline" for å få riktig styling.

CSS variabler og data-attributter

CSS-variabler
NavnVerdi
--dsc-popover-backgroundvar(--ds-color-surface-default)
--dsc-popover-border-widthvar(--ds-border-width-default)
--dsc-popover-border-stylesolid
--dsc-popover-border-colorvar(--ds-color-border-default)
--dsc-popover-colorvar(--ds-color-text-default)
--dsc-popover-arrow-sizevar(--ds-size-3)
--dsc-popover-border-radiusvar(--ds-border-radius-md)
--dsc-popover-max-width300px
--dsc-popover-paddingvar(--ds-size-3) var(--ds-size-4)
--dsc-popover-box-shadowvar(--ds-shadow-md)
Data-attributter
NavnVerdi
data-placementtop, left, right, bottom
data-variantdefault, tinted
data-popoverinline
Rediger denne siden på github.com (åpnes i ny fane)