diff options
Diffstat (limited to 'lib/basic-contract/vendor-table/basicContract-table-toolbar-actions.tsx')
| -rw-r--r-- | lib/basic-contract/vendor-table/basicContract-table-toolbar-actions.tsx | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/basic-contract/vendor-table/basicContract-table-toolbar-actions.tsx b/lib/basic-contract/vendor-table/basicContract-table-toolbar-actions.tsx new file mode 100644 index 00000000..2e5e4471 --- /dev/null +++ b/lib/basic-contract/vendor-table/basicContract-table-toolbar-actions.tsx @@ -0,0 +1,56 @@ +"use client" + +import * as React from "react" +import { type Task } from "@/db/schema/tasks" +import { type Table } from "@tanstack/react-table" +import { Download, Upload } from "lucide-react" + +import { exportTableToExcel } from "@/lib/export" +import { Button } from "@/components/ui/button" +import { BasicContractView } from "@/db/schema" +import { BasicContractSignDialog } from "./basic-contract-sign-dialog" + +interface TemplateTableToolbarActionsProps { + table: Table<BasicContractView> +} + +export function BasicContractTableToolbarActions({ table }: TemplateTableToolbarActionsProps) { + // 파일 input을 숨기고, 버튼 클릭 시 참조해 클릭하는 방식 + + const inPendingContracts = React.useMemo(() => { + return table + .getFilteredSelectedRowModel() + .rows + .map(row => row.original) + .filter(contract => contract.status === "PENDING"); + }, [table.getFilteredSelectedRowModel().rows]); + + + return ( + <div className="flex items-center gap-2"> + + {table.getFilteredSelectedRowModel().rows.length > 0 ? ( + <BasicContractSignDialog + contracts={inPendingContracts} + onSuccess={() => table.toggleAllRowsSelected(false)} + /> + ) : null} + + {/** 4) Export 버튼 */} + <Button + variant="outline" + size="sm" + onClick={() => + exportTableToExcel(table, { + filename: "basci-contract-requested-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 |
