axonhub / frontend /src /features /requests /components /data-table-view-options.tsx
llzai's picture
Upload 1793 files
9853396 verified
import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';
import { MixerHorizontalIcon } from '@radix-ui/react-icons';
import { Table } from '@tanstack/react-table';
import { useTranslation } from 'react-i18next';
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuLabel,
DropdownMenuSeparator,
} from '@/components/ui/dropdown-menu';
interface DataTableViewOptionsProps<TData> {
table: Table<TData>;
}
export function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>) {
const { t } = useTranslation();
return (
<DropdownMenu modal={false}>
<DropdownMenuTrigger asChild>
<Button variant='outline' size='sm' className='ml-auto hidden h-8 lg:flex'>
<MixerHorizontalIcon className='mr-2 h-4 w-4' />
{t('common.view')}
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align='end' className='w-[150px]'>
<DropdownMenuLabel>{t('common.toggleColumns')}</DropdownMenuLabel>
<DropdownMenuSeparator />
{table
.getAllColumns()
.filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())
.map((column) => {
return (
<DropdownMenuCheckboxItem
key={column.id}
className='capitalize'
checked={column.getIsVisible()}
onCheckedChange={(value) => column.toggleVisibility(!!value)}
>
{t(`requests.columns.${column.id}`, {
fallback: t(`common.columns.${column.id}`),
})}
</DropdownMenuCheckboxItem>
);
})}
</DropdownMenuContent>
</DropdownMenu>
);
}