'use client'; import { useState } from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Label } from '@/components/ui/label'; import { Slider } from '@/components/ui/slider'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { cn } from '@/lib/utils'; import { type Behandeldoel, type EmbeddedInterventie, type GoalStatus, GOAL_STATUSES, GOAL_STATUS_LABELS, createEmptyEmbeddedInterventie, } from '@/lib/types/behandelplan'; import { type LifeDomain, LIFE_DOMAINS, LIFE_DOMAIN_META } from '@/lib/types/leefgebieden'; import { Plus, X, Sparkles, Trash2, Save } from 'lucide-react'; interface BehandeldoelFormProps { doel: Behandeldoel; onSave: (doel: Behandeldoel) => Promise; onCancel: () => void; onDelete?: () => Promise; className?: string; } /** * Inline edit form voor Behandeldoel * Alle velden in één uitklapbare card */ export function BehandeldoelForm({ doel, onSave, onCancel, onDelete, className, }: BehandeldoelFormProps) { const [formData, setFormData] = useState(doel); const [isSaving, setIsSaving] = useState(false); const [isDeleting, setIsDeleting] = useState(false); const handleSave = async () => { setIsSaving(true); try { await onSave(formData); } finally { setIsSaving(false); } }; const handleDelete = async () => { if (!onDelete) return; if (!confirm('Weet je zeker dat je dit behandeldoel wilt verwijderen?')) return; setIsDeleting(true); try { await onDelete(); } finally { setIsDeleting(false); } }; const updateField = ( field: K, value: Behandeldoel[K] ) => { setFormData((prev) => ({ ...prev, [field]: value })); }; const addInterventie = () => { setFormData((prev) => ({ ...prev, interventies: [...prev.interventies, createEmptyEmbeddedInterventie()], })); }; const updateInterventie = ( index: number, field: keyof EmbeddedInterventie, value: string ) => { setFormData((prev) => ({ ...prev, interventies: prev.interventies.map((int, i) => i === index ? { ...int, [field]: value } : int ), })); }; const removeInterventie = (index: number) => { setFormData((prev) => ({ ...prev, interventies: prev.interventies.filter((_, i) => i !== index), })); }; const isValid = formData.title.trim().length >= 5 && formData.clientVersion.trim().length >= 5; return ( Behandeldoel bewerken {/* Doel titel */}
updateField('title', e.target.value)} placeholder="Bijv. Weer 4 dagen per week stabiel kunnen werken" className="text-sm" />
{/* Client versie (B1) */}