Esikatselu
<Tabs>
<Tab label="Lorem">
<div className="kds-py-6">Ipsum</div>
</Tab>
<Tab label="Dolor">
<div className="kds-py-6">Sit amet</div>
</Tab>
</Tabs>
Käyttötarkoitus
Välilehtien avulla jaetaan samaan aihealueeseen liittyvä sisältö eri näkymiin. Huolehdi siitä, että yhdellä välilehdellä esitetty sisältö muodostaa ymmärrettävän ja itsenäisen kokonaisuuden. Välilehdeltä toiselle siirtyminen lisää asiakkaan muistikuormaa ja heikentää käytettävyyttä, jos asiakas joutuu
vertailemaan välilehtien sisältöjä. Laita tällaisissa tilanteissa vertailtava sisältö samaan näkymään.
Jos kaikki välilehdet eivät mahdu näkymään kerralla, välilehtiin tulee sivusuuntainen vieritys. Pyri välttämään tällaista tilannetta pitämällä välilehtien määrä pienenä ja välilehtien nimet lyhyinä. Kaikki asiakkaat eivät välttämättä löydä piilossa olevia välilehtiä.
- Nimeä välilehdet lyhyesti 1-2 sanalla.
- Nimeä välilehdet selkeästi. Asiakkaan tulee pystyä päättelemään nimen perusteella mitä välilehden takaa löytyy.
- Järjestä välilehdet loogisesti. Laita eniten käytetty välilehti ensimmäiseksi.
- Näytä sivulle siirryttäessä ensimmäinen välilehti avattuna.
- Älä käytä liian pitkiä välilehtien otsikoita.
- Älä käytä välilehtirakennetta, jos asiakkaan ensisijainen tarkoitus on vertailla eri välilehdillä olevaa sisältöä keskenään.
- Älä käytä yli kuutta välilehteä. Mobiililaitteella välilehtien määrä kannattaa pitää vielä pienempänä.
- Älä käytä välilehtiä navigaationa, vaan jakamaan samaan aihealueeseen liittyvä tieto pienempiin osioihin. TabNav-komponentti soveltuu navigaation toteuttamiseen.
- Älä piilota tai estä (disabloi) välilehteä, kun näytettävää sisältöä ei ole. Näytä mieluummin asiakkaalle, että näytettäviä tietoja ei ole tai sisältö ei ole käytettävissä.
Saavutettavuus
Komponentti toteuttaa saavutettavan välilehtirakenteen. Välilehtiä ei oletuksena aktivoida, kun kohdistus siirtyy välilehtipainikkeeseen, vaan asiakkaan
pitää itse aktivoida välilehti. Välilehden saa aktivoitumaan kohdistuksella käyttämällä selectionFollowsFocus
-propia.
Kun kohdistus on välilehdissä, niitä voi selata nuolinäppäimillä. Välilehden sisältöön pääsee siirtymään Tab-näppäimellä. Jos välilehden
sisällössä ei ole kohdistettavia elementtejä, komponentti siirtää kohdistuksen sisällöt ympäröivään div
-elementtiin Tab-näppäimellä.
Mikäli sisällössä on yksikin kohdistettava elementti, Tab-näppäin toimii normaaliin tapaan.
|
Tab | Siirtää kohdistuksen välilehtipainikkeisiin tai välilehden sisältöön. |
Enter | Valitsee välilehden ja näyttää sen sisällön. |
Välilyönti | Valitsee välilehden ja näyttää sen sisällön. |
Home | Siirtää kohdistuksen ensimmäiseen välilehtipainikkeeseen. |
End | Siirtää kohdistuksen viimeiseen välilehtipainikkeeseen. |
← | Siirtää kohdistuksen edelliseen välilehtipainikkeeseen, kun kohdistus on välilehtipainikkeissa. Ensimmäisen välilehden kohdalla hyppää viimeiseen välilehteen (focus trap). |
→ | Siirtää kohdistuksen seuraavaan välilehtipainikkeeseen, kun kohdistus on välilehtipainikkeissa. Viimeisen välilehden kohdalla hyppää ensimmäiseen välilehteen (focus trap). |
Välilehdet
Välilehtien perustapaus, joka tasautuu reunoihin kiinni. Välilehdet ja sisällöt ovat oletuksena 100% leveitä.
Sisältöjen siisti tasaus ja välistys riippuu käyttökontekstista ja jää komponentin käyttäjän vastuulle.
Jos välilehden sisällä on asiakkaan huomiota vaativia sisältöjä, niitä voi tuoda lyhyesti välilehden nimen yhteyteen esim. Badge-komponentilla.
<Tabs>
<Tab label="Ajankohtaiset asiat">
<div className="kds-py-6">(Ajankohtaisten asioiden sisältö)</div>
</Tab>
<Tab
label={
<>
<span>Maksut</span>
<Badge variant="primary" className="kds-ml-2">
3 <span className="kds-sr-only">kappaletta</span>
</Badge>
</>
}
>
<div className="kds-py-6">(Maksujen sisältö)</div>
</Tab>
</Tabs>
Joissain tapauksissa voi olla tarve käyttää tiiviimpiä välilehtiä. Saat tiiviimmän asettelun käyttöön size
-propilla.
<Tabs size="sm">
<Tab label="Välilehti A">
<div className="kds-py-4">(Välilehden A sisältö)</div>
</Tab>
<Tab label="Välilehti B">
<div className="kds-py-4">(Välilehden B sisältö)</div>
</Tab>
<Tab label="Välilehti C">
<div className="kds-py-4">(Välilehden C sisältö)</div>
</Tab>
</Tabs>
Vieritettävät välilehdet
Mikäli välilehdet eivät mahdu leveyssuunnassa käytettävälle näytölle, tulee niihin automaattisesti vieritysmahdollisuus.
Tällöin oikeassa reunassa näytetään nuoli-ikoni, jota painamalla saa piiloon jääviä välilehtiä näkyviin.
Pyri pitämään välilehtien lukumäärä pienenä ja niiden nimet lyhyenä. Muista, että kaikki asiakkaat eivät välttämättä löydä piilossa olevia välilehtiä.
Vierityspainikkeet voi poistaa antamalla scrollable=false
-arvon komponentille. Huom. tällöin toteuttajan vastuulle jää komponentin mahtuminen kapeille näyttökoilla.
<>
<Tabs>
<Tab label="Välilehti 1">
<div className="kds-py-6">(Välilehti 1)</div>
</Tab>
<Tab label="Välilehti 2">
<div className="kds-py-6">(Välilehti 2)</div>
</Tab>
<Tab label="Välilehti 3">
<div className="kds-py-6">(Välilehti 3)</div>
</Tab>
<Tab label="Välilehti 4">
<div className="kds-py-6">(Välilehti 4)</div>
</Tab>
<Tab label="Välilehti 5">
<div className="kds-py-6">(Välilehti 5)</div>
</Tab>
<Tab label="Välilehti 6">
<div className="kds-py-6">(Välilehti 6)</div>
</Tab>
<Tab label="Välilehti 7">
<div className="kds-py-6">(Välilehti 7)</div>
</Tab>
<Tab label="Välilehti 8">
<div className="kds-py-6">(Välilehti 8)</div>
</Tab>
</Tabs>
</>
Välilehdet ryhmittelevässä elementissä
Huomioi välilehtien ja erilaisten sisältöjen tasaus suhteessa elementin vasempaan ja oikeaan reunaan, jos käytät välilehtiä ryhmittelevän elementin (esim. kortin tai paneelin) sisällä.
<Card>
<CardBody>
<CardTitle>Otsikko</CardTitle>
<Text>
Duis aute irure dolor in reprehenderit in voluptate velit. Ut enim ad minima veniam, quis nostrum exercitationem
ullam corporis suscipit laboriosam.
</Text>
<Tabs>
<Tab label="Välilehti 1">
<div className="kds-py-6">(Välilehti 1:n sisältö)</div>
</Tab>
<Tab label="Välilehti 2">
<div className="kds-py-6">(Välilehti 2:n sisältö)</div>
</Tab>
<Tab label="Välilehti 3">
<div className="kds-py-6">(Välilehti 3:n sisältö)</div>
</Tab>
</Tabs>
</CardBody>
</Card>
Kaksitasoiset välilehdet
Pyri välttämään välilehtien jakamista usealle tasolle. Joskus tilanne voi kuitenkin vaatia toisen tason välilehtiä.
Erota tällöin sisempi välilehtirakenne visuaalisesti päätasosta käyttämällä sisemmissä välilehdissä size
-propia.
<Card>
<CardBody>
<CardTitle>Otsikko</CardTitle>
<Text>
Duis aute irure dolor in reprehenderit in voluptate velit. Ut enim ad minima veniam, quis nostrum exercitationem
ullam corporis suscipit laboriosam.
</Text>
<Tabs>
<Tab label="Välilehti 1">
<Tabs size="sm" className="kds-mt-4">
<Tab label="Välilehti 1A">
<div className="kds-py-6">(Välilehden 1A sisältö)</div>
</Tab>
<Tab label="Välilehti 1B">
<div className="kds-py-6">(Välilehden 1B sisältö)</div>
</Tab>
<Tab label="Välilehti 1C">
<div className="kds-py-6">(Välilehden 1C sisältö)</div>
</Tab>
</Tabs>
</Tab>
<Tab label="Välilehti 2">
<Tabs size="sm" className="kds-mt-4">
<Tab label="Välilehti 2A">
<div className="kds-py-6">(Välilehden 2A sisältö)</div>
</Tab>
<Tab label="Välilehti 2B">
<div className="kds-py-6">(Välilehden 2B sisältö)</div>
</Tab>
<Tab label="Välilehti 2C">
<div className="kds-py-6">(Välilehden 2C sisältö)</div>
</Tab>
</Tabs>
</Tab>
</Tabs>
</CardBody>
</Card>
Tiedon välittäminen välilehden valinnasta ja välilehtien kontrollointi
function ExampleTabs() {
const [panel, setPanel] = useState(0);
const onSelect = (tabIndex) => setPanel(tabIndex);
return (
<Tabs onSelect={onSelect} activePanel={panel}>
<Tab label="Välilehti 1">
<div className="kds-py-6">(Välilehti 1:n sisältö)</div>
</Tab>
<Tab label="Välilehti 2">
<div className="kds-py-6">(Välilehti 2:n sisältö)</div>
</Tab>
<Tab label="Välilehti 3">
<div className="kds-py-6">(Välilehti 3:n sisältö)</div>
</Tab>
<Tab label="Välilehti 4">
<div className="kds-py-6">(Välilehti 4:n sisältö)</div>
</Tab>
</Tabs>
);
}
Huomioitavaa selaintuessa