summaryrefslogtreecommitdiff
path: root/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx')
-rw-r--r--lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx32
1 files changed, 30 insertions, 2 deletions
diff --git a/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx b/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx
index d1c7e500..6a493d8e 100644
--- a/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx
+++ b/lib/evaluation-target-list/table/evaluation-targets-toolbar-actions.tsx
@@ -10,7 +10,8 @@ import {
Download,
Upload,
RefreshCw,
- Settings
+ Settings,
+ Trash2
} from "lucide-react"
import { toast } from "sonner"
import { useRouter } from "next/navigation"
@@ -30,6 +31,7 @@ import {
ExcludeTargetsDialog,
RequestReviewDialog
} from "./evaluation-target-action-dialogs"
+import { DeleteTargetsDialog } from "./delete-targets-dialog"
import { EvaluationTargetWithDepartments } from "@/db/schema"
import { exportTableToExcel } from "@/lib/export"
import { autoGenerateEvaluationTargets } from "../service" // 서버 액션 import
@@ -49,6 +51,7 @@ export function EvaluationTargetsTableToolbarActions({
const [confirmDialogOpen, setConfirmDialogOpen] = React.useState(false)
const [excludeDialogOpen, setExcludeDialogOpen] = React.useState(false)
const [reviewDialogOpen, setReviewDialogOpen] = React.useState(false)
+ const [deleteDialogOpen, setDeleteDialogOpen] = React.useState(false)
const router = useRouter()
const { data: session } = useSession()
@@ -137,7 +140,8 @@ export function EvaluationTargetsTableToolbarActions({
consensusNull,
canConfirm: pending > 0 && consensusTrue > 0,
canExclude: pending > 0,
- canRequestReview: pending > 0
+ canRequestReview: pending > 0,
+ canDelete: pending > 0 // 삭제는 PENDING 상태인 것만 가능
}
}, [
pendingTargets.length,
@@ -308,6 +312,22 @@ export function EvaluationTargetsTableToolbarActions({
</Button>
)}
+ {/* 삭제 버튼 */}
+ {selectedStats.canDelete && (
+ <Button
+ variant="destructive"
+ size="sm"
+ className="gap-2"
+ onClick={() => setDeleteDialogOpen(true)}
+ disabled={isLoading}
+ >
+ <Trash2 className="size-4" aria-hidden="true" />
+ <span className="hidden sm:inline">
+ 삭제 ({selectedStats.pending})
+ </span>
+ </Button>
+ )}
+
{/* 의견 요청 버튼 */}
{selectedStats.canRequestReview && (
<Button
@@ -369,6 +389,14 @@ export function EvaluationTargetsTableToolbarActions({
targets={selectedTargets}
onSuccess={handleActionSuccess}
/>
+
+ {/* 삭제 컨펌 다이얼로그 */}
+ <DeleteTargetsDialog
+ open={deleteDialogOpen}
+ onOpenChange={setDeleteDialogOpen}
+ targets={pendingTargets} // PENDING 상태인 타겟들만 전달
+ onSuccess={handleActionSuccess}
+ />
</>
)}
</>