'use client'; import { useState } from 'react'; import { Check, ChevronsUpDown, Search } from 'lucide-react'; import { cn } from '@/lib/utils'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover'; import { Company } from '@/lib/types/autotask'; import { useApi } from '@/lib/hooks/use-api'; interface CompanySelectorEnhancedProps { value?: number; onValueChange: (value: number | undefined, companyName?: string) => void; label?: string; } export function CompanySelectorEnhanced({ value, onValueChange, label = 'Select Company' }: CompanySelectorEnhancedProps) { const [open, setOpen] = useState(false); const [searchTerm, setSearchTerm] = useState(''); const { data, loading, error } = useApi<{ companies: Company[] }>('/api/companies'); const companies = data?.companies || []; const selectedCompany = companies.find(c => c.id === value); const filteredCompanies = companies.filter(company => company.companyName.toLowerCase().includes(searchTerm.toLowerCase()) ); return (
setSearchTerm(e.target.value)} className="border-0 focus-visible:ring-0 focus-visible:ring-offset-0" />
{filteredCompanies.length === 0 ? (
No company found.
) : ( filteredCompanies.map((company) => (
{ onValueChange(company.id, company.companyName); setOpen(false); setSearchTerm(''); }} > {company.companyName}
)) )}
); }