choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
45 lines (39 loc) • 1.53 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import React, { useContext, useEffect, useState } from 'react';
import { observer } from 'mobx-react-lite';
import { pxToRem } from '../../../es/_util/UnitConvertor';
import TableContext from './TableContext';
var VirtualWrapper = observer(function VirtualWrapper(props) {
var _useContext = useContext(TableContext),
tableStore = _useContext.tableStore,
prefixCls = _useContext.prefixCls;
var virtualTop = tableStore.virtualTop,
virtualHeight = tableStore.virtualHeight;
var _useState = useState(virtualHeight),
_useState2 = _slicedToArray(_useState, 2),
height = _useState2[0],
setHeight = _useState2[1];
useEffect(function () {
if (virtualHeight !== height) {
var lastScrollTop = tableStore.lastScrollTop,
tableBodyWrap = tableStore.node.tableBodyWrap;
if (lastScrollTop && tableBodyWrap) {
tableBodyWrap.scrollTop = Math.max(0, virtualHeight - height + lastScrollTop);
}
setHeight(virtualHeight);
}
}, [virtualHeight, height, tableStore]);
return React.createElement("div", {
className: "".concat(prefixCls, "-tbody-wrapper"),
style: {
height: pxToRem(virtualHeight)
}
}, React.createElement("div", {
style: {
transform: "translate(0, ".concat(pxToRem(virtualTop), ")")
}
}, props.children));
});
VirtualWrapper.displayName = 'VirtualWrapper';
export default VirtualWrapper;
//# sourceMappingURL=VirtualWrapper.js.map