diff --git a/src/components/settings/checklist-templates-manager.tsx b/src/components/settings/checklist-templates-manager.tsx index 7ae3c07..f8d5af4 100644 --- a/src/components/settings/checklist-templates-manager.tsx +++ b/src/components/settings/checklist-templates-manager.tsx @@ -13,7 +13,7 @@ import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Checkbox } from "@/components/ui/checkbox" -import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog" +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { SearchableCombobox, type SearchableComboboxOption } from "@/components/ui/searchable-combobox" @@ -254,6 +254,8 @@ export function ChecklistTemplatesManager() { const [includeArchived, setIncludeArchived] = useState(false) const [editorOpen, setEditorOpen] = useState(false) const [editing, setEditing] = useState(null) + const [deleteTarget, setDeleteTarget] = useState(null) + const [deleting, setDeleting] = useState(false) const templates = useQuery( api.checklistTemplates.list, @@ -304,19 +306,21 @@ export function ChecklistTemplatesManager() { } } - const handleDelete = async (tpl: ChecklistTemplateRow) => { - if (!viewerId) return - const ok = confirm(`Excluir o template "${tpl.name}"? Esta ação não pode ser desfeita.`) - if (!ok) return + const handleDeleteConfirm = async () => { + if (!viewerId || !deleteTarget) return + setDeleting(true) try { await removeTemplate({ tenantId, actorId: viewerId, - templateId: tpl.id, + templateId: deleteTarget.id, }) toast.success("Template excluído.") + setDeleteTarget(null) } catch (error) { toast.error(error instanceof Error ? error.message : "Falha ao excluir template.") + } finally { + setDeleting(false) } } @@ -394,7 +398,7 @@ export function ChecklistTemplatesManager() { variant="ghost" size="sm" className="text-slate-500 hover:bg-red-50 hover:text-red-700" - onClick={() => handleDelete(tpl)} + onClick={() => setDeleteTarget(tpl)} title="Excluir template" > @@ -414,6 +418,25 @@ export function ChecklistTemplatesManager() { template={editing} companies={companyOptions} /> + + !open && setDeleteTarget(null)}> + + + Excluir template + + Tem certeza que deseja excluir o template "{deleteTarget?.name}"? Esta ação não pode ser desfeita. + + + + + + + + ) }