diff --git a/src/core/components/DataTable/head/TableHead.js b/src/core/components/DataTable/head/TableHead.js index 055a4ed..5e5dd99 100644 --- a/src/core/components/DataTable/head/TableHead.js +++ b/src/core/components/DataTable/head/TableHead.js @@ -1,12 +1,12 @@ -import { parseFromValuesOrFunc } from "@/core/utils/utils"; -import { TableHead } from "@mui/material"; +import {parseFromValuesOrFunc} from "@/core/utils/utils"; +import {TableHead} from "@mui/material"; import DataTable_TableHeadRow from "./TableHeadRow"; const DataTable_TableHead = ({ - columnVirtualizer, - table, - ...rest -}) => { + columnVirtualizer, + table, + ...rest + }) => { const { getState, options: { @@ -15,12 +15,12 @@ const DataTable_TableHead = ({ muiTableHeadProps, positionToolbarAlertBanner, }, - refs: { tableHeadRef }, + refs: {tableHeadRef}, } = table; - const { isFullScreen, showAlertBanner } = getState(); + const {isFullScreen, showAlertBanner} = getState(); const tableHeadProps = { - ...parseFromValuesOrFunc(muiTableHeadProps, { table }), + ...parseFromValuesOrFunc(muiTableHeadProps, {table}), ...rest, }; @@ -47,12 +47,13 @@ const DataTable_TableHead = ({ > {table .getHeaderGroups() - .map((headerGroup) => ( + .map((headerGroup, index) => ( )) } diff --git a/src/core/components/DataTable/head/TableHeadCell.js b/src/core/components/DataTable/head/TableHeadCell.js index 78a9933..6248d63 100644 --- a/src/core/components/DataTable/head/TableHeadCell.js +++ b/src/core/components/DataTable/head/TableHeadCell.js @@ -1,16 +1,16 @@ -import { getCommonMRTCellStyles, parseFromValuesOrFunc } from "@/core/utils/utils"; -import { useTheme } from "@emotion/react"; -import { Box, TableCell } from "@mui/material"; -import { MRT_TableHeadCellSortLabel } from "material-react-table"; -import { useMemo } from "react"; +import {getCommonMRTCellStyles, parseFromValuesOrFunc} from "@/core/utils/utils"; +import {useTheme} from "@emotion/react"; +import {Box, TableCell} from "@mui/material"; +import {MRT_TableHeadCellSortLabel} from "material-react-table"; +import {useMemo} from "react"; const DataTable_TableHeadCell = ({ - columnVirtualizer, - header, - staticColumnIndex, - table, - ...rest -}) => { + columnVirtualizer, + header, + staticColumnIndex, + table, + ...rest + }) => { const theme = useTheme(); const { getState, @@ -24,10 +24,10 @@ const DataTable_TableHeadCell = ({ enableGrouping, enableMultiSort, layoutMode, - mrtTheme: { draggingBorderColor }, + mrtTheme: {draggingBorderColor}, muiTableHeadCellProps, }, - refs: { tableHeadCellRefs }, + refs: {tableHeadCellRefs}, setHoveredColumn, } = table; const { @@ -38,12 +38,12 @@ const DataTable_TableHeadCell = ({ hoveredColumn, showColumnFilters, } = getState(); - const { column } = header; - const { columnDef } = column; - const { columnDefType } = columnDef; + const {column} = header; + const {columnDef} = column; + const {columnDefType} = columnDef; const tableCellProps = { - ...parseFromValuesOrFunc(muiTableHeadCellProps, { column, table }), + ...parseFromValuesOrFunc(muiTableHeadCellProps, {column, table}), ...parseFromValuesOrFunc(columnDef.muiTableHeadCellProps, { column, table, @@ -93,8 +93,8 @@ const DataTable_TableHeadCell = ({ if (showResizeBorder) { return columnResizeDirection === 'ltr' - ? { borderRight: borderStyle } - : { borderLeft: borderStyle }; + ? {borderRight: borderStyle} + : {borderLeft: borderStyle}; } const draggingBorders = borderStyle ? { @@ -172,47 +172,47 @@ const DataTable_TableHeadCell = ({ }} {...tableCellProps} sx={(theme) => ({ - '& :hover': { - '.MuiButtonBase-root': { - opacity: 1, + '& :hover': { + '.MuiButtonBase-root': { + opacity: 1, + }, }, - }, - flexDirection: layoutMode?.startsWith('grid') ? 'column' : undefined, - fontWeight: 'bold', - overflow: 'visible', - p: - density === 'compact' - ? '0.5rem' - : density === 'comfortable' - ? columnDefType === 'display' - ? '0.75rem' - : '1rem' - : columnDefType === 'display' - ? '1rem 1.25rem' - : '1.5rem', - pb: - columnDefType === 'display' - ? 0 - : showColumnFilters || density === 'compact' - ? '0.4rem' - : '0.6rem', - pt: - columnDefType === 'group' || density === 'compact' - ? '0.25rem' - : density === 'comfortable' - ? '.75rem' - : '1.25rem', - userSelect: enableMultiSort && column.getCanSort() ? 'none' : undefined, - verticalAlign: 'middle', - ...getCommonMRTCellStyles({ - column, - header, - table, - tableCellProps, - theme, - }), - ...draggingBorders, - } + flexDirection: layoutMode?.startsWith('grid') ? 'column' : undefined, + fontWeight: 'bold', + overflow: 'visible', + p: + density === 'compact' + ? '0.5rem' + : density === 'comfortable' + ? columnDefType === 'display' + ? '0.75rem' + : '1rem' + : columnDefType === 'display' + ? '1rem 1.25rem' + : '1.5rem', + pb: + columnDefType === 'display' + ? 0 + : showColumnFilters || density === 'compact' + ? '0.4rem' + : '0.6rem', + pt: + columnDefType === 'group' || density === 'compact' + ? '0.25rem' + : density === 'comfortable' + ? '.75rem' + : '1.25rem', + userSelect: enableMultiSort && column.getCanSort() ? 'none' : undefined, + verticalAlign: 'middle', + ...getCommonMRTCellStyles({ + column, + header, + table, + tableCellProps, + theme, + }), + ...draggingBorders, + } )} > {tableCellProps.children ?? ( @@ -225,7 +225,7 @@ const DataTable_TableHeadCell = ({ tableCellProps?.align === 'right' ? 'row-reverse' : 'row', justifyContent: columnDefType === 'group' || - tableCellProps?.align === 'center' + tableCellProps?.align === 'center' ? 'center' : column.getCanResize() ? 'space-between' @@ -262,6 +262,9 @@ const DataTable_TableHeadCell = ({ minWidth: `${Math.min(columnDef.header?.length ?? 0, 4)}ch`, overflow: columnDefType === 'data' ? 'hidden' : undefined, textOverflow: 'ellipsis', + color: "#fff", + fontSize: "14px", + fontWeight: "500", whiteSpace: (columnDef.header?.length ?? 0) < 20 ? 'nowrap' @@ -271,7 +274,8 @@ const DataTable_TableHeadCell = ({ {HeaderElement} {(column.getCanSort() && columnDefType !== 'group') && ( - + )} diff --git a/src/core/components/DataTable/head/TableHeadRow.js b/src/core/components/DataTable/head/TableHeadRow.js index f876cf1..8c2202a 100644 --- a/src/core/components/DataTable/head/TableHeadRow.js +++ b/src/core/components/DataTable/head/TableHeadRow.js @@ -1,24 +1,25 @@ -import { parseFromValuesOrFunc } from "@/core/utils/utils"; -import { TableRow } from "@mui/material"; +import {parseFromValuesOrFunc} from "@/core/utils/utils"; +import {TableRow} from "@mui/material"; import DataTable_TableHeadCell from "./TableHeadCell"; const DataTable_TableHeadRow = ({ - columnVirtualizer, - headerGroup, - table, - ...rest -}) => { + columnVirtualizer, + headerGroup, + table, + index, // Add index prop + ...rest + }) => { const { options: { enableStickyHeader, layoutMode, - mrtTheme: { baseBackgroundColor }, muiTableHeadRowProps, }, } = table; + const {virtualColumns, virtualPaddingLeft, virtualPaddingRight} = + columnVirtualizer ?? {}; - const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } = - columnVirtualizer ?? {}; + const backgroundColor = index % 2 === 0 ? '#2070af' : '#ff5c0f'; const tableRowProps = { ...parseFromValuesOrFunc(muiTableHeadRowProps, { @@ -26,51 +27,34 @@ const DataTable_TableHeadRow = ({ table, }), ...rest, + sx: (theme) => ({ // Access theme from the sx function + ...(parseFromValuesOrFunc(muiTableHeadRowProps?.sx, theme) || {}), + backgroundColor, // Apply background color + display: layoutMode?.startsWith('grid') ? 'flex' : undefined, + position: enableStickyHeader && layoutMode === 'semantic' ? 'sticky' : 'relative', + top: 0, + }), }; return ( - ({ - backgroundColor: baseBackgroundColor, - display: layoutMode?.startsWith('grid') ? 'flex' : undefined, - position: - enableStickyHeader && layoutMode === 'semantic' - ? 'sticky' - : 'relative', - top: 0, - ...(parseFromValuesOrFunc(tableRowProps?.sx, theme)), + + {virtualPaddingLeft && } + {(virtualColumns ?? headerGroup.headers).map((headerOrVirtualHeader, staticColumnIndex) => { + const header = columnVirtualizer ? headerGroup.headers[headerOrVirtualHeader.index] : headerOrVirtualHeader; + + return header ? ( + + ) : null; })} - > - {virtualPaddingLeft ? ( - - ) : null} - {(virtualColumns ?? headerGroup.headers).map( - (headerOrVirtualHeader, staticColumnIndex) => { - let header = headerOrVirtualHeader; - - if (columnVirtualizer) { - staticColumnIndex = (headerOrVirtualHeader) - .index; - header = headerGroup.headers[staticColumnIndex]; - } - - return header ? ( - - ) : null; - }, - )} - {virtualPaddingRight ? ( - - ) : null} + {virtualPaddingRight && } ); +}; -} -export default DataTable_TableHeadRow \ No newline at end of file +export default DataTable_TableHeadRow; \ No newline at end of file