Komponenter
Details
Details er en sammenleggbar komponent som lar brukeren vise eller skjule innhold.
React
const Preview = () => { return ( <Details> <Details.Summary> Hvem kan registrere seg i Frivillighetsregisteret? </Details.Summary> <Details.Content> For å kunne bli registrert i Frivillighetsregisteret, må organisasjonen drive frivillig virksomhet. Det er bare foreninger, stiftelser og aksjeselskap som kan registreres. Virksomheten kan ikke dele ut midler til fysiske personer. Virksomheten må ha et styre. </Details.Content> </Details> ); }; render(<Preview />)
- variant
- Description
Change the background color of the details.
- Type
"default" | "tinted"- Default
default
- open
- Description
Controls open-state. Using this removes automatic control of open-state
- Type
boolean- Default
undefined
- defaultOpen
- Description
Defaults the details to open if not controlled
- Type
boolean- Default
false
- onToggle
- Description
Callback function when Details toggles due to click on summary or find in page-search
- Type
(((event: Event) => void) & ((event: Event) => void)) | (((event: Event) => void) & ((event: Event) => void))
- children
- Description
Content should be one `<Details.Summary>` and `<Details.Content>`
- Type
any
| Name | Type | Default | Description |
|---|---|---|---|
| variant | "default" | "tinted" | default | Change the background color of the details. |
| open | boolean | undefined | Controls open-state. Using this removes automatic control of open-state |
| defaultOpen | boolean | false | Defaults the details to open if not controlled |
| onToggle | (((event: Event) => void) & ((event: Event) => void)) | (((event: Event) => void) & ((event: Event) => void)) | - | Callback function when Details toggles due to click on summary or find in page-search |
| children | any | - | Content should be one `<Details.Summary>` and `<Details.Content>` |
DetailsSummary
- children
- Description
Heading text
- Type
any
| Name | Type | Default | Description |
|---|---|---|---|
| children | any | - | Heading text |
Bruk
Eksempler
Ramme og variant
Dersom du legg Details som einaste barn av Card får du ramme rundt heile Details.
Du kan også bruke variant="tinted" på enten Details eller Card for å få ein lysare bakgrunn.
React
const InCardWithColor = () => { return ( <> <Card data-color='brand3' data-variant='tinted'> <Details> <Details.Summary> Hvordan får jeg tildelt et jegernummer? </Details.Summary> <Details.Content> Du vil automatisk få tildelt jegernummer og bli registrert i Jegerregisteret når du har bestått jegerprøven. </Details.Content> </Details> <Details> <Details.Summary> Jeg har glemt jegernummeret mitt. Hvor finner jeg dette? </Details.Summary> <Details.Content> <Paragraph> Du kan finne dette ved å logge inn på{' '} <Link href='https://minjegerside.brreg.no/'>Min side</Link> </Paragraph> </Details.Content> </Details> </Card> <br /> <Card data-color='brand1'> <Details> <Details.Summary>Vedlegg</Details.Summary> <Details.Content>Vedlegg 1, vedlegg 2, vedlegg 3</Details.Content> </Details> </Card> </> ); }; render(<InCardWithColor />)
Kontrollert
Details held sjølv styr på om den er open eller lukka, men dette kan òg kontrollerast utanfrå.
React
const Controlled = () => { const [open1, setOpen1] = useState(false); const [open2, setOpen2] = useState(false); const isOpen = [open1, open2].every(Boolean); const toggleOpen = () => { setOpen1(!isOpen); setOpen2(!isOpen); }; return ( <> <Button variant='tertiary' onClick={toggleOpen} data-size='sm'> {isOpen ? ( <> <ChevronDownUpIcon aria-hidden /> Close both </> ) : ( <> <ChevronUpDownIcon aria-hidden /> Open both </> )} </Button> <br /> <Details open={open1} onToggle={() => setOpen1(!open1)}> <Details.Summary>Enkeltpersonforetak</Details.Summary> <Details.Content> Skal du starte for deg selv? Enkeltpersonforetak er ofte den enkleste måten å etablere bedrift på. Denne organisasjonsformen har både fordeler og ulemper. Det gir deg stor grad av frihet, men kan også gi betydelig risiko fordi du har personlig ansvar for økonomien. </Details.Content> </Details> <Details open={open2} onToggle={() => setOpen2(!open2)}> <Details.Summary>Aksjeselskap (AS)</Details.Summary> <Details.Content> Planlegger du å starte næringsvirksomhet alene eller sammen med andre? Innebærer næringsvirksomheten en økonomisk risiko? Vil du ha rettigheter som arbeidstaker og muligheten til at andre kan investere i selskapet ditt? Da kan aksjeselskap være en hensiktsmessig organisasjonsform. </Details.Content> </Details> </> ); }; render(<Controlled />)
HTML
Details er bygd på web-komponenten u-details (github.io), som du kan bruke.
Den er bygd funksjonelt lik som native-elementet <details>, men med betre tilgjengelegheit.
Du bruker klassenavnet .ds-details på hovudelementet.
Du kan velge å ikkje ha ein nøsta <div> rundt hovudinnhaldet, men har du denne får den margin.
Dersom du vil bruke tinta variant, legg til attributtet data-variant="tinted" på hovudelementet eller .ds-card.
CSS variabler og data-attributter
| Navn | Verdi |
|---|---|
| --dsc-details-border-block-wdith | var( --ds-border-width-default ) |
| --dsc-details-border-block-width | var(--dsc-details-border-block-wdith) |
| --dsc-details-border-block-style | solid |
| --dsc-details-border-color | var(--ds-color-border-subtle) |
| --dsc-details-icon-gap | var(--ds-size-2) |
| --dsc-details-icon-size | var(--ds-size-6) |
| --dsc-details-icon-url | url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.97 9.47a.75.75 0 0 1 1.06 0L12 14.44l4.97-4.97a.75.75 0 1 1 1.06 1.06l-5.5 5.5a.75.75 0 0 1-1.06 0l-5.5-5.5a.75.75 0 0 1 0-1.06'/%3E%3C/svg%3E") |
| --dsc-details-padding | var(--ds-size-2) var(--ds-size-4) |
| --dsc-details-size | var(--ds-size-14) |
| --dsc-details-background | var(--ds-color-surface-default) |
| --dsc-details-summary-color | var(--ds-color-text-default) |
| --dsc-details-summary-background--hover | var(--ds-color-surface-tinted) |
| --dsc-details-summary-background--open | var(--ds-color-surface-tinted) |
| --dsc-details-summary-background | var(--ds-color-surface-default) |
| Navn | Verdi |
|---|---|
| data-variant | default, tinted |