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}
)
}
];