shadcn/ui Combobox command 组合筛选下拉. inputOtp 光标闪烁
<Popover open={open} onOpenChange={setOpen}>
<PopoverTrigger asChild>
<Button
role="combobox"
aria-expanded={open}
className="w-full justify-between h-11 bg-background rounded-lg search-supplier-popover"
>
<span className="flex items-center text-gray text-sm">
<Image
src="/images/supplier.svg"
alt="supplier"
decoding="async"
loading="lazy"
width={24}
height={24}
className="w-6 h-6 mr-2"
></Image>
{searchVal ? <span className='text-white'>{searchVal}</span> : <span className='text-gray'>{t("SUPPLIER_TEXT_TIP")}</span>}
</span>
{open ? <BiSolidUpArrow className='text-gray w-3 h-3' /> : <BiSolidDownArrow className='text-gray w-3 h-3' />}
</Button>
</PopoverTrigger>
<PopoverContent asChild className="py-0 px-2" style={{ width: pxToRem(contentWidth) }}>
<Command className='pt-2'>
<CommandInput
placeholder={t("SUPPLIER_INPUT_TEXT_TIP")}
ref={inputItemRef}
value={inputVal}
onValueChange={(val: string) => onValueChange(val)}
className="h-9 text-white "
endIconNode={inputVal ? <Image src={'/images/inputClear.svg'} width={20} height={20} alt='clear' /> : <></>}
endIconClick={() => endIconClick()}
/>
<CommandList className="px-2 pt-2">
<CommandGroup className="" heading=''>
{filterList?.length === 0 && <CommandEmpty>{t('SUPPLIER_TEXT_TIP_NO_DATA')}.</CommandEmpty>}
{!inputVal && popularList?.length > 0 && (
<>
<SearchTitle title={t('SUPPLIER_LINE_TITLE_TIP')} />
{popularList && popularList.map((item: any) => <SearchItem key={item.id} item={item}></SearchItem>)}
</>
)}
</CommandGroup>
{!inputVal && searchSupplierList?.length > 0 && <SearchTitle title={t('SUPPLIER_LINE_TITLE_TIP_ALL')} />}
<CommandGroup className="" heading=''>
{
filterList?.map((item: any) => <SearchItem key={item.id} item={item}></SearchItem>)
}
</CommandGroup>
</CommandList>
</Command>
</PopoverContent>
</Popover >
const SearchItem = ({ item }: any) => {
return (
<CommandItem
value={item.name}
onSelect={currentValue => onselect(currentValue)}
className="space-y-0.5 px-0 h-8"
>
<div className="flex justify-between items-center flex-1">
<span className="text-[#99A4B0]">{item.name}</span>
<span className="text-xs text-[#FFD205]">{item.gamesNumber}</span>
</div>
</CommandItem>
)
}
切记name搜索的时候value写name,否则会默认搜索,打空格之后匹配不到结果
inputOtp 光标闪烁效果
https://github.com/guilhermerodz/input-otp

浙公网安备 33010602011771号