UNPKG

choerodon-ui

Version:

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

137 lines (111 loc) 4.39 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var React = _interopRequireWildcard(require("react")); var _isFunction = _interopRequireDefault(require("lodash/isFunction")); var _get = _interopRequireDefault(require("lodash/get")); var _ColumnGroup = _interopRequireDefault(require("../ColumnGroup")); var _HeaderCell = _interopRequireDefault(require("../HeaderCell")); var _isNullOrUndefined = _interopRequireDefault(require("./isNullOrUndefined")); function cloneCell(Cell, props) { return React.cloneElement(Cell, props); } function mergeCells(cells) { var nextCells = []; for (var i = 0; i < cells.length; i += 1) { var _cells$i$props = cells[i].props, width = _cells$i$props.width, colSpan = _cells$i$props.colSpan, groupCount = _cells$i$props.groupCount, groupHeader = _cells$i$props.groupHeader, isHeaderCell = _cells$i$props.isHeaderCell, headerHeight = _cells$i$props.headerHeight, verticalAlign = _cells$i$props.verticalAlign; var groupChildren = []; // fix(ColumnGroup): fix column cannot be sorted in ColumnGroup /** * 为列头添加分组 */ if (groupCount && isHeaderCell) { var nextWidth = width; var left = 0; for (var j = 0; j < groupCount; j += 1) { var nextCell = cells[i + j]; var _nextCell$props = nextCell.props, nextCellWidth = _nextCell$props.width, sortable = _nextCell$props.sortable, children = _nextCell$props.children, dataKey = _nextCell$props.dataKey, onSortColumn = _nextCell$props.onSortColumn, sortColumn = _nextCell$props.sortColumn, sortType = _nextCell$props.sortType; if (j !== 0) { nextWidth += nextCellWidth; left += cells[i + j - 1].props.width; cells[i + j] = cloneCell(nextCell, { hidden: true }); } groupChildren.push(React.createElement(_HeaderCell["default"], { key: j, left: left, dataKey: dataKey, width: nextCellWidth, sortable: sortable, sortColumn: sortColumn, sortType: sortType, onSortColumn: onSortColumn }, children)); } nextCells.push(cloneCell(cells[i], { width: nextWidth, children: React.createElement(_ColumnGroup["default"], { width: nextWidth, headerHeight: headerHeight, header: groupHeader, verticalAlign: verticalAlign }, groupChildren) })); continue; } else if (colSpan) { /** * 如果存在 colSpan 属性,就去找它的下一个 Cell, * 看看值是否是 isNullOrUndefined,,如果为空这可以合并这个单元格 */ var _nextWidth = width; for (var _j = 0; _j < colSpan; _j += 1) { var _nextCell = cells[i + _j]; if (_nextCell) { var _nextCell$props2 = _nextCell.props, rowData = _nextCell$props2.rowData, rowIndex = _nextCell$props2.rowIndex, _children = _nextCell$props2.children, colSpanWidth = _nextCell$props2.width, _isHeaderCell = _nextCell$props2.isHeaderCell, _dataKey = _nextCell$props2.dataKey; var cellText = (0, _isFunction["default"])(_children) ? _children(rowData, rowIndex) : (0, _get["default"])(rowData, _dataKey); if (rowData && (0, _isNullOrUndefined["default"])(cellText) || _isHeaderCell && (0, _isNullOrUndefined["default"])(_children)) { _nextWidth += colSpanWidth; cells[i + _j] = cloneCell(_nextCell, { hidden: true }); } } } nextCells.push(cloneCell(cells[i], { width: _nextWidth, // Fix this use of the variablecolSpan always evaluates to true 'aria-colspan': _nextWidth > width ? colSpan : undefined })); continue; } nextCells.push(cells[i]); } return nextCells; } var _default = mergeCells; exports["default"] = _default; //# sourceMappingURL=mergeCells.js.map