es-grid-template
Version:
es-grid-template
65 lines (62 loc) • 2.25 kB
JavaScript
import React, { useContext } from 'react';
import { TableContext } from "../useContext";
import TableHeadCell2 from "./TableHeadCell2";
import TableHeadGroupCell from "./TableHeadGroupCell";
const TableHead = ({
columnVirtualizer,
table
}) => {
const {
prefix,
onRowHeaderStyles
} = useContext(TableContext);
const headerGroups = table.getFlatHeaders();
const leafColumns = table.getVisibleFlatColumns();
const headerDepth = table.getHeaderGroups().length;
const rowStyles = typeof onRowHeaderStyles === 'function' ? onRowHeaderStyles() : onRowHeaderStyles;
return /*#__PURE__*/React.createElement("div", {
className: `${prefix}-grid-thead`,
style: {
...rowStyles,
display: 'grid',
position: 'sticky',
top: 0,
zIndex: 1,
gridTemplateColumns: `${table.getVisibleLeafColumns().map(n => `${n.getSize()}fr`).join(" ")}`
}
}, leafColumns.map(column => {
const depth = column.depth ?? 0;
// const colSpan = column.columns.length || 1;
const colSpan = column.getFlatColumns().filter(col => col.getIsVisible() && col.columns.length < 1).length;
// const colSpan = getVisibleChildCount(column);
const rowSpan = column.columns?.length > 0 ? 1 : headerDepth - depth;
const header = headerGroups.find(it => it.id === column.id || it.column.id === column.id && it.subHeaders.length > 0);
// const groupHeader = headerGroups.find((it) => it.column.id === column.id && it.subHeaders.length >= 2)
if (header?.subHeaders && header.subHeaders.length >= 2) {
return /*#__PURE__*/React.createElement(TableHeadGroupCell, {
key: column.id,
depth: depth,
column: column,
header: header,
table: table,
columnVirtualizer: columnVirtualizer,
colSpan: colSpan,
rowSpan: rowSpan
});
} else {
return /*#__PURE__*/React.createElement(TableHeadCell2, {
key: column.id,
depth: depth,
column: column,
header: header,
table: table,
columnVirtualizer: columnVirtualizer
// rowHeaderVirtualizer={rowHeaderVirtualizer}
,
colSpan: colSpan,
rowSpan: rowSpan
});
}
}));
};
export default TableHead;