UNPKG

es-grid-template

Version:

es-grid-template

72 lines (69 loc) 2.61 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _TableBodyRow = _interopRequireDefault(require("./TableBodyRow")); var _reactVirtual = require("@tanstack/react-virtual"); var _react = _interopRequireDefault(require("react")); var _useContext = require("../useContext"); // import type { Dispatch, SetStateAction } from "react"; const TableBody = ({ columnVirtualizer, table, tableContainerRef, virtualPaddingLeft, virtualPaddingRight, fixedLeftColumns, fixedRightColumns, tableId, ...rest }) => { const { rows } = table.getRowModel(); const { editingKey, prefix } = _react.default.useContext(_useContext.TableContext); //dynamic row height virtualization - alternatively you could use a simpler fixed row height strategy without the need for `measureElement` const rowVirtualizer = (0, _reactVirtual.useVirtualizer)({ count: rows.length, estimateSize: () => 36, //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: 3 }); const virtualRows = rowVirtualizer.getVirtualItems(); return /*#__PURE__*/_react.default.createElement("tbody", { className: `${prefix}-grid-tbody`, style: { display: 'grid', height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is position: 'relative' //needed for absolute positioning of rows } }, virtualRows.map(virtualRow => { const row = rows[virtualRow.index]; const isEditing = row.id === editingKey; return /*#__PURE__*/_react.default.createElement(_TableBodyRow.default, (0, _extends2.default)({}, rest, { table: table, tableId: tableId, key: row.id, row: row, columnVirtualizer: columnVirtualizer, rowVirtualizer: rowVirtualizer, virtualPaddingLeft: virtualPaddingLeft, virtualPaddingRight: virtualPaddingRight, virtualRow: virtualRow, fixedLeftColumns: fixedLeftColumns, fixedRightColumns: fixedRightColumns, isEditing: isEditing })); })); }; var _default = exports.default = TableBody;