Skip to content
fandhe-frontendcore v0.4.3
GitHub

Table

fandhe-frontend-pre-styled-ui の table mod が提供するスタイル済み Table 部品です。

表形式データを表示する部品です。TableVariant(Line/Outline)で外枠・区切り線を、size(Xs〜Xl)でセルの padding/font-size を、striped(bool)で縞模様表示を、sticky_header(bool)で column-header(th)の position: sticky 表示を、interactive(bool、イシュー #2052)で row の hover 背景表示を切り替えます(5 軸 variant)。scroll_area(chakra Table.ScrollArea 相当)で root をスクロール枠に包み、sticky_header と組み合わせて見出し行を固定できます。column_header は scope="col" を関数側で固定し呼び出し側の偽装を除去します。呼び出し側は data-selected(行選択、accent-subtle 配色)・data-align(start/center/end、セル整列)を row/cell/column-header へ付与でき、column_header/cell は aria-sort 等の属性をそのまま通過させます(ソート・選択の生産は headless data-table 側の責務です)。

関連 API: fandhe-frontend-pre-styled-ui API

Demo

table/thead/tbody/tfoot/tr/th/td/caption の HTML 意味論を尊重した表組み。variant(line / outline)・size(xs 〜 xl)・striped・sticky_header・interactive(イシュー #2052)の 5 軸 variant と、scroll_area(chakra Table.ScrollArea 相当のスクロール枠)を持ちます。data-selected(選択行)・data-align(セル整列)は呼び出し側が付与する共有語彙です。

Variant
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
Size
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
Striped
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
Scroll area
NameEmailRole
User 1user1@example.comMember
User 2user2@example.comMember
User 3user3@example.comMember
User 4user4@example.comMember
User 5user5@example.comMember
User 6user6@example.comMember
User 7user7@example.comMember
User 8user8@example.comMember
User 9user9@example.comMember
User 10user10@example.comMember
Interactive
登録済みユーザー一覧
NameEmailRole
Alicealice@example.comAdmin
Bobbob@example.comMember
Carolcarol@example.comMember
Selectable rows
NameEmail
Alicealice@example.com
Bobbob@example.com
Invoices
A list of your recent invoices.
InvoiceStatusAmount
INV001Paid$250.00
INV002Pending$150.00
Total$400.00
Actions
NameActions
Alice
Sortable header
Name
Alice

Features

  • TableVariant(Line/Outline、crates/pre-styled-ui/src/table.rs:172-186)で外枠・区切り線を切り替える(イシュー #1572 で Outline の行罫線・ヘッダー背景を chakra-ui/Radix Themes 基準へ是正)
  • size(Size、Xs〜Xl の 5 段)でセルの padding/font-size を切り替える(padding は --fandhe-space-* トークン、イシュー #1572)
  • striped(bool)で本文行の背景を交互に変える(table.rs「striped の実装」節)
  • sticky_header(bool、イシュー #1571)で column-header(th)を position: sticky にする(table.rs「sticky ヘッダーの実装」節)
  • interactive(bool、イシュー #2052、shadcn/ui 突合)で row に bg-muted の hover 背景を付ける(opt-in、chakra-ui interactive 由来。table.rs「interactive 軸(行 hover)」節)
  • data-selected(呼び出し側が付与する共有語彙、イシュー #2052)で row を選択状態(accent-subtle/accent-fg-subtle)にする(table.rs「data-selected 行状態」節)
  • data-align(呼び出し側が付与する共有語彙、start/center/end、イシュー #2052)で cell/column-header の text-align を切り替える(headless positioning.rs と共有する既存語彙、table.rs「data-align セル整列」節)
  • scroll_area(イシュー #1572、chakra Table.ScrollArea 相当)で root を overflow: auto のスクロール枠に包み、sticky_header と組み合わせて見出し行を固定できる(table.rs「scroll-area パーツ」節)
  • caption は font-weight: medium・font-size: xs・text-align: inherit(chakra-ui 基準、イシュー #1572)
  • column_header は scope="col" を関数側で固定し呼び出し側の偽装を除去する(table.rs セキュリティ不変条件節、COLUMN_HEADER_RESERVED)
  • column_header/cell は aria-sort 等の呼び出し側属性をそのまま通過させる(ソート・選択の生産は headless data-table〔#2124〕の責務、table.rs「スコープ外」節)

Anatomy

root
  caption
  header
    row
      column-header
  body
      cell
scroll-area
  footer

API Reference

Arguments

NameTypeDefaultDescription
variantTableVariantLine外枠・区切り線の見た目(table.rs「variant について」節)。
sizeSizeMdセルの padding/font-size(table.rs「variant について」節)。
stripedboolfalse縞模様表示の有無(table.rs「striped の実装」節)。
sticky_headerboolfalsecolumn-header(th)を position: sticky にする(イシュー #1571、table.rs「sticky ヘッダーの実装」節)。
interactiveboolfalserow に bg-muted の hover 背景を付ける(イシュー #2052、table.rs「interactive 軸(行 hover)」節)。

Data Attributes

PartAttributeObserved Values
celldata-alignend
column-headerdata-alignend
rowdata-selected(値なし)

CSS Variables

VariableDefault
--fandhe-table-cell-paddingvar(--fandhe-space-3) var(--fandhe-space-4)
--fandhe-table-font-sizevar(--fandhe-font-font-size-sm)
--fandhe-table-header-bgvar(--fandhe-color-bg)
--fandhe-table-header-positionstatic
--fandhe-table-last-row-border—
--fandhe-table-row-bordernone
--fandhe-table-row-hover-bg—
--fandhe-table-scroll-max-heightnone
--fandhe-table-sticky-offset0
--fandhe-table-stripe-bgtransparent

Examples

Striped

striped=true・header/body を組み合わせた例です。

Name
Alice

Selectable rows

interactive=true と行の data-selected を組み合わせた例です(イシュー #2052)。

Name
Alice
Bob

column_header/cell の data-align="end" で金額列を右寄せし、footer に合計行を持たせた例です(イシュー #2052)。

InvoiceAmount
INV001$250.00
Total$250.00

Scroll area

scroll_area で包み、sticky_header=true と組み合わせた例です(イシュー #1572)。

Name
Alice
Bob
Carol

Accessibility

WAI-ARIA

AttributeDescription
scope="col"(column-header)column_header が固定付与するテーブル見出しの意味論属性(呼び出し側の偽装は除去、table.rs セキュリティ不変条件節)。role/aria-* 自体はネイティブ table 要素の意味論に委ねており固有の出力はない。
aria-sort(column-header、呼び出し側付与)ソート状態の意味論属性。table.rs は通過させるのみで生産しない(生産は headless data-table〔#2124〕の責務、イシュー #2052、table.rs「スコープ外」節)。