UNPKG

choerodon-ui

Version:

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

272 lines (225 loc) 9.33 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); 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 _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _miniStore = require("mini-store"); var _TableRow = _interopRequireDefault(require("./TableRow")); var _utils = require("./utils"); var ExpandableTable = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(ExpandableTable, _Component); var _super = (0, _createSuper2["default"])(ExpandableTable); function ExpandableTable(props) { var _this; (0, _classCallCheck2["default"])(this, ExpandableTable); _this = _super.call(this, props); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleExpandChange", function (expanded, record, event, rowKey) { var destroy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; if (event) { event.preventDefault(); event.stopPropagation(); } var _this$props = _this.props, onExpandedRowsChange = _this$props.onExpandedRowsChange, onExpand = _this$props.onExpand, _this$props$uncontrol = _this$props.uncontrolled, uncontrolled = _this$props$uncontrol === void 0 ? false : _this$props$uncontrol; var _this$store$getState = _this.store.getState(), expandedRowKeys = _this$store$getState.expandedRowKeys; if (expanded) { // row was expaned expandedRowKeys = [].concat((0, _toConsumableArray2["default"])(expandedRowKeys), [rowKey]); } else { // row was collapse var expandedRowIndex = expandedRowKeys.indexOf(rowKey); if (expandedRowIndex !== -1) { expandedRowKeys = (0, _utils.remove)(expandedRowKeys, rowKey); } } if (!_this.props.expandedRowKeys || uncontrolled) { _this.store.setState({ expandedRowKeys: expandedRowKeys }); } onExpandedRowsChange(expandedRowKeys); if (!destroy) { onExpand(expanded, record); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "renderExpandIndentCell", function (rows, fixed) { var _this$props2 = _this.props, prefixCls = _this$props2.prefixCls, expandIconAsCell = _this$props2.expandIconAsCell; if (!expandIconAsCell || fixed === 'right' || !rows.length) { return; } var iconColumn = { key: 'rc-table-expand-icon-cell', className: "".concat(prefixCls, "-expand-icon-th"), title: '', rowSpan: rows.length }; rows[0].unshift((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, iconColumn), {}, { column: iconColumn })); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "renderRows", function (renderRows, rows, record, index, indent, fixed, parentKey, ancestorKeys) { var _this$props3 = _this.props, expandedRowClassName = _this$props3.expandedRowClassName, expandedRowRender = _this$props3.expandedRowRender, childrenColumnName = _this$props3.childrenColumnName; var childrenData = record[childrenColumnName]; var nextAncestorKeys = [].concat((0, _toConsumableArray2["default"])(ancestorKeys), [parentKey]); var nextIndent = indent + 1; if (expandedRowRender) { rows.push(_this.renderExpandedRow(record, index, expandedRowRender, expandedRowClassName(record, index, indent), nextAncestorKeys, nextIndent, fixed)); } if (childrenData) { renderRows(childrenData, nextIndent, rows, nextAncestorKeys); } }); var data = props.data, _childrenColumnName = props.childrenColumnName, defaultExpandAllRows = props.defaultExpandAllRows, _expandedRowKeys = props.expandedRowKeys, defaultExpandedRowKeys = props.defaultExpandedRowKeys, getRowKey = props.getRowKey; _this.preExpandedRowKeys = _expandedRowKeys; var finnalExpandedRowKeys = []; var _rows = (0, _toConsumableArray2["default"])(data); if (defaultExpandAllRows) { for (var i = 0; i < _rows.length; i++) { var row = _rows[i]; finnalExpandedRowKeys.push(getRowKey(row, i)); _rows = _rows.concat(row[_childrenColumnName] || []); } } else { finnalExpandedRowKeys = _expandedRowKeys || defaultExpandedRowKeys; } _this.columnManager = props.columnManager; _this.store = props.store; _this.store.setState({ expandedRowsHeight: {}, expandedRowKeys: finnalExpandedRowKeys }); return _this; } (0, _createClass2["default"])(ExpandableTable, [{ key: "componentDidUpdate", value: function componentDidUpdate() { if ('expandedRowKeys' in this.props && this.preExpandedRowKeys !== this.props.expandedRowKeys) { // modified by njq.niu@hand-china.com this.preExpandedRowKeys = this.props.expandedRowKeys; this.store.setState({ expandedRowKeys: this.props.expandedRowKeys }); } } }, { key: "renderExpandedRow", value: function renderExpandedRow(record, index, _render, className, ancestorKeys, indent, fixed) { var _this2 = this; var _this$props4 = this.props, prefixCls = _this$props4.prefixCls, expandIconAsCell = _this$props4.expandIconAsCell, indentSize = _this$props4.indentSize; var colCount; if (fixed === 'left') { colCount = this.columnManager.leftLeafColumns().length; } else if (fixed === 'right') { colCount = this.columnManager.rightLeafColumns().length; } else { colCount = this.columnManager.leafColumns().length; } var columns = [{ key: 'extra-row', render: function render() { var _this2$store$getState = _this2.store.getState(), expandedRowKeys = _this2$store$getState.expandedRowKeys; var expanded = !!~expandedRowKeys.indexOf(parentKey); return { props: { colSpan: colCount }, children: fixed !== 'right' ? _render(record, index, indent, expanded) : '&nbsp;' }; } }]; if (expandIconAsCell && fixed !== 'right') { columns.unshift({ key: 'expand-icon-placeholder', render: function render() { return null; } }); } var parentKey = ancestorKeys[ancestorKeys.length - 1]; var rowKey = "".concat(parentKey, "-extra-row"); var components = { body: { row: 'tr', cell: 'td' } }; return /*#__PURE__*/_react["default"].createElement(_TableRow["default"], { key: rowKey, columns: columns, className: className, rowKey: rowKey, ancestorKeys: ancestorKeys, prefixCls: "".concat(prefixCls, "-expanded-row"), indentSize: indentSize, indent: indent, fixed: fixed, components: components, expandedRow: true }); } }, { key: "render", value: function render() { var _this$props5 = this.props, data = _this$props5.data, childrenColumnName = _this$props5.childrenColumnName, children = _this$props5.children; var needIndentSpaced = data.some(function (record) { return record[childrenColumnName]; }); return children({ props: this.props, needIndentSpaced: needIndentSpaced, renderRows: this.renderRows, handleExpandChange: this.handleExpandChange, renderExpandIndentCell: this.renderExpandIndentCell }); } }]); return ExpandableTable; }(_react.Component); (0, _defineProperty2["default"])(ExpandableTable, "defaultProps", { expandIconAsCell: false, expandedRowClassName: function expandedRowClassName() { return ''; }, expandIconColumnIndex: 0, defaultExpandAllRows: false, defaultExpandedRowKeys: [], childrenColumnName: 'children', indentSize: 15, onExpand: function onExpand() {}, onExpandedRowsChange: function onExpandedRowsChange() {} }); var _default = (0, _miniStore.connect)()(ExpandableTable); exports["default"] = _default; //# sourceMappingURL=ExpandableTable.js.map