" target="_blank" rel="noreferrer noopener" class="ml-9 navds-button navds-button--secondary-neutral navds-button--medium">
Popover kan kobles til de fleste typer elementer med bruk av ref
.
import { useRef, useState } from "react";
import { Button, Popover } from "@navikt/ds-react";
const Example = () => {
const buttonRef = useRef<HTMLButtonElement>(null);
const [openState, setOpenState] = useState(false);
return (
<>
<Button
ref={buttonRef}
onClick={() => setOpenState(!openState)}
aria-expanded={openState}
>
Åpne popover
</Button>
<Popover
open={openState}
onClose={() => setOpenState(false)}
anchorEl={buttonRef.current}
>
<Popover.Content>Innhold her!</Popover.Content>
</Popover>
</>
);
};
Offset er avstanden mellom elementet og popoveren, og kan overstyres.
Her kan du teste ulike 'placement'-verdier. Popover styrer selv plassering hvis det ikke er plass i valgt retning.
Popover.Content
legger bare på litt padding, så den kan utelates.
Komponenten brukes i
Popover kan ikke åpnes på :hover
i dag. For å støtte dette vil interaksjonen og oppførselen til komponenten være så ulik dagens Popover
, at dette i praksis vil være en ny komponent.
Det er også en teknisk begrensning med at dagens løsning ikke kan brukes sammen med “inline” innhold som f.eks. lenker i løpende tekst. Vi ønsker heller å utvikle en egen komponent som løser hover
bra for dette, så hvis det er noe du eller teamet ditt trenger ønsker vi gjerne tilbakemelding på det!
Elementet som åpner popoveren bør bruke aria-expanded=true/false
for å indikere om den er åpen eller ikke.
Popoveren bør helst ligge rett etter elementet som åpner den i DOM-en.
Popover benytter seg av Floating UI.
ReactNode
Popover content
Element | null
Element popover anchors to
boolean
Open state
() => void
onClose callback
"top" | "bottom" | "right" | "left" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end"
Default orientation of popover
Try to keep general usage to "top", "bottom", "left", "right".
boolean
Adds a arrow from dialog to anchor when true
number
Distance from anchor to popover
"absolute" | "fixed"
Changes what CSS position property to use You want to use "fixed" if reference element is inside a fixed container, but popover is not
boolean
Changes placement of the floating element in order to keep it in view.
string
LegacyRef<HTMLDivElement>
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
string
LegacyRef<HTMLDivElement>
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
Token | Fallback |
---|---|
--ac-popover-bg | --a-surface-default |
--ac-popover-border | --a-border-default |