import { useState, useEffect } from 'react'; import { format } from 'date-fns'; import styles from './ReservationModal.module.css'; const PERIOD_OPTIONS = [ { value: '', label: '指定なし' }, { value: '午前', label: '午前' }, { value: '午後', label: '午後' }, ]; export default function ReservationModal({ cars, reservation, onSave, onDelete, onClose }) { const isEdit = !!reservation?.id; const [carId, setCarId] = useState(''); const [startDate, setStartDate] = useState(''); const [startPeriod, setStartPeriod] = useState(''); const [endDate, setEndDate] = useState(''); const [endPeriod, setEndPeriod] = useState(''); const [customerName, setCustomerName] = useState(''); const [notes, setNotes] = useState(''); const [submitting, setSubmitting] = useState(false); useEffect(() => { if (reservation) { setCarId(String(reservation.car_id || (cars[0]?.id ?? ''))); setStartDate(reservation.start_date || format(new Date(), 'yyyy-MM-dd')); setStartPeriod(reservation.start_period || ''); setEndDate(reservation.end_date || format(new Date(), 'yyyy-MM-dd')); setEndPeriod(reservation.end_period || ''); setCustomerName(reservation.customer_name || ''); setNotes(reservation.notes || ''); } }, [reservation, cars]); const handleSubmit = async (e) => { e.preventDefault(); if (!carId || !startDate || !endDate) return; if (startDate > endDate) { alert('開始日は終了日以前に設定してください'); return; } try { setSubmitting(true); await onSave({ car_id: Number(carId), start_date: startDate, start_period: startPeriod, end_date: endDate, end_period: endPeriod, customer_name: customerName, notes, }); } finally { setSubmitting(false); } }; const handleDelete = async () => { if (!confirm('この予約を削除しますか?')) return; try { setSubmitting(true); await onDelete(reservation.id); } finally { setSubmitting(false); } }; return (