"use client" import * as React from "react" import { type Row } from "@tanstack/react-table" import { Loader, Trash } from "lucide-react" import { toast } from "sonner" import { useMediaQuery } from "@/hooks/use-media-query" import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer" import { codeGroups } from "@/db/schema/docu-list-rule" import { deleteCodeGroup } from "@/lib/docu-list-rule/code-groups/service" interface DeleteCodeGroupsDialogProps extends React.ComponentPropsWithoutRef { codeGroups: Row["original"][] showTrigger?: boolean onSuccess?: () => void } export function DeleteCodeGroupsDialog({ codeGroups, showTrigger = true, onSuccess, ...props }: DeleteCodeGroupsDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") // Combo Box Code Group이 있는지 확인 const hasComboBoxGroups = codeGroups.some(group => group.controlType === 'combobox') const comboBoxGroups = codeGroups.filter(group => group.controlType === 'combobox') function onDelete() { startDeleteTransition(async () => { try { // 각 Code Group을 순차적으로 삭제 for (const codeGroup of codeGroups) { const result = await deleteCodeGroup(codeGroup.id) if (!result.success) { toast.error(`Code Group ${codeGroup.description} 삭제 실패: ${result.error}`) return } } props.onOpenChange?.(false) toast.success("Code Group이 성공적으로 삭제되었습니다.") onSuccess?.() } catch (error) { console.error("Delete error:", error) toast.error("Code Group 삭제 중 오류가 발생했습니다.") } }) } if (isDesktop) { return ( {showTrigger ? ( ) : null} 정말로 삭제하시겠습니까?

이 작업은 되돌릴 수 없습니다. 선택된{" "} {codeGroups.length} 개의 Code Group을 서버에서 영구적으로 삭제합니다.

{hasComboBoxGroups && (

⚠️ Combo Box 옵션 삭제 경고

다음 {comboBoxGroups.length}개의 Combo Box Code Group이 포함되어 있습니다:

    {comboBoxGroups.map((group) => (
  • {group.description} ({group.groupId})
  • ))}

이 Code Group들을 삭제하면 관련된 모든 Combo Box 옵션들도 함께 삭제됩니다.

)}
) } return ( {showTrigger ? ( ) : null} 정말로 삭제하시겠습니까?

이 작업은 되돌릴 수 없습니다. 선택된{" "} {codeGroups.length} 개의 Code Group을 서버에서 영구적으로 삭제합니다.

{hasComboBoxGroups && (

⚠️ Combo Box 옵션 삭제 경고

다음 {comboBoxGroups.length}개의 Combo Box Code Group이 포함되어 있습니다:

    {comboBoxGroups.map((group) => (
  • {group.description} ({group.groupId})
  • ))}

이 Code Group들을 삭제하면 관련된 모든 Combo Box 옵션들도 함께 삭제됩니다.

)}
) }