import { useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Calendar } from '@/components/ui/calendar'; import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import { CalendarIcon, Plus, Tag } from 'lucide-react'; import { Task, Label } from '@shared/schema'; import { useQuery } from '@tanstack/react-query'; interface TaskCreationModalProps { isOpen: boolean; onClose: () => void; onSave: (task: Partial) => void; } export default function TaskCreationModal({ isOpen, onClose, onSave }: TaskCreationModalProps) { const [title, setTitle] = useState(''); const [description, setDescription] = useState(''); const [priority, setPriority] = useState<'low' | 'medium' | 'high'>('medium'); const [dueDate, setDueDate] = useState(); const [labelId, setLabelId] = useState(); const [isCalendarOpen, setIsCalendarOpen] = useState(false); // Fetch labels const { data: labels = [] } = useQuery({ queryKey: ['/api/labels'], }); const handleSave = () => { if (!title.trim()) return; const newTask: Partial = { title: title.trim(), description: description.trim() || undefined, priority, dueDate, labelId, status: 'todo', timeTracked: 0, isTracking: false }; onSave(newTask); console.log('New task created:', newTask); // Reset form setTitle(''); setDescription(''); setPriority('medium'); setDueDate(undefined); setLabelId(undefined); onClose(); }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSave(); } }; const handleClose = () => { setTitle(''); setDescription(''); setPriority('medium'); setDueDate(undefined); setLabelId(undefined); onClose(); }; return ( New Task
setTitle(e.target.value)} onKeyDown={handleKeyDown} className="text-base" data-testid="input-task-title" autoFocus />