import { useState, useEffect } from 'react' import Modal from '../UI/Modal' import Button from '../UI/Button' import useProjectStore from '../../store/useProjectStore' import { STATUS_OPTIONS } from '../../utils/statusHelpers' export default function DeliverableModal({ isOpen, onClose, deliverable, projectId, defaultDate }) { const { addDeliverable, updateDeliverable: storeUpdate, removeDeliverable, projects } = useProjectStore() const [title, setTitle] = useState('') const [dueDate, setDueDate] = useState('') const [status, setStatus] = useState('upcoming') const [pid, setPid] = useState('') const [saving, setSaving] = useState(false) const isEditing = !!deliverable useEffect(() => { if (deliverable) { setTitle(deliverable.title || ''); setDueDate(deliverable.due_date?.substring(0,10) || '') setStatus(deliverable.status || 'upcoming'); setPid(deliverable.project_id || '') } else { setTitle(''); setDueDate(defaultDate || ''); setStatus('upcoming'); setPid(projectId || '') } }, [deliverable, isOpen, projectId, defaultDate]) const handleDelete = async () => { if (!window.confirm('Delete this deliverable?')) return await removeDeliverable(deliverable.id) onClose() } const handleSubmit = async () => { if (!title.trim() || !dueDate || !pid) return setSaving(true) try { if (isEditing) { await storeUpdate(deliverable.id, { title, due_date: dueDate, status }) } else { await addDeliverable({ title, due_date: dueDate, status, project_id: Number(pid) }) } onClose() } finally { setSaving(false) } } return (
{!isEditing && (
)}
setTitle(e.target.value)} placeholder="Deliverable title..." />
setDueDate(e.target.value)} />
{isEditing ? :
}
) }