Caroa UI

CommandCombobox

検索可能なコンボボックスコンポーネント。単一選択・複数選択に対応。

インポート

import { CommandCombobox } from '@caroainc/ui-components/client'

個別サブパス(バンドルサイズを抑えたい場合):

import { CommandCombobox } from '@caroainc/ui-components/command-combobox'

Select との使い分け

場面使うもの
選択肢が少ない・固定(ステータス、ロール等)Select
選択肢が多い・検索が必要(メンバー、プロジェクト等)CommandCombobox

単一選択

Loading...
const [value, setValue] = useState('')
 
<CommandCombobox
  options={[
    { value: '1', label: '田中太郎', subtitle: 'デザイナー' },
    { value: '2', label: '鈴木花子', subtitle: 'ディレクター' },
    { value: '3', label: '佐藤一郎', subtitle: 'エンジニア' },
  ]}
  value={value}
  onValueChange={setValue}
  placeholder="メンバーを選択..."
  searchPlaceholder="名前で検索..."
  emptyText="見つかりません"
/>

複数選択

multiple を指定すると複数選択モードになります。選択済みアイテムはBadgeで表示され、個別に解除できます。

Loading...
const [values, setValues] = useState<string[]>([])
 
<CommandCombobox
  multiple
  options={members}
  value={values}
  onValueChange={setValues}
  placeholder="メンバーを選択..."
  maxDisplay={3}
/>

Props

共通Props

PropTypeDefaultDescription
options*{ value: string; label: string; subtitle?: string }[]-選択肢の配列
placeholderstring'選択してください'プレースホルダー
searchPlaceholderstring'検索...'検索欄のプレースホルダー
emptyTextstring'該当する項目がありません'結果が空の時のメッセージ
disabledboolean-無効状態
loadingboolean-ローディング表示
onSearchChange(search: string) => void-サーバーサイド検索時のコールバック(デバウンス付き)
debounceMsnumber300onSearchChangeのデバウンス間隔(ms)
size'xs' | 'sm' | 'default' | 'lg' | 'xl''default'トリガーButtonへ委譲されるサイズ

refはトリガーのbutton要素へフォワードされます。id / aria-* / name等の未知propsもトリガーButtonへそのまま委譲されるため、FieldFieldControlやreact-hook-formのFormControlと組み合わせて使用できます。

<FieldControl>
  <CommandCombobox options={options} value={value} onValueChange={setValue} />
</FieldControl>

単一選択(デフォルト)

PropTypeDefaultDescription
valuestring-選択された値
onValueChange(value: string) => void-値が変更された時のコールバック

複数選択(multiple={true}

PropTypeDefaultDescription
multiple*true-複数選択モードを有効にする
valuestring[]-選択された値の配列
onValueChange(value: string[]) => void-値が変更された時のコールバック
maxDisplaynumber3トリガーに表示する選択済みアイテムの最大数。超えた分は「+N」表示

On this page