Tabs

同じ場所で、関連するパネルを切り替えます。

最初の有効なパネルを表示します。

利用可能な項目はありません。

利用可能な項目はありません。

アイコンと件数

まだ読んでいない連絡です。

狭い場所と長い名前で折り返す

概要のパネルです。

右から左に読む場合

المحتوى

使いどころ

  • 同じ対象についての関連するパネル(内容・設定・履歴など)を、同じ場所で切り替える時に使います。
  • 別のページへ移る切り替えはNavigation、一覧の絞り込みの切り替えはFilterBar、長い資料の節への移動はTableOfContentsを使います。
  • JavaScriptがないと選んだパネルしか見えないので、利用者が必ず見る情報をタブの中だけに置きません。

使い方

id・label・itemsを渡し、TabsControllerをtabsとして登録します。idと各valueは一意にします。

Highriseのタブと同じく、タブの並びの下に1pxの淡い灰色の罫線を一本引き、その上に白いタブ(1pxの淡い灰色の枠、上の角だけ角丸3px、高さ21px、12pxの文字)を3pxずつ空けて並べます。選んだタブは文字の太さと色を変えず、下の枠を白にして罫線を切り、下のパネルとつなげます。選んでいないタブはホバーすると名前に下線を引きます。iconは名前の前、countはHighriseの「3 People」と同じく、名前と同じ色と太さの数字を名前の後ろに出します(ピルにはしません)。無効なタブは形をそのままにし、文字だけを灰色にします。

初めはselectedのタブを選びます。省略した時や、見つからない・無効なタブの時は、最初の選べるタブを選びます。選べるタブが一つもない時は、タブを出さず「利用可能な項目はありません。」を出します。

タブを押すか矢印キーで移ると、すぐにそのパネルへ切り替えます。無効なタブは表示しますが、選べず、矢印キーでも飛ばします。

切り替えるとtabs:beforechange・tabs:changeを発火します。選んだタブをURLなどに残す時は、利用側で行います。

JavaScriptなしでは選んだタブのパネルだけを表示し、タブを押しても切り替わりません。

キーボード

Tabsのキーボード操作
キー動作
← / →前・次の選べるタブへ移り、そのパネルを表示します。端では反対の端へ回ります。右から左へ書く言語では向きが逆になります。
Home / End最初・最後の選べるタブへ移り、そのパネルを表示します。
Tab選んでいるタブから、表示中のパネルへ移ります。

アクセシビリティ

  • タブの並びはlabelを読み上げ名に持つrole="tablist"、各タブはrole="tab"のボタン、パネルはrole="tabpanel"です。タブとパネルをaria-controls・aria-labelledbyで結びます。
  • 選んだタブはaria-selected="true"で、Tabで入るのは選んだタブだけです。パネルはtabindex="0"でフォーカスできます。

イベント

Tabsが発火するイベント
イベント内容
tabs:beforechange利用者がタブを切り替える直前に発火します。detailはvalue・previousValue・reason(pointerまたはkeyboard)です。取り消すと切り替えません。
tabs:change切り替えた後に発火します。detailはtabs:beforechangeと同じです。

API

Tabs

Tabsのprops
名前型既定値説明
id必須stringタブとパネルのidの元。ページ内で一意にする。
label必須stringtablistの読み上げ名。
items必須readonly TabItem[]並べるタブとパネル。選べるタブが一つもない時は「利用可能な項目はありません。」を出す。
selectedstring最初に選んでおくタブのvalue。省略した時、見つからない時、無効なタブの時は、最初の選べるタブにする。

登録するcontroller:tabs(TabsController)

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/tabs.css

TabItem

TabItem
名前型既定値説明
value必須stringタブを識別する値。Tabsの中で一意にする。selectedとtabs:changeのdetail.valueに使う。
label必須stringタブの名前。パネルの読み上げ名にもなる。
content必須Childタブを選んだ時に出すパネルの中身。
disabledboolean選べないタブ。表示はするが押せず、矢印キーの移動でも飛ばす。
iconChild名前の前のアイコン(Iconなど)。
countnumber名前の後に出す件数。0も表示し、省略すると出さない。

コード

HTML
Hono JSX