"use client" import * as React from "react" import { ColumnDef } from "@tanstack/react-table" import { formatDate } from "@/lib/utils" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Ellipsis } from "lucide-react" // 기존 헤더 컴포넌트 사용 (리사이저가 내장된 헤더는 따로 구현할 예정) import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header" import { Tag } from "@/db/schema/vendorData" import { DataTableRowAction } from "@/types/table" interface GetColumnsProps { setRowAction: React.Dispatch | null>> } export function getColumns({ setRowAction, }: GetColumnsProps): ColumnDef[] { return [ { id: "select", header: ({ table }) => ( table.toggleAllPageRowsSelected(!!value)} aria-label="Select all" className="translate-y-0.5" /> ), cell: ({ row }) => ( row.toggleSelected(!!value)} aria-label="Select row" className="translate-y-0.5" /> ), enableSorting: false, enableHiding: false, enableResizing: false, // 체크박스 열은 리사이징 비활성화 size: 40, minSize: 40, maxSize: 40, }, { accessorKey: "tagNo", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("tagNo")}
, meta: { excelHeader: "Tag No" }, enableResizing: true, // 리사이징 활성화 minSize: 100, // 최소 너비 size: 160, // 기본 너비 }, { accessorKey: "description", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("description")}
, meta: { excelHeader: "Tag Descripiton" }, enableResizing: true, minSize: 150, size: 240, }, { accessorKey: "class", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("class")}
, meta: { excelHeader: "Class" }, enableResizing: true, minSize: 100, size: 150, }, { accessorKey: "subclass", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("subclass")}
, meta: { excelHeader: "Item Class" }, enableResizing: true, minSize: 100, size: 150, }, { accessorKey: "createdAt", header: ({ column }) => ( ), cell: ({ cell }) => formatDate(cell.getValue() as Date, "KR"), meta: { excelHeader: "created At" }, enableResizing: true, minSize: 120, size: 180, }, { accessorKey: "updatedAt", header: ({ column }) => ( ), cell: ({ cell }) => formatDate(cell.getValue() as Date, "KR"), meta: { excelHeader: "updated At" }, enableResizing: true, minSize: 120, size: 180, }, { id: "actions", cell: function Cell({ row }) { const [isUpdatePending, startUpdateTransition] = React.useTransition() return ( setRowAction({ row, type: "update" })} > Edit setRowAction({ row, type: "delete" })} > Delete ⌘⌫ ) }, enableResizing: false, // 액션 열은 리사이징 비활성화 size: 40, minSize: 40, maxSize: 40, enableHiding: false, }, ] }