|
| 1 | +import { Meta, Canvas, Controls, Primary, ArgTypes } from '@storybook/blocks'; |
| 2 | + |
| 3 | +import * as DropdownStories from './Dropdown.stories'; |
| 4 | + |
| 5 | +import { Dropdown } from './'; |
| 6 | + |
| 7 | +<Meta of={DropdownStories} /> |
| 8 | + |
| 9 | +# Dropdown |
| 10 | + |
| 11 | +<Primary /> |
| 12 | +<Controls /> |
| 13 | + |
| 14 | +## Slik bruker du `Dropdown` |
| 15 | + |
| 16 | +```tsx |
| 17 | +import { Dropdown } from '@digdir/designsystemet-react'; |
| 18 | + |
| 19 | +// med context |
| 20 | +<Dropdown.Context> |
| 21 | + <Dropdown.Trigger>Trigger</Dropdown.Trigger> |
| 22 | + <Dropdown> |
| 23 | + <Dropdown.Heading>Heading</Dropdown.Heading> |
| 24 | + <Dropdown.List> |
| 25 | + <Dropdown.Item>Item</Dropdown.Item> |
| 26 | + </Dropdown.List> |
| 27 | + </Dropdown> |
| 28 | +</Dropdown.Context> |
| 29 | + |
| 30 | +// uten context |
| 31 | +<Button popovertarget="my-dropdown">Trigger</Button> |
| 32 | +<Dropdown id="my-dropdown"> |
| 33 | + <Dropdown.Heading>Heading</Dropdown.Heading> |
| 34 | + <Dropdown.List> |
| 35 | + <Dropdown.Item>Item</Dropdown.Item> |
| 36 | + </Dropdown.List> |
| 37 | +</Dropdown> |
| 38 | +``` |
| 39 | + |
| 40 | +## Eksempler på bruk |
| 41 | + |
| 42 | +### Kontrollert |
| 43 | + |
| 44 | +Dersom du sender inn `open`, så bruker du `Dropdown` kontrollert. Du kan bruke `onClose` for å få beskjed når `Dropdown` vil lukkes. |
| 45 | + |
| 46 | +<Canvas of={DropdownStories.Controlled} /> |
| 47 | + |
| 48 | +### Ikoner |
| 49 | + |
| 50 | +Du kan legge ikon rett inn i `Dropdown.Item`, dersom det blir mye mellomrom til kanten kan du legge på din egen klasse og endre på `padding`. |
| 51 | + |
| 52 | +<Canvas of={DropdownStories.Icons} /> |
| 53 | + |
| 54 | +### Uten Trigger |
| 55 | + |
| 56 | +`Dropdown` bruker popover APIet, så du kan bruke `Dropdown` uten `Dropdown.Trigger`. |
| 57 | +Du må da legge til `popovertarget={id}` på `Dropdown`, og `id` på `Dropdown`. |
| 58 | + |
| 59 | +<Canvas of={DropdownStories.WithoutTrigger} /> |
| 60 | + |
| 61 | +## Tilgjengelighet |
| 62 | + |
| 63 | +Det er innebygd tilgjengelighet i `Dropdown.Trigger` med `aria-expanded={true/false}` i henhold til åpne/lukket tilstand, og `aria-haspopup='menu'`. |
| 64 | + |
| 65 | +### `Dropdown.List` |
| 66 | + |
| 67 | +<ArgTypes of={Dropdown.List} /> |
| 68 | + |
| 69 | +### `Dropdown.Trigger` |
| 70 | + |
| 71 | +Triggeren er en [Button](/docs/komponenter-button--docs) som standard. |
| 72 | + |
| 73 | +Bruk `Dropdown.Trigger` til å aktivere `Dropdown`. Du kan bruke `asChild` for å endre `Dropdown.Trigger` elementet. |
| 74 | +Dersom du skal legge på funksjoner som `onClick`, legg det på ditt element, og legg `asChild` på `Dropdown.Trigger`. |
| 75 | + |
| 76 | +### Referanser |
| 77 | + |
| 78 | +Vi bruker `ul` og `li` tags i dropdownen, valget er basert på denne: |
| 79 | + |
| 80 | +- https://www.w3.org/WAI/tutorials/menus/flyout/#flyoutnavkbbtn |
| 81 | +- https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/../Dropdown.stories. |
0 commit comments