Disclosure
Om komponenten
En Disclosure kan ekspandere og kollapse relatert innhold. Den består i hovedsak av en knapp og et panel. Knappen styrer om innholdet i panelet vises eller skjules.
Den fungerer på lik måte som <details> og <summary> i HTML, men de elementene kan ofte være litt vanskelig å tilpasse utseendet på.
Egnet til:
- Når det er behov for å vise tilleggsvalg på en strukturert måte, som for eksempel i et filter.
- Disclosure brukes ofte til "Les mer" i komponenter
Den skiller seg fra Accordion ved at:
- Disclosure er som regel frittstående, og må ikke være en del av en gruppe.
- Teksten på knappen er ikke implisitt en heading.
- Innholdet i panelet er ikke nødvendigvis en egen section/group. Det er som regel en kortere tekst, eller noe interaktivt.

Varianter
Et vanlig bruksområde for Disclosure er "Les mer"
<Disclosure defaultExpanded> <DisclosureButton className="description" withChevron> Les mer </DisclosureButton> <DisclosurePanel> <p> For å komme raskere i gang med å ta i bruk Obos-banken så kan du nå på forhånd velge hvilke type kontoer du ønsker å starte med.. </p> </DisclosurePanel> </Disclosure>
Bruk med "fieldsets"
For å være tilgjengelig har DisclosurePanel automatisk satt en aria rolle. Dersom Disclosure skal benyttes sammen med for eksempel CheckboxGroup, RadioGroup eller andre fieldsets, er det viktig å overstyre denne rollen og knytte fieldsettet til DisclosureButton ved hjelp av aria-labelledby.
<Disclosure> <DisclosureButton id="my-id" withChevron> Kjøpsalternativer </DisclosureButton> <DisclosurePanel role="none"> <CheckboxGroup aria-labelledby="my-id"> <Checkbox value="deleie">Deleie</Checkbox> <Checkbox value="bostart">Bostart</Checkbox> <Checkbox value="boligbytte">Boligbytte</Checkbox> </CheckboxGroup> </DisclosurePanel> </Disclosure>
DisclosureGroup
En DisclosureGroup kan benyttes til å gruppere sammen relaterte disclosures. Den støtter at det kun kan være en utvidet Disclosure av gangen, eller opp til flere.
Grunnmuren re-eksporterer React Aria sin DisclosureGroup, så se mer utfyllende dokumentasjon og eksempler på bruk av komponenten der.
<DisclosureGroup onExpandedChange={(event) => { console.log(event.values()); }} > <Disclosure> <DisclosureButton withChevron>Personlig informasjon</DisclosureButton> <DisclosurePanel>Personlig informasjon her</DisclosurePanel> </Disclosure> <Disclosure> <DisclosureButton withChevron>Adresse</DisclosureButton> <DisclosurePanel>Adresse her</DisclosurePanel> </Disclosure> </DisclosureGroup>
Frittstående DisclosureButton
Du kan også bruke knappen `<DisclosureButton>` frittstående, se f.eks. Ekspanderbar tabell
Props
Disclosure
| Prop | Description | Default |
|---|---|---|
id? | - | |
isDisabled? | - | |
isExpanded? | - | |
defaultExpanded? | - | |
children? | - | |
| Events | ||
onExpandedChange? | - | |
| Styles | ||
className? | 'react-aria-Form' | |
style? | - | |
DisclosureButton
| Prop | Description | Default |
|---|---|---|
form? | - | |
autoFocus? | - | |
isPending? | - | |
isDisabled? | - | |
type? | 'button' | |
preventFocusOnPress? | - | |
formAction? | - | |
formEncType? | - | |
formMethod? | - | |
formNoValidate? | - | |
formTarget? | - | |
name? | - | |
value? | - | |
excludeFromTabOrder? | - | |
isIconOnly? | When the button is without text, but with a single icon. | false |
withChevron? | - | |
| Events | ||
onFocus? | Handler that is called when the element receives focus. | - |
onBlur? | Handler that is called when the element loses focus. | - |
onKeyDown? | Handler that is called when a key is pressed. | - |
onKeyUp? | Handler that is called when a key is released. | - |
onClick? | Not recommended – use onPress instead. onClick is an alias for onPress
provided for compatibility with other libraries. onPress provides
additional event details for non-mouse interactions. | - |
onPress? | Handler that is called when the press is released over the target. | - |
onPressStart? | Handler that is called when a press interaction starts. | - |
onPressEnd? | Handler that is called when a press interaction ends, either over the target or when the pointer leaves the target. | - |
onPressChange? | Handler that is called when the press state changes. | - |
onPressUp? | Handler that is called when a press is released over the target, regardless of whether it started on the target or not. | - |
onFocusChange? | Handler that is called when the element's focus status changes. | - |
onHoverStart? | Handler that is called when a hover interaction starts. | - |
onHoverEnd? | Handler that is called when a hover interaction ends. | - |
onHoverChange? | Handler that is called when the hover state changes. | - |
| Styles | ||
className? | 'react-aria-Form' | |
style? | - | |
| Accessibility | ||
id? | - | |
aria-controls? | - | |
aria-current? | - | |
aria-describedby? | - | |
aria-details? | - | |
aria-disabled? | - | |
aria-expanded? | - | |
aria-haspopup? | - | |
aria-label? | - | |
aria-labelledby? | - | |
aria-pressed? | - | |
DisclosurePanel
| Prop | Description | Default |
|---|---|---|
id? | - | |
| Accessibility | ||
role? | - | |
DisclosureGroup
| Prop | Description | Default |
|---|---|---|
allowsMultipleExpanded? | Whether multiple items can be expanded at the same time. | - |
isDisabled? | Whether all items are disabled. | - |
expandedKeys? | The currently expanded keys in the group (controlled). | - |
defaultExpandedKeys? | The initial expanded keys in the group (uncontrolled). | - |
children? | - | |
| Events | ||
onExpandedChange? | Handler that is called when items are expanded or collapsed. | - |
| Styles | ||
className? | 'react-aria-DisclosureGroup' | |
style? | - | |
| Accessibility | ||
id? | - | |