linkmore-design
Version:
🌈 🚀lm组件库。🚀
71 lines (69 loc) • 2.13 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _TableBodyRow = _interopRequireWildcard(require("./TableBodyRow"));
var _reactVirtual = require("react-virtual");
const TableBody = /*#__PURE__*/_react.default.memo(({
table,
tableContainerRef
}) => {
const {
state: {
rows,
checkboxConfig
},
rowConfig,
cellConfig: {
height
},
virtual
} = table;
// 是否存在选中
const hasChecked = (0, _react.useMemo)(() => {
return checkboxConfig.checkKeys.length;
}, [checkboxConfig.checkKeys.length]);
const {
totalSize,
virtualItems
} = (0, _reactVirtual.useVirtual)({
size: rows.length,
parentRef: tableContainerRef,
estimateSize: _react.default.useCallback(() => height + rowConfig.gap, [height]),
overscan: 2
});
const virScrollStyles = (0, _react.useMemo)(() => {
return {
height: `${totalSize - rowConfig.gap}px`,
width: '100%',
position: "relative"
};
}, [totalSize]);
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)('lm_card_table_body', hasChecked && 'hasChecked')
}, /*#__PURE__*/_react.default.createElement("div", {
className: "lm_card_table_body_scroll",
style: virScrollStyles
}, virtual && rows.length > 10 ? virtualItems.map(({
index,
start
}) => /*#__PURE__*/_react.default.createElement(_TableBodyRow.LmCardTableBodyRowVirtual, {
key: index,
rowIndex: index,
start: start,
row: rows[index],
table: table
})) : rows.map((row, index) => /*#__PURE__*/_react.default.createElement(_TableBodyRow.default, {
key: index,
rowIndex: index,
row: row,
table: table
}))));
});
var _default = TableBody;
exports.default = _default;