import { Badge } from '../../components/ui/badge'; import { Button } from '../../components/ui/button'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../components/ui/tooltip'; import { ArrowUpDown, Trash2, X } from 'lucide-vue-next'; import { storeToRefs } from 'pinia'; import { formatDateFilter } from '../../shared/utils'; import { i18n } from '../../plugin'; import { useUiStore, useUserStore } from '../../stores'; const { t } = i18n.global; export const createColumns = ({ onDelete, onDeletePrompt }) => { const { showUserDialog } = useUserStore(); const { shiftHeld } = storeToRefs(useUiStore()); const { currentUser } = storeToRefs(useUserStore()); return [ { id: 'spacer', header: () => null, enableSorting: false, size: 20, minSize: 0, maxSize: 20, cell: () => null }, { accessorKey: 'created', size: 120, header: ({ column }) => ( ), cell: ({ row }) => { const createdAt = row.getValue('created'); const shortText = formatDateFilter(createdAt, 'short'); const longText = formatDateFilter(createdAt, 'long'); return ( {shortText} {longText} ); } }, { accessorKey: 'type', size: 140, header: () => t('table.moderation.type'), cell: ({ row }) => { const type = row.getValue('type'); return ( {t(`view.moderation.filters.${type}`)} ); } }, { accessorKey: 'sourceDisplayName', meta: { class: 'overflow-hidden' }, size: 120, header: () => t('table.moderation.source'), cell: ({ row }) => { const original = row.original; return ( showUserDialog(original.sourceUserId)} > {original.sourceDisplayName} ); } }, { accessorKey: 'targetDisplayName', size: 200, minSize: 80, meta: { stretch: true }, header: () => t('table.moderation.target'), cell: ({ row }) => { const original = row.original; return ( showUserDialog(original.targetUserId)} > {original.targetDisplayName} ); } }, { id: 'action', meta: { class: 'text-right' }, size: 80, minSize: 80, maxSize: 80, enableSorting: false, header: () => t('table.moderation.action'), cell: ({ row }) => { const original = row.original; if (original.sourceUserId !== currentUser.value?.id) { return null; } return (
); } }, { id: 'trailing', header: () => null, enableSorting: false, enableResizing: false, size: 5, cell: () => null } ]; };