choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
273 lines (224 loc) • 9.48 kB
JavaScript
"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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _miniStore = require("mini-store");
var _ColGroup = _interopRequireDefault(require("./ColGroup"));
var _TableHeader = _interopRequireDefault(require("./TableHeader"));
var _TableFooter = _interopRequireDefault(require("./TableFooter"));
var _TableRow = _interopRequireDefault(require("./TableRow"));
var _ExpandableRow = _interopRequireDefault(require("./ExpandableRow"));
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 BaseTable =
/*#__PURE__*/
function (_Component) {
(0, _inherits2["default"])(BaseTable, _Component);
var _super = _createSuper(BaseTable);
function BaseTable() {
var _this;
(0, _classCallCheck2["default"])(this, BaseTable);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleRowHover", function (isHover, key) {
_this.props.store.setState({
currentHoverKey: isHover ? key : null
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "renderRows", function (renderData, indent) {
var ancestorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var table = _this.context.table;
var columnManager = table.columnManager,
components = table.components;
var _table$props = table.props,
prefixCls = _table$props.prefixCls,
childrenColumnName = _table$props.childrenColumnName,
rowClassName = _table$props.rowClassName,
rowRef = _table$props.rowRef,
onRowClick = _table$props.onRowClick,
onRowDoubleClick = _table$props.onRowDoubleClick,
onRowContextMenu = _table$props.onRowContextMenu,
onRowMouseEnter = _table$props.onRowMouseEnter,
onRowMouseLeave = _table$props.onRowMouseLeave,
onRow = _table$props.onRow;
var _this$props = _this.props,
getRowKey = _this$props.getRowKey,
fixed = _this$props.fixed,
expander = _this$props.expander,
isAnyColumnsFixed = _this$props.isAnyColumnsFixed;
var rows = [];
var _loop = function _loop(i) {
var record = renderData[i];
var key = getRowKey(record, i);
var className = typeof rowClassName === 'string' ? rowClassName : rowClassName(record, i, indent);
var onHoverProps = {};
if (columnManager.isAnyColumnsFixed()) {
onHoverProps.onHover = _this.handleRowHover;
}
var leafColumns = void 0;
if (fixed === 'left') {
leafColumns = columnManager.leftLeafColumns();
} else if (fixed === 'right') {
leafColumns = columnManager.rightLeafColumns();
} else {
leafColumns = columnManager.leafColumns();
}
var rowPrefixCls = "".concat(prefixCls, "-row");
var row = _react["default"].createElement(_ExpandableRow["default"], (0, _extends2["default"])({}, expander.props, {
fixed: fixed,
index: i,
prefixCls: rowPrefixCls,
record: record,
key: key,
rowKey: key,
onRowClick: onRowClick,
needIndentSpaced: expander.needIndentSpaced,
onExpandedChange: expander.handleExpandChange
}), function (expandableRow) {
return (// eslint-disable-line
_react["default"].createElement(_TableRow["default"], (0, _extends2["default"])({
fixed: fixed,
indent: indent,
className: className,
record: record,
index: i,
prefixCls: rowPrefixCls,
childrenColumnName: childrenColumnName,
columns: leafColumns,
onRow: onRow,
onRowDoubleClick: onRowDoubleClick,
onRowContextMenu: onRowContextMenu,
onRowMouseEnter: onRowMouseEnter,
onRowMouseLeave: onRowMouseLeave
}, onHoverProps, {
rowKey: key,
ancestorKeys: ancestorKeys,
ref: rowRef(record, i, indent),
components: components,
isAnyColumnsFixed: isAnyColumnsFixed
}, expandableRow))
);
});
rows.push(row);
expander.renderRows(_this.renderRows, rows, record, i, indent, fixed, key, ancestorKeys);
};
for (var i = 0; i < renderData.length; i++) {
_loop(i);
}
return rows;
});
return _this;
}
(0, _createClass2["default"])(BaseTable, [{
key: "render",
value: function render() {
var table = this.context.table;
var components = table.components;
var _table$props2 = table.props,
prefixCls = _table$props2.prefixCls,
scroll = _table$props2.scroll,
data = _table$props2.data,
getBodyWrapper = _table$props2.getBodyWrapper;
var _this$props2 = this.props,
expander = _this$props2.expander,
tableClassName = _this$props2.tableClassName,
hasHead = _this$props2.hasHead,
hasBody = _this$props2.hasBody,
hasFoot = _this$props2.hasFoot,
fixed = _this$props2.fixed,
columns = _this$props2.columns;
var tableStyle = {};
if (!fixed && scroll.x) {
// not set width, then use content fixed width
if (scroll.x === true) {
tableStyle.tableLayout = 'fixed';
} else {
tableStyle.width = scroll.x;
}
}
var Table = hasBody ? components.table : 'table';
var BodyWrapper = components.body.wrapper;
var body;
if (hasBody) {
body = _react["default"].createElement(BodyWrapper, {
className: "".concat(prefixCls, "-tbody")
}, this.renderRows(data, 0));
if (getBodyWrapper) {
body = getBodyWrapper(body);
}
}
return _react["default"].createElement(Table, {
className: tableClassName,
style: tableStyle,
key: "table"
}, _react["default"].createElement(_ColGroup["default"], {
columns: columns,
fixed: fixed
}), hasHead && _react["default"].createElement(_TableHeader["default"], {
expander: expander,
columns: columns,
fixed: fixed
}), body, hasFoot && _react["default"].createElement(_TableFooter["default"], {
onHover: this.handleRowHover,
columns: columns,
fixed: fixed
}));
}
}]);
return BaseTable;
}(_react.Component);
(0, _defineProperty2["default"])(BaseTable, "propTypes", {
fixed: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].bool]),
columns: _propTypes["default"].array.isRequired,
tableClassName: _propTypes["default"].string.isRequired,
hasHead: _propTypes["default"].bool.isRequired,
hasBody: _propTypes["default"].bool.isRequired,
hasFoot: _propTypes["default"].bool.isRequired,
store: _propTypes["default"].object.isRequired,
expander: _propTypes["default"].object.isRequired,
getRowKey: _propTypes["default"].func,
isAnyColumnsFixed: _propTypes["default"].bool
});
(0, _defineProperty2["default"])(BaseTable, "contextTypes", {
table: _propTypes["default"].any
});
var _default = (0, _miniStore.connect)()(BaseTable);
exports["default"] = _default;
//# sourceMappingURL=BaseTable.js.map