forgeplus-react/node_modules/rsuite-table/lib/utils/mergeCells.js

131 lines
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
exports.__esModule = 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 /*#__PURE__*/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 = [];
/**
* 为列头添加分组
*/
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, {
removed: true
});
}
groupChildren.push( /*#__PURE__*/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: /*#__PURE__*/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, {
removed: true
});
}
}
}
nextCells.push(cloneCell(cells[i], {
width: _nextWidth,
'aria-colspan': colSpan && _nextWidth > width ? colSpan : undefined
}));
continue;
}
nextCells.push(cells[i]);
}
return nextCells;
}
var _default = mergeCells;
exports["default"] = _default;