Select
옵션을 선택하는 셀렉트 컴포넌트입니다.
개요
Select는 여러 옵션 중 하나 또는 여러 개를 선택할 수 있는 드롭다운 컴포넌트입니다. 검색 기능과 그룹 옵션을 지원합니다.
주요 특징:
- Single / Multi select
- Searchable select
- 그룹 옵션
- 커스텀 옵션 렌더링
- 키보드 네비게이션
사용 사례:
- 국가/지역 선택
- 카테고리 선택
- 필터 옵션
- 설정 값 선택
설치
npx @vortex/cli add select --package foundation기본 사용법
import { Select } from "@vortex/ui-foundation";
export default function Example() {
return (
<Select>
<SelectTrigger>
<SelectValue placeholder="선택하세요" />
</SelectTrigger>
<SelectContent>
<SelectItem value="1">Option 1</SelectItem>
<SelectItem value="2">Option 2</SelectItem>
<SelectItem value="3">Option 3</SelectItem>
</SelectContent>
</Select>
);
}Variants (변형)
Single Select (기본)
<Select onValueChange={(value) => console.log(value)}>
<SelectTrigger>
<SelectValue placeholder="하나만 선택" />
</SelectTrigger>
<SelectContent>
<SelectItem value="apple">사과</SelectItem>
<SelectItem value="banana">바나나</SelectItem>
<SelectItem value="cherry">체리</SelectItem>
</SelectContent>
</Select>Multi Select
<Select multiple onValueChange={(values) => console.log(values)}>
<SelectTrigger>
<SelectValue placeholder="여러 개 선택" />
</SelectTrigger>
<SelectContent>
<SelectItem value="apple">사과</SelectItem>
<SelectItem value="banana">바나나</SelectItem>
<SelectItem value="cherry">체리</SelectItem>
</SelectContent>
</Select>Searchable Select
<Select searchable>
<SelectTrigger>
<SelectValue placeholder="검색 가능" />
</SelectTrigger>
<SelectContent>
<SelectItem value="kr">한국</SelectItem>
<SelectItem value="us">미국</SelectItem>
<SelectItem value="jp">일본</SelectItem>
</SelectContent>
</Select>그룹 옵션
<Select>
<SelectTrigger>
<SelectValue placeholder="과일 선택" />
</SelectTrigger>
<SelectContent>
<SelectGroup>
<SelectLabel>과일</SelectLabel>
<SelectItem value="apple">사과</SelectItem>
<SelectItem value="banana">바나나</SelectItem>
</SelectGroup>
<SelectGroup>
<SelectLabel>채소</SelectLabel>
<SelectItem value="carrot">당근</SelectItem>
<SelectItem value="tomato">토마토</SelectItem>
</SelectGroup>
</SelectContent>
</Select>Props API
| Prop | Type | Default | Description |
|---|---|---|---|
| value | string | - | 선택된 값 |
| defaultValue | string | - | 기본 선택 값 |
| multiple | boolean | false | 다중 선택 허용 |
| searchable | boolean | false | 검색 기능 |
| disabled | boolean | false | 비활성화 상태 |
| onValueChange | (value) => void | - | 값 변경 핸들러 |
| className | string | - | 추가 CSS 클래스 |
접근성
Select 컴포넌트는 WCAG 2.1 AA 기준을 준수합니다.
ARIA 속성:
role="combobox"(자동 적용)aria-expanded(드롭다운 열림/닫힘)aria-activedescendant(현재 포커스된 옵션)
키보드 네비게이션:
Space/Enter: 드롭다운 열기↑/↓: 옵션 탐색Enter: 옵션 선택Esc: 드롭다운 닫기
예제
예제 1: 국가 선택
export default function CountrySelect() {
const [country, setCountry] = useState("");
return (
<Select value={country} onValueChange={setCountry}>
<SelectTrigger>
<SelectValue placeholder="국가 선택" />
</SelectTrigger>
<SelectContent>
<SelectItem value="kr">대한민국</SelectItem>
<SelectItem value="us">미국</SelectItem>
<SelectItem value="jp">일본</SelectItem>
<SelectItem value="cn">중국</SelectItem>
</SelectContent>
</Select>
);
}관련 컴포넌트
Last updated on