テーブルTableBeta

列見出しと行データを組み合わせて、比較しやすい一覧を表示する表コンポーネントです。

プレビュー

項目状態金額
API完了¥12,000
ドキュメント確認中¥8,000

状態とバリエーション

ストライプ

行数が多い読み取り専用の表では、交互の背景色で横方向の読み取りを補助します。

項目状態担当
API完了佐藤
ドキュメント確認中鈴木
デザイン未着手高橋

合計や集計値はフッター行にまとめ、本文の明細行と分けて示します。

項目状態金額
API完了¥12,000
ドキュメント確認中¥8,000
合計¥20,000

キャプション

表の対象期間や集計範囲を、表の構造に含めて補足します。

リリース前確認の担当一覧です。
項目期限担当
アクセシビリティ確認5月28日佐藤
公開前レビュー5月30日鈴木

横スクロール

小さい画面では列を無理に縮めず、表に最小幅を持たせて横方向にスクロールできるようにします。

項目状態担当期限最終更新
アクセシビリティ確認確認中佐藤5月28日5月26日 10:00
公開前レビュー未着手鈴木5月30日5月25日 18:30

横スクロールの封じ込め

TableDataTable は横スクロールを自分の枠内に封じ込めます(内部で [contain:paint] を付与済み)。狭い画面(375px 等)で、幅の広い内側要素を overflow-x-auto のスクローラに入れると、ページ全体に横スクロールが漏れることがあります(body.scrollWidth は据え置きでも html.scrollWidth が膨らむ)。祖先の min-w-0sticky 除去では直らず、スクローラ自身の [contain:paint] だけが効きます。自前の幅広コンテンツ(カスタムグリッド・チャート・図表)を横スクロールさせる時は、スクローラに [contain:paint] を付けてください:

<div className="overflow-x-auto [contain:paint]">
  {/* wide content — a chart, a custom grid, a diagram */}
</div>

プロパティ

Table

表は横にスクロールできます
プロパティ初期値説明
stripedbooleanfalse本文行の背景色を交互に変えます。
classNamestring-表全体の幅やセルの見え方を調整するクラスです。

Table の構成要素

表は横にスクロールできます
プロパティ初期値説明
classNamestring-行、見出し、セルに追加するクラスです。
childrenReactNode-見出し行、本文行、フッター行、セルなどの内容です。

使い方

import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@gunjo/ui";

export function Example() {
  return (
    <Table>
      <TableHeader>
        <TableRow>
          <TableHead>項目</TableHead>
          <TableHead>状態</TableHead>
          <TableHead className="text-right">金額</TableHead>
        </TableRow>
      </TableHeader>
      <TableBody>
        <TableRow>
          <TableCell className="font-medium">API</TableCell>
          <TableCell>完了</TableCell>
          <TableCell className="text-right">¥12,000</TableCell>
        </TableRow>
        <TableRow>
          <TableCell className="font-medium">ドキュメント</TableCell>
          <TableCell>確認中</TableCell>
          <TableCell className="text-right">¥8,000</TableCell>
        </TableRow>
      </TableBody>
    </Table>
  );
}

設計の判断(UIXHERO)

「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。