feat(ui): confirm destructive admin actions
Some checks failed
Frontend CI/CD / build (push) Has been cancelled
Frontend CI/CD / deploy (push) Has been cancelled

This commit is contained in:
2026-06-14 09:10:32 +03:30
parent 4e24b96068
commit fc94ceb9f5
10 changed files with 171 additions and 41 deletions

View File

@@ -4,6 +4,7 @@ import * as React from "react";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { ImagePlus, Trash2, Upload } from "lucide-react";
import AdminDateTimeField from "@/components/AdminDateTimeField";
import ConfirmAction from "@/components/ConfirmAction";
import Markdown from "@/components/Markdown";
import MarkdownEditor from "@/components/MarkdownEditor";
import ProgressiveImage from "@/components/ProgressiveImage";
@@ -354,9 +355,17 @@ export default function AdminEventForm({ mode }: { mode: Mode }) {
</button>
<div className="flex items-center justify-between gap-2 p-3 text-sm">
<span className="truncate">{item.title}</span>
<Button size="icon" variant="ghost" className="text-destructive" onClick={() => galleryDeleteMutation.mutate(item.id)}>
<Trash2 className="h-4 w-4" />
</Button>
<ConfirmAction
title="حذف تصویر گالری"
description={`آیا از حذف «${item.title}» از گالری رویداد مطمئن هستید؟`}
onConfirm={() => galleryDeleteMutation.mutate(item.id)}
disabled={galleryDeleteMutation.isPending}
trigger={
<Button size="icon" variant="ghost" className="text-destructive" disabled={galleryDeleteMutation.isPending}>
<Trash2 className="h-4 w-4" />
</Button>
}
/>
</div>
</div>
))}