"use client"; import React, { useState, useMemo } from "react"; import { Check, ChevronsUpDown } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { cn } from "@/lib/utils"; import type { ColumnInfo } from "../pop-dashboard/utils/dataFetcher"; interface ColumnComboboxProps { columns: ColumnInfo[]; value: string; onSelect: (columnName: string) => void; placeholder?: string; } export function ColumnCombobox({ columns, value, onSelect, placeholder = "컬럼을 선택하세요", }: ColumnComboboxProps) { const [open, setOpen] = useState(false); const [search, setSearch] = useState(""); const filtered = useMemo(() => { if (!search) return columns; const q = search.toLowerCase(); return columns.filter((c) => c.name.toLowerCase().includes(q)); }, [columns, search]); return ( 검색 결과가 없습니다. {filtered.map((col) => ( { onSelect(col.name); setOpen(false); setSearch(""); }} className="text-xs" >
{col.name} {col.type}
))}
); }