import { useState } from "react"; import { useDialog } from "../context/DialogContext"; import { useCompany } from "../context/CompanyContext"; import { issuesApi } from "../api/issues"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; interface NewIssueDialogProps { onCreated?: () => void; } export function NewIssueDialog({ onCreated }: NewIssueDialogProps) { const { newIssueOpen, newIssueDefaults, closeNewIssue } = useDialog(); const { selectedCompanyId } = useCompany(); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [status, setStatus] = useState(newIssueDefaults.status ?? "todo"); const [priority, setPriority] = useState(newIssueDefaults.priority ?? "medium"); const [submitting, setSubmitting] = useState(false); function reset() { setTitle(""); setDescription(""); setStatus("todo"); setPriority("medium"); } async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!selectedCompanyId || !title.trim()) return; setSubmitting(true); try { await issuesApi.create(selectedCompanyId, { title: title.trim(), description: description.trim() || undefined, status, priority, }); reset(); closeNewIssue(); onCreated?.(); } finally { setSubmitting(false); } } return ( { if (!open) { reset(); closeNewIssue(); } }} > New Issue
setTitle(e.target.value)} autoFocus />