diff options
Diffstat (limited to 'lib/incoterms/table/incoterms-table-toolbar.tsx')
| -rw-r--r-- | lib/incoterms/table/incoterms-table-toolbar.tsx | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/lib/incoterms/table/incoterms-table-toolbar.tsx b/lib/incoterms/table/incoterms-table-toolbar.tsx index b87982c9..698acf59 100644 --- a/lib/incoterms/table/incoterms-table-toolbar.tsx +++ b/lib/incoterms/table/incoterms-table-toolbar.tsx @@ -1,16 +1,53 @@ "use client"; import * as React from "react"; +import { type Table } from "@tanstack/react-table"; +import { Download } from "lucide-react"; + +import { exportTableToExcel } from "@/lib/export"; +import { Button } from "@/components/ui/button"; +import { DeleteIncotermsDialog } from "./delete-incoterms-dialog"; import { IncotermsAddDialog } from "./incoterms-add-dialog"; +import { incoterms } from "@/db/schema/procurementRFQ"; -interface IncotermsTableToolbarProps { +interface IncotermsTableToolbarActionsProps { + table: Table<typeof incoterms.$inferSelect>; onSuccess?: () => void; } -export function IncotermsTableToolbar({ onSuccess }: IncotermsTableToolbarProps) { +export function IncotermsTableToolbarActions({ table, onSuccess }: IncotermsTableToolbarActionsProps) { return ( <div className="flex items-center gap-2"> + {/** 1) 선택된 로우가 있으면 삭제 다이얼로그 */} + {table.getFilteredSelectedRowModel().rows.length > 0 ? ( + <DeleteIncotermsDialog + incoterms={table + .getFilteredSelectedRowModel() + .rows.map((row) => row.original)} + onSuccess={() => { + table.toggleAllRowsSelected(false); + onSuccess?.(); + }} + /> + ) : null} + <IncotermsAddDialog onSuccess={onSuccess} /> + + {/** 3) Export 버튼 */} + <Button + variant="outline" + size="sm" + onClick={() => + exportTableToExcel(table, { + filename: "incoterms-list", + excludeColumns: ["select", "actions"], + }) + } + className="gap-2" + > + <Download className="size-4" aria-hidden="true" /> + <span className="hidden sm:inline">Export</span> + </Button> </div> ); }
\ No newline at end of file |
