Esikatselu
function ExampleDropdown(props) {
const [isOpen, setIsOpen] = useState(false);
return (
<Dropdown isOpen={isOpen} onClick={() => setIsOpen(!isOpen)}>
<DropdownToggle variant="primary">Lorem ipsum</DropdownToggle>
<DropdownMenu>
<DropdownMenuGroup>
<DropdownMenuItem href="#">Dolor</DropdownMenuItem>
<DropdownMenuItem href="#">Sit amet</DropdownMenuItem>
<DropdownMenuItem href="#">Consectetur</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenu>
</Dropdown>
);
}
Käyttötarkoitus
Voit näyttää toiminnot pudotusvalikossa, jos kaikkien toimintojen esittäminen painikkeina veisi liikaa tilaa
tai kiinnittäisi tarpeettoman paljon asiakkaan huomiota.
- Älä käytä pudotusvalikkoa, kun valittavia kohteita tulee pystyä valitsemaan useita.
- Älä käytä pudotusvalikkoa, kun asiakkaan tulee nähdä selkeästi kaikki valittavissa olevat vaihtoehdot. Esitä silloin toiminnot esim. painikkeina.
Saavutettavuus
Komponentti lisää painikkeelle automaattisesti aria-haspopup
ja aria-expanded
-attribuutit ruudunlukijoita varten.
Komponentti muodostaa vaihtoehdoista <ul></ul>
-listan.
Jos käytät DropdownMenuItem
-komponentin active
-tilaa korostamaan aktiivista/valittua toimintoa, muista lisätä aria-current
-attribuutti ruudunlukijoille.
Komponentti tukee näppäimistönavigaatiota alla olevilla näppäimillä. Huom. ruudunlukijan käyttö saattaa vaikuttaa näppäimiin.
Kohdistus pysyy auki olevassa valikossa näppäimistöllä selatessa. Tarvittaessa a11yHideSelectors
-propin kautta voi antaa listan elementtien selektoreita, jotka piilotetaan ruudunlukijalta.
|
Enter | Avaa / sulje valikko. Valitsee toiminnon, kun kohdistus on valikon toiminnossa. |
Välilyönti | Avaa / sulje valikko. |
Esc | Sulje valikko. |
Tab | Siirry seuraavaan toimintoon. Valikko suljetaan ja kohdistus palaa avauspainikkeeseen, kun kohdistus poistuu valikosta. |
Shift + Tab | Siirry edelliseen toimintoon. Kohdistus palaa avauspainikkeeseen ja siitä poistuessa valikko suljetaan. |
↓ | Siirry seuraavaan toimintoon. Ensimmäinen painallus avaa valikon. |
↑ | Siirry edelliseen toimintoon. |
Esimerkit
Valikko
function ExampleDropdown(props) {
const [isOpen, setIsOpen] = useState(false);
return (
<Dropdown isOpen={isOpen} onClick={() => setIsOpen(!isOpen)}>
<DropdownToggle variant="primary">Toiminnot</DropdownToggle>
<DropdownMenu>
<DropdownMenuGroupHeading>Valitse toiminto</DropdownMenuGroupHeading>
<DropdownMenuGroup>
<DropdownMenuItem href="#" iconBefore={<IconPlus />}>
Uusi sopimus
</DropdownMenuItem>
<DropdownMenuItem href="#" iconBefore={<IconPerson />}>
Uusi terapeutti
</DropdownMenuItem>
<DropdownMenuItem href="#" iconBefore={<IconEdit />}>
Muokkaa tietoja
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenu>
</Dropdown>
);
}
Valikon painikkeiden ja linkkien eri tilat
function ExampleDropdown(props) {
const [isOpen, setIsOpen] = useState(false);
return (
<Dropdown isOpen={isOpen} onClick={() => setIsOpen(!isOpen)}>
<DropdownToggle variant="primary">Toiminnot</DropdownToggle>
<DropdownMenu>
<DropdownMenuGroupHeading>Linkit</DropdownMenuGroupHeading>
<DropdownMenuGroup>
<DropdownMenuItem href="#">Linkki</DropdownMenuItem>
<DropdownMenuItem active href="#">
Linkki, aktiivinen
</DropdownMenuItem>
<DropdownMenuItem disabled href="#">
Linkki, estetty
</DropdownMenuItem>
<DropdownMenuItem active disabled href="#">
Linkki, aktiivinen ja estetty
</DropdownMenuItem>
</DropdownMenuGroup>
<DropdownMenuItem divider />
<DropdownMenuGroupHeading>Painikkeet</DropdownMenuGroupHeading>
<DropdownMenuGroup>
<DropdownMenuItem as="button">Painike</DropdownMenuItem>
<DropdownMenuItem as="button" active>
Painike, aktiivinen
</DropdownMenuItem>
<DropdownMenuItem as="button" disabled>
Painike, estetty
</DropdownMenuItem>
<DropdownMenuItem as="button" active disabled>
Painike, aktiivinen ja estetty
</DropdownMenuItem>
</DropdownMenuGroup>
</DropdownMenu>
</Dropdown>
);
}