I have a table and I want to render headers grouped by group
property from object in array. The array with the headers looks like this:
const headers = [
{ label: 'Date', group: '' },
{ label: 'Event', group: '' },
{ label: 'Days Out', group: '' },
{ label: 'T', group: 'Sales Velocity' },
{ label: '-1', group: 'Sales Velocity' },
{ label: '-2', group: 'Sales Velocity' },
{ label: '-3', group: 'Sales Velocity' },
{ label: '-4', group: 'Sales Velocity' },
{ label: 'Sold Last 5', group: 'Ticket Sales' },
{ label: 'Total Sold', group: 'Ticket Sales' },
{ label: 'Sellable cap.', group: 'Ticket Sales' },
{ label: '% sold', group: 'Ticket Sales' },
{ label: 'Availab.', group: 'Ticket Sales' },
{ label: 'Total', group: 'Revenue' },
{ label: 'Holds', group: 'Inventory Status' },
{ label: 'Comp', group: 'Inventory Status' },
{ label: 'Open', group: 'Inventory Status' },
{ label: 'Price cat.', group: 'Inventory Status' },
{ label: 'Avg. price', group: 'Stats' },
{ label: 'First time %', group: 'Stats' },
];
and the table component looks like this:
<TableHead>
<TableRow>
{headers.map((header, index) => (
<TableCellASHeader key={index}>
<TableSortLabel
active={header.column === sorting.orderBy}
direction={sorting.orderDirection}
onClick={() => onClickSort(header.column)}
IconComponent={ArrowDropDownIcon}
>
{/* {header.group} */} // here I need to render group but only once per group
{header.label}
</TableSortLabel>
</TableCellASHeader>
))}
</TableRow>
</TableHead>
What I want is to render header.group
above header.label
but only once per group, like on this picture below. Any code sample will be appreciated.