Table
面のスタイル、折り返しまたはコンパクトなセル、固定ヘッダー、固定列、スクロールのヒントを備えたレスポンシブなテーブル。
| Invoice | Client | Status | Amount |
|---|---|---|---|
| INV-0418 | Northwind | $2,400.00 | |
| INV-0419 | Globex | $860.00 | |
| INV-0420 | Initech | $1,320.50 | |
| INV-0421 | Umbrella | $415.00 | |
| Total | $4,995.50 | ||
pnpm dlx shadcn@latest add https://hextaui.com/r/table.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add class-variance-authority cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/table.tsx インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
各行に名前を付けるセルには <TableHead scope="row"> を使います。スクリーンリーダーには行のヘッダーとして読まれ、テキストの色も濃くなります。並べ替え、フィルター、選択は <DataTable /> の上に構築してください。
デフォルト
デフォルトのバリアントには面がなく、行の間に細い線があるだけで、card やページのセクションの内側に置くテーブル向けです。<TableCaption /> はその下のテーブルを説明します。
コンパクト
size="sm" は、密なデータ向けに行の高さとパディングを詰めます。
テキストの折り返し
セルはデフォルトで1行に収まり、データ向きです。wrap はセルの折り返しを許可して行を上揃えにし、用語集や API リファレンスのような文章向けです。table-fixed と列幅を組み合わせます。
幅の広いテーブル
コンテナーより幅の広いテーブルは横にスクロールします。柔らかいフェードがどちらかの側にさらにあることを示し、スクロール領域はフォーカス可能になるので、キーボードユーザーは矢印キーでスクロールできます。フェードは scrollFade={false} でオフにします。
固定列
pinned="start" は、残りがスクロールしても最初の列を表示したままにし、pinnedEdge はコンテンツがその下に潜り込むと影を表示します。
固定ヘッダー
stickyHeader は、高さが制限されたテーブルでヘッダーを表示したままにし、行がその下をスクロールすると細い線を加えます。
右から左
配置、固定列、スクロールのフェードは文字の読み方向に従います。
| キー | アクション |
|---|---|
| Tab | テーブルがあふれているとき、スクロール領域にフォーカスし、その後にその内側のリンクとボタンへ移ります。 |
| ←→ | フォーカスされた、あふれているテーブルを横にスクロールします。 |
| ↑↓ | sticky ヘッダー付きのフォーカスされたテーブルを上下にスクロールします。 |
- 各パーツはネイティブのテーブル要素を描画するため、スクリーンリーダーは追加の role なしで行、列、ヘッダーを読み上げます。
- 行に名前を付けるセルを
<TableHead scope="row">でマークすると、各値がその行と列とともに読み上げられます。 - スクロール領域は、あふれているときだけタブ順に入るので、収まっているテーブルによってタブストップが増えることはありません。
すべてのパーツはネイティブ要素を描画し、その属性を受け付けます。
| プロパティ | 型 | デフォルト |
|---|---|---|
variantsurface は、角丸の細い枠と、淡いヘッダー帯を追加します。 | "default" | "surface" | "default" |
size | "sm" | "default" | "default" |
wrapセルのテキストを折り返し、行を上揃えにします。 | boolean | false |
scrollFadeスクロール先にさらにコンテンツがある端をフェードします。列を固定している場合はスキップされます。 | boolean | true |
stickyHeaderヘッダーを表示したままにします。containerClassName でコンテナーに最大の高さを指定してください。 | boolean | false |
containerClassNameスクロールコンテナー用のクラス。 | string | – |
containerRefスクロールコンテナーへの ref。 | Ref<HTMLDivElement> | – |
| 属性 | 説明 |
|---|---|
data-slot="table-frame" | 外側の枠。data-variant、data-size、data-wrap を持ちます。 |
data-slot="table-container" | スクロールコンテナ。 |
data-overflowing | コンテンツがあふれているとき、コンテナーに付きます。そのときはフォーカス可能です。 |
data-scrolled-start / data-scrolled-end | 表示領域の前後にコンテンツが隠れている間付きます。 |
data-scrolled-top | sticky ヘッダーのテーブルがスクロールされると付きます。 |
--table-bg | 行の背景。周囲の card や popover に従います。 |
--table-head-bg | surface バリアントのヘッダー帯の背景。 |
--table-cell-px / --table-cell-py | セルのパディング。size によって設定されます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
scope行に名前を付けるセルには row を使います。本体の内側では、セルのパディングと前景色のテキストが適用されます。 | "col" | "row" | – |
alignend は等幅数字にも切り替わり、桁が揃います。 | "start" | "center" | "end" | "start" |
pinnedテーブルが横にスクロールしても、その列を表示したままにします。ヘッダーとすべてのセルに同じ値を設定してください。 | "start" | "end" | – |
pinnedEdge固定された最後の列の裏にコンテンツが隠れている間、その内側の端に柔らかい影を描画します。 | boolean | false |
| 属性 | 説明 |
|---|---|
data-slot="table-head" | CSS でヘッダーセルを指定します。 |
data-align | 配置。 |
data-pinned | 固定される側。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
alignend は等幅数字にも切り替わり、桁が揃います。 | "start" | "center" | "end" | "start" |
pinnedテーブルが横にスクロールしても、その列を表示したままにします。ヘッダーとすべてのセルに同じ値を設定してください。 | "start" | "end" | – |
pinnedEdge固定された最後の列の裏にコンテンツが隠れている間、その内側の端に柔らかい影を描画します。 | boolean | false |
| 属性 | 説明 |
|---|---|
data-slot="table-cell" | CSS でセルを指定します。 |
data-align | 配置。 |
data-pinned | 固定される側。 |
| 属性 | 説明 |
|---|---|
data-slot="table-row" | CSS で行を指定します。 |
data-state="selected" | 選択された行をハイライトするように設定します。 |
| 属性 | 説明 |
|---|---|
data-slot="table-header" | thead。 |
data-slot="table-body" | tbody。 |
data-slot="table-footer" | tfoot。ヘッダー帯の色になります。 |
data-slot="table-caption" | テーブルの下。surface バリアントでは枠の内側に収まります。 |
- Avatarイニシャルのフォールバック、ステータスバッジ、件数にまとめられる積み重ねグループを備えたユーザー写真です。
- Badge色付きのドットを持つステータスラベル、スライドして閉じる削除可能なタグ、新しい値へ回転するカウントです。
- Cardコンテンツをまとめるサーフェスです。3つのバリアント、端まで広がるメディア、同心円状の角丸、カード全体のリンクに対応します。
- Chartテーマ対応の色を持つRechartsのチャートです。1つの設定からラベルを読み取るツールチップと凡例、見えるフォーカスリングつきのキーボード操作に対応します。
- Data table実データのためのテーブルです。並べ替え、検索、行の選択、固定列、スティッキーヘッダー、ページネーションを備えています。
- Itemリスト、設定、ピッカー向けに、メディア、テキスト、操作を並べた行です。グループ化されたサーフェスと、行の間を滑るように移動するホバーハイライトを備えています。
使用しているブロック
Table の上に構築されるブロック。