import { Header, Table, flexRender } from "@tanstack/react-table"; import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Separator, } from "@repo/shadcn-ui/components"; import { cn } from "@repo/shadcn-ui/lib/utils"; import { t } from "i18next"; 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())}
{false && 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.getCanSort() && ( <> header.column.toggleSorting(false)} aria-label={t("common.sort_asc")} > header.column.toggleSorting(true)} aria-label={t("common.sort_desc")} > )} {header.column.getCanSort() && header.column.getCanHide() && } {header.column.getCanHide() && ( header.column.toggleVisibility(false)} aria-label={t("Hide")} > )}
); }