UNPKG

es-grid-template

Version:

es-grid-template

95 lines (91 loc) 4.41 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 = _interopRequireWildcard(require("react")); var _useContext = require("../useContext"); var _rcMasterUi = require("rc-master-ui"); 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; } // import type { Virtualizer } from "@tanstack/react-virtual"; // import type { Dispatch, SetStateAction } from "react"; const TableBody = ({ columnVirtualizer, table, tableContainerRef, virtualPaddingLeft, virtualPaddingRight, fixedLeftColumns, fixedRightColumns, tableId, showEmptyText, ...rest }) => { const { rows } = table.getRowModel(); const { editingKey, prefix, locale } = _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: 1 }); const virtualRows = rowVirtualizer.getVirtualItems(); return /*#__PURE__*/_react.default.createElement("div", { className: `${prefix}-grid-tbody`, style: { display: 'grid', // height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is height: showEmptyText && rows.length === 0 ? `140px` : `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is position: 'relative' //needed for absolute positioning of rows } }, showEmptyText && rows.length === 0 ? /*#__PURE__*/_react.default.createElement("tr", { style: { // transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll } }, /*#__PURE__*/_react.default.createElement("td", { // colSpan={30} style: { position: "sticky", left: 0, width: tableContainerRef.current?.clientWidth, overflow: 'hidden' } }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Empty, { image: _rcMasterUi.Empty.PRESENTED_IMAGE_SIMPLE, description: locale?.table?.emptyText })))) : /*#__PURE__*/_react.default.createElement(_react.Fragment, null, 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;