diff options
| author | 0-Zz-ang <s1998319@gmail.com> | 2025-07-10 15:56:13 +0900 |
|---|---|---|
| committer | 0-Zz-ang <s1998319@gmail.com> | 2025-07-10 15:56:13 +0900 |
| commit | 356929b399ef31a4de82906267df438cf29ea59d (patch) | |
| tree | c353a55c076e987042f99f3dbf1eab54706f6829 /lib/integration/table/integration-table-toolbar.tsx | |
| parent | 25d569828b704a102f681a627c76c4129afa8be3 (diff) | |
인터페이스 관련 파일 수정
Diffstat (limited to 'lib/integration/table/integration-table-toolbar.tsx')
| -rw-r--r-- | lib/integration/table/integration-table-toolbar.tsx | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/integration/table/integration-table-toolbar.tsx b/lib/integration/table/integration-table-toolbar.tsx new file mode 100644 index 00000000..a53eac2f --- /dev/null +++ b/lib/integration/table/integration-table-toolbar.tsx @@ -0,0 +1,53 @@ +"use client"; + +import * as React from "react"; +import { type Table } from "@tanstack/react-table"; +import { Download, Plus } from "lucide-react"; + +import { exportTableToExcel } from "@/lib/export"; +import { Button } from "@/components/ui/button"; +import { DeleteIntegrationDialog } from "./delete-integration-dialog"; +import { IntegrationAddDialog } from "./integration-add-dialog"; +import { integrationTable } from "@/db/schema/integration"; + +interface IntegrationTableToolbarActionsProps<TData> { + table: Table<TData>; + onSuccess?: () => void; +} + +export function IntegrationTableToolbarActions<TData>({ + table, + onSuccess, +}: IntegrationTableToolbarActionsProps<TData>) { + const selectedRows = table.getFilteredSelectedRowModel().rows.map((row) => row.original); + return ( + <div className="flex items-center gap-2"> + {selectedRows.length > 0 && ( + <DeleteIntegrationDialog + integrations={selectedRows} + onSuccess={() => { + table.toggleAllRowsSelected(false); + onSuccess?.(); + }} + /> + )} + <IntegrationAddDialog onSuccess={onSuccess} /> + + {/** 3) Export 버튼 */} + <Button + variant="outline" + size="sm" + onClick={() => + exportTableToExcel(table, { + filename: "interface-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 |
