import { useState, useEffect, useMemo } from 'react' export default function OfferCustomerPicker({ customers, customerId, customerName, onSelect, onClear, error, readOnly }) { const [customerSearch, setCustomerSearch] = useState('') const [showDropdown, setShowDropdown] = useState(false) // Close dropdown on outside click useEffect(() => { const handleClickOutside = () => setShowDropdown(false) if (showDropdown) { document.addEventListener('click', handleClickOutside) return () => document.removeEventListener('click', handleClickOutside) } }, [showDropdown]) const filteredCustomers = useMemo(() => { if (!customerSearch) return customers const q = customerSearch.toLowerCase() return customers.filter(c => (c.name || '').toLowerCase().includes(q) || (c.company_id || '').includes(customerSearch) || (c.city || '').toLowerCase().includes(q) ) }, [customers, customerSearch]) const handleSelect = (customer) => { onSelect(customer) setCustomerSearch('') setShowDropdown(false) } return (
{customerId && (
{customerName} {!readOnly && ( )}
)} {!customerId && !readOnly && (
e.stopPropagation()}> { setCustomerSearch(e.target.value); setShowDropdown(true) }} onFocus={() => setShowDropdown(true)} className="admin-form-input" placeholder="Hledat zákazníka..." /> {showDropdown && (
{filteredCustomers.length === 0 ? (
Žádní zákazníci
) : ( filteredCustomers.slice(0, 10).map(c => (
handleSelect(c)} >
{c.name}
{c.city &&
{c.city}
}
)) )}
)}
)} {error && {error}}
) }