import { ActionIcon, Box, Group, Text } from '@mantine/core'; import { createColumnHelper } from '@tanstack/react-table'; import { FaFilter, FaTrash } from 'react-icons/fa'; import type { SearchHistoryItem } from 'types'; const columnHelper = createColumnHelper(); export const SearchHistoryColumns = ( setSelectedItem: React.Dispatch>, deleteItemOpen: () => void, filtersEnabled: boolean, setFiltersEnabled: React.Dispatch>, ) => [ columnHelper.accessor('id', { cell: ({ row }: any) => ( { setSelectedItem(row.original); deleteItemOpen(); }} > ), header: () => ( { e.stopPropagation(); e.preventDefault(); setFiltersEnabled(!filtersEnabled); }} > ), meta: { filterVariant: 'counter', }, size: 32, maxSize: 32, enableSorting: false, }), columnHelper.accessor('prefix', { id: 'prefix', cell: ({ cell }: any) => ( {cell.getValue()} ), header: () => Prefix, meta: { filterVariant: 'mantineSelect', }, filterFn: (row, id, value) => { if (value === null) return true; return row.getValue(id) === value; }, size: 32, maxSize: 32, }), columnHelper.accessor('provider', { id: 'provider', cell: ({ cell }: any) => ( {cell.getValue()} ), header: () => Provider, meta: { filterVariant: 'mantineSelect', }, size: 128, maxSize: 128, }), columnHelper.accessor('searchTerm', { id: 'searchTerm', cell: ({ cell }: any) => ( {cell.getValue()} ), header: () => Search String, meta: { filterVariant: 'text', }, maxSize: 1920, }), columnHelper.accessor('dateTimeStamp', { id: 'dateTimeStamp', cell: ({ cell }: any) => { const m = new Date(cell.getValue()); const year = `${m.getFullYear()}`.slice(-2); const month = `0${m.getMonth() + 1}`.slice(-2); const day = `0${m.getDate()}`.slice(-2); const hours = `0${m.getHours()}`.slice(-2); const minutes = `0${m.getMinutes()}`.slice(-2); const dateString = `${month}/${day}/${year} ${hours}:${minutes}`; return ( {dateString} ); }, header: () => Time Stamp, meta: { filterVariant: 'range', }, filterFn: (row, id, value) => { const startDate = new Date(value[0]); const endDate = new Date(value[1]); const cellDate = new Date(row.getValue(id)); if (value[0] && value[1]) { return cellDate >= startDate && cellDate <= endDate; } return true; }, size: 132, maxSize: 132, minSize: 132, }), ];