コンボボックスComboboxExperimental

検索しながら候補を選択できるコンボボックスです。

プレビュー

状態とバリエーション

初期選択あり

よく使う選択肢を初期値にして、操作ステップを減らします。

よく使う選択肢を初期表示しています。

選べない項目

選択できない項目も表示し、権限や条件によって選べないことを示します。

利用できないロールは表示したまま無効化します。

一致なし

検索結果がない場合は、次の行動がわかるメッセージを表示します。

検索結果の有無は、開いた候補一覧の中で伝えます。

新規作成(creatable)

検索テキストがどの候補にも一致しない時、「作成」項目で自由入力の値を追加できます。作成の合図(onCreate)を受けて、options への追加と value のセットは呼び出し側が行います。

一覧に無い取引先は、入力してそのまま追加できます。

プロパティ

表は横にスクロールできます
プロパティ初期値説明
idstring-ラベルと選択ボタンを紐づけるための ID です。
optionsComboboxOption[]-値、表示名、無効化状態、無効化理由を持つ選択肢の配列です。
valuestring-外部で管理する選択値です。
onValueChange(value: string) => void-選択値が変わった時に呼ばれる処理です。クリア時は空文字を返します。
placeholderstring'Select option...'未選択時に選択ボタンへ表示するテキストです。
searchPlaceholderstring'Search...'候補一覧内の検索欄に表示する入力例です。
searchClearLabelstring'Clear search'検索欄をクリアするボタンの読み上げ用ラベルです。
emptyMessagestring'No option found.'検索結果がない場合に表示するテキスト。
clearablebooleantrue選択済みの値をクリアするボタンを表示するか。
clearLabelstring'Clear selection'選択をクリアするボタンの読み上げ用ラベルとツールチップです。
creatablebooleanfalse検索テキストがどの候補にも一致しない時、自由入力の値を追加する「作成」項目を表示します。(#200)
onCreate(inputValue: string) => void-「作成」選択時に呼ばれます。合図のみで、options への追加と value のセットは呼び出し側が行います。
createLabel(inputValue: string) => ReactNode`Create "<text>"`「作成」項目のラベルをカスタマイズします。既定は英語表記です。
disabledboolean-選択ボタンを操作できない状態にします。

使い方

import * as React from "react";
import { Combobox, FormControl, FormGroup, FormLabel } from "@gunjo/ui"

const options = [
  { value: "a", label: "Option A" },
  { value: "b", label: "Option B" },
];

export function ComboboxUsage() {
  const [value, setValue] = React.useState("");

  return (
    <FormGroup className="w-full max-w-sm">
      <FormLabel htmlFor="option">Option</FormLabel>
      <FormControl>
        <Combobox id="option" options={options} value={value} onValueChange={setValue} />
      </FormControl>
    </FormGroup>
  );
}

使用コンポーネント

設計の判断(UIXHERO)

「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。