'use client' import { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from 'cmdk' import { Check, ChevronsUpDown, MapPinCheck, MapPinPlus, Warehouse } from 'lucide-react' import {useLocale, useTranslations} from 'next-intl' import {useState} from 'react' import {useDebouncedCallback} from 'use-debounce' import { type Settlement, type Warehouse as WarehouseType, formatSettlement, getApi } from '@/lib/nova-post-helper' import {cn} from '@/lib/utils' import {dump} from '@/lib/utils' import {Button} from '@/ui/button' import {Command} from '@/ui/command' import {Popover, PopoverContent, PopoverTrigger} from '@/ui/popover' const url = '/api/nova-post' export default function NovaPost({onSelectHandler}: {onSelectHandler: any}) { const t = useTranslations('cart.post') const [citiesOpen, setCitiesOpen] = useState(false) const [warehousesOpen, setWarehousesOpen] = useState(false) const [citiesValue, setCitiesValue] = useState('') const [cityRef, setCityRef] = useState('') //const [warehouseRef, setWarehouseRef] = useState('') const [warehousesValue, setWarehousesValue] = useState('') const [cities, setCities] = useState([]) const [warehouses, setWarehouses] = useState([]) const locale = useLocale() const handleCitySearch = useDebouncedCallback( async (e: string): Promise => { if (e.length < 3) { setCities([]) return } const response = await getApi(url + `?scope=cities&q=` + encodeURI(e)) if (response.ok) { let json = await response.json() setCities(json) } else { setCities([]) } }, 1000 ) const handleWarehouseSearch = async (e: string): Promise => { const response = await getApi(`${url}?scope=warehouses&q=${e}`) if (response.ok) { let json = await response.json() setWarehouses(json) } else { setWarehouses([]) } } const cityDescription = (citiesValue: string): string => { const city: Settlement | undefined = cities.find( (city: Settlement) => city.Description === citiesValue ) if (!city) { return '' } return formatSettlement(city, locale) } return (
handleCitySearch(e)} /> {t('notFount')} {cities.map((city: Settlement) => ( { setCitiesValue( currentValue === citiesValue ? '' : currentValue ) setCityRef( currentValue === citiesValue ? '' : city?.Ref ) handleWarehouseSearch( currentValue === citiesValue ? '' : city?.Ref ).then(console.log) setCitiesOpen(false) }} > {formatSettlement(city, locale)} ))}
{cityRef !== '' && (
handleCitySearch(e)}*/ /> {t('notFount')} {warehouses.map((warehouse: WarehouseType) => ( { setWarehousesValue( currentValue === warehousesValue ? '' : currentValue ) /*setWarehouseRef( currentValue === warehousesValue ? '' : warehouse.Ref )*/ onSelectHandler( currentValue === warehousesValue ? {} : { Ref: warehouse.Ref, Description: warehouse.Description, DescriptionRu: warehouse.DescriptionRu } ) setWarehousesOpen(false) }} > {warehouse.Description} ))}
)}
) }