| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import { type ColumnDef } from '@tanstack/react-table'
- import { type Role } from '@/types/roles.types'
- import { Badge } from '@/components/ui/badge'
- import { DataTableColumnHeader } from '@/components/data-table'
- import { LongText } from '@/components/long-text'
- import { DataTableRowActions } from './data-table-row-actions'
- const roleStatusLabels: Record<string, string> = {
- active: 'فعال',
- inactive: 'غیرفعال',
- }
- export const rolesColumns: ColumnDef<Role>[] = [
- {
- accessorKey: 'id',
- header: ({ column }) => (
- <DataTableColumnHeader column={column} title='شناسه' />
- ),
- cell: ({ row }) => <div className='w-15'>#{row.original.id}</div>,
- },
- {
- accessorKey: 'name',
- header: ({ column }) => (
- <DataTableColumnHeader column={column} title='نام نقش' />
- ),
- cell: ({ row }) => (
- <LongText className='max-w-48'>{row.original.name}</LongText>
- ),
- },
- {
- accessorKey: 'status',
- header: ({ column }) => (
- <DataTableColumnHeader column={column} title='وضعیت' />
- ),
- cell: ({ row }) => (
- <Badge
- variant={row.original.status === 'active' ? 'default' : 'secondary'}
- >
- {roleStatusLabels[row.original.status] ?? row.original.status}
- </Badge>
- ),
- },
- {
- id: 'activity_fields',
- accessorFn: (row) =>
- row.activity_fields?.map((field) => field.name).join(', ') ?? '',
- header: ({ column }) => (
- <DataTableColumnHeader column={column} title='رشتهها' />
- ),
- cell: ({ row }) => {
- const fields = row.original.activity_fields ?? []
- if (fields.length === 0) {
- return <span className='text-sm text-muted-foreground'>—</span>
- }
- const visibleFields = fields.length > 3 ? fields.slice(0, 2) : fields
- const hiddenCount = fields.length - visibleFields.length
- return (
- <div className='flex max-w-64 flex-nowrap items-center gap-1'>
- {visibleFields.map((field) => (
- <Badge key={field.id} variant='outline'>
- {field.name}
- </Badge>
- ))}
- {hiddenCount > 0 && <Badge variant='secondary'>+{hiddenCount}</Badge>}
- </div>
- )
- },
- },
- {
- id: 'permissions_count',
- accessorFn: (row) => row.permissions.length,
- header: ({ column }) => (
- <DataTableColumnHeader column={column} title='تعداد دسترسی' />
- ),
- cell: ({ row }) => (
- <Badge variant='secondary'>{row.original.permissions.length}</Badge>
- ),
- },
- {
- accessorKey: 'created_at',
- header: ({ column }) => (
- <DataTableColumnHeader column={column} title='تاریخ ایجاد' />
- ),
- cell: ({ row }) => (
- <div className='text-sm text-muted-foreground'>
- {new Date(row.original.created_at).toLocaleDateString('fa-IR')}
- </div>
- ),
- },
- {
- id: 'actions',
- cell: DataTableRowActions,
- enableSorting: false,
- },
- ]
|