Esikatselu
<Alert variant="primary">
<Text>Lorem ipsum</Text>
</Alert>
Käyttötarkoitus
Alertin eli ilmoituksen avulla voit kiinnittää huomion asiakkaan kannalta tärkeään asiaan. Tyypillisiä ilmoituksia ovat esimerkiksi järjestelmän tilaan liittyvät ilmoitukset ja ilmoitukset muista asiakkaan huomioita tai toimenpiteitä vaativista asioista. Tällaisia ovat esimerkiksi virhetilanteet, tarkistettava asiat, tärkeiden toimintojen onnistumiset ja muut huomioitavat tiedot.
- Näytä ilmoitus vain tarvittaessa, ei varmuuden vuoksi.
- Käytä tilanteeseen sopivaa ilmoitustyyppiä.
- Näytä ilmoitus sen kohdan yhteydessä, johon se liittyy (esim. tietyn näkymän yläosassa tai tietyn osion alussa).
- Pidä ilmoitusten tekstit lyhyinä ja selkeinä. Käytä kokonaisia virkkeitä ja asiakkaalle tuttua kieltä.
- Sisällytä yhteen ilmoitukseen vain yksi asia.
- Näytä ilmoitus kyselytilassa vain, jos asiakas tarvitsee kyseistä tietoa myös kyselytilassa.
- Älä käytä ilmoituksia kertomaan asiasta, joka ei vaadi asiakkaan välitöntä huomiota ja/tai toimenpiteitä. Voit harkita tällöin käytettäväksi esim. Toast-komponenttia.
- Älä käytä ilmoituksia korostamaan yleisluontoisia nostoja. Käytä tällöin mieluummin Card-komponenttia.
- Älä käytä ilmoituksia korostamaan leipätekstistä asiakkaan kannalta tärkeitä sisältöjä, kuten lomakkeiden täyttöohjeita. Käytä tällöin mieluummin sisältönostoa (ContentHighlight).
Saavutettavuus
Oletuksena Alert-komponentti ei keskeytä ruudunlukijoiden toimintaa tai siirrä kohdistusta ilmoitukseen. Jos
ruudunlukijan toiminta on tarpeen keskeyttää ja lukea ilmoitus heti, se onnistuu lisäämällä komponentille attribuutti role="alert"
(ja lisäämällä ilmoitus DOM:iin JavaScriptillä).
Komponentin ikoni-elementille voi välittää aria-label
-attribuutin käyttämällä iconAriaLabel
-proppia.
Ilmoituksen sisältö
Ilmoituksen silmäiltävyyttä parantaa korostamalla ilmoituksen tärkeimmän asian lihavoinnilla ja kappalejaolla, jos ilmoituksessa on useampi lause tekstiä. Näytä ilmoituksen muu sisältö tämän jälkeen. Jos ilmoitus on lyhyt, sitä ei tarvitse erikseen otsikoida.
<Alert variant="danger" iconAriaLabel="Example aria label">
<Text mb={4}>
<strong>Toimipisteen lakkauttaminen ei onnistu.</strong>
</Text>
<Text>
Toimipisteellä on voimassaolevia sopimuksia. Voit lakkauttaa vain sellaisen toimipisteen, jonka kaikki sopimukset
ovat päättyneet.
</Text>
</Alert>
Varsinaisen ilmoitustekstin lisäksi ilmoituksessa voi olla esimerkiksi linkkejä. Linkit sopivat tilanteisiin, joissa asiakkaalle halutaan tarjota asiaan liittyen lisätietoa tai asiakas halutaan ohjata muualle tekemään jatkotoimenpiteitä.
Esimerkki varoittavasta ilmoituksesta:
<Alert variant="warning" iconAriaLabel="Example aria label">
<Text>
Tarkista asiakkaan tiedot Tulorekisteristä.{" "}
<Link href="#" target="_blank" newTabLabel="avautuu uuteen välilehteen">
Siirry Tulorekisteriin.
</Link>
</Text>
</Alert>
Ilmoitustyypit
Kriittinen ilmoitus
Käytä kriittistä ilmoitusta silloin, kun haluat kiinnittää asiakkaan huomion välitöntä reagointia vaativaan asiaan, kuten virhetilanteeseen.
- Jos kyseessä on virhetilanne, kerro, minkälainen virhe on tapahtunut ja mitä asiakas voi tehdä virheen korjaamiseksi.
- Kerro, mitä asiakkaan tulee tilanteessa tehdä ja miksi.
- Älä syytä asiakasta virhetilanteesta, vaan käytä kohteliasta sävyä.
- Vältä liian teknisen termistön ja kielen käyttöä.
- Älä suosittele asiakasta ottamaan yhteyttä tekniseen tukeen, ellei se ole aivan välttämätöntä.
- Älä käytä kriittistä ilmoitusta yksittäisen lomakekentän virhetilanteen näyttämiseen. Käytä tällöin lomakekentän korostusta ja virhetekstiä.
<>
<Alert variant="danger">
<Text>
Asiakirjaa ei voida välittää asiakkaalle sähköisesti, koska yhteystiedot puuttuvat. Lähetä asiakirja
toimistotulostuksen kautta.
</Text>
</Alert>
<Alert variant="danger">
<Text>
Päivärahan määrää ei voida laskea, sillä verotuksen työtulot eivät ole vielä käytettävissä. Odota työtulojen
vahvistamista.
</Text>
</Alert>
</>
Varoittava ilmoitus
Käytä varoittavaa ilmoitusta, kun haluat kiinnittää asiakkaan huomion tilanteeseen, joka saattaa aiheuttaa ongelmia myöhemmin. Varoittavan ilmoituksen avulla pyritään estämään ongelmien syntyminen tilanteessa, jossa virhettä ei vielä ole tapahtunut. Voit esimerkiksi pyytää asiakasta tarkistamaan jonkin asian, joka voi mahdollisesti aiheuttaa virheen.
Varoittava ilmoitus sopii esimerkiksi seuraaviin tilanteisiin:
- Tiedot ovat ristiriitaisia ja ne voivat johtaa virheeseen, jos asiakas ei korjaa niitä.
- Joitain tietoja ei voida tarkistaa automaattisesti, vaan tarkistaminen jää asiakkaan vastuulle.
- Jokin toimenpide, jonka asiakas on tehnyt tai jättänyt tekemättä, voi aiheuttaa myöhemmin ongelman.
- Kerro tarkistettava asia tai mahdollinen syntyvä ongelma.
- Kerro, mitä asiakkaan tulee tehdä ja miksi.
- Älä näytä varoittavia ilmoituksia varmuuden vuoksi. Jos varoituksia on liikaa, asiakkaat eivät jaksa lukea niitä.
- Älä käytä varoittavaa ilmoitusta ilmoittamaan virheestä, joka on jo tapahtunut. Käytä tällöin kriittistä ilmoitusta.
<>
<Alert variant="warning">
<Text>Asiakkaalla on vanha maksuosoite. Tarkista, onko maksuosoite edelleen voimassa.</Text>
</Alert>
<Alert variant="warning">
<Text>Olet muuttanut haettuja jaksoja. Tarkista poikkeukselliset jaksot ja muuta tarvittaessa.</Text>
</Alert>
<Alert variant="warning">
<Text>Tieto on kopioitu aiemmalta ratkaisulta. Tarkista, vastaako se edelleen henkilön tilannetta.</Text>
</Alert>
</>
Lisätieto
Käytä lisätietoa, kun haluat kiinnittää asiakkaan huomion sellaiseen asiaan, joka asiakkaan on hyvä tietää tai joka tukee hänen toimintaansa. Lisätiedossa näytettävät tiedot eivät kuitenkaan saa olla kriittisiä eivätkä vaatia asiakkaalta välittömiä toimenpiteitä.
Jos tarkoituksena on korostaa leipätekstin seasta asiakkaan kannalta mielenkiintoinen kohta, käytä mieluummin sisältönostoa (ContentHighlight).
- Näytä lisätieto vain, jos siitä on hyötyä suurimmalle osalle asiakkaita.
- Älä näytä lisätietoja varmuuden vuoksi.
- Vältä lisätietojen antamista rutiiniluontoisten toimintojen yhteydessä.
- Älä käytä lisätietoa korostamaan sellaista tietoa, jota vain pieni osa asiakkaista tarvitsee. Harkitse tällöin mieluummin erikseen avautuvaa ohjetekstiä (esim. haitari, työkaluvihje tai linkki erilliselle sivulle).
- Älä käytä lisätietoa, kun haluat antaa yksittäisen lomakekomponentin yhteydessä lisäohjeistusta kyseisen kohdan täyttämiseen. Käytä tällöin komponenttikohtaista täyttöohjetta
- Älä käytä ilmoitusta palvelun yleisohjeiden esittämiseen. Käytä tällöin mieluummin ohje-tyyppistä sisältönostoa (ContentHighlight).
<>
<Alert variant="primary">
<Text>Sinulla on 5 uutta viestiä.</Text>
</Alert>
<Alert variant="primary">
<Text>Viimeinen valituspäivä tästä päätöksestä on pp.kk.vvvv.</Text>
</Alert>
</>
Onnistumisilmoitus
Käytä onnistumisilmoitusta korostamaan asiakkaalle tärkeän toiminnon onnistumista, kuten hakemuksen lähettämistä.
- Käytä onnistumisilmoitusta vain sellaisten asiakkaan kannalta kriittisten toimintojen yhteydessä, joiden onnistumista asiakas ei näe helposti muualta.
- Kerro selkeästi ja ytimekkäästi, mikä toiminto on suoritettu onnistuneesti.
- Älä näytä onnistumisilmoitusta kaikkien onnistuneiden toimintojen yhteydessä, vaan ainoastaan tarvittaessa.
- Älä sisällytä onnistumisilmoitukseen asiakkaan toimenpiteitä vaativia toimintoja.
<>
<Alert variant="success">
<Text>Hakemuksesi on lähetetty.</Text>
</Alert>
<Alert variant="success">
<Text>Viestisi on lähetetty.</Text>
</Alert>
</>
Ilmoitus toisen komponentin sisällä
Ilmoituksia voi näyttää myös erilaisten ryhmittelevien komponenttien, kuten paneelien ja korttien sisällä.
Tällöin ilmoituksesta kannattaa käyttää tyyliä, jossa ei ole reunaviivoja.
<Panel
as="section"
aria-labelledby="example-panel-heading"
heading="YEL- ja MYEL-päiväraha"
headingId="example-panel-heading"
variant="danger"
>
<Alert variant="danger" className="kds-mb-0" flush>
<Text>Henkilöä ei löydy eläkelaitoksen rekisteristä. Ota yhteys Kelan IT-asiakastukeen.</Text>
</Alert>
<PanelBody>(Paneelin sisältö)</PanelBody>
</Panel>
Ilmoituksen koko
Oletuksena ilmoituksesta käytetään suurinta kokoa, jonka selkeä välistys soveltuu useimpiin käyttötilanteisiin. Joskus ilmoituksia voi kuitenkin olla tarve mahduttaa tiiviisti pieneen tilaan. Tällöin ilmoituksesta voi käyttää pienempää kokoa.
<>
<Alert variant="warning">Olet hylkäämässä sopimuksen. Hylättyä sopimusta ei voi enää myöhemmin hyväksyä.</Alert>
<Alert size="md" variant="warning">
Olet hylkäämässä sopimuksen. Hylättyä sopimusta ei voi enää myöhemmin hyväksyä.
</Alert>
<Alert size="sm" variant="warning">
Olet hylkäämässä sopimuksen. Hylättyä sopimusta ei voi enää myöhemmin hyväksyä.
</Alert>
<Alert textOnly variant="warning">
Olet hylkäämässä sopimuksen. Hylättyä sopimusta ei voi enää myöhemmin hyväksyä.
</Alert>
</>
Laajennettava ilmoitus
Ilmoituksen voi määritellä laajennettavaksi. Silloin ilmoitukselle tulee antaa
- otsikko, joka näkyy aina, sekä
- ilmoitusteksti, joka näkyy kun ilmoituksen laajentaa.
Pidä sekä otsikko että ilmoitusteksti lyhyenä. Ilmoitusteksti voi tarvittaessa sisältää linkin.
Laajennetussa näkymässä voi olla myös monta ilmoitusta, rivinvaihdoilla erotettuna. Huomaa tällöin, että yksittäinen ilmoitus ei voi sisältää rivinvaihtoja, jotta ilmoitukset erottuvat toisistaan.
const CollapsibleDangerAlert = () => {
const [isOpen, setOpen] = useState(false);
return (
<Alert variant="danger" collapseTitle="Häiriötiedotteet (3 kpl)" isOpen={isOpen} onClick={() => setOpen(!isOpen)}>
<Text mb={4}>
OmaKela: Sairauspäivärahan hakemus pois käytöstä.{" "}
<Link href="#">
Lue lisää <span className="kds-sr-only">sairauspäivärahan hakemuksen käyttökatkosta</span>
</Link>
</Text>
<Text mb={4}>
Ajanvarausjärjestelmä: Käyttökatko 11.6. klo 6–20.{" "}
<Link href="#">
Lue lisää <span className="kds-sr-only">ajanvarausjärjestelmän käyttökatkosta</span>
</Link>
</Text>
<Text>
OmaKela: Käyttökatko 9.6. klo 6–8.{" "}
<Link href="#">
Lue lisää <span className="kds-sr-only">OmaKelan käyttökatkosta</span>
</Link>
</Text>
</Alert>
);
};
const CollapsiblePrimaryAlert = () => {
const [isOpen, setOpen] = useState(false);
return (
<Alert
variant="primary"
collapseTitle="Sinulle on 2 uutta viestiä"
isOpen={isOpen}
onClick={() => setOpen(!isOpen)}
>
<Text mb={4}>
Yleinen asumistuki: Tarvitsemme sinulta liitteeksi vuokrasopimuksen...{" "}
<Link href="#">
Lue koko viesti <span className="kds-sr-only">puuttuvasta vuokrasopimusliitteestä</span>
</Link>
</Text>
<Text>
Perustoimeentulotuki: Yritimme tavoittaa sinut puhelimitse vuokravakuusasiaan liittyen...{" "}
<Link href="#">
Lue koko viesti <span className="kds-sr-only">vuokravakuusasiasta</span>
</Link>
</Text>
</Alert>
);
};
render(
<>
<CollapsibleDangerAlert />
<CollapsiblePrimaryAlert />
</>
);
Suljettava ilmoitus
Oletuksena ilmoituksia ei voi sulkea. Joissain tilanteissa voi kuitenkin olla tarpeen saada kuitattua ilmoitus pois. Tällöin voit käyttää suljettavaa ilmoitusta. Huomioi, että sulkemisen jälkeen asiakas ei välttämättä enää muista, mitä ilmoitus koski, joten siihen liittyvät tiedot voi olla hyvä löytää myös muualta.
<Alert variant="danger" dismissible aria-label="Sulje ilmoitus">
<Text>Olet hylkäämässä sopimuksen. Hylättyä sopimusta ei voi enää myöhemmin hyväksyä.</Text>
</Alert>
Taustavärin ja ikonin sijainnin muokkaaminen
Taustavärin voi vaihtaa valkoiseksi, mikäli ilmoituksen käyttämä taustaväri ei sovellu taustaan, jolle ilmoitus sijoitetaan.
Ikonin sijaintia voi tarvittaessa myös muuttaa. Jos ilmoitus sijoitetaan valmiiksi kapeaan tilaan, kannattaa ikoni sijoittaa tekstin yläpuolelle iconPosition
-propilla.
Arvolla auto
, ikonin sijaintia muutetaan, kun ruudunleveys alittaa 468 pikseliä.
<Chat>
<ChatMessage position="right" animate={false}>
<Alert variant="warning" bgColor="white" size="md" className="kds-mb-4" iconPosition="auto">
<p className="kds-mb-1">Liitteen lisääminen ei onnistunut. Tiedoston tyyppi ei ole sallittu:</Text>
<List>
<ListItem>
<Link href="#">vuokrasopimus.heic</Link>
</ListItem>
</List>
</Alert>
</ChatMessage>
<ChatMessage position="right" animate={false}>
<Alert variant="danger" bgColor="white" size="md" className="kds-mb-4" iconPosition="top">
<p className="kds-mb-1">
Liitteen lisääminen ei onnistunut.
<br />
Tiedoston tyyppi ei ole sallittu:
</Text>
<List>
<ListItem>
<Link href="#">vuokrasopimus.heic</Link>
</ListItem>
</List>
</Alert>
</ChatMessage>
</Chat>
Koko näytön levyisten ilmoitusten näyttäminen
Ilmoitukselle voidaan välittää container-elementti, joka määrittää otsikon ja sisällön maksimileveyden.
Laajennettavan ilmoituksen painikkeelle annettava containerin (collapseTitleContainer
-prop) HTML-elementti tulee olla inline-elementti, koska se lisätään painikkeen sisälle.
const CollapsibleDangerAlert = () => {
const [isOpen, setOpen] = useState(false);
return (
<Alert
flush
variant="danger"
collapseTitle="Häiriötiedotteet (3 kpl)"
collapseTitleContainer={({ children }) => (
<Container as="span" maxWidth="2xl" fluid>
{children}
</Container>
)}
container={({ children }) => (
<Container maxWidth="2xl" fluid>
{children}
</Container>
)}
isOpen={isOpen}
onClick={() => setOpen(!isOpen)}
>
<Text mb={4}>
OmaKela: Sairauspäivärahan hakemus pois käytöstä.{" "}
<Link href="#">
Lue lisää <span className="kds-sr-only">sairauspäivärahan hakemuksen käyttökatkosta</span>
</Link>
</Text>
<Text mb={4}>
Ajanvarausjärjestelmä: Käyttökatko 11.6. klo 6–20.{" "}
<Link href="#">
Lue lisää <span className="kds-sr-only">ajanvarausjärjestelmän käyttökatkosta</span>
</Link>
</Text>
<Text>
OmaKela: Käyttökatko 9.6. klo 6–8.{" "}
<Link href="#">
Lue lisää <span className="kds-sr-only">OmaKelan käyttökatkosta</span>
</Link>
</Text>
</Alert>
);
};
const DangerAlert = () => (
<Alert
flush
variant="danger"
container={({ children }) => (
<Container maxWidth="2xl" fluid>
{children}
</Container>
)}
>
<Text mb={4}>
Kela.fissä käyttökatko 4.1. klo 6-8{" "}
<Link href="#">
Lue lisää <span className="kds-sr-only">käyttökatkosta</span>
</Link>
</Text>
</Alert>
);
render(
<>
<CollapsibleDangerAlert />
<DangerAlert />
</>
);
Skeleton
Käytä skeleton-komponentissa vaaleanharmaata versiota ilmoituksesta.
<Alert variant="light" icon={<Skeleton variant="circle" />}>
<Skeleton variant="paragraph" />
</Alert>