import { Checkbox } from '@/components/ui/checkbox'; import { i18n } from '@/plugins'; import { ArrowUpDown } from 'lucide-vue-next'; import { Button } from '@/components/ui/button'; const { t } = i18n.global; const sortButton = ({ column, label, descFirst = false }) => ( ); export const createColumns = ({ randomUserColours, userImage, userImageFull, onShowFullscreenImage, onShowUser, onSelectionChange }) => [ { id: 'selected', header: () => null, size: 55, enableSorting: 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: ({ column }) => sortButton({ column, label: 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} ); } }, { accessorKey: 'managerNotes', header: ({ column }) => sortButton({ column, label: t('dialog.group_member_moderation.notes') }), cell: ({ row }) => ( e.stopPropagation()}> {row.original?.managerNotes} ) } ];