Table

table要素の代替として表形式でデータを表示するためのコンポーネントです。データを行列で一覧表示するとき、レコードを並べて比較するビューを提示するときに使います。

他のコンポーネントと組み合わせることが多いため、具体的な使用方法はよくあるテーブルを参照してください。

アクセシビリティ

開発時の考慮点

セル内にチェックボックスやラジオボタンをそのまま配置しない

<Td><Checkbox /></Td>、<Th><Checkbox /></Th>、および<Td><RadioButton /></Td>などのように、セルの内部にチェックボックスやラジオボタンをそのまま配置してはいけません。それぞれの場合でTdCheckbox、ThCheckbox、およびTdRadioButtonという専用のコンポーネントが提供されているため、代わりにこれらを利用してください。

これらの専用のコンポーネントを利用せずにチェックボックスやラジオボタンを配置すると、アクセシブルネームが設定されず、ガイドラインの「フォームパーツにアクセシブルネームがある」に違反するおそれがあります。

なお、チェックボックスおよびラジオボタンのアクセシブルネームについてはeslint-plugin-smarthr別タブで開くのルールsmarthr/a11y-prohibit-checkbox-or-radio-in-table-cell別タブで開くを用いることで自動的に検証できます。

TdCheckboxおよびTdRadioButtonでは行を特定できる要素をIDで参照する

TdCheckboxおよびTdRadioButtonを利用する場合は、aria-labelledby属性を必ず指定しなければなりません。この属性には、それだけで行を一意に判別できる要素へのID参照を指定します。多くのオブジェクトでは、この属性値はしばしばオブジェクト名へのID参照になるでしょう。

オブジェクト名だけでは一意に判別できない可能性があるオブジェクトでは、オブジェクトの情報を含む複数の要素のID参照をスペース区切りで指定しなければなりません。例えば、従業員は同姓同名の人物が在籍する場合もあることから、以下のように社員番号と組み合わせます。

BulkActionRowではTertiaryボタンを使用する

BulkActionRow内で「すべてのオブジェクトを選択」や「選択解除」ボタンを実装する際は、必ずButtonコンポーネントのvariant="tertiary"を使用してください。

Buttonのvariant="tertiary"を使用することで、BulkActionRowの背景色に対してコントラスト比4.5:1を確保できるように内部的に実装されているため、視覚的に見やすくなります。

モバイル

モバイルでは、画面幅を越えたテーブルは2次元スクロールを招くため、垂直方向に積みあげることを推奨します。

よくあるテーブルの「モバイル」セクションを参照し、レイアウトに応じてListコンポーネント(WIP)への置き換えを検討してください。

使い方チェックリスト

Table
参照元:アクセシビリティ > 開発時の考慮点 > セル内にチェックボックスやラジオボタンをそのまま配置しない 「アクセシビリティ > 開発時の考慮点 > セル内にチェックボックスやラジオボタンをそのまま配置しない」の本文へ移動
  • Avoid
    セルの内部に Checkbox や RadioButton をそのまま配置せず、TdCheckbox / ThCheckbox / TdRadioButton を利用する
参照元:アクセシビリティ > 開発時の考慮点 > TdCheckboxおよびTdRadioButtonでは行を特定できる要素をIDで参照する 「アクセシビリティ > 開発時の考慮点 > TdCheckboxおよびTdRadioButtonでは行を特定できる要素をIDで参照する」の本文へ移動
  • Must
    TdCheckbox および TdRadioButton を利用する場合は `aria-labelledby` 属性を必ず指定し、それだけで行を一意に判別できる要素への ID 参照を指定する
  • Must
    オブジェクト名だけで一意に判別できないオブジェクトでは、複数の要素の ID 参照をスペース区切りで指定する

Props

Table props

reel
falsetrue
ref
(instance: HTMLTableElement) => voidRefObject<HTMLTableElement>
fixedHead
falsetrue

ヘッダーを固定するかどうか

borderType
"horizontal""vertical""both""all""outer"

罫線の種類

borderStyle
"solid""dotted""dashed"

罫線のスタイル

rounded
falsetrue"right""left""top""bottom""all"

角丸を適用する範囲

layout
"fixed""auto"

テーブルのレイアウト

Th props

align
"right""left"

テキストの水平方向の配置

sort
"desc""none""asc"

並び替え状態

onSort
() => void

並び替えをクリックした時に発火するコールバック関数

fixed
"right""left"

横スクロール時、カラムを左右いずれかに固定

contentWidth
stringnumber
vAlign
"bottom""middle""baseline"

テキストの垂直方向の配置

ThCheckbox props

fixed
"right""left"

横スクロール時、カラムを左右いずれかに固定

vAlign
"bottom""middle""baseline"

テキストの垂直方向の配置

ref
(instance: HTMLInputElement) => voidRefObject<HTMLInputElement>
mixed
falsetrue

true のとき、チェック状態を mixed にする

error
falsetrue

チェックボックスにエラーがあるかどうか

Td props

align
"right""left"

テキストの水平方向の配置

fixed
"right""left"

横スクロール時、カラムを左右いずれかに固定

contentWidth
stringnumber{ base?: string | number; min?: string | number; max?: string | number; }
vAlign
"middle""baseline"

テキストの垂直方向の配置

nullable
falsetrue

値が空の場合にハイフンを表示するかどうか

ref
(instance: HTMLTableDataCellElement) => voidRefObject<HTMLTableDataCellElement>

TdCheckbox props

aria-labelledby必須
string

Checkboxのaccessible nameとして設定するテキストを参照するためのid属性値。同じ親Tr配下のTdかTh、もしくはその子孫要素のidを指定する。複数要素のテキストを指定する場合は空白区切りでidをつなぐ

fixed
"right""left"

横スクロール時、カラムを左右いずれかに固定

vAlign
"middle""baseline"

テキストの垂直方向の配置

ref
(instance: HTMLInputElement) => voidRefObject<HTMLInputElement>
mixed
falsetrue

true のとき、チェック状態を mixed にする

error
falsetrue

チェックボックスにエラーがあるかどうか

TdRadioButton props

aria-labelledby必須
string

RadioButtonのaccessible nameとして設定するテキストを参照するためのid属性値。同じ親Tr配下のTdかTh、もしくはその子孫要素のidを指定する。複数要素のテキストを指定する場合は空白区切りでidをつなぐ

vAlign
"middle""baseline"

テキストの垂直方向の配置

ref
(instance: HTMLInputElement) => voidRefObject<HTMLInputElement>

BulkActionRow props

ref
(instance: HTMLTableRowElement) => voidRefObject<HTMLTableRowElement>

EmptyTableBody props

padding
012"XS""S""M""XXS""L""XL""XXL"340.250.50.751.251.52.53.58-0.25-0.5-0.75-1-1.25-1.5-2-2.5-3-3.5-4-8"X3S""X3L"{ vertical?: Gap; horizontal?: Gap; }

境界とコンテンツの間の余白

ref
(instance: HTMLTableSectionElement) => voidRefObject<HTMLTableSectionElement>

関連リンク