UNPKG

choerodon-ui

Version:

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

325 lines (264 loc) 10.4 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 _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 _isNil = _interopRequireDefault(require("lodash/isNil")); var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar")); var _UnitConvertor = require("../../../lib/_util/UnitConvertor"); var _TableContext = _interopRequireDefault(require("./TableContext")); var _Column = require("./Column"); var _enum = require("./enum"); var _TableEditor = _interopRequireDefault(require("./TableEditor")); var _TableCol = _interopRequireDefault(require("./TableCol")); var _utils = require("./utils"); var _autobind = _interopRequireDefault(require("../_util/autobind")); 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 TableWrapper = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(TableWrapper, _Component); var _super = _createSuper(TableWrapper); function TableWrapper() { (0, _classCallCheck2["default"])(this, TableWrapper); return _super.apply(this, arguments); } (0, _createClass2["default"])(TableWrapper, [{ key: "getCol", value: function getCol(column, width) { if (!column.hidden) { return _react["default"].createElement(_TableCol["default"], { key: (0, _utils.getColumnKey)(column), width: width, minWidth: (0, _Column.minColumnWidth)(column) }); } } }, { key: "getColGroup", value: function getColGroup() { var _this = this; var _this$props = this.props, lock = _this$props.lock, hasHeader = _this$props.hasHeader, hasFooter = _this$props.hasFooter; var _this$context$tableSt = this.context.tableStore, overflowY = _this$context$tableSt.overflowY, overflowX = _this$context$tableSt.overflowX, customizable = _this$context$tableSt.customizable, rowDraggable = _this$context$tableSt.rowDraggable, dragColumnAlign = _this$context$tableSt.dragColumnAlign; var hasEmptyWidth = false; var fixedColumnLength = 1; if (customizable) { fixedColumnLength += 1; } if (rowDraggable && dragColumnAlign === _enum.DragColumnAlign.right) { fixedColumnLength += 1; } var cols = this.leafColumns.map(function (column, index, array) { var width = (0, _mobx.get)(column, 'width'); if (!overflowX) { if (!hasEmptyWidth && index === array.length - fixedColumnLength) { width = undefined; } else if ((0, _isNil["default"])(width)) { hasEmptyWidth = true; } } return _this.getCol(column, width); }); if (overflowY && lock !== _enum.ColumnLock.left && (hasHeader || hasFooter)) { cols.push(_react["default"].createElement("col", { key: "fixed-column", style: { width: (0, _UnitConvertor.pxToRem)((0, _measureScrollbar["default"])()) } })); } return _react["default"].createElement("colgroup", null, cols); } }, { key: "getEditors", value: function getEditors() { return this.leafEditorColumns.map(function (column) { return _react["default"].createElement(_TableEditor["default"], { key: (0, _utils.getColumnKey)(column), column: column }); }); } }, { key: "saveRef", value: function saveRef(node) { this.tableWrapper = node; } }, { key: "render", value: function render() { var _this$props2 = this.props, children = _this$props2.children, lock = _this$props2.lock, hasBody = _this$props2.hasBody; var _this$context$tableSt2 = this.context.tableStore, overflowY = _this$context$tableSt2.overflowY, height = _this$context$tableSt2.height, prefixCls = _this$context$tableSt2.prefixCls; var editors = hasBody && this.getEditors(); var className = (0, _classnames["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-last-row-bordered"), hasBody && !overflowY && height !== undefined)); var table = _react["default"].createElement("table", { key: "table", ref: lock ? undefined : this.saveRef, className: className, style: { width: this.tableWidth } }, this.getColGroup(), children); return [table, editors]; } }, { key: "leafColumnsWidth", get: function get() { var tableStore = this.context.tableStore; var lock = this.props.lock; switch (lock) { case _enum.ColumnLock.left: case true: return tableStore.leftLeafColumnsWidth; case _enum.ColumnLock.right: return tableStore.rightLeafColumnsWidth; default: if (tableStore.overflowX) { return tableStore.totalLeafColumnsWidth; } } return undefined; } }, { key: "leafEditorColumns", get: function get() { var tableStore = this.context.tableStore; var lock = this.props.lock; switch (lock) { case _enum.ColumnLock.left: case true: return tableStore.leftLeafColumns.filter(function (_ref) { var editor = _ref.editor, name = _ref.name, hidden = _ref.hidden; return editor && name && !hidden; }); case _enum.ColumnLock.right: return tableStore.rightLeafColumns.filter(function (_ref2) { var editor = _ref2.editor, name = _ref2.name, hidden = _ref2.hidden; return editor && name && !hidden; }); default: return tableStore.leafColumns.filter(function (_ref3) { var editor = _ref3.editor, name = _ref3.name, hidden = _ref3.hidden, columnLock = _ref3.lock; return editor && name && !hidden && ((0, _utils.isStickySupport)() || !columnLock || !tableStore.overflowX); }); } } }, { key: "leafColumns", get: function get() { var tableStore = this.context.tableStore; var lock = this.props.lock; switch (lock) { case _enum.ColumnLock.left: case true: return tableStore.leftLeafColumns.filter(function (_ref4) { var hidden = _ref4.hidden; return !hidden; }); case _enum.ColumnLock.right: return tableStore.rightLeafColumns.filter(function (_ref5) { var hidden = _ref5.hidden; return !hidden; }); default: return tableStore.leafColumns.filter(function (_ref6) { var hidden = _ref6.hidden; return !hidden; }); } } }, { key: "tableWidth", get: function get() { var _this$props3 = this.props, lock = _this$props3.lock, hasBody = _this$props3.hasBody; var _this$context$tableSt3 = this.context.tableStore, overflowY = _this$context$tableSt3.overflowY, overflowX = _this$context$tableSt3.overflowX; if (overflowX) { var tableWidth = this.leafColumnsWidth; if (tableWidth !== undefined && overflowY && lock !== _enum.ColumnLock.left && !hasBody) { tableWidth += (0, _measureScrollbar["default"])(); } return (0, _UnitConvertor.pxToRem)(tableWidth); } return '100%'; } }]); return TableWrapper; }(_react.Component); TableWrapper.contextType = _TableContext["default"]; TableWrapper.propTypes = { lock: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf([_enum.ColumnLock.right, _enum.ColumnLock.left])]), hasBody: _propTypes["default"].bool, hasHeader: _propTypes["default"].bool, hasFooter: _propTypes["default"].bool }; (0, _tslib.__decorate)([_mobx.computed], TableWrapper.prototype, "leafColumnsWidth", null); (0, _tslib.__decorate)([_mobx.computed], TableWrapper.prototype, "leafEditorColumns", null); (0, _tslib.__decorate)([_mobx.computed], TableWrapper.prototype, "leafColumns", null); (0, _tslib.__decorate)([_autobind["default"]], TableWrapper.prototype, "saveRef", null); (0, _tslib.__decorate)([_mobx.computed], TableWrapper.prototype, "tableWidth", null); TableWrapper = (0, _tslib.__decorate)([_mobxReact.observer], TableWrapper); var _default = TableWrapper; exports["default"] = _default; //# sourceMappingURL=TableWrapper.js.map