Siirry sisältöön

14.5.0

Modal

Komponentit modaalisten dialogien toteutukseen. Modal pakottaa käyttäjän pysähtymään ja valitsemaan jonkin tarjotuista toiminnoista.

Julkaistu versiossa 0.15.3

Esikatselu

Käyttötarkoitus

Modaalisen dialogin tarkoitus on pysäyttää asiakkaan prosessi ja ohjata huomio tiettyyn toimintoon. Asiakas voi jatkaa eteenpäin vain ottamalla kantaa dialogissa esitettyyn asiaan. Kun dialogi on näkyvissä, asiakas ei pysty selailemaan muuta käyttöliittymää eikä suorittamaan muita toimintoja.

Dialogin avulla voit varmistaa, haluaako asiakas todella suorittaa jonkin toiminnon, jolla voi olla vakavia seurauksia. Esimerkiksi sellaisten tietojen poistaminen, joiden lisääminen uudelleen on vaikeaa tai mahdotonta, kannattaa varmistaa tällä tavoin. Mieti kuitenkin aina, onko virheen mahdollisuus ja seuraukset sellaiset, että jokaisen asiakkaan kohdalla kannattaa tehdä ylimääräinen varmistus.

Dialogit sopivat myös tilanteisiin, joissa virheen tai epämieluisan tilanteen estäminen vaatii asiakkaalta välitöntä reagointia. Dialogi voi esimerkiksi ilmoittaa, että asiakas kirjataan pian ulos palvelusta, ellei hän itse valitse jatkavansa palvelun käyttöä.

Lisäksi dialogia voi käyttää harkiten tilanteissa, joissa asiakkaalta vaaditaan jotain prosessin jatkamisen kannalta tärkeää informaatiota.

Tee näin
  • Käytä dialogia, jos prosessissa eteneminen edellyttää asiakkaalta erillistä varmistusta.
  • Käytä dialogia, jos tilanne vaatii asiakkaalta välittömiä toimenpiteitä (esimerkiksi asiakas kirjataan ulos palvelusta tietyn ajan kuluessa).
  • Kirjoita dialogin tekstit mahdollisimman lyhyesti ja kuvaavasti.
  • Lisää dialogiin aina otsikko ja vähintään yksi toimintopainike.
  • Nimeä dialogin painikkeet selkeästi, jotta asiakas ymmärtää varmasti, mitä hän on tekemässä. (Mieluummin "Poista valmistelutiedot" kuin "OK")
Älä tee näin
  • Älä käytä dialogia rutiininomaisesti esimerkiksi kaikissa poistotoiminnoissa. Tällöin asiakas helposti oppii sivuuttamaan ne, eivätkä ne enää palvele tarkoitustaan, vaan tuovat asiakkaalle vain yhden turhan klikkauksen lisää.
  • Älä sisällytä Modal-komponenttiin ylimääräistä lisätietoa tai hyvä tietää -linkkejä.

Dialogin sisältö

Dialogin tulee sisältää aina vähintään seuraavat elementit:

  • ModalHeader - Otsikko, joka kuvaa dialogin toiminnon.
  • ModalContent - Sisältö, joka selventää otsikkoa tai tarjoaa käyttäjälle ohjeita.
  • ModalFooter & Button - Vähintään yksi painike, josta käyttäjä voi sulkea dialogin.

Pyri käyttämään yhtenäisiä värejä dialogin sisällä. Vältä esimerkiksi useiden eriväristen painikkeiden käyttöä samassa dialogissa.

Saavutettavuus

Komponentti on toteutettu saavutettavaksi, mutta käytössä tulee huomioida seuraavat asiat:

  • Oletuksena ruudunlukija lukee otsikon ja sisällön automaattisesti, kun dialogi avataan.
  • Dialogissa on aina oltava vähintään yksi klikattava/fokusoitava komponentti näppäimistöfokuksen käsittelyä varten.
    • Oletuksena fokus siirretään automaattisesti dialogin ensimmäiseen fokusoitavaan komponenttiin.
  • Mikäli dialogin sisältö on pitkä, tulee sisällön automaattinen lukeminen poistaa käytöstä ja kohdistus siirtää dialogin otsikkoon.
    • Kohdistuksen oletustapaa voidaan muuttaa hyödyntämällä komponentin focusRef-proppia (kts. esimerkit alla).
    • Kohde-elementin tulee olla kohdistettava elementti tai sillä tulee olla tabIndex="-1".

Käyttö näppäimistöllä

Näppäimistön kohdistus pysyy dialogin sisällä kunnes käyttäjä sulkee dialogin.

NäppäinToiminto
EscSulje dialogi.
TabSeuraava dialogissa oleva toiminto.
Shift + TabEdellinen dialogissa oleva toiminto.

Erilaiset dialogit

Neutraali Dialogi

Esitä neutraalit sisällöt sinisessä dialogissa, jonka painikkeet ovat myös sinisiä.

Dialogi tummalla taustalla

Modalin taustavärin voi vaihtaa tummaksi tilanteissa, joissa Modal ei muuten erottuisi riittävästi taustasta.

Kriittinen dialogi

Käytä dialogissa ja sen painikkeissa punaista väriä, kun toiminto on asiakkaan kannalta kriittinen ja asiakkaan on vaikea peruuttaa toimintoa. Esimerkiksi tietojen poistaminen ja kirjautuminen ulos palvelusta voivat olla kriittisiä toimintoja.

Dialogi, jota ei voi ohittaa

Dialogi on oletuksena suljettavissa painikkeiden lisäksi klikkaamalla sen ulkopuolelta tai painamalla Esc-näppäintä. Tämän toiminnallisuuden voi estää closeOnClickOutside={false}-propilla. Tässä tapauksessa myös toggle-propin voi jättää pois.

Käytä tätä vain erikoistapauksissa, kun haluat varmistaa, että käyttäjä ei voi ohittaa dialogia painamatta siinä olevia painikkeita. Esimerkkinä palvelun istunnon vanheneminen, jolloin palvelu avaa dialogin automaattisesti eikä siinä ole “Peruuta”-painiketta.

Dialogi ikonilla

Dialogiin voi lisätä käyttöliittymäkuvakkeen käyttöliittymäkuvakkeen. Kuvakkeen väri määräytyy dialogin tyypin mukaan.

Dialogin sisällön räätälöinti ja kohdistuksen käsittely

Dialogiin voi yhdistää muita komponentteja tarpeen mukaan. Vältä ylimääräisen paddingin käyttöä dialogin sisällä, muuten dialogi toimii huonosti pienillä näytöillä.

Tässä esimerkissä kohdistuksen käsittelyä on muokattu. Näppäimistökohdistus on siirretty dialogin otsikkoon focusRef-propilla.