Siirry sisältöön

14.5.0

Table

Komponentti taulukkomuotoisen tiedon esitykseen.

Julkaistu versiossa 0.15.3

Esikatselu

Käyttötarkoitus

Taulukko on sopiva esitysmuoto silloin, kun tiedoilla on sama tai samankaltainen rakenne. Taulukot säästävät tilaa ja helpottavat tietojen silmäilyä ja vertailua. Pyri pitämään sarakeotsikoiden ja taulukon solujen sisältö tiiviinä. Liian pitkät sisällöt heikentävät taulukon luettavuutta ja vaikeuttavat vertailua.

Tee näin
  • Esitä taulukon sisältö tiiviisti, se helpottaa silmäilyä ja vertailua.
  • Otsikoi taulukon sarakkeet lyhyesti ja selkeästi.
  • Varmista taulukoiden toiminta ruudunlukijalla ja eri kokoisilla näytöillä.
Älä tee näin
  • Älä käytä taulukoita sivurakenteen toteutukseen tai sisältöjen asetteluun.
  • Älä käytä taulukoissa eri fonttikokoa saman näkymän tai palvelun sisällä, ellei se ole perusteltua.

Responsiivisuus

Suurten tietomäärien esittäminen pienellä näytöllä on haastavaa, eikä Table-komponentti välttämättä ratkaise tätä ongelmaa. Responsiivisten taulukoiden toteutukseen on useita eri vaihtoehtoja ja oikea toteutustapa riippuu sisällöstä ja sen käyttökontekstista.

Vinkkejä responsiivisten taulukoiden suunnitteluun:

  • sisällön priorisointi
  • taulukon sisältöjen pilkkominen useampaan taulukkoon
  • avattavien taulukkorivien käyttäminen
  • sivusuunnassa vieritettävä taulukko
  • toiminnallisuus, jolla käyttäjä voi itse valita mitä sarakkeita taulukossa näytetään
  • jokin kokonaan muu esitystapa kuin taulukko

Table tarjoaa tällä hetkellä valmiina avattavat rivit ja sivusuunnassa vieritettävän taulukon.

Saavutettavuus

Otsikoi taulukon solut ja merkitse otsikointi ruudunlukijoille joko HTML-taulukon scope-attribuutilla, tai vaihtoehtoisesti käyttämällä id- ja headers-attribuuttia.

Jos taulukoissa on tyhjiä soluja, ne jätetään lähtökohtaisesti tyhjiksi.

Jos kaikissa sarakkeissa pitäisi olla tieto (esim. Kyllä / Ei), on taulukon yläpuolella kerrottava, mitä tyhjä solu tarkoittaa. Esim. “Alla olevassa taulukossa tyhjä sarake tarkoittaa, että kyseinen tieto ei ole vielä saapunut Kelaan.”

Muista aina antaa pelkkiä kuvakkeita sisältäville soluille ja painikkeille saavutettavat tekstivastineet.

  • rivin tilakuvake
  • rivin valintaruutu/-painike
  • rivin avauspainike
  • muut painikkeet

Vältä monimutkaisten taulukkorakenteiden käyttöä, esim. sisäkkäiset taulukot tai erilaiset yhdistetyt solut. Näiden käyttö tekee taulukosta vaikeasti ymmärrettävän erityisesti ruudunlukijoiden käyttäjille.

Järjestettävää taulukkoa käytettäessä komponentille voi antaa orderLabel ja orderKeyLabel-propit. orderKeyLabel välittää ruudunlukijalle sarakkeen järjestyksestä kertovan tekstin. orderLabel välittää ruudunlukijalle järjestetyn sarakkeen otsikkotekstin.

Esimerkki proppien käytöstä ja tarkempi ohjeistus järjestettävästä talukosta löytyy Taulukon järjestäminen osiosta.

Taulukon rakenne ja ulkoasu

Tasaa taulukon solut sisältötyyppien mukaan oikealle tai vasemmalle.

Suositukset:

  • teksti, päivämäärät ja kellonajat tasataan vasemmalle
  • muut numeeriset arvot, kuten rahasummat tai muut vertailtavat lukuarvot tasataan oikealle
  • tasaa sarakeotsikot aina sisältöä vastaavasti
  • tasaa taulukon lukusuunnassa ensimmäinen sarake aina vasemmalle.

Esitä toistuvat yksiköt, kuten rahayksiköt, sarakeotsikoissa.

Taulukoissa käytetään oletuksena samaa tekstikokoa kuin leipätekstissä. Sarakeotsikot ovat lihavoituja ja ne erotetaan sisältösoluista selkeästi erottuvalla reunaviivalla. Taulukon sisältörivit erotetaan toisistaan vaakaviivoilla.

Rivien korostaminen

Taulukon rivin voi korostaa tehostevärillä ja kuvakkeella.

  • Sininen rivi (info): lisätieto, joka asiakkaan on hyvä tietää tai joka tukee hänen toimintaansa.
  • Vihreä rivi (success): onnistuneen toiminnon korostaminen.
  • Keltainen rivi (warning): huomiota vaativa tilanne, esim. tiedon tarkistaminen.
  • Punainen rivi (danger): välittömästi käyttäjän toimia vaativa tilanne, esim. virhe.

Taulukon muille riveille lisätään automaattisesti kuvaketta vastaava tyhjä solu niin, että taulukon rakenne pysyy ehjänä. Muista lisätä otsikkoriville ja korostetulle riville ruudunlukijoiden tekstivastine variantLabel-propilla. variantLabel-prop toimii myös kuvakkeen lisätietotekstinä.

Yhteenvetorivi

Alla on esimerkki saavutettavasta yhteenvetorivin toteutuksesta. Ruudunlukijat lukevat sen eri tavalla selaimesta ja ruudunlukijasta riippuen.

Käytä ulkoasultaan poikkeavaa yhteenvetoriviä esim. summien tai erotusten esitykseen.

Rivien avaaminen

Käytä avattavaa riviä, kun kaikki taulukkoon haluttu tieto ei mahdu esitettäväksi tai kun haluat priorisoida taulukossa olevaa tietoa. Vähemmän tärkeän tiedon tai riviin liittyviä toimintoja voi laittaa piiloon avattavan rivin sisälle.

Muista lisätä avauspainikkeiden kuvakkeille saavutettava tekstivastine collapseLabel-propilla.

Tarvittaessa koko rivin voi määrittää klikattavaksi alueeksi. Samalle riville ei silloin kannata lisätä muita klikattavia toimintoja.

Rivien valinta

Useiden rivien valinta valintaruuduilla.

  • Taulukon toiminnoille on suunnitteilla työkalupalkki, mutta sitä ei ole vielä toteutettu.
  • Rivien valinnan toimintaa sivutetussa taulukossa ei ole vielä päätetty tai ohjeistettu.
  • Käytettäessä estettyjä valintaruutuja, jää sovelluksen vastuulle huolehtia siitä, että valintoja ei päivitetä esimerkiksi "valitse kaikki" -toiminnolla.

Yhden rivin valinta valintanapilla.

Rivien valinta ja avaaminen samassa taulukossa

Tarvittaessa toimintaa voi myös räätälöidä.

Taulukon järjestäminen

Taulukon sarakkeiden otsikoista voi tehdä painikkeet välittämällä TableHeader-komponentille onClick- ja order-propit. Voit käyttää KDS:in tarjoamaa useSort-hookia tekstiä ja numeroita sisältävien solujen järjestämiseen. Muissa tapauksissa toteuta rivien järjestämiselle oma ratkaisu.

Järjestystoiminnon tulee noudattaa aina samaa järjestystä, kun painiketta painetaan: ei järjestystä -> laskeva järjestys -> nouseva järjestys -> ei järjestystä...

Ruudunlukija lukee sarakeotsikon aria-sort-attribuutin kun kohdistus siirtyy otsikkosoluun tai poistuu siitä. Table-komponentti toteuttaa aria live -alueen, joka kertoo ruudunlukijoille järjestyksen automaattisesti kun painiketta painetaan. Muista välittää komponentille aria live -alueen tarvitsemat tekstit:

  • orderKeyLabel: järjestetyn sarakkeen otsikko, esim. “Lisätieto”
  • orderLabel: järjestyksen suunta, esim. “järjestetty laskevasti”

Ruudunlukija lukee tekstit muodossa {orderKeyLabel} {orderLabel}, esim. “Lisätieto järjestetty laskevasti”, kun taulukon järjestys muuttuu.

Tiivistetty taulukko

Näytettävän tiedon tiheydestä ja määrästä riippuen voi olla tarpeellista käyttää tiivistettyä taulukkoa. Tiivistettyä taulukkoa käyttäessä on huomioitava, että se on suunniteltu käytettäväksi asiantuntijakäyttöliittymissä.

Pitkien taulukoiden rivien korostamiseen voi käyttää apuna raidallista korostusta. Raidallista taulukkoa käytettäessä on hyvä huomioida, että raidoituksen käyttäminen muun visuaalisen korostuksen kanssa voi tehdä taulukosta hankalasti tulkittavan.

Sisällön päällä kelluva otsikkorivi

Pitkät taulukot voivat olla hankalasti luettavia etenkin pienillä näytöillä. Jos taulukon sisältö ei kokonaisuudessaan mahdu näytölle, on syytä harkita kelluvan otsikkorivin käyttämistä. Vieritettäessä taulukon otsikkorivi kelluu sisällön päällä, parantaen luettavuutta etenkin mobiililaitteilla.

Alla on karkea esimerkki, jonka suorituskykyä ei ole arvioitu. Jos taulukko mahtuu mobiiliruudulle, voi responsive-propin asettaa arvoon false ja toteuttaa kelluvan otsikkorivin pelkästään CSS:n position: sticky; määrityksellä.

Sovellettu taulukkokomponetti

Lomakekomponentit tavallisessa taulukossa. Normaaliin taulukkoon sijoitettavien lomakekomponenttien size-propin arvoksi tulee asettaa sm.

Näytettävän tiedon tiheydestä riippuen taulukon näyttämää dataa voi tiivistää antamalla komponentille size-propin. Tiivistetyssä taulukossa on pienennetty fonttikoko sekä tiiviimmät otsikkorivit ja rivivälit.

Taulukon size-proppia käytettäessä tulee taulukkoon sijoitettavien lomakekomponenttien size-propin arvoksi asettaa xs.

Esimerkki taulukkokomponentin soveltamisesta. Taulukkoa pienennetty, koska taulukossa on paljon tietoa ja se on kapeassa palstassa.