import { Badge } from '../../components/ui/badge'; import { Button } from '../../components/ui/button'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../components/ui/tooltip'; import { ArrowRight, 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()); return [ { id: 'spacer', header: () => null, enableSorting: false, size: 20, minSize: 0, maxSize: 20, cell: () => null }, { accessorKey: 'created_at', size: 120, header: ({ column }) => ( ), cell: ({ row }) => { const createdAt = row.getValue('created_at'); const shortText = formatDateFilter(createdAt, 'short'); const longText = formatDateFilter(createdAt, 'long'); return ( {shortText} {longText} ); } }, { accessorKey: 'type', size: 160, header: () => t('table.friendLog.type'), cell: ({ row }) => { const type = row.getValue('type'); return ( {t(`view.friend_log.filters.${type}`)} ); } }, { accessorKey: 'displayName', size: 260, minSize: 80, header: () => t('table.friendLog.user'), meta: { stretch: true }, cell: ({ row }) => { const original = row.original; const displayName = original.displayName || original.userId || ''; return ( {original.type === 'DisplayName' ? ( {original.previousDisplayName} ) : null} showUserDialog(original.userId)} > {displayName} {original.type === 'TrustLevel' ? ( ({original.previousTrustLevel} {original.trustLevel}) ) : null} ); } }, { id: 'action', meta: { class: 'w-[80px] max-w-[80px] text-right' }, size: 80, maxSize: 80, header: () => t('table.friendLog.action'), enableSorting: false, cell: ({ row }) => { const original = row.original; return (
); } }, { id: 'trailing', header: () => null, enableSorting: false, enableResizing: false, size: 5, cell: () => null } ]; };