import { Button } from '@/components/ui/button.js'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu.js'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog.js'; import { DataTableFilterDialog } from '@/components/data-table/data-table-filter-dialog.js'; import { FieldInfo } from '@/framework/document-introspection/get-document-structure.js'; import { camelCaseToTitleCase } from '@/lib/utils.js'; import { Trans } from '@/lib/trans.js'; import { ColumnDef, HeaderContext } from '@tanstack/table-core'; import { ArrowDown, ArrowUp, ArrowUpDown, EllipsisVertical, Filter } from 'lucide-react'; import React from 'react'; export interface DataTableColumnHeaderProps { customConfig: Partial>; headerContext: HeaderContext; } export function DataTableColumnHeader({ headerContext, customConfig }: DataTableColumnHeaderProps) { const { column } = headerContext; const isSortable = column.getCanSort(); const customHeader = customConfig.header; let display = camelCaseToTitleCase(column.id); if (typeof customHeader === 'function') { display = customHeader(headerContext); } else if (typeof customHeader === 'string') { display = customHeader; } const columSort = column.getIsSorted(); const nextSort = columSort === 'asc' ? true : columSort === 'desc' ? undefined : false; return (
{isSortable && ( )}
{display}
); }