import TableHead, { type TableHeadProps } from '@mui/material/TableHead'; import { MRT_TableHeadRow } from './MRT_TableHeadRow'; import { type MRT_ColumnVirtualizer, type MRT_RowData, type MRT_TableInstance, } from '../../types'; import { parseFromValuesOrFunc } from '../../utils/utils'; import { MRT_ToolbarAlertBanner } from '../toolbar/MRT_ToolbarAlertBanner'; export interface MRT_TableHeadProps extends TableHeadProps { columnVirtualizer?: MRT_ColumnVirtualizer; table: MRT_TableInstance; } export const MRT_TableHead = ({ columnVirtualizer, table, ...rest }: MRT_TableHeadProps) => { const { getState, options: { enableStickyHeader, layoutMode, muiTableHeadProps, positionToolbarAlertBanner, }, refs: { tableHeadRef }, } = table; const { isFullScreen, showAlertBanner } = getState(); const tableHeadProps = { ...parseFromValuesOrFunc(muiTableHeadProps, { table }), ...rest, }; const stickyHeader = enableStickyHeader || isFullScreen; return ( { tableHeadRef.current = ref; if (tableHeadProps?.ref) { // @ts-expect-error tableHeadProps.ref.current = ref; } }} sx={(theme) => ({ display: layoutMode?.startsWith('grid') ? 'grid' : undefined, opacity: 0.97, position: stickyHeader ? 'sticky' : 'relative', top: stickyHeader && layoutMode?.startsWith('grid') ? 0 : undefined, zIndex: stickyHeader ? 2 : undefined, ...(parseFromValuesOrFunc(tableHeadProps?.sx, theme) as any), })} > {positionToolbarAlertBanner === 'head-overlay' && (showAlertBanner || table.getSelectedRowModel().rows.length > 0) ? ( ) : ( table .getHeaderGroups() .map((headerGroup) => ( )) )} ); };