summaryrefslogtreecommitdiff
path: root/lib/vendors/items-table/item-table-toolbar-actions.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendors/items-table/item-table-toolbar-actions.tsx')
-rw-r--r--lib/vendors/items-table/item-table-toolbar-actions.tsx36
1 files changed, 26 insertions, 10 deletions
diff --git a/lib/vendors/items-table/item-table-toolbar-actions.tsx b/lib/vendors/items-table/item-table-toolbar-actions.tsx
index f7bd2bf6..8be67f71 100644
--- a/lib/vendors/items-table/item-table-toolbar-actions.tsx
+++ b/lib/vendors/items-table/item-table-toolbar-actions.tsx
@@ -1,3 +1,4 @@
+// components/vendor-items/item-table-toolbar-actions.tsx
"use client"
import * as React from "react"
@@ -8,21 +9,26 @@ import { toast } from "sonner"
import { exportTableToExcel } from "@/lib/export"
import { Button } from "@/components/ui/button"
-
// 만약 서버 액션이나 API 라우트를 이용해 업로드 처리한다면 import
import { importTasksExcel } from "@/lib/tasks/service" // 예시
-import { VendorItemsView } from "@/db/schema/vendors"
+import {
+ VendorItemsView
+} from "@/db/schema/vendors"
import { AddItemDialog } from "./add-item-dialog"
+import { DeleteVendorItemsDialog } from "./delete-vendor-items-dialog"
interface VendorsTableToolbarActionsProps {
table: Table<VendorItemsView>
vendorId: number
}
-export function VendorsTableToolbarActions({ table,vendorId }: VendorsTableToolbarActionsProps) {
+export function VendorsTableToolbarActions({ table, vendorId }: VendorsTableToolbarActionsProps) {
// 파일 input을 숨기고, 버튼 클릭 시 참조해 클릭하는 방식
const fileInputRef = React.useRef<HTMLInputElement>(null)
+ // 선택된 행들 가져오기
+ const selectedRows = table.getFilteredSelectedRowModel().rows
+
// 파일이 선택되었을 때 처리
async function onFileChange(event: React.ChangeEvent<HTMLInputElement>) {
const file = event.target.files?.[0]
@@ -55,7 +61,6 @@ export function VendorsTableToolbarActions({ table,vendorId }: VendorsTableToolb
} catch (err) {
toast.error("파일 업로드 중 오류가 발생했습니다.")
-
}
}
@@ -66,10 +71,21 @@ export function VendorsTableToolbarActions({ table,vendorId }: VendorsTableToolb
return (
<div className="flex items-center gap-2">
-
- <AddItemDialog vendorId={vendorId}/>
-
- {/** 3) Import 버튼 (파일 업로드) */}
+ <AddItemDialog vendorId={vendorId} />
+
+ {/* 삭제 버튼 - 선택된 행이 있을 때만 표시 */}
+ {selectedRows.length > 0 && (
+ <DeleteVendorItemsDialog
+ vendorId={vendorId}
+ items={selectedRows.map((row) => row.original)}
+ onSuccess={() => {
+ // 삭제 성공 후 선택 해제
+ table.toggleAllPageRowsSelected(false)
+ }}
+ />
+ )}
+
+ {/** Import 버튼 (파일 업로드) */}
<Button variant="outline" size="sm" className="gap-2" onClick={handleImportClick}>
<Upload className="size-4" aria-hidden="true" />
<span className="hidden sm:inline">Import</span>
@@ -86,13 +102,13 @@ export function VendorsTableToolbarActions({ table,vendorId }: VendorsTableToolb
onChange={onFileChange}
/>
- {/** 4) Export 버튼 */}
+ {/** Export 버튼 */}
<Button
variant="outline"
size="sm"
onClick={() =>
exportTableToExcel(table, {
- filename: "tasks",
+ filename: "vendor-items",
excludeColumns: ["select", "actions"],
})
}