本文へ移動
uiify

Combobox

フィルタリングに対応する、単一値または複数値のARIAコンボボックス。

ブラウザー
Chrome 114+Firefox 125+Safari 17+
ティア
2
圧縮後のサイズ
5.18 kB
強制レイアウトの上限
0 ms
axe の上限
0
SSR 対応
はい
公開された契約
テストハーネス

プレイグラウンド

Combobox

標準

りんご
バナナ
さくらんぼ
デーツ

複数選択

ReactUI
React
UI
TypeScript
アクセシビリティ
デザインシステム

開いた状態

りんご
バナナ
さくらんぼ
デーツ

大規模

API

Combobox.Root

Prop型既定値説明
childrenReactNode—Comboboxのパーツ。control、tags、input、trigger、content。
items*ComboboxItemData[]—入力によるフィルタリングの対象となる、全選択肢のリスト。
defaultInputValuestring—入力値が非制御の場合の初期テキスト。
defaultOpenboolean—開閉状態が非制御の場合、最初からリストを開くか。
defaultValuestring | readonly string[]—選択が非制御の場合、初回レンダリングで選択する単一または複数の値。
multiplebooleanfalse複数の値をタグとして選択・削除できるようにします。
allowCustomValuebooleanfalseitemsにない入力テキストを選択値にできるようにします。
addOnPastebooleantrue複数選択モードで、貼り付けたテキストから区切り文字で分けた複数の値を追加します。
delimitersreadonly string[][","]複数選択モードで、入力値を確定または分割する文字。
maxValuesnumber—複数選択モードで選択できる値の最大数。
validateValue(value: string) => boolean—falseを返すと、独自の値を拒否します。
filterFn(items: ComboboxItemData[], inputValue: string) => ComboboxItemData[]—入力に応じて項目を絞り込む、組み込みのフィルターを置き換えます。
inputValuestring—入力欄のテキスト。入力値を制御します。
onInputValueChange(value: string) => void—入力が変わるたび、新しいテキストで呼び出します。
onOpenChange(open: boolean, details: OpenChangeDetails) => void—リストが開閉すると、変更理由とともに呼び出します。
onValueChange((value: string) => void) | ((value: string[]) => void)—選択値、または選択したすべての値の配列で呼び出します。
openboolean—リストが開いているか。開閉状態を制御します。
valuestring | readonly string[]—単一または複数の選択値。選択を制御します。

Combobox.Control

Prop型既定値説明
childrenReactNode—共通の視覚的コントロール内に描画するタグと入力。
classNamestring—コントロール要素に適用するクラス。
renderReactElement | ((props, state) => ReactElement)—動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。

Combobox.Tags

Prop型既定値説明
childrenReactNode—生成した削除可能なタグの後に追加する内容。
classNamestring—生成したタグのコンテナーに適用するクラス。
renderReactElement | ((props, state) => ReactElement)—動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。

Combobox.Input

Prop型既定値説明
classNamestring—テキスト入力に適用するクラス。
renderReactElement | ((props, state) => ReactElement)—動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。

Combobox.Trigger

Prop型既定値説明
childrenReactNode—リストを開くボタンの内容。アイコンなどを指定します。
classNamestring—トリガーボタンに適用するクラス。
renderReactElement | ((props, state) => ReactElement)—動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。

Combobox.Content

Prop型既定値説明
align"start" | "center" | "end"—選択した辺に沿った、入力に対するリストの配置。
children*(filteredItems: ComboboxItemData[]) => ReactNode—フィルタリング後に残った項目で呼び出す描画関数。
classNamestring—リストのポップアップに適用するクラス。
side"top" | "right" | "bottom" | "left"—入力のどちら側にリストを配置するか。

Combobox.Item

Prop型既定値説明
classNamestring—選択肢の要素に適用するクラス。
item*ComboboxItemData—この選択肢が描画する項目。通常はcontentのコールバックから取得します。

Combobox.Empty

Prop型既定値説明
childrenReactNode—フィルタリングで項目がなくなったときに表示する内容。
classNamestring—空の状態を示す要素に適用するクラス。

ComboboxItemData

Prop型既定値説明
disabledboolean—この項目を選択できなくします。
label*string—項目に表示し、フィルターの照合にも使うテキスト。
value*string—項目を選択したときに通知する値。

キーボード

キー操作
↓ / ↑開いて選択肢間を移動
Enter選択
Escape閉じる
a–z入力して選択肢を絞り込む

アクセシビリティ

ARIAのcomboboxとlistboxを使います。アクティブな選択肢をaria-activedescendantで読み上げます。Contentは開閉状態を公開し、選択肢はハイライト、無効、複数選択モードでの選択状態を公開します。一致する選択肢がない場合はEmptyで説明してください。動きを減らす設定では、ポップアップの出入りのアニメーションを無効にします。

スタイリングのフック

data-statedata-highlighteddata-disableddata-selected