Autocomplete
Autocompleteは、ユーザーのテキスト入力に応じて候補を表示するために使用されるコンポーネントです。
<Autocomplete.Root placeholder="Select a digimon">
<Autocomplete.Option value="アグモン">アグモン</Autocomplete.Option>
<Autocomplete.Option value="ガブモン">ガブモン</Autocomplete.Option>
<Autocomplete.Option value="テントモン">テントモン</Autocomplete.Option>
<Autocomplete.Option value="ピヨモン">ピヨモン</Autocomplete.Option>
<Autocomplete.Option value="ゴマモン">ゴマモン</Autocomplete.Option>
<Autocomplete.Option value="パルモン">パルモン</Autocomplete.Option>
<Autocomplete.Option value="パタモン">パタモン</Autocomplete.Option>
<Autocomplete.Option value="テイルモン">テイルモン</Autocomplete.Option>
</Autocomplete.Root>
使い方
import { Autocomplete } from "@yamada-ui/react"
import { Autocomplete } from "@/components/ui"
import { Autocomplete } from "@workspaces/ui"
<Autocomplete.Root>
<Autocomplete.Group>
<Autocomplete.Label />
<Autocomplete.Option />
</Autocomplete.Group>
</Autocomplete.Root>
グループ化する
<Autocomplete.Root placeholder="Select a digimon">
<Autocomplete.Group>
<Autocomplete.Label>成長期</Autocomplete.Label>
<Autocomplete.Option value="アグモン">アグモン</Autocomplete.Option>
<Autocomplete.Option value="ガブモン">ガブモン</Autocomplete.Option>
<Autocomplete.Option value="テントモン">テントモン</Autocomplete.Option>
<Autocomplete.Option value="ピヨモン">ピヨモン</Autocomplete.Option>
<Autocomplete.Option value="ゴマモン">ゴマモン</Autocomplete.Option>
<Autocomplete.Option value="パルモン">パルモン</Autocomplete.Option>
<Autocomplete.Option value="パタモン">パタモン</Autocomplete.Option>
<Autocomplete.Option value="テイルモン">テイルモン</Autocomplete.Option>
</Autocomplete.Group>
<Autocomplete.Group label="成熟期">
<Autocomplete.Option value="グレイモン">グレイモン</Autocomplete.Option>
<Autocomplete.Option value="ガルルモン">ガルルモン</Autocomplete.Option>
<Autocomplete.Option value="カブテリモン">カブテリモン</Autocomplete.Option>
<Autocomplete.Option value="バードラモン">バードラモン</Autocomplete.Option>
<Autocomplete.Option value="イッカクモン">イッカクモン</Autocomplete.Option>
<Autocomplete.Option value="トグモン">トグモン</Autocomplete.Option>
<Autocomplete.Option value="エンジェモン">エンジェモン</Autocomplete.Option>
</Autocomplete.Group>
<Autocomplete.Group label="完全体">
<Autocomplete.Option value="メタルグレイモン">
メタルグレイモン
</Autocomplete.Option>
<Autocomplete.Option value="ワーガルルモン">
ワーガルルモン
</Autocomplete.Option>
<Autocomplete.Option value="アトラーカブテリモン">
アトラーカブテリモン
</Autocomplete.Option>
<Autocomplete.Option value="ガルダモン">ガルダモン</Autocomplete.Option>
<Autocomplete.Option value="ズドモン">ズドモン</Autocomplete.Option>
<Autocomplete.Option value="リリモン">リリモン</Autocomplete.Option>
<Autocomplete.Option value="ホーリーエンジェモン">
ホーリーエンジェモン
</Autocomplete.Option>
<Autocomplete.Option value="エンジェウーモン">
エンジェウーモン
</Autocomplete.Option>
</Autocomplete.Group>
<Autocomplete.Group label="究極体">
<Autocomplete.Option value="ウォーグレイモン">
ウォーグレイモン
</Autocomplete.Option>
<Autocomplete.Option value="メタルガルルモン">
メタルガルルモン
</Autocomplete.Option>
<Autocomplete.Option value="ヘラクルカブテリモン">
ヘラクルカブテリモン
</Autocomplete.Option>
<Autocomplete.Option value="ホウオウモン">ホウオウモン</Autocomplete.Option>
<Autocomplete.Option value="ヴァイクモン">ヴァイクモン</Autocomplete.Option>
<Autocomplete.Option value="ロゼモン">ロゼモン</Autocomplete.Option>
<Autocomplete.Option value="ゴッドドラモン">
ゴッドドラモン
</Autocomplete.Option>
<Autocomplete.Option value="ホーリードラモン">
ホーリードラモン
</Autocomplete.Option>
</Autocomplete.Group>
</Autocomplete.Root>
itemsを使う
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "オメガモン", value: "オメガモン" },
{ label: "ディアボロモン", value: "ディアボロモン" },
{
items: [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
label: "成長期",
},
{
items: [
{ label: "グレイモン", value: "グレイモン" },
{ label: "ガルルモン", value: "ガルルモン" },
{ label: "カブテリモン", value: "カブテリモン" },
{ label: "バードラモン", value: "バードラモン" },
{ label: "イッカクモン", value: "イッカクモン" },
{ label: "トグモン", value: "トグモン" },
{ label: "エンジェモン", value: "エンジェモン" },
],
label: "成熟期",
},
{
items: [
{ label: "メタルグレイモン", value: "メタルグレイモン" },
{ label: "ワーガルルモン", value: "ワーガルルモン" },
{ label: "アトラーカブテリモン", value: "アトラーカブテリモン" },
{ label: "ガルダモン", value: "ガルダモン" },
{ label: "ズドモン", value: "ズドモン" },
{ label: "リリモン", value: "リリモン" },
{ label: "ホーリーエンジェモン", value: "ホーリーエンジェモン" },
{ label: "エンジェウーモン", value: "エンジェウーモン" },
],
label: "完全体",
},
{
items: [
{ label: "ウォーグレイモン", value: "ウォーグレイモン" },
{ label: "メタルガルルモン", value: "メタルガルルモン" },
{ label: "ヘラクルカブテリモン", value: "ヘラクルカブテリモン" },
{ label: "ホウオウモン", value: "ホウオウモン" },
{ label: "ヴァイクモン", value: "ヴァイクモン" },
{ label: "ロゼモン", value: "ロゼモン" },
{ label: "ゴッドドラモン", value: "ゴッドドラモン" },
{ label: "ホーリードラモン", value: "ホーリードラモン" },
],
label: "究極体",
},
],
[],
)
return <Autocomplete.Root items={items} placeholder="Select a digimon" />
クエリを使う
const items = useMemo<Autocomplete.Item[]>(
() => [
{
label: (
<>
<Text as="span" flex="1">
アグモン
</Text>
<HeartIcon fontSize="lg" />
</>
),
query: "アグモン",
value: "アグモン",
},
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return <Autocomplete.Root items={items} placeholder="Select a digimon" />
バリアントを変更する
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Autocomplete.Root
key={variant}
variant={variant}
placeholder={toTitleCase(variant)}
items={items}
/>
)}
</For>
</VStack>
)
サイズを変更する
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<VStack>
<For each={["xs", "sm", "md", "lg", "xl"]}>
{(size) => (
<Autocomplete.Root
key={size}
size={size}
placeholder={`Size: ${size}`}
items={items}
/>
)}
</For>
</VStack>
)
デフォルト値を設定する
デフォルト値を設定する場合は、defaultValueに値を設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
defaultValue="アグモン"
placeholder="Select a digimon"
items={items}
/>
)
デフォルトの入力値を設定する
デフォルトの入力値を設定する場合は、defaultInputValueに文字列を設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
defaultInputValue="モン"
openOnFocus
placeholder="Select a digimon"
items={items}
/>
)
複数選択を有効する
複数選択を有効にする場合は、multipleをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return <Autocomplete.Root multiple placeholder="Select digimon" items={items} />
最大選択数を制限する
最大選択数を制限する場合は、maxに数値を設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
items={items}
multiple
max={3}
placeholder="Select digimon"
/>
)
区切り文字を変更する
区切り文字を変更する場合は、separatorに文字列を設定します。デフォルトでは、,が設定されています。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
items={items}
multiple
placeholder="Select digimon"
separator=";"
/>
)
カスタム値を許可する
カスタム値を許可する場合は、allowCustomValueをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
allowCustomValue
placeholder="Select a digimon"
items={items}
onChange={(value) => console.log("value:", value)}
/>
)
オフセットを変更する
オフセットを変更する場合は、gutterまたはoffsetに値を設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root items={items} placeholder="Select a digimon" gutter={16} />
)
アニメーションを変更する
アニメーションを変更する場合は、animationSchemeに"block-start"や"inline-end"などを設定します。
デフォルトでは、"scale"が設定されています。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
animationScheme="inline-start"
items={items}
placeholder="Select a digimon"
/>
)
配置を変更する
配置を変更する場合は、placementに"start"や"end-end"などを指定します。デフォルトでは、"end"が設定されています。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
animationScheme="inline-start"
items={items}
placeholder="Select a digimon"
placement="center-end"
rootProps={{ w: "xs" }}
/>
)
スクロールをブロックする
スクロールをブロックするには、blockScrollOnMountをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
items={items}
blockScrollOnMount
placeholder="Select a digimon"
/>
)
スクロール時にドロップダウンを閉じる
スクロール時にドロップダウンを閉じる場合は、closeOnScrollをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
closeOnScroll
items={items}
placeholder="Select a digimon"
/>
)
変更時にドロップダウンを開くイベントをハンドルする
変更時にドロップダウンを開くイベントをハンドルする場合は、openOnChangeに関数を設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
openOnFocus={false}
openOnChange={(ev) => ev.target.value.length > 2}
items={items}
placeholder="Select a digimon"
/>
)
"use client"をファイルの上部に追加する必要があります。変更時にドロップダウンを閉じるイベントをハンドルする
変更時にドロップダウンを閉じるイベントをハンドルする場合は、closeOnChangeに関数を設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
openOnFocus={false}
closeOnChange={(ev) => !ev.target.value.length}
items={items}
placeholder="Select a digimon"
/>
)
"use client"をファイルの上部に追加する必要があります。フォーカス時にドロップダウンを開かない
フォーカス時にドロップダウンを開かない場合は、openOnFocusをfalseに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
openOnFocus={false}
placeholder="Select a digimon"
items={items}
/>
)
クリック時にドロップダウンを開かない
クリック時にドロップダウンを開かない場合は、openOnClickをfalseに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
openOnClick={false}
items={items}
placeholder="Select a digimon"
/>
)
クリア時にフォーカスしない
クリア時にフォーカスしない場合は、focusOnClearをfalseに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
defaultValue="アグモン"
focusOnClear={false}
items={items}
placeholder="Select a digimon"
/>
)
選択時にドロップダウンを閉じない
選択時にドロップダウンを閉じない場合は、closeOnSelectをfalseに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ closeOnSelect: true, label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
closeOnSelect={false}
items={items}
placeholder="Select a digimon"
/>
)
フォーカスが外れた場合に閉じない
フォーカスが外れた場合にドロップダウンを閉じない場合は、closeOnBlurをfalseに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
closeOnBlur={false}
items={items}
placeholder="Select a digimon"
/>
)
ESCキーが入力された時にドロップダウンを閉じない
ESCキーが入力された時にドロップダウンを閉じない場合は、closeOnEscをfalseに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
closeOnEsc={false}
items={items}
placeholder="Select a digimon"
/>
)
クリアボタンを無効にする
クリアボタンを無効にする場合は、clearableをfalseに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
clearable={false}
items={items}
placeholder="Select a digimon"
/>
)
オプションを無効にする
特定のオプションを無効にする場合は、disabledをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ disabled: true, label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return <Autocomplete.Root items={items} placeholder="Select a digimon" />
無効にする
無効にする場合は、disabledをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Autocomplete.Root
variant={variant}
disabled
placeholder={toTitleCase(variant)}
items={items}
/>
)}
</For>
</VStack>
)
読み取り専用にする
読み取り専用にする場合は、readOnlyをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Autocomplete.Root
variant={variant}
readOnly
placeholder={toTitleCase(variant)}
items={items}
/>
)}
</For>
</VStack>
)
無効な入力にする
無効な入力にする場合は、invalidをtrueに設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<VStack>
<For each={["outline", "filled", "flushed"]}>
{(variant) => (
<Autocomplete.Root
variant={variant}
invalid
placeholder={toTitleCase(variant)}
items={items}
/>
)}
</For>
</VStack>
)
ボーダーの色を変更する
ボーダーの色を変更する場合は、focusBorderColorまたはerrorBorderColorに値を設定します。
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<VStack>
<Autocomplete.Root
focusBorderColor="green.500"
items={items}
placeholder="Custom border color"
/>
<Autocomplete.Root
errorBorderColor="orange.500"
invalid
items={items}
placeholder="Custom border color"
/>
</VStack>
)
検索結果が存在しない時のメッセージをカスタマイズする
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
emptyMessage="You just hit a route that doesn't exist... the sadness.😢"
items={items}
placeholder="Select a digimon"
/>
)
アイコンをカスタマイズする
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<VStack>
<Autocomplete.Root
placeholder="Select a digimon"
iconProps={{ color: "orange" }}
items={items}
/>
<Autocomplete.Root
icon={<ChevronsDownIcon />}
placeholder="Select a digimon"
items={items}
/>
</VStack>
)
オプションのアイコンをカスタマイズする
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
items={items}
placeholder="Select a digimon"
optionProps={{ icon: <BugIcon /> }}
/>
)
複数選択時の表示をカスタマイズする
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
items={items}
multiple
placeholder="Select a character"
render={({ label, onClear }) => (
<Tag size="sm" me="{gap}" onClose={onClear}>
{label}
</Tag>
)}
/>
)
制御する
const [value, setValue] = useState<string>("アグモン")
const items = useMemo<Autocomplete.Item[]>(
() => [
{ label: "アグモン", value: "アグモン" },
{ label: "ガブモン", value: "ガブモン" },
{ label: "テントモン", value: "テントモン" },
{ label: "ピヨモン", value: "ピヨモン" },
{ label: "ゴマモン", value: "ゴマモン" },
{ label: "パルモン", value: "パルモン" },
{ label: "パタモン", value: "パタモン" },
{ label: "テイルモン", value: "テイルモン" },
],
[],
)
return (
<Autocomplete.Root
value={value}
onChange={setValue}
items={items}
placeholder="Select a digimon"
/>
)
"use client"をファイルの上部に追加する必要があります。Props
アクセシビリティ
現在、v2の移行に伴い、このセクションは更新中です。