import TableRow, { type TableRowProps } from '@mui/material/TableRow'; import { alpha } from '@mui/material/styles'; import { MRT_TableHeadCell } from './MRT_TableHeadCell'; import { type MRT_ColumnVirtualizer, type MRT_Header, type MRT_HeaderGroup, type MRT_RowData, type MRT_TableInstance, type MRT_VirtualItem, } from '../../types'; import { parseFromValuesOrFunc } from '../../utils/utils'; export interface MRT_TableHeadRowProps extends TableRowProps { columnVirtualizer?: MRT_ColumnVirtualizer; headerGroup: MRT_HeaderGroup; table: MRT_TableInstance; } export const MRT_TableHeadRow = ({ columnVirtualizer, headerGroup, table, ...rest }: MRT_TableHeadRowProps) => { const { options: { enableStickyHeader, layoutMode, mrtTheme: { baseBackgroundColor }, muiTableHeadRowProps, }, } = table; const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}; const tableRowProps = { ...parseFromValuesOrFunc(muiTableHeadRowProps, { headerGroup, table, }), ...rest, }; return ( ({ backgroundColor: baseBackgroundColor, boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`, display: layoutMode?.startsWith('grid') ? 'flex' : undefined, position: enableStickyHeader && layoutMode === 'semantic' ? 'sticky' : 'relative', top: 0, ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as any), })} > {virtualPaddingLeft ? ( ) : null} {(virtualColumns ?? headerGroup.headers).map( (headerOrVirtualHeader, staticColumnIndex) => { let header = headerOrVirtualHeader as MRT_Header; if (columnVirtualizer) { staticColumnIndex = (headerOrVirtualHeader as MRT_VirtualItem) .index; header = headerGroup.headers[staticColumnIndex]; } return header ? ( ) : null; }, )} {virtualPaddingRight ? ( ) : null} ); };