79 lines
1.9 KiB
TypeScript
79 lines
1.9 KiB
TypeScript
import { toast } from "@/hooks/useToast";
|
|
import { ConfirmDialog } from "@/components/confirm-dialog";
|
|
import { useTasks } from "../context/tasks-context";
|
|
import { TasksImportDialog } from "./tasks-import-dialog";
|
|
import { TasksMutateDrawer } from "./tasks-mutate-drawer";
|
|
|
|
export function TasksDialogs() {
|
|
const { open, setOpen, currentRow, setCurrentRow } = useTasks();
|
|
return (
|
|
<>
|
|
<TasksMutateDrawer
|
|
key="task-create"
|
|
open={open === "create"}
|
|
onOpenChange={() => setOpen("create")}
|
|
/>
|
|
|
|
<TasksImportDialog
|
|
key="tasks-import"
|
|
open={open === "import"}
|
|
onOpenChange={() => setOpen("import")}
|
|
/>
|
|
|
|
{currentRow && (
|
|
<>
|
|
<TasksMutateDrawer
|
|
key={`task-update-${currentRow.id}`}
|
|
open={open === "update"}
|
|
onOpenChange={() => {
|
|
setOpen("update");
|
|
setTimeout(() => {
|
|
setCurrentRow(null);
|
|
}, 500);
|
|
}}
|
|
currentRow={currentRow}
|
|
/>
|
|
|
|
<ConfirmDialog
|
|
key="task-delete"
|
|
destructive
|
|
open={open === "delete"}
|
|
onOpenChange={() => {
|
|
setOpen("delete");
|
|
setTimeout(() => {
|
|
setCurrentRow(null);
|
|
}, 500);
|
|
}}
|
|
handleConfirm={() => {
|
|
setOpen(null);
|
|
setTimeout(() => {
|
|
setCurrentRow(null);
|
|
}, 500);
|
|
toast({
|
|
title: "The following task has been deleted:",
|
|
description: (
|
|
<pre className="mt-2 w-[340px] rounded-md bg-slate-950 p-4">
|
|
<code className="text-white">
|
|
{JSON.stringify(currentRow, null, 2)}
|
|
</code>
|
|
</pre>
|
|
),
|
|
});
|
|
}}
|
|
className="max-w-md"
|
|
title={`Delete this task: ${currentRow.id} ?`}
|
|
desc={
|
|
<>
|
|
You are about to delete a task with the ID{" "}
|
|
<strong>{currentRow.id}</strong>. <br />
|
|
This action cannot be undone.
|
|
</>
|
|
}
|
|
confirmText="Delete"
|
|
/>
|
|
</>
|
|
)}
|
|
</>
|
|
);
|
|
}
|