import { useState, useEffect } from 'react'; import { Button, Input, Select, Modal } from '../ui'; import type { Delivery, PickupLocation, DeliveryStatus } from '../../types'; import { pickupLocationLabels } from '../../types'; interface DeliveryFormProps { isOpen: boolean; onClose: () => void; onSubmit: (delivery: Omit) => void; initialData?: Delivery | null; defaultDate?: string; } const pickupOptions: { value: PickupLocation; label: string }[] = [ { value: 'warehouse', label: pickupLocationLabels.warehouse }, { value: 'symbat', label: pickupLocationLabels.symbat }, { value: 'nursaya', label: pickupLocationLabels.nursaya }, { value: 'galaktika', label: pickupLocationLabels.galaktika }, ]; export const DeliveryForm = ({ isOpen, onClose, onSubmit, initialData, defaultDate }: DeliveryFormProps) => { const [formData, setFormData] = useState({ date: defaultDate || new Date().toLocaleDateString('ru-RU').split('.').join('-'), pickupLocation: 'warehouse' as PickupLocation, productName: '', address: '', phone: '', additionalPhone: '', hasElevator: false, comment: '', status: 'new' as DeliveryStatus, }); useEffect(() => { if (initialData) { setFormData({ date: initialData.date, pickupLocation: initialData.pickupLocation, productName: initialData.productName, address: initialData.address, phone: initialData.phone, additionalPhone: initialData.additionalPhone || '', hasElevator: initialData.hasElevator, comment: initialData.comment, status: initialData.status, }); } else if (defaultDate) { setFormData(prev => ({ ...prev, date: defaultDate })); } }, [initialData, defaultDate, isOpen]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); onSubmit(formData); if (!initialData) { setFormData({ date: defaultDate || new Date().toLocaleDateString('ru-RU').split('.').join('-'), pickupLocation: 'warehouse', productName: '', address: '', phone: '', additionalPhone: '', hasElevator: false, comment: '', status: 'new', }); } onClose(); }; const formatDateForInput = (dateStr: string) => { const [day, month, year] = dateStr.split('-'); return `${year}-${month}-${day}`; }; const formatDateFromInput = (dateStr: string) => { const [year, month, day] = dateStr.split('-'); return `${day}-${month}-${year}`; }; return ( } >
setFormData({ ...formData, date: formatDateFromInput(e.target.value) })} className="w-full px-3 py-2 bg-[#f5f3f5] border border-[#c5c6cd] rounded-md text-[#1b1b1d] focus:outline-none focus:ring-2 focus:ring-[#1B263B] focus:border-transparent transition-colors" required />
setFormData({ ...formData, productName: e.target.value })} placeholder="Введите название товара" required /> setFormData({ ...formData, address: e.target.value })} placeholder="ул. Примерная, д. 1" required /> setFormData({ ...formData, phone: e.target.value })} onFocus={(e) => { if (!e.target.value) { setFormData({ ...formData, phone: '+7' }); } }} placeholder="+7 (776)-567-89-01" required /> setFormData({ ...formData, additionalPhone: e.target.value })} onFocus={(e) => { if (!e.target.value) { setFormData({ ...formData, additionalPhone: '+7' }); } }} placeholder="+7 (776)-567-89-01" />
setFormData({ ...formData, hasElevator: e.target.checked })} className="w-4 h-4 text-[#1B263B] border-[#c5c6cd] rounded focus:ring-[#1B263B]" />
setFormData({ ...formData, comment: e.target.value })} placeholder="Дополнительная информация..." />
); };