import { type MouseEvent } from 'react'; import Box from '@mui/material/Box'; import Grow from '@mui/material/Grow'; import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip'; import { type MRT_Header, type MRT_TableInstance } from '../types'; interface Props { header: MRT_Header; table: MRT_TableInstance; } export const MRT_TableHeadCellFilterLabel = ({ header, table }: Props) => { const { options: { icons: { FilterAltIcon }, localization, }, refs: { filterInputRefs }, setShowColumnFilters, } = table; const { column } = header; const { columnDef } = column; const isRangeFilter = ['range', 'ranger-slider'].includes(columnDef.filterVariant ?? '') || ['between', 'betweenInclusive', 'inNumberRange'].includes( columnDef._filterFn, ); const currentFilterOption = columnDef._filterFn; const filterTooltip = localization.filteringByColumn .replace('{column}', String(columnDef.header)) .replace( '{filterType}', // @ts-ignore localization[ `filter${ currentFilterOption?.charAt(0)?.toUpperCase() + currentFilterOption?.slice(1) }` ], ) .replace( '{filterValue}', `"${ Array.isArray(column.getFilterValue()) ? (column.getFilterValue() as [string, string]).join( `" ${isRangeFilter ? localization.and : localization.or} "`, ) : (column.getFilterValue() as string) }"`, ) .replace('" "', ''); return ( ) => { setShowColumnFilters(true); queueMicrotask(() => { filterInputRefs.current[`${column.id}-0`]?.focus(); filterInputRefs.current[`${column.id}-0`]?.select(); }); event.stopPropagation(); }} size="small" sx={{ height: '12px', m: 0, opacity: 0.8, p: '2px', transform: 'scale(0.66)', width: '12px', }} > ); };