Select
Playground
TSX
'use client';
import { useState } from 'react';
import {
Select,
Avatar,
SelectTrigger,
SelectValue,
SelectContent,
SelectItem,
SelectGroup,
type SelectSize,
} from '@mbsw/ui';
export default function Demo() {
const settings = {
"leadingIcon": false,
"size": "md",
"disabled": false
};
const [value, setValue] = useState('0');
const items = ['option A', 'option B', 'option C'];
return (
<div style={{ width: 240, maxWidth: '100%' }}>
<Select
value={value}
onValueChange={setValue}
disabled={settings.disabled}
>
<SelectTrigger
leadingIcon={
settings.leadingIcon ? (
<span aria-hidden="true" style={{ display: 'flex' }}>
<Avatar
size="sm"
label={items[Number(value)]}
initials={items[Number(value)].slice(-1)}
/>
</span>
) : undefined
}
size={settings.size as SelectSize}
aria-label={"옵션 선택"}
style={{ width: '100%' }}
>
<SelectValue placeholder={"옵션 선택"} />
</SelectTrigger>
<SelectContent>
<SelectGroup>
{items.map((label, index) => (
<SelectItem
key={index}
value={String(index)}
size={settings.size as SelectSize}
leadingIcon={
settings.leadingIcon ? (
<span aria-hidden="true" style={{ display: 'flex' }}>
<Avatar
size="sm"
label={label}
initials={label.slice(-1)}
/>
</span>
) : undefined
}
>
{label}
</SelectItem>
))}
</SelectGroup>
</SelectContent>
</Select>
</div>
);
}
Properties
Size
Leading icon
Disabled
Usage
SelectValue는 선택한 항목을 표시하고 SelectContent는 목록을 포털로 렌더링합니다. SelectItem은 텍스트 영역과 선택 표시자를 자동으로 구성하므로 표시자를 중복해서 넣지 않습니다. 목록 끝 구분선은 SelectContent의 hasFinalSeparator로 설정합니다.
TSX
'use client';
import {
Select,
SelectTrigger,
SelectValue,
SelectContent,
SelectItem,
} from '@mbsw/ui';
export default function Example() {
return (
<Select defaultValue="0">
<SelectTrigger aria-label={"옵션 선택"}>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="0">option A</SelectItem>
<SelectItem value="1">option B</SelectItem>
<SelectItem value="2">option C</SelectItem>
</SelectContent>
</Select>
);
}
Playground의 Code 탭에서 현재 설정과 동작이 포함된 예제 전체를 복사할 수 있습니다. 공통 CSS 설치는 설치하기를 확인하세요.