import { Header, Table, flexRender } from "@tanstack/react-table"; import { cn } from "@/lib/utils"; import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Separator, } from "@/ui"; import { ArrowDownIcon, ArrowDownUpIcon, ArrowUpIcon, EyeOffIcon, } from "lucide-react"; interface DataTableColumnHeaderProps extends React.HTMLAttributes { table: Table; header: Header; } export function DataTableColumnHeader({ table, header, className, }: DataTableColumnHeaderProps) { if (!header.column.getCanSort()) { return ( <>
{header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}
{header.column.getCanResize() && ( header.column.resetSize(), onMouseDown: header.getResizeHandler(), onTouchStart: header.getResizeHandler(), style: { transform: table.options.columnResizeMode === "onEnd" && header.column.getIsResizing() ? `translateX(${ (table.options.columnResizeDirection === "rtl" ? -1 : 1) * (table.getState().columnSizingInfo.deltaOffset ?? 0) }px)` : "", }, }} /> )} ); } return (
header.column.toggleSorting(false)}> Ascendente header.column.toggleSorting(true)}> Descendente {header.column.getCanHide() && ( header.column.toggleVisibility(false)} > Ocultar )}
); }