| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import { type Table } from '@tanstack/react-table'
- import { useTranslation } from 'react-i18next'
- import { Button } from '@/components/ui/button'
- import {
- DropdownMenu,
- DropdownMenuCheckboxItem,
- DropdownMenuContent,
- DropdownMenuGroup,
- DropdownMenuLabel,
- DropdownMenuTrigger,
- } from '@/components/ui/dropdown-menu'
- type DataTableViewOptionsProps<TData> = {
- table: Table<TData>
- }
- export function DataTableViewOptions<TData>({
- table,
- }: DataTableViewOptionsProps<TData>) {
- const { t } = useTranslation()
- return (
- <DropdownMenu modal={false}>
- <DropdownMenuTrigger
- render={
- <Button
- variant='outline'
- className='shrink-0'
- aria-label={t('View')}
- />
- }
- >
- {t('View')}
- </DropdownMenuTrigger>
- <DropdownMenuContent align='end' className='w-[150px]'>
- <DropdownMenuGroup>
- <DropdownMenuLabel>{t('Toggle columns')}</DropdownMenuLabel>
- {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)}
- >
- {column.columnDef.meta?.label ?? column.id}
- </DropdownMenuCheckboxItem>
- )
- })}
- </DropdownMenuGroup>
- </DropdownMenuContent>
- </DropdownMenu>
- )
- }
|