UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

177 lines (140 loc) 6.1 kB
"use strict"; 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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _mobxReact = require("mobx-react"); var _raf = _interopRequireDefault(require("raf")); var _UnitConvertor = require("../../../lib/_util/UnitConvertor"); var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar")); var _autobind = _interopRequireDefault(require("../_util/autobind")); var _TableContext = _interopRequireDefault(require("./TableContext")); var _enum = require("./enum"); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } var TableBody = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(TableBody, _Component); var _super = _createSuper(TableBody); function TableBody() { (0, _classCallCheck2["default"])(this, TableBody); return _super.apply(this, arguments); } (0, _createClass2["default"])(TableBody, [{ key: "saveRef", value: function saveRef(node) { var getRef = this.props.getRef; if (getRef) { getRef(node); } this.element = node; } }, { key: "componentDidUpdate", value: function componentDidUpdate() { var element = this.element; if (element) { var scrollHeight = element.scrollHeight, clientHeight = element.clientHeight; // Fixed vertical scrollbar not displayed in Chrome when scrollHeight - clientHeight < scrollbarHeight if (scrollHeight > clientHeight && scrollHeight - clientHeight < (0, _measureScrollbar["default"])()) { var overflow = element.style.overflow; element.style.overflow = 'scroll'; (0, _raf["default"])(function () { element.style.overflow = overflow; }); } } } }, { key: "getHeightStyle", value: function getHeightStyle() { var _this$context$tableSt = this.context.tableStore, height = _this$context$tableSt.height, autoHeight = _this$context$tableSt.autoHeight, heightType = _this$context$tableSt.customized.heightType; if (!heightType && autoHeight && autoHeight.type === _enum.TableAutoHeightType.maxHeight) { return undefined; } return height; } }, { key: "render", value: function render() { var _this$props = this.props, children = _this$props.children, lock = _this$props.lock, onScroll = _this$props.onScroll; var _this$context$tableSt2 = this.context.tableStore, prefixCls = _this$context$tableSt2.prefixCls, leftLeafColumnsWidth = _this$context$tableSt2.leftLeafColumnsWidth, rightLeafColumnsWidth = _this$context$tableSt2.rightLeafColumnsWidth, hasFooter = _this$context$tableSt2.hasFooter, overflowY = _this$context$tableSt2.overflowY, overflowX = _this$context$tableSt2.overflowX; var fixedLeft = lock === true || lock === _enum.ColumnLock.left; var scrollbar = (0, _measureScrollbar["default"])(); var hasFooterAndNotLock = !lock && hasFooter && overflowX && scrollbar; var height = this.getHeightStyle(); var tableBody = _react["default"].createElement("div", { ref: this.saveRef, className: "".concat(prefixCls, "-body"), style: { height: (0, _UnitConvertor.pxToRem)(hasFooterAndNotLock && height !== undefined ? height + scrollbar : height), marginBottom: hasFooterAndNotLock ? (0, _UnitConvertor.pxToRem)(-scrollbar) : undefined, width: fixedLeft ? (0, _UnitConvertor.pxToRem)(leftLeafColumnsWidth + (scrollbar || 20)) : lock === _enum.ColumnLock.right ? (0, _UnitConvertor.pxToRem)(rightLeafColumnsWidth - 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", { style: { width: (0, _UnitConvertor.pxToRem)(leftLeafColumnsWidth), overflow: 'hidden' } }, tableBody); } return tableBody; } }]); return TableBody; }(_react.Component); TableBody.displayName = 'TableBody'; TableBody.contextType = _TableContext["default"]; (0, _tslib.__decorate)([_autobind["default"]], TableBody.prototype, "saveRef", null); TableBody = (0, _tslib.__decorate)([_mobxReact.observer], TableBody); var _default = TableBody; exports["default"] = _default; //# sourceMappingURL=TableBody.js.map