Table
任意の対話的アダプターを追加できるネイティブのテーブル。
- ブラウザー
- Chrome 123+Firefox 121+Safari 17.5+
- ティア
- 0
- 圧縮後のサイズ
- 617 B
- 強制レイアウトの上限
- 0 ms
- axe の上限
- 0
- SSR 対応
- はい
- 公開された契約
- テストハーネス
プレイグラウンド
Table
ネイティブのテーブルの例
| 名前 | ロール | ステータス |
|---|---|---|
| Alice Chen | 管理者 | 有効 |
| Bob Smith | 編集者 | 有効 |
| Carol Lee | 閲覧者 | 招待済み |
| 3人のメンバー・2人が有効 | ||
並べ替え・絞り込み・展開
| ロール | 詳細 | ||
|---|---|---|---|
| Alice Chen | 管理者 | ||
| alice@example.com · 有効 | |||
| Bob Smith | 編集者 | ||
| bob@example.com · 有効 | |||
| Carol Lee | 閲覧者 | ||
| carol@example.com · 招待済み | |||
| 3人のメンバー・0人を選択 | |||
固定するヘッダー・フッター・列
API
Table.Root (native)
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
layout | "auto" | "fixed" | "auto" | ネイティブのテーブルレイアウト。選択、並べ替え、展開には明示的なTableClientエントリーを使います。 |
size | "sm" | "md" | "lg" | — | 選択したスタイルシートによるセルの間隔。 |
variant | "solid" | "outline" | "ghost" | — | 選択したスタイルシートによるサーフェスのバリエーション。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.Footer
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
sticky | boolean | — | フッターをスクロールコンテナーのブロック終端に固定します。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.RowHeader / Table.Cell / Table.ColumnHeader
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
align | "start" | "center" | "end" | "start" | このセルの論理方向でのテキスト配置。 |
sticky | "start" | "end" | — | セルを論理インライン方向の端に固定します。固定セルが隣接する場合は、各セルに--uiify-table-sticky-offsetを設定します。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
TableClient.ExpandTrigger / TableClient.ExpandedRow
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
rowId* | string | — | 展開ボタンとネイティブの<tr>をつなぐ共通の行キー。展開行の中に<td colSpan={columnCount}>を配置します。 |
TableClient.Root — @gunkin/uiify/components/table/client
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
aria-label | string | — | 可視のキャプションや見出しで名前を付けない場合の、テーブルのアクセシブルな名前。 |
aria-labelledby | string | — | テーブルのラベルとなる要素のID。 |
selectionMode | "none" | "single" | "multiple" | "none" | 行を選択できるかと、同時に選択できる数。"none"はgridロールのない、通常の静的なテーブルを描画します。 |
selectionBehavior | "toggle" | "replace" | — | 行のクリックで選択に追加するか、現在の選択を置き換えるか。 |
defaultSelectedKeys | Iterable<string> | — | 初期選択する行のID。選択はコンポーネント内部で非制御として管理します。 |
selectedKeys | Iterable<string> | — | 現在選択している行のID。選択は呼び出し側が制御します。 |
onSelectionChange | (selectedKeys: Set<string>) => void | — | 選択が変わるたび、新しく選択した行IDの集合で呼び出します。 |
defaultSortDescriptor | SortDescriptor | null | — | 初期の並べ替え列と方向。並べ替え状態はコンポーネント内部で非制御として管理します。 |
sortDescriptor | SortDescriptor | null | — | 現在の並べ替え列と方向。並べ替えは制御されます。 |
onSortChange | (descriptor: SortDescriptor | null) => void | — | 並べ替え可能な列見出しを実行すると、新しい並べ替え記述子またはnullで呼び出します。 |
expandedKeys / defaultExpandedKeys | Iterable<string> | — | 制御される、または初期の展開行キー。 |
onExpandedChange | (keys: Set<string>) => void | — | 展開の要求を通知します。制御される行はキーの更新を待ちます。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.Header
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
sticky | boolean | false | このセクションをスクロールコンテナーに固定します。Headerはブロック始端、Footerはブロック終端を使います。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.Body
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
children | ReactNode | — | テーブル本体の行。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.Row
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
id* | string | — | 選択キーと要素のIDに使う、安定した行ID。 |
disabled | boolean | false | 行の選択と、キーボードによるフォーカスを防ぎます。 |
selected | boolean | — | 選択ストアが管理を引き継ぐ前に、サーバーレンダリングしたマークアップで行を選択済みにします。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.ColumnHeader
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
id* | string | — | 並べ替え記述子が参照する列ID。 |
allowsSorting | boolean | false | 見出しで列の並べ替えを切り替え、aria-sortを公開します。 |
sortDirection | "ascending" | "descending" | null | — | この列に描画する並べ替え方向。並べ替えを許可する場合の初期サーバーマークアップに使います。 |
onClick | React.MouseEventHandler<HTMLTableCellElement> | — | 並べ替え前に実行します。preventDefault()で並べ替えの変更を拒否できます。 |
children | ReactNode | — | 見出しのラベル。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.Cell
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
children | ReactNode | — | セルの内容。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.Caption
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
children | ReactNode | — | テーブルを説明するキャプションのテキスト。 |
render | ReactElement | ((props, state) => ReactElement) | — | 動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。 |
Table.RowSelect
| Prop | 型 | 既定値 | 説明 |
|---|---|---|---|
rowId* | string | — | このチェックボックスで選択・解除する行のID。 |
キーボード
| キー | 操作 |
|---|---|
| Tab | TableClientの並べ替え・選択・展開コントロールにフォーカス |
| Enter / Space | フォーカス中の並べ替え・展開ボタンを実行、チェックボックスを切り替え |
| Arrow keys | TableClient内の選択可能な本文行間を移動 |
アクセシビリティ
標準のTableは、クライアントJavaScriptなしでネイティブの<table>、<caption>、<thead>、<tbody>、<tfoot>を描画します。見出しのセマンティクスにはColumnHeaderとRowHeaderを使います。/clientエントリーは、並べ替え、選択、キーボードでの行移動、制御された展開を追加し、aria-sort、aria-expanded、aria-controlsで公開します。ExpandedRowはネイティブの<tr>です。内部にcolSpan付きのCellを配置してください。フィルタリングと並び順は利用側が管理します。
スタイリングのフック
data-uiify-tabledata-partdata-layoutdata-sizedata-variantdata-stickydata-selecteddata-disabled--uiify-table-sticky-offset