"use client" import * as React from "react" import { type Table } from "@tanstack/react-table" import { Download, FileSpreadsheet, Trash2, } from "lucide-react" import { deleteContract } from "../service" import { toast } from "sonner" import { exportTableToExcel } from "@/lib/export" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { GeneralContractListItem } from "./general-contracts-table-columns" import { CreateGeneralContractDialog } from "./create-general-contract-dialog" interface GeneralContractsTableToolbarActionsProps { table: Table } export function GeneralContractsTableToolbarActions({ table }: GeneralContractsTableToolbarActionsProps) { const [isExporting, setIsExporting] = React.useState(false) // 선택된 계약들 const selectedContracts = React.useMemo(() => { return table .getFilteredSelectedRowModel() .rows .map(row => row.original) }, [table.getFilteredSelectedRowModel().rows]) const handleExport = async () => { try { setIsExporting(true) await exportTableToExcel(table, { filename: "general-contracts", excludeColumns: ["select", "actions"], }) toast.success("계약 목록이 성공적으로 내보내졌습니다.") } catch (error) { toast.error("내보내기 중 오류가 발생했습니다.") } finally { setIsExporting(false) } } const handleDelete = async () => { if (selectedContracts.length === 0) { toast.error("계약폐기할 계약을 선택해주세요.") return } // // 계약폐기 확인 // const confirmed = window.confirm( // `선택한 ${selectedContracts.length}개 계약을 폐기하시겠습니까?\n계약폐기 후에는 복구할 수 없습니다.` // ) // if (!confirmed) return try { // 선택된 모든 계약을 폐기 처리 const deletePromises = selectedContracts.map(contract => deleteContract(contract.id) ) await Promise.all(deletePromises) toast.success(`${selectedContracts.length}개 계약이 폐기되었습니다.`) // 테이블 새로고침 } catch (error) { console.error('Error deleting contracts:', error) toast.error("계약폐기 중 오류가 발생했습니다.") } } return (
{/* 신규 등록 */} {/* 계약폐기 */} {/* Export */} 계약 목록 내보내기
) }