'use client'; import { useState, useRef } from 'react'; export interface AircraftFormData { registrationNumber: string; serialNumber: string; aircraftType: string; model: string; operator: string; status: string; manufacturer?: string; yearOfManufacture?: string; flightHours?: string; } interface AircraftAddModalProps { isOpen: boolean; onClose: () => void; onSave: (data: AircraftFormData, files: File[]) => void | Promise; } export default function AircraftAddModal({ isOpen, onClose, onSave }: AircraftAddModalProps) { const [formData, setFormData] = useState({ registrationNumber: '', serialNumber: '', aircraftType: 'Boeing 737-800', model: '737-800', operator: '', status: 'active', manufacturer: '', yearOfManufacture: '', flightHours: '', }); const [files, setFiles] = useState([]); const fileInputRef = useRef(null); if (!isOpen) { return null; } const handleChange = (field: keyof AircraftFormData, value: string) => { setFormData((prev) => ({ ...prev, [field]: value })); }; const handleFileChange = (e: React.ChangeEvent) => { const selected = e.target.files ? Array.from(e.target.files) : []; setFiles((prev) => [...prev, ...selected]); }; const handleSubmit = async () => { if (!formData.registrationNumber || !formData.serialNumber || !formData.operator) { alert('Заполните обязательные поля: регистрационный номер, серийный номер, оператор'); return; } await onSave(formData, files); setFormData({ registrationNumber: '', serialNumber: '', aircraftType: 'Boeing 737-800', model: '737-800', operator: '', status: 'active', manufacturer: '', yearOfManufacture: '', flightHours: '', }); setFiles([]); if (fileInputRef.current) fileInputRef.current.value = ''; onClose(); }; const inputStyle = { width: '100%', padding: '8px', border: '1px solid #ccc', borderRadius: '4px', fontSize: '14px' }; const labelStyle = { display: 'block', marginBottom: '4px', fontSize: '14px', fontWeight: 500 }; return (
e.stopPropagation()} >

Добавить воздушное судно

handleChange('registrationNumber', e.target.value)} placeholder="RA-73701" style={inputStyle} />
handleChange('serialNumber', e.target.value)} placeholder="MSN-4521" style={inputStyle} />
handleChange('operator', e.target.value)} placeholder="REFLY Airlines" style={inputStyle} />
{files.length > 0 && (
Выбрано файлов: {files.length}
)}
); }