es-grid-template
Version:
es-grid-template
69 lines (65 loc) • 3.1 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reactVirtual = require("@tanstack/react-virtual");
var _react = _interopRequireWildcard(require("react"));
var _useContext = require("../useContext");
var _TableHeadRow = _interopRequireDefault(require("./TableHeadRow"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const TableHead = ({
tableContainerRef,
columnVirtualizer,
table,
virtualPaddingLeft,
virtualPaddingRight,
fixedLeftColumns,
fixedRightColumns
}) => {
const {
prefix
} = (0, _react.useContext)(_useContext.TableContext);
const rowVirtualizer = (0, _reactVirtual.useVirtualizer)({
count: table.getHeaderGroups().length,
estimateSize: () => 34,
//estimate row height for accurate scrollbar dragging
getScrollElement: () => tableContainerRef.current,
//measure dynamic row height, except in firefox because it measures table border height incorrectly
measureElement: typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1 ? element => element?.getBoundingClientRect().height : undefined,
overscan: 5
});
const virtualRows = rowVirtualizer.getVirtualItems();
// const columnSizingState = table.getState().columnSizing
// React.useEffect(() => {
// requestAnimationFrame(() => {
// rowVirtualizer.measure()
// })
// }, [columnSizingState, rowVirtualizer])
return /*#__PURE__*/_react.default.createElement("thead", {
className: `${prefix}-grid-thead`,
style: {
display: 'grid',
position: 'sticky',
top: 0,
zIndex: 1
}
}, virtualRows.map(virtualRow => {
const headerGroup = table.getHeaderGroups()[virtualRow.index];
return /*#__PURE__*/_react.default.createElement(_TableHeadRow.default, {
table: table,
columnVirtualizer: columnVirtualizer,
rowHeaderVirtualizer: rowVirtualizer,
headerGroup: headerGroup,
key: headerGroup.id,
virtualPaddingLeft: virtualPaddingLeft,
virtualPaddingRight: virtualPaddingRight,
fixedLeftColumns: fixedLeftColumns,
fixedRightColumns: fixedRightColumns,
rowHeaderVirtual: virtualRow
});
}));
};
var _default = exports.default = TableHead;