choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
106 lines (85 loc) • 3.94 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 _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _react = _interopRequireWildcard(require("react"));
var _mobxReactLite = require("mobx-react-lite");
var _UnitConvertor = require("../../../lib/_util/UnitConvertor");
var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar"));
var _TableContext = _interopRequireDefault(require("./TableContext"));
var _enum = require("./enum");
var TableBody = (0, _mobxReactLite.observer)(function TableBody(props) {
var children = props.children,
lock = props.lock,
onScroll = props.onScroll,
style = props.style,
getRef = props.getRef;
var _useContext = (0, _react.useContext)(_TableContext["default"]),
prefixCls = _useContext.prefixCls,
tableStore = _useContext.tableStore;
var hasFooter = tableStore.hasFooter,
overflowY = tableStore.overflowY,
overflowX = tableStore.overflowX; // const saveRef = useCallback((node: HTMLDivElement | null) => {
// const { getRef } = this.props;
// if (getRef) {
// getRef(node);
// }
// // this.element = node;
// },[getRef])
// componentDidUpdate(): void {
// const { element } = this;
// if (element) {
// const { scrollHeight, clientHeight } = element;
// // Fixed vertical scrollbar not displayed in Chrome when scrollHeight - clientHeight < scrollbarHeight
// if (scrollHeight > clientHeight && scrollHeight - clientHeight < measureScrollbar()) {
// const { overflow } = element.style;
// element.style.overflow = 'scroll';
// raf(() => {
// element.style.overflow = overflow;
// });
// }
// }
// }
var getHeightStyle = function getHeightStyle() {
if (!tableStore.customized.heightType) {
var autoHeight = tableStore.autoHeight;
if (autoHeight && autoHeight.type === _enum.TableAutoHeightType.maxHeight) {
return undefined;
}
}
return tableStore.height;
};
var fixedLeft = lock === true || lock === _enum.ColumnLock.left;
var scrollbar = (0, _measureScrollbar["default"])();
var hasFooterAndNotLock = !lock && hasFooter && overflowX && scrollbar;
var height = getHeightStyle();
var hasLockAndNoFooter = lock && !hasFooter && overflowX && height !== undefined && scrollbar;
var tableBody = _react["default"].createElement("div", {
ref: getRef,
className: "".concat(prefixCls, "-body"),
style: (0, _objectSpread2["default"])({}, height === undefined ? style : {}, {
height: (0, _UnitConvertor.pxToRem)(hasFooterAndNotLock && height !== undefined ? height + scrollbar : hasLockAndNoFooter && height !== undefined ? height - scrollbar : height),
marginBottom: hasFooterAndNotLock ? (0, _UnitConvertor.pxToRem)(-scrollbar) : undefined,
width: fixedLeft ? (0, _UnitConvertor.pxToRem)(tableStore.leftColumnGroups.width + (scrollbar || 20)) : lock === _enum.ColumnLock.right ? (0, _UnitConvertor.pxToRem)(tableStore.rightColumnGroups.width - 1 + (overflowY ? scrollbar : 0)) : undefined,
marginLeft: lock === _enum.ColumnLock.right ? (0, _UnitConvertor.pxToRem)(1) : undefined
}),
onScroll: onScroll
}, children);
if (fixedLeft) {
return _react["default"].createElement("div", {
className: "".concat(prefixCls, "-body-wrapper"),
style: {
width: (0, _UnitConvertor.pxToRem)(tableStore.leftColumnGroups.width)
}
}, tableBody);
}
return tableBody;
});
TableBody.displayName = 'TableBody';
var _default = TableBody;
exports["default"] = _default;
//# sourceMappingURL=TableBody.js.map