Select
単一選択のセレクト。onValueChange は null を渡しうる。
候補から 1 つ選ぶ入力です。候補が多くて検索したい場合は
SearchableSelect、少数を横並びで見せたい場合は
SegmentedControl を検討してください。
export const client = "only";
import { useState } from "react";
import {
Select,
SelectTrigger,
SelectValue,
SelectContent,
SelectGroup,
SelectLabel,
SelectItem,
SelectSeparator,
} from "@squadbase/vantage/ui";
const regions = {
hokkaido: "北海道",
kanto: "関東",
kansai: "関西",
kyushu: "九州",
};
export default function Example() {
const [region, setRegion] = useState("kanto");
return (
<Select
items={regions}
value={region}
onValueChange={(value) => value !== null && setRegion(value)}
>
<SelectTrigger className="w-56">
<SelectValue placeholder="地域を選ぶ" />
</SelectTrigger>
<SelectContent>
<SelectGroup>
<SelectLabel>東日本</SelectLabel>
<SelectItem value="hokkaido">北海道</SelectItem>
<SelectItem value="kanto">関東</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectGroup>
<SelectLabel>西日本</SelectLabel>
<SelectItem value="kansai">関西</SelectItem>
<SelectItem value="kyushu">九州</SelectItem>
</SelectGroup>
</SelectContent>
</Select>
);
}
import {
Select,
SelectTrigger,
SelectValue,
SelectContent,
SelectGroup,
SelectLabel,
SelectItem,
SelectSeparator,
SelectScrollUpButton,
SelectScrollDownButton,
} from "@squadbase/vantage/ui";
パーツ
| パーツ | 役割 |
|---|---|
Select |
状態。value / defaultValue / onValueChange / items |
SelectTrigger |
閉じているときの見た目。size: default | sm |
SelectValue |
選択中の表示。placeholder は未選択時 |
SelectContent |
開いたときのリスト |
SelectGroup + SelectLabel |
見出し付きのグループ |
SelectItem |
1 項目。value は必須 |
SelectContent は既定で選択中の項目をトリガーに重ねて開きます。素直に下へ開かせたいときは
alignItemWithTrigger={false} を渡します。