import tw from 'twin.macro'; import { ArrowUpIcon, ArrowDownIcon, InfoIcon, PinIcon, TrashIcon, } from '@primer/octicons-react'; import { FilterValue, CategoryValue } from '../types'; import { EditableHeader } from './editable-header'; import { NewColumnHeader } from './new-column-header'; import { memo } from 'react'; interface HeaderProps { style: object; cellInfo: object; cellType: string; width?: number; columnName: string; activeSortDirection?: string; metadata?: string; originalData: any[]; filteredData: any[]; possibleValues?: CategoryValue[]; filter?: FilterValue; focusedValue?: number; showFilters: boolean; isFirstColumn: boolean; isSticky: boolean; isNewColumn: boolean; isEditable: boolean; onChange?: (value: any) => void; onDelete?: () => void; onAdd: (name: string) => void; onFilterChange: Function; onSort: Function; onSticky: Function; } export function Header(props: HeaderProps) { const { style, columnName, activeSortDirection, width, metadata, originalData, filteredData, possibleValues, filter, cellType, cellInfo, focusedValue, showFilters, isFirstColumn, isSticky, isNewColumn, isEditable, onChange, onDelete, onAdd, onFilterChange, onSort, onSticky, } = props; // const popoverAnchorRef = React.createRef(); // @ts-ignore const { filter: FilterComponent } = cellInfo; if (isNewColumn) return ( ) return (
{showFilters && (
)}
); } const HeaderTop = memo(({ cellType, columnName, activeSortDirection, metadata, isSticky, onSticky, onSort, isEditable, onChange, onDelete, }: { cellType: string; columnName: string; activeSortDirection?: string; metadata?: string; isSticky: boolean; onSticky: Function; onSort: Function; isEditable: boolean; onChange?: (value: any) => void; onDelete?: () => void; }) => { return (
{columnName} {!!metadata && ( )}
{isEditable && ( )}
{!!metadata && (
{metadata}
)}
) })