Search

検索入力

プレビュー

使いどころ

使う場面

  • 一覧や画面内を絞り込む、1 行の検索ボックス
  • Enter で検索を確定する場面は onSearch、打つたびに絞り込む場面は onValueChange を使い分ける
  • ショートカットを案内するときは shortcut に "⌘K" のように書く。表示だけで、キー自体は利用側で割り当てる

使わない場面

  • 操作の呼び出しや画面移動を兼ねる検索。CommandPalette を使う
  • 選択肢から 1 つ選ぶ入力。候補が多いときは Combobox を使う
  • フォームの一般的な文字入力。Input を使う

使い方

<Search placeholder="検索..." shortcut="⌘K" onSearch={handleSearch} />

プロパティ

名前型デフォルト説明
placeholderstringなしプレースホルダーテキスト
shortcutstringなしキーボードショートカットの表示テキスト
onSearch(value: string) => voidなし検索テキスト変更時のコールバック
valuestringなし入力値(制御)
defaultValuestringなし初期値(非制御)
onValueChange(value: string) => voidなし入力値が変わるたびに呼ばれる
aria-labelstringなしアクセシビリティ用のラベル
inputPropsOmit<InputHTMLAttributes<HTMLInputElement>, "value" | "onChange" | "type">なし内側の input に渡す属性(name、disabled、autoComplete、onBlur など)

型と必須かどうかはソースの型定義から自動で生成しています。表にない HTML 標準の属性(className や aria-* など)も、ルート要素にそのまま渡せます。

キーボード操作

キー動作
Tab検索ボックスにフォーカスを移す
EnteronSearch を呼ぶ。日本語入力の変換確定中は呼ばない

アクセシビリティ

  • 外側が role="search" のランドマークになり、スクリーンリーダーで検索領域へ移動できる
  • 虫眼鏡アイコンは aria-hidden で、ショートカット表示(kbd)も読み上げない
  • aria-label を省くと placeholder が入力欄の名前になる。placeholder を変えるときは名前として通じる言葉にし、ページ内に検索が複数あるなら aria-label で区別する

文言

  • placeholder は「注文を検索」「メンバーを探す」のように、何を探せるかを書く。「検索」だけは対象が分からない
  • 検索結果がないときは、空の状態を EmptyState で示し、条件を変える方法を伝える

関連するコンポーネント