"use client" import * as React from "react" import { ColumnDef } from "@tanstack/react-table" import type { Row } from "@tanstack/react-table" import { numericFilter } from "@/lib/data-table" import { ClientDataTableColumnHeaderSimple } from "@/components/client-data-table/data-table-column-simple-header" import { formatDate } from "@/lib/utils" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Ellipsis } from "lucide-react" import { Tag } from "@/types/vendorData" import { createFilterFn } from "@/components/client-data-table/table-filters" export interface DataTableRowAction { row: Row type: 'open' | "update" | "delete" } 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, size: 40, }, { accessorKey: "tagNo", header: ({ column }) => ( ), filterFn: createFilterFn("text"), cell: ({ row }) =>
{row.getValue("tagNo")}
, meta: { excelHeader: "Tag No" }, }, { accessorKey: "description", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("description")}
, meta: { excelHeader: "Tag Descripiton" }, }, { accessorKey: "tagType", header: ({ column }) => ( ), cell: ({ row }) =>
{row.getValue("tagType")}
, meta: { excelHeader: "Tag Type" }, }, { id: "validation", header: "Error", cell: ({ row }) =>
, }, { accessorKey: "createdAt", header: ({ column }) => ( ), cell: ({ cell }) => formatDate(cell.getValue() as Date), meta: { excelHeader: "created At" }, }, { accessorKey: "updatedAt", header: ({ column }) => ( ), cell: ({ cell }) => formatDate(cell.getValue() as Date), meta: { excelHeader: "updated At" }, }, { id: "actions", cell: function Cell({ row }) { const [isUpdatePending, startUpdateTransition] = React.useTransition() return ( setRowAction({ row, type: "update" })} > Edit Labels {/* { startUpdateTransition(() => { toast.promise( updateTask({ id: row.original.id, label: value as Task["label"], }), { loading: "Updating...", success: "Label updated", error: (err) => getErrorMessage(err), } ) }) }} > {tasks.label.enumValues.map((label) => ( {label} ))} */} setRowAction({ row, type: "delete" })} > Delete ⌘⌫ ) }, size: 40, }, ] }