import { Checkbox } from '@/components/ui/checkbox'; import { i18n } from '@/plugin'; import { formatDateFilter } from '@/shared/utils'; const { t } = i18n.global; export const createColumns = ({ randomUserColours, rolesText, userImage, userImageFull, onShowFullscreenImage, onShowUser, onSelectionChange }) => [ { id: 'selected', header: () => null, size: 55, enableSorting: false, enableResizing: false, cell: ({ row }) => { const original = row.original; return (
e.stopPropagation()} > { original.$selected = value; onSelectionChange?.(original); }} />
); } }, { id: 'avatar', header: () => t('dialog.group_member_moderation.avatar'), size: 70, enableSorting: false, cell: ({ row }) => { const original = row.original; const thumb = userImage?.(original?.user); const full = userImageFull?.(original?.user); return ( ( ) }} > { e.stopPropagation(); if (full) { onShowFullscreenImage?.(full); } }} /> ); } }, { id: 'displayName', accessorFn: (row) => row?.user?.displayName ?? row?.$displayName ?? '', header: () => t('dialog.group_member_moderation.display_name'), size: 160, cell: ({ row }) => { const original = row.original; const useColors = !!(randomUserColours?.value ?? randomUserColours); const colorStyle = useColors ? { color: original?.user?.$userColour } : null; return ( { e.stopPropagation(); onShowUser?.(original?.userId); }} > {original?.user?.displayName} ); } }, { id: 'roles', accessorFn: (row) => rolesText?.(row?.roleIds) ?? '', header: () => t('dialog.group_member_moderation.roles'), cell: ({ row }) => { const original = row.original; return {rolesText?.(original?.roleIds) ?? ''}; } }, { accessorKey: 'managerNotes', header: () => t('dialog.group_member_moderation.notes'), cell: ({ row }) => ( e.stopPropagation()}>{row.original?.managerNotes} ) }, { accessorKey: 'joinedAt', header: () => t('dialog.group_member_moderation.joined_at'), size: 170, cell: ({ row }) => {formatDateFilter(row.original?.joinedAt, 'long')} }, { accessorKey: 'bannedAt', header: () => t('dialog.group_member_moderation.banned_at'), size: 170, cell: ({ row }) => {formatDateFilter(row.original?.bannedAt, 'long')} } ];