フィルターチップ
componentタグやキーワードで一覧を絞り込むときに使う小さなボタンです。選択中かどうかが色で分かります。
isSelected × state
未選択 / 選択 × enable / hover / disabled
使用例
複数チップを並べたフィルター UI — クリックで選択 / 解除をトグル
機能
このコンポーネントの用途
タグや単語でコンテンツを絞り込むトグル可能なチップ。選択と同時に結果が
その場で更新される(送信・ページ遷移を伴わない)複数同時選択の絞り込みに使う。
見分け方: 「1 つ選ぶと他が外れる」なら filter-chip ではない。各チップは独立した
ON/OFF(aria-pressed)で、排他制御の仕組みを持たない。
toggle-btn-group の複数選択と仕組み(aria-pressed の独立トグル)は同じ。見分け方は
「押して一覧の件数(絞り込みの結果)が変わるか」: 変わるなら filter-chip、変わらず見た目・書式・
重ねて表示する情報(地図の駅表示など)だけが変わるなら toggle-btn-group。
複数同時選択の絞り込み=filter-chip / 一覧を 1 つの軸(すべて・有望・休眠 …)で
切り替える単一選択=tab(tabs-line + tab-count)/ フォーム入力値の単一選択=radio
(選択肢が多ければ select)/ ON-OFF 設定=checkbox / 絞り込みでない書式・表示形式の
切り替え(太字 / 斜体、一覧 / グリッド)=toggle-btn-group。
使用法
推奨される使い方と、やりがちな NG パターン
OK
- ✓選択状態は aria-pressed="true|false"。
- ✓件数表示は filter-chip-count。
NG
- ✕単一選択(1 つ選ぶと他が外れる)に並べない → 同じ一覧の表示を切り替えるなら tab (tabs-line + tab-count で件数付き)、フォームの入力値なら radio / select。 件数付きチップの見た目が合っていても、排他にするとユーザーは何個選べるか分からなくなる (2026-09 利用側の管理画面で「有望 / 意欲が高い / 休眠から再訪 …」から 1 つ選ぶ絞り込みに filter-chip を並べた実例)。
- ✕<a class="filter-chip"> にしない → filter-chip は <button type="button"> のトグル。 href で URL を切り替える 1 つ選択の絞り込みは tab、別ページへの移動は link / menu。
- ✕aria-current を付けない → 状態は aria-pressed のみ。aria-current="page" は menu の 現在地用で、併用すると支援技術が「押下」と「現在地」を二重に読み上げる。
- ✕送信やページ遷移(リロード・URL 変更)を伴う検索・絞り込みフォームに使わない → checkbox / select + 明示的な適用ボタンにする(選択と同時に送信するとユーザーの 予期しないコンテキスト変化になる: WCAG 3.2.2)。
- ✕チップ形状を独自シェイプに変えない → 何個選べるか直感が崩れる(guidelines 参照)。
- ✕filter-chip-check の中に svg を直置きしない → filter-chip-check-circle で必ず包む。 省くと svg が既定サイズ(300×150px)で描かれチップを突き抜ける(evals status-table 2026-09-03 で実例)。sprite の <use> を使う場合も同じ 3 層構造にする。
選択状態は色+チェックで示す
色だけに頼らない選択中は色に加えチェックマークでも示す。色を区別できなくても選択が分かる。
<button class="filter-chip" aria-pressed="true"> …<span class="filter-chip-check">…✓</span> </button>
チェックを外し背景色だけで選択を示すと、色を区別できない人に伝わらない。
<button class="filter-chip"> <!-- チェックなし・色のみ --> <span class="filter-chip-label">自治体連携</span> </button>
フィルターチップのアクセシビリティ
フィルターチップはトグルボタンです。選択状態は aria-pressed で伝え、色だけに頼らずチェックでも示します。WCAG 2.2 全基準は アクセシビリティ ページを参照。
期待される配慮
Presentation / Adaptability / Interaction / Assistive Technology
選択中は背景色+チェックマークで示し、色だけに頼らない。件数も併記する。
文字は rem / トークンで拡大に追従。チップは折り返して並ぶ。
Tab で到達、Enter/Space で選択/解除。フォーカスリングが出る。
aria-pressed="true/false" で選択状態が伝わる。左アイコンとチェックは装飾=aria-hidden。
DS が担保する機能
追加実装なしで満たされる
- ✓ネイティブ
<button>ベースで役割が確立 - ✓選択中はチェックマークを表示(色+形の二重表現)
- ✓キーボードフォーカスリング(
:focus-visible・info/600)
実装時の必須対応
プロダクト側で担保する
- !選択状態を
aria-pressed="true/false"で表し、トグルで更新する - !左アイコン・チェックの SVG は
aria-hidden="true" - !件数はラベルと共に読まれるようにする(例: 「自治体連携 124件」)
- !フィルター結果の更新は
aria-live等で件数変化を通知する
テスト方法
キーボード / スクリーンリーダー / 自動チェック
| キー | 動作 |
|---|---|
| Tab | 各チップへ移動 |
| Enter / Space | 選択 / 解除をトグル |
- SR「トグルボタン、押されている / いない」とラベル・件数が読まれる
- 操作グレースケール表示でも選択がチェックで分かる
- 自動axe / Lighthouse で
aria-pressed・コントラストを確認
選択状態は aria-pressed で伝える
達成基準:WCAG 4.1.2 名前・役割・値
aria-pressed でトグル状態を伝える。SR が「押されている」と読む。
<button class="filter-chip" aria-pressed="true">教育機関</button>
aria-pressed が無いと、見た目が選択でも SR には状態が伝わらない。
<button class="filter-chip">教育機関</button> <!-- aria-pressed なし -->