import TableRow, { type TableRowProps } from '@mui/material/TableRow'; import { MRT_TableFooterCell } from './MRT_TableFooterCell'; 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_TableFooterRowProps extends TableRowProps { columnVirtualizer?: MRT_ColumnVirtualizer; footerGroup: MRT_HeaderGroup; table: MRT_TableInstance; } export const MRT_TableFooterRow = ({ columnVirtualizer, footerGroup, table, ...rest }: MRT_TableFooterRowProps) => { const { options: { layoutMode, mrtTheme: { baseBackgroundColor }, muiTableFooterRowProps, }, } = table; const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = columnVirtualizer ?? {}; // if no content in row, skip row if ( !footerGroup.headers?.some( (header) => (typeof header.column.columnDef.footer === 'string' && !!header.column.columnDef.footer) || header.column.columnDef.Footer, ) ) { return null; } const tableRowProps = { ...parseFromValuesOrFunc(muiTableFooterRowProps, { footerGroup, table, }), ...rest, }; return ( ({ backgroundColor: baseBackgroundColor, display: layoutMode?.startsWith('grid') ? 'flex' : undefined, position: 'relative', width: '100%', ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as any), })} > {virtualPaddingLeft ? ( ) : null} {(virtualColumns ?? footerGroup.headers).map( (footerOrVirtualFooter, staticColumnIndex) => { let footer = footerOrVirtualFooter as MRT_Header; if (columnVirtualizer) { staticColumnIndex = (footerOrVirtualFooter as MRT_VirtualItem) .index; footer = footerGroup.headers[staticColumnIndex]; } return footer ? ( ) : null; }, )} {virtualPaddingRight ? ( ) : null} ); };