Skip to content
fandhe-frontend
GitHub

Tabs

WAI-ARIA APG の Tabs パターンに準拠したタブ切り替え UI です。fandhe-frontend-headless-uitabs mod が構造・アクセシビリティ(WAI-ARIA・キーボード操作)・表示状態(data-*)のみを提供する unstyled 部品であり、Themes 版と異なりスタイル(CSS)は一切持ちません。ActivationMode(Automatic/Manual)や Orientation(Horizontal/Vertical)を切り替えられます。

スタイル済みの表示例は Tabs を参照してください。

関連 API: fandhe-frontend-headless-ui API

Demo

枠線・余白は docs サイト側のデモ枠であり、fandhe-frontend-headless-ui 自体はスタイルを持ちません。

Overview panel content.

Features

  • WAI-ARIA APG の Tabs パターン(role="tablist"/"tab"/"tabpanel"、aria-selected、相互参照する aria-controls/aria-labelledby、roving tabindex)に準拠したマークアップを組み立てる(tabs.rs モジュール doc)。
  • root / list / trigger / content の 4 パーツに加え、選択タブの位置を示す装飾パーツ indicator(opt-in、TabsProps::indicator)を持つ 5 パーツ構成。
  • ActivationMode(Automatic/Manual)を data-activation-mode として出力し、wasm-full 側のキーボード操作時の活性化挙動分岐に使われる(Automatic が既定)。
  • props.selected がどの value とも一致しない場合、または一致した項目が disabled の場合は全 trigger/content が inactive として決定的に描画される(panic しない)。

Anatomy

root
  list
    trigger
    indicator
  content

API Reference

Arguments

NameTypeDefaultDescription
props(orientation)Orientationdata-orientation(root/list/trigger/content 共通)・list の aria-orientation の双方に反映する。
props(activation_mode)ActivationModeAutomaticlist へ data-activation-mode として出力する(フォーカス移動と同時に活性化 or Enter/Space で活性化)。
props(loop_focus)boollist へ data-loop-focus として出力する(Arrow キーで端から反対端へ循環するか)。
TabItem(disabled)booltrue のとき disabled 属性・data-disabled・aria-disabled="true" を trigger に付与し、roving tabindex のフォールバック候補からも除外する。

Data Attributes

PartAttributeObserved Values
contentdata-orientationhorizontal
contentdata-stateactive, inactive
indicatordata-orientationhorizontal
indicatordata-stateactive
listdata-activation-modeautomatic
listdata-loop-focustrue
listdata-orientationhorizontal
rootdata-orientationhorizontal
triggerdata-orientationhorizontal
triggerdata-stateactive, inactive
triggerdata-valueoverview, settings

Examples

Vertical orientation・Manual activation・indicator なし

Demo とは異なる軸(縦向き・手動活性化・indicator 省略)の組み合わせを実演します。

Profile panel content.

Accessibility

WAI-ARIA

AttributeDescription
role="tablist" / aria-orientationlist に付与。
role="tab" / aria-selected / aria-controlstrigger に付与。選択状態と対応する content の id を表す。
role="tabpanel" / aria-labelledbycontent に付与。対応する trigger の id を指す。