'use client'; import Link from 'next/link'; import type { Column, ColumnDef } from '@tanstack/react-table'; import { DataTableColumnHeader } from '@/components/ui/table/data-table-column-header'; import { Icons } from '@/components/icons'; import type { ApprovalListItem } from '../types'; import { ApprovalStatusBadge } from './approval-status-badge'; export function getApprovalColumns(): ColumnDef[] { return [ { id: 'entityCode', accessorFn: (row) => row.entityCode ?? row.entityId, header: ({ column }: { column: Column }) => ( ), cell: ({ row }) => (
{row.original.entityCode ?? row.original.entityId} {row.original.workflowName} {row.original.entityTitle ? ` - ${row.original.entityTitle}` : ''}
), meta: { label: 'Request', placeholder: 'Search approvals...', variant: 'text' as const, icon: Icons.search }, enableColumnFilter: true }, { id: 'status', accessorKey: 'status', header: ({ column }: { column: Column }) => ( ), cell: ({ row }) => , meta: { label: 'Status', variant: 'multiSelect' as const, options: [ { value: 'pending', label: 'Pending' }, { value: 'approved', label: 'Approved' }, { value: 'rejected', label: 'Rejected' }, { value: 'returned', label: 'Returned' }, { value: 'cancelled', label: 'Cancelled' } ] }, enableColumnFilter: true }, { id: 'entityType', accessorKey: 'entityType', header: ({ column }: { column: Column }) => ( ), cell: ({ row }) => row.original.entityType.replaceAll('_', ' '), meta: { label: 'Entity', variant: 'multiSelect' as const, options: [{ value: 'quotation', label: 'Quotation' }] }, enableColumnFilter: true }, { id: 'currentStep', accessorKey: 'currentStep', header: ({ column }: { column: Column }) => ( ), cell: ({ row }) => (
Step {row.original.currentStep} {row.original.currentStepRoleName ?? '-'}
) }, { id: 'requestedBy', accessorFn: (row) => row.requestedByName ?? row.requestedBy, header: ({ column }: { column: Column }) => ( ), cell: ({ row }) => row.original.requestedByName ?? row.original.requestedBy }, { id: 'requestedAt', accessorKey: 'requestedAt', header: ({ column }: { column: Column }) => ( ), cell: ({ row }) => new Date(row.original.requestedAt).toLocaleString() } ]; }