UNPKG

choerodon-ui

Version:

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

285 lines (225 loc) 9.63 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); 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 _propTypes = _interopRequireDefault(require("prop-types")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _classnames = _interopRequireDefault(require("classnames")); var _UnitConvertor = require("../../../lib/_util/UnitConvertor"); var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar")); var _Column = require("./Column"); var _TableContext = _interopRequireDefault(require("./TableContext")); var _enum = require("./enum"); var _TableFooterCell = _interopRequireDefault(require("./TableFooterCell")); var _utils = require("./utils"); var _autobind = _interopRequireDefault(require("../_util/autobind")); var _ResizeObservedRow = _interopRequireDefault(require("./ResizeObservedRow")); var _TableStore = require("./TableStore"); 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 TableFooter = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(TableFooter, _Component); var _super = _createSuper(TableFooter); function TableFooter() { (0, _classCallCheck2["default"])(this, TableFooter); return _super.apply(this, arguments); } (0, _createClass2["default"])(TableFooter, [{ key: "saveRef", value: function saveRef(node) { this.node = node; } }, { key: "handleResize", value: function handleResize(index, height) { this.setRowHeight(index, height); } }, { key: "setRowHeight", value: function setRowHeight(index, height) { var tableStore = this.context.tableStore; (0, _mobx.set)(tableStore.lockColumnsFootRowsHeight, index, height); } }, { key: "getTds", value: function getTds() { var _this$props = this.props, lock = _this$props.lock, dataSet = _this$props.dataSet; var tableStore = this.context.tableStore; var prefixCls = tableStore.prefixCls, customizable = tableStore.customizable, rowDraggable = tableStore.rowDraggable, dragColumnAlign = tableStore.dragColumnAlign; var hasPlaceholder = tableStore.overflowY && lock !== _enum.ColumnLock.left; var leftWidth = 0; var rightWidth = (0, _utils.isStickySupport)() && tableStore.overflowX ? tableStore.rightLeafColumnsWidth + (hasPlaceholder ? (0, _measureScrollbar["default"])() : 0) : 0; var tds = this.leafColumns.map(function (column, index, cols) { var key = (0, _utils.getColumnKey)(column); if (key !== _TableStore.CUSTOMIZED_KEY) { var colSpan = customizable && lock !== _enum.ColumnLock.left && (!rowDraggable || dragColumnAlign !== _enum.DragColumnAlign.right) && index === cols.length - 2 ? 2 : 1; var props = {}; if (colSpan > 1) { props.colSpan = colSpan; } if ((0, _utils.isStickySupport)() && tableStore.overflowX) { var columnLock = (0, _utils.getColumnLock)(column.lock); if (columnLock === _enum.ColumnLock.left) { props.style = { left: (0, _UnitConvertor.pxToRem)(leftWidth) }; var next = cols[index + 1]; if (!next || (0, _utils.getColumnLock)(next.lock) !== _enum.ColumnLock.left) { props.className = "".concat(prefixCls, "-cell-fix-left-last"); } leftWidth += (0, _Column.columnWidth)(column); } else if (columnLock === _enum.ColumnLock.right) { rightWidth -= (0, _Column.columnWidth)(column); var prev = cols[index - 1]; if (!prev || prev.lock !== _enum.ColumnLock.right) { props.className = "".concat(prefixCls, "-cell-fix-right-first"); } if (colSpan > 1) { for (var i = 1; i < colSpan; i++) { var _next = cols[index + i]; if (_next) { rightWidth -= (0, _Column.columnWidth)(_next); } } } props.style = { right: (0, _UnitConvertor.pxToRem)(rightWidth) }; } } return _react["default"].createElement(_TableFooterCell["default"], (0, _extends2["default"])({ key: key, dataSet: dataSet, column: column }, props)); } return undefined; }); if (hasPlaceholder) { var placeHolderProps = { key: 'fixed-column' }; var classList = ["".concat(prefixCls, "-cell")]; if ((0, _utils.isStickySupport)() && tableStore.overflowX) { placeHolderProps.style = { right: 0 }; classList.push("".concat(prefixCls, "-cell-fix-right")); } placeHolderProps.className = classList.join(' '); tds.push(_react["default"].createElement("th", (0, _extends2["default"])({}, placeHolderProps), "\xA0")); } return tds; } }, { key: "getHeight", value: function getHeight() { var node = this.node; if (node) { return (0, _utils.getHeight)(node); } return 0; } }, { key: "render", value: function render() { var lock = this.props.lock; var tableStore = this.context.tableStore; var prefixCls = tableStore.prefixCls, autoFootHeight = tableStore.autoFootHeight, rowHeight = tableStore.rowHeight, overflowX = tableStore.overflowX; var tds = this.getTds(); var tr = _react["default"].createElement("tr", { style: { height: !(0, _utils.isStickySupport)() && lock && (rowHeight === 'auto' || autoFootHeight) ? (0, _UnitConvertor.pxToRem)((0, _mobx.get)(tableStore.lockColumnsFootRowsHeight, 0)) : undefined } }, tds); return _react["default"].createElement("tfoot", { ref: this.saveRef, className: (0, _classnames["default"])("".concat(prefixCls, "-tfoot"), (0, _defineProperty2["default"])({}, "".concat(prefixCls, "-tfoot-bordered"), overflowX)) }, !(0, _utils.isStickySupport)() && !lock && (rowHeight === 'auto' || autoFootHeight) ? _react["default"].createElement(_ResizeObservedRow["default"], { onResize: this.handleResize, rowIndex: 0 }, tr) : tr); } }, { key: "leafColumns", get: function get() { var tableStore = this.context.tableStore; var lock = this.props.lock; if (lock === _enum.ColumnLock.right) { return tableStore.rightLeafColumns.filter(function (_ref) { var hidden = _ref.hidden; return !hidden; }); } if (lock) { return tableStore.leftLeafColumns.filter(function (_ref2) { var hidden = _ref2.hidden; return !hidden; }); } return tableStore.leafColumns.filter(function (_ref3) { var hidden = _ref3.hidden; return !hidden; }); } }]); return TableFooter; }(_react.Component); TableFooter.displayName = 'TableFooter'; TableFooter.propTypes = { lock: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf([_enum.ColumnLock.right, _enum.ColumnLock.left])]) }; TableFooter.contextType = _TableContext["default"]; (0, _tslib.__decorate)([_autobind["default"]], TableFooter.prototype, "saveRef", null); (0, _tslib.__decorate)([_autobind["default"]], TableFooter.prototype, "handleResize", null); (0, _tslib.__decorate)([_mobx.action], TableFooter.prototype, "setRowHeight", null); (0, _tslib.__decorate)([_mobx.computed], TableFooter.prototype, "leafColumns", null); TableFooter = (0, _tslib.__decorate)([_mobxReact.observer], TableFooter); var _default = TableFooter; exports["default"] = _default; //# sourceMappingURL=TableFooter.js.map