Table vereinfachen (schlankeres Markup)
Mir sind ein paar mögliche Verbesserungen an der Table aufgefallen. Alles rückwärtskompatibel, also auch "altes" Markup funktioniert weiter (hat dann nur ein paar überflüssige Klassen).
Ich würde mich freuen, wenn ihr das in Betracht zieht. Gerne auch Feedback, wie ihr euch so eine Zuarbeit wünscht.
Schlankeres Markup mit weniger Klassen
Ich glaube, bei der Table-Komponente kann das Markup etwas schlanker ausfallen. Aktuell muss ich eine Reihe von Klassen im Markup setzen:
-
<thead>: kern-table__head -
<tbody>: kern-table__body -
<tfoot>: kern-table__footer -
<tr>: kern-table__row -
<th>: kern-table__header -
<td>: kern-table__cell
Das ist eigentlich redundant und ich schlage vor, im CSS direkt die Elemente per Element-Selektor anzusprechen, ohne die Klassen. So machen es z.B. auch:
- Bootstrap: https://getbootstrap.com/docs/5.3/content/tables/
- USWDS: https://designsystem.digital.gov/components/table/
- Frankreich: https://github.com/GouvernementFR/dsfr/tree/main/src/dsfr/component/table
Interessanterweise macht govuk das auch mit den Klassen: https://design-system.service.gov.uk/components/table/ (nicht optimal, wie ich finde)
So muss ich als Nutzender nur beachten, die "kern-table"-Klasse zu setzen, ansonsten "eine normale HTML-Tabelle".
Überschrift ohne kern-title
Bisher braucht die <caption> die Klasse "kern-title". Ich glaube, dass ist ein Detail, welches ich als Nutzender nicht wissen müssen sollte. Zumal aus kern-title bei der "small" Variante eine heading-small wird, was unerwartet ist. Aktuell suggeriert mir "kern-title", dass ich die Klasse ändern kann. Ich schlage vor, die Information "caption = title" ins CSS zu verlagern. (Das gleiche Muster ist mir das auch bei anderen Komponenten aufgefallen, z.B. beim Button, wo ich kern-label setzen muss.)
Sass Nesting
Ich musste die Varianten (--small, --striped) nach unten ziehen, damit sie die default styles überschreiben. Außerdem hab ich die "kern-table-responsive" rausgezogen. Ich bin darüber gestolpert, dass ich dachte -responsive wäre eine Variante wie --small und --striped und es fehlt nur ein Bindestrich. Aber eigentlich ist es ja eine eigene Komponente und nicht Teil der kern-table. Ich denke Sass Nesting ist dann am lesbarsten, wenn es die HTML-Struktur spiegelt.
Numeric modifier
Die finde ich noch etwas umständlich. Also, dass ich verschiedene Klassen für td und th setzen muss. Sie sollten wegen Rückwärtskompatibilität drinbleiben, aber vielleicht gibt es eine Idee, dass zukünftig etwas einfacher zu gestalten. Vielleicht so was wie "kern-table-numeric-field" oder einfach "text-right"...