diff options
Diffstat (limited to 'lib/techsales-rfq/table/rfq-table-toolbar-actions.tsx')
| -rw-r--r-- | lib/techsales-rfq/table/rfq-table-toolbar-actions.tsx | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/techsales-rfq/table/rfq-table-toolbar-actions.tsx b/lib/techsales-rfq/table/rfq-table-toolbar-actions.tsx new file mode 100644 index 00000000..da716eeb --- /dev/null +++ b/lib/techsales-rfq/table/rfq-table-toolbar-actions.tsx @@ -0,0 +1,63 @@ +"use client" + +import * as React from "react" +import { Download, RefreshCw } from "lucide-react" +import { toast } from "sonner" + +import { exportTableToExcel } from "@/lib/export" +import { Button } from "@/components/ui/button" +import { type Table } from "@tanstack/react-table" +import { CreateRfqDialog } from "./create-rfq-dialog" + +interface RFQTableToolbarActionsProps<TData> { + selection: Table<TData>; + onRefresh?: () => void; +} + +export function RFQTableToolbarActions<TData>({ + selection, + onRefresh +}: RFQTableToolbarActionsProps<TData>) { + + // 데이터 새로고침 + const handleRefresh = () => { + if (onRefresh) { + onRefresh(); + toast.success("데이터를 새로고침했습니다"); + } + } + + return ( + <div className="flex items-center gap-2"> + {/* RFQ 생성 다이얼로그 */} + <CreateRfqDialog onCreated={onRefresh} /> + + {/* 새로고침 버튼 */} + <Button + variant="outline" + size="sm" + onClick={handleRefresh} + className="gap-2" + > + <RefreshCw className="size-4" aria-hidden="true" /> + <span className="hidden sm:inline">새로고침</span> + </Button> + + {/* 내보내기 버튼 */} + <Button + variant="outline" + size="sm" + onClick={() => + exportTableToExcel(selection, { + filename: "tech_sales_rfq", + excludeColumns: ["select", "actions"], + }) + } + className="gap-2" + > + <Download className="size-4" aria-hidden="true" /> + <span className="hidden sm:inline">내보내기</span> + </Button> + </div> + ) +}
\ No newline at end of file |
