choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
285 lines (225 loc) • 9.63 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 _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