Siirry sisältöön
Luonnos

MultiselectV2

Komponentti yhden tai useamman valinnan tekemiseen pudotusvalikossa esitetyistä vaihtoehdoista.

Julkaistu versiossa 17.1.0

Komponentti on edelleen kehityksessä, joten sen API ja ominaisuudet saattavat vielä muuttua.

Esikatselu

Käyttötarkoitus

Multiselect-valintalistan avulla asiakas voi valita yhden tai useamman vaihtoehdon samaan ryhmään kuuluvien vaihtoehtojen joukosta.

Valintalistaa voi käyttää tilanteessa, jossa valittavia vaihtoehtoja on niin paljon, että niiden näyttäminen esimerkiksi valintanappeina veisi liikaa tilaa tai toisi käyttöliittymälle liian paljon kognitiivista kuormaa. Valintalistaa käytettäessä huomio kiinnittyy enemmän tehtyihin valintoihin kuin eri vaihtoehtoihin. Huomioi, että asiakas joutuu aina avaamaan listan ennen vaihtoehtojen vertailua.

Tee näin
  • Luettele vaihtoehdot loogisessa järjestyksessä, esimerkiksi valinnan yleisyyden mukaan tai aakkosjärjestyksessä.
  • Nimeä vaihtoehdot selkeästi ja ymmärrettävästi, mutta mahdollisimman napakasti.
  • Jos haluat käyttää oletusvalintaa, valitse asiakkaan kannalta todennäköisin tai sopivin vaihtoehto. Huolehdi, että oletusvalinnan käyttö on myös asiakkaan kannalta turvallista.
  • Jos oletusvalintaa ei ole, näytä Valitse-teksti.
  • Ohjeista tarvittaessa asiakasta komponentin käyttöön.
Älä tee näin
  • Älä käytä Multiselect-valintalistaa, jos valittavia vaihtoehtoja ei ole kovin montaa. Tällöin asiakkaan on nopeampaa valita oikea vaihtoehto suoraan esimerkiksi valintaruuduilla (Checkbox).

Saavutettavuus

Komponentti lisää saavutettavuuden kannalta tarvittavat attribuutit HTML-elementeille.

Komponentti siirtää kohdistusta painikkeen ja valintalistan välillä. Listan kohteiden virtuaalinen kohdistus tapahtuu aria-activedescendant-attribuutin avulla.

Komponentin saa myös käyttämään normaalia kohdistusta a11yOptions.isVirtual-propin avulla.

NäppäinToiminto
EnterAvaa valikon jos kohdistus on valintakomponentissa.
Jos valikko on auki, valitsee tai poistaa korostetun valinnan.
VälilyöntiAvaa valikon jos kohdistus on valintakomponentissa.
Jos valikko on auki, valitsee tai poistaa korostetun valinnan.
EscSulkee avoinna olevan valikon.
TabJos valikko on auki, eikä hakukenttä ole käytössä, sulkee valikon ja siirtää kohdistuksen pois komponentista. Jos hakukenttä on käytössä, siirtää kohdistusta hakukentän ja valintalistan välillä.
Jos valikko on auki ja valintalista on aktiivinen, korostaa seuraavan valinnan. Jos valikko on piilossa, avaa valikon ja korostaa ensimmäisen vaihtoehdon.
Jos valikko on auki, korostaa edellisen valinnan. Jos valikko on piilossa, avaa valikon ja korostaa viimeisen vaihtoehdon.
BackspacePoistaa viimeisimmän valinnan valikkoelementin ollessa kohdistettuna ja valikon ollessa suljettu.
HomeJos valikko on auki, siirtää kohdistuksen ensimmäiseen valintaan.
EndJos valikko on auki, siirtää kohdistuksen viimeiseen valintaan.

Ruudunlukijalle tarkoitettuja ilmoituksia voi muokata localization-propin kautta annettavalla objektilla.

Esimerkit

Pakollinen kenttä ja virhetilanne

Kentässä voidaan tarvittaessa näyttää virhetilanne pakollisen arvon puuttuessa.

Oletusvalinta

Käytä oletusvalintaa, jos sille on turvallinen ja selvästi todennäköisin vaihtoehto. Oletusvalinnan on hyvä olla listassa ensimmäisenä, mikäli se on mahdollista. Komponentti sallii myös useamman oletusvalinnan asettamisen. Mikäli oletusvalintaa ei ole annettu, näytetään painikkeessa placeholder-teksti “(Valitse)”.

Kokovaihtoehdot

Pienin koko (xs) on tarkoitettu tiivistä asettelua vaativiin asiantuntijakäyttöliittymiin.

Sallittujen valintojen lukumäärän rajoittaminen

Sallittujen valintojen lukumäärää voidaan tarvittaessa rajoittaa hyödyntämällä maxSelectedItems-proppia.

Yksittäisten valintojen estäminen

Yksittäisten valintavaihtoehtojen valitsemisen voi estää asettamalla niille disabled-tilan.

Estettyihin valintoihin voi oletuksena kohdistaa. Tämän voi estää shouldFocusDisabledOptions-propilla.

Suodatin

Komponentin isFilter-prop tuottaa valintapainikkeen, jonka tekstinä näytetään komponentin nimilappu (labelText), sekä valintojen määrä.

Hakutoiminto

Komponentissa voidaan tarvittaessa näyttää hakukenttä valintavaihtoehtojen suodattamiseksi. Hakukentän saa näkyville boolean-muotoisen showSearch-propin avulla ja se näytetään avoimen valintalistan yllä.

Kohdistuksen voi siirtää valikon auetessa välittömästi hakukenttään shouldFocusSearch-propilla.

Hakutoiminnon suodatukseen ja järjestykseen voi tarvittaessa vaikuttaa filterItems-propin kautta annettavalla funktiolla.

Estetty kenttä

Kaksipalstainen asettelu

Kaksipalstaisessa asettelussa tulostetaan leftCol-propilla kentän nimilappu ja aputeksti Column-komponentin sisään. Oikeanpuoleinen palsta täyttää aina vaakasuunnassa nimilapulta jäävän tyhjän tilan.

Pelkän valintaelementin leveyttä voi tarvittaessa lisäksi muuttaa antamalla inputWidth-propin avulla Column-komponentin halutulla leveydellä.

Valintojen päivittäminen komponentin ulkopuolelta

Hyödyntämällä value- ja onChange-proppeja voidaan valintoja kontrolloida komponentin ulkopuolelta.

Alla oleva esimerkki toteuttaa listan, joka näyttää Chip-komponentilla valinnat ja mahdollistaa niiden poistamisen valintalistan ulkopuolelta.

Valikon renderöinti Portalin avulla

Valikko voidaan renderöidä HTML-rakenteessa sivun loppuun usePortal-proppia käyttäen. Tämä on tarpeellista silloin, kun ympäröivä elementti ei salli sisällön näyttämistä sen ulkopuolella.

Valitse kaikki -toiminto

Valitse kaikki -toiminnon saa käyttöön antamalla komponentille showSelectAll-propin. Oletustekstejä voi muokata localization-propin kautta.

Valitse kaikki -toiminnon voi yhdistää hakutoimintoon, jolloin valitaan ja poistetaan vain näkyvät vaihtoehdot.

Estettyjen valintojen tilaa ei muuteta, kun valitaan valitse kaikki.

Valintojen ryhmittely

Ruudunlukijat lukevat ryhmät ja niihin kuuluvien valintojen määrän hieman eri tavalla ruudunlukijasta riippuen.

Valinnat voi ryhmitellä groupBy-funktion avulla. Alla olevassa esimerkissä valinnat asetetaan ensimmäisen kirjaimen perusteella ryhmiin.

Ryhmän otsikkoa voi muokata renderOptionGroupHeader-propin avulla.

Huomioitavaa selaintuessa