choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
62 lines (47 loc) • 2.06 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _mobxReactLite = require("mobx-react-lite");
var _UnitConvertor = require("../../../lib/_util/UnitConvertor");
var _TableContext = _interopRequireDefault(require("./TableContext"));
var VirtualWrapper = (0, _mobxReactLite.observer)(function VirtualWrapper(props) {
var _useContext = (0, _react.useContext)(_TableContext["default"]),
tableStore = _useContext.tableStore,
prefixCls = _useContext.prefixCls;
var virtualTop = tableStore.virtualTop,
virtualHeight = tableStore.virtualHeight;
var _useState = (0, _react.useState)(virtualHeight),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
height = _useState2[0],
setHeight = _useState2[1];
(0, _react.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["default"].createElement("div", {
className: "".concat(prefixCls, "-tbody-wrapper"),
style: {
height: (0, _UnitConvertor.pxToRem)(virtualHeight)
}
}, _react["default"].createElement("div", {
style: {
transform: "translate(0, ".concat((0, _UnitConvertor.pxToRem)(virtualTop), ")")
}
}, props.children));
});
VirtualWrapper.displayName = 'VirtualWrapper';
var _default = VirtualWrapper;
exports["default"] = _default;
//# sourceMappingURL=VirtualWrapper.js.map