Components

Combobox

사용자가 선택할 수 있는 옵션 목록을 표시합니다—버튼으로 트리거됩니다.

()=> {
const [open, setOpen] = React.useState(false)
const [value, setValue] = React.useState('')
const frameworks = [
{
value: 'next.js',
label: 'Next.js'
},
{
value: 'sveltekit',
label: 'SvelteKit'
},
{
value: 'nuxt.js',
label: 'Nuxt.js'
},
{
value: 'remix',
label: 'Remix'
},
{
value: 'astro',
label: 'Astro'
}
]
return (
<Combobox open={open} onOpenChange={setOpen}>
<ComboboxTrigger asChild>
<Button variant='outline' role='combobox' aria-expanded={open} style={{ width: '200px', justifyContent: 'space-between', display: 'flex', border: '1px solid #D1D5DB', borderRadius: '0.375rem', padding: '0.5rem 1rem', backgroundColor: 'transparent', cursor: 'pointer' }} >
{value
? frameworks.find((framework) => framework.value === value)?.label
: 'Select framework...'}
</Button>
</ComboboxTrigger>
<ComboboxContent style={{ width: '200px', padding: 0 }}>
<ComboboxMenu>
<ComboboxMenuInput placeholder='Search framework...' style={{ height: '36px' }} />
<ComboboxMenuList>
<ComboboxMenuEmpty>No framework found.</ComboboxMenuEmpty>
<ComboboxMenuGroup>
{frameworks.map((framework) => (
<ComboboxMenuItem key={framework.value} value={framework.value} onSelect={(currentValue) => { setValue(currentValue === value ? '' : currentValue) setOpen(false) }} >
{framework.label}
</ComboboxMenuItem>
))}
</ComboboxMenuGroup>
</ComboboxMenuList>
</ComboboxMenu>
</ComboboxContent>
</Combobox>
)
}

API Reference

이 컴포넌트는 shardcn/uiCommandPopover를 기반으로 제작하여 지원합니다.