import { ActionIcon, Collapse, Flex, Menu, Text, Tooltip } from '@mantine/core'; import { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields'; import { MRT_FilterTextInput } from '../inputs/MRT_FilterTextInput'; import { MRT_FilterCheckbox } from '../inputs/MRT_FilterCheckbox'; import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu'; import { type MRT_Header, type MRT_TableInstance } from '../types'; import { MRT_FilterRangeSlider } from '../inputs/MRT_FilterRangeSlider'; interface Props = {}> { header: MRT_Header; table: MRT_TableInstance; } export const MRT_TableHeadCellFilterContainer = < TData extends Record = {}, >({ header, table, }: Props) => { const { getState, options: { columnFilterDisplayMode, enableColumnFilterModes, columnFilterModeOptions, icons: { IconFilterCog }, localization, }, refs: { filterInputRefs }, } = table; const { showColumnFilters } = getState(); const { column } = header; const { columnDef } = column; const currentFilterOption = columnDef._filterFn; const allowedColumnFilterOptions = columnDef?.columnFilterModeOptions ?? columnFilterModeOptions; const showChangeModeButton = enableColumnFilterModes && columnDef.enableColumnFilterModes !== false && (allowedColumnFilterOptions === undefined || !!allowedColumnFilterOptions?.length); return ( {columnDef.filterVariant === 'checkbox' ? ( ) : columnDef.filterVariant === 'range-slider' ? ( ) : ['range', 'date-range'].includes(columnDef.filterVariant ?? '') || ['between', 'betweenInclusive', 'inNumberRange'].includes( columnDef._filterFn, ) ? ( ) : ( )} {showChangeModeButton && ( setTimeout( () => filterInputRefs.current[`${column.id}-0`]?.focus(), 0, ) } /> )} {showChangeModeButton ? ( {localization.filterMode.replace( '{filterType}', // @ts-ignore localization[ `filter${ currentFilterOption?.charAt(0)?.toUpperCase() + currentFilterOption?.slice(1) }` ], )} ) : null} ); };