Skip to content
fandhe-frontend
GitHub

Toolbar

fandhe-frontend-pre-styled-uitoolbar mod が提供するスタイル済み Toolbar 部品です。

ボタン・リンク・セパレータ・ToggleGroup を横方向(または縦方向)にグループ化する操作バーです。role="toolbar" + aria-orientation を持つグループ化コンテナと、roving tabindex(フォーカスが常に 1 項目のみに当たる状態)の状態機械を提供します。押下状態の管理は独自実装せず、既存の Toggle Group の状態機械(ToggleGroup/MultiToggleGroup)をそのまま再利用します。矢印キーによる実際のフォーカス移動(DOM 配線)はクライアントランタイム(fandhe-frontend-wasm-full)側の後続実装です。

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

Demo

headless-ui の Toolbar(role="toolbar")に pre-styled-ui の recipe CSS を適用した静的掲示です。Button / Separator / ToggleGroup(既存の ToggleGroup 状態機械を再利用)/ Link の 6 パーツすべてを 1 つの Toolbar 内に組み合わせています。roving tabindex(focused=0)により先頭の Undo ボタンのみ tabindex="0" です。

Docs

Features

  • ボタン・リンク・セパレータ・ToggleGroup を横方向(または縦方向)にグループ化する操作バー。Root / Button / Link / Separator / ToggleGroup / ToggleItem の 6 anatomy パーツを持つ。
  • roving tabindex(focused/item_count/loop_focus/orientation の複合状態機械 Toolbar)。フォーカス対象の項目のみ tabindex="0"、それ以外は tabindex="-1" になる。
  • disabled 項目もフォーカス順序から除外しない(WAI-ARIA APG の toolbar パターン推奨に従う意図的な設計。aria-disabled/data-disabled で操作不能のみを表す)。
  • 押下状態の管理は独自実装せず、既存の ToggleGroup/MultiToggleGroup 状態機械を再利用する。
  • separator は toolbar 自身の向きと直交する aria-orientation を出力する(横向き toolbar のセパレータは縦線になる)。
  • link は既存の Link コンポーネントへ完全委譲し、external 時の target="_blank"/rel="noopener noreferrer" を不可分に付与する。

Anatomy

root
  button
  separator
  toggle-group
    toggle-item
  link

API Reference

Arguments

NameTypeDefaultDescription
orientationOrientationOrientation::Horizontalroot の role="toolbar" に付与する向き(Horizontal/Vertical)。aria-orientation/data-orientation の両方へ反映される。
label&strroot に付与する aria-label(空文字列のときは省略)。
focusedboolbutton/link/toggle-item に付与。true のとき tabindex="0"、false のとき tabindex="-1"(roving tabindex)。

Data Attributes

PartAttributeObserved Values
rootdata-orientationhorizontal
toggle-itemdata-stateoff
toggle-itemdata-valuebold, italic

Accessibility

WAI-ARIA

AttributeDescription
role="toolbar" / aria-orientationroot に付与。orientation 引数の値(horizontal/vertical)を反映する。
role="separator" / aria-orientationseparator に付与。toolbar 自身の向きと直交する値になる。
role="group"toggle-group に付与(aria-orientation は role="group" に許可されないため付与しない)。
aria-pressedtoggle-item に付与。押下状態(true/false)を表す。
aria-disableddisabled な button/toggle-item に付与。ネイティブ disabled は付与せずフォーカス順序に残す。