import clsx from 'clsx'; import classes from './MRT_TableHead.module.css'; import { TableTh, TableThead, type TableTheadProps, TableTr, } from '@mantine/core'; 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'; interface Props extends TableTheadProps { columnVirtualizer?: MRT_ColumnVirtualizer; table: MRT_TableInstance; } export const MRT_TableHead = ({ columnVirtualizer, table, ...rest }: Props) => { 'use no memo'; const { getHeaderGroups, getSelectedRowModel, getState, options: { enableStickyHeader, layoutMode, mantineTableHeadProps, positionToolbarAlertBanner, }, refs: { tableHeadRef }, } = table; const { isFullScreen, showAlertBanner } = getState(); const tableHeadProps = { ...parseFromValuesOrFunc(mantineTableHeadProps, { table, }), ...rest, }; const stickyHeader = enableStickyHeader || isFullScreen; return ( { tableHeadRef.current = ref; if (tableHeadProps?.ref) { // @ts-ignore tableHeadProps.ref.current = ref; } }} > {positionToolbarAlertBanner === 'head-overlay' && (showAlertBanner || getSelectedRowModel().rows.length > 0) ? ( ) : ( getHeaderGroups().map((headerGroup) => ( )) )} ); };