es-grid-template
Version:
es-grid-template
95 lines (91 loc) • 4.41 kB
JavaScript
;
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;