Files
saladeaula.digital/apps/admin.saladeaula.digital/app/components/data-table/view-options.tsx
2025-11-19 00:46:57 -03:00

55 lines
1.5 KiB
TypeScript

'use client'
import { Columns2Icon } from 'lucide-react'
import { Button } from '@repo/ui/components/ui/button'
import {
DropdownMenu,
DropdownMenuCheckboxItem,
DropdownMenuContent,
DropdownMenuTrigger
} from '@repo/ui/components/ui/dropdown-menu'
import { cn } from '@repo/ui/lib/utils'
import { useDataTable } from './data-table'
export function DataTableViewOptions<TData>({
className
}: {
className: string
}) {
const { table } = useDataTable()
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" className={cn('cursor-pointer', className)}>
<Columns2Icon /> Colunas
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-44 *:cursor-pointer">
{table
.getAllColumns()
.filter(
(column) =>
typeof column.accessorFn !== 'undefined' && column.getCanHide()
)
.map((column) => {
// @ts-ignore
const title = column.columnDef?.meta?.title ?? column.id
return (
<DropdownMenuCheckboxItem
key={column.id}
checked={column.getIsVisible()}
onSelect={(e) => e.preventDefault()}
onCheckedChange={(value) => column.toggleVisibility(!!value)}
>
{title}
</DropdownMenuCheckboxItem>
)
})}
</DropdownMenuContent>
</DropdownMenu>
)
}