UNPKG

3.32 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = void 0;
11
12var React = _interopRequireWildcard(require("react"));
13
14var _HeaderRow = _interopRequireDefault(require("./HeaderRow"));
15
16var _TableContext = _interopRequireDefault(require("../context/TableContext"));
17
18function parseHeaderRows(rootColumns) {
19 var rows = [];
20
21 function fillRowCells(columns, colIndex) {
22 var rowIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
23 // Init rows
24 rows[rowIndex] = rows[rowIndex] || [];
25 var currentColIndex = colIndex;
26 var colSpans = columns.map(function (column) {
27 var cell = {
28 key: column.key,
29 className: column.className || '',
30 children: column.title,
31 column: column,
32 colStart: currentColIndex
33 };
34 var colSpan = 1;
35 var subColumns = column.children;
36
37 if (subColumns && subColumns.length > 0) {
38 colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce(function (total, count) {
39 return total + count;
40 }, 0);
41 cell.hasSubColumns = true;
42 }
43
44 if ('colSpan' in column) {
45 colSpan = column.colSpan;
46 }
47
48 if ('rowSpan' in column) {
49 cell.rowSpan = column.rowSpan;
50 }
51
52 cell.colSpan = colSpan;
53 cell.colEnd = cell.colStart + colSpan - 1;
54 rows[rowIndex].push(cell);
55 currentColIndex += colSpan;
56 return colSpan;
57 });
58 return colSpans;
59 } // Generate `rows` cell data
60
61
62 fillRowCells(rootColumns, 0); // Handle `rowSpan`
63
64 var rowCount = rows.length;
65
66 var _loop = function _loop(rowIndex) {
67 rows[rowIndex].forEach(function (cell) {
68 if (!('rowSpan' in cell) && !cell.hasSubColumns) {
69 // eslint-disable-next-line no-param-reassign
70 cell.rowSpan = rowCount - rowIndex;
71 }
72 });
73 };
74
75 for (var rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {
76 _loop(rowIndex);
77 }
78
79 return rows;
80}
81
82function Header(_ref) {
83 var stickyOffsets = _ref.stickyOffsets,
84 columns = _ref.columns,
85 flattenColumns = _ref.flattenColumns,
86 onHeaderRow = _ref.onHeaderRow;
87
88 var _React$useContext = React.useContext(_TableContext.default),
89 prefixCls = _React$useContext.prefixCls,
90 getComponent = _React$useContext.getComponent;
91
92 var rows = React.useMemo(function () {
93 return parseHeaderRows(columns);
94 }, [columns]);
95 var WrapperComponent = getComponent(['header', 'wrapper'], 'thead');
96 var trComponent = getComponent(['header', 'row'], 'tr');
97 var thComponent = getComponent(['header', 'cell'], 'th');
98 return React.createElement(WrapperComponent, {
99 className: "".concat(prefixCls, "-thead")
100 }, rows.map(function (row, rowIndex) {
101 var rowNode = React.createElement(_HeaderRow.default, {
102 key: rowIndex,
103 flattenColumns: flattenColumns,
104 cells: row,
105 stickyOffsets: stickyOffsets,
106 rowComponent: trComponent,
107 cellComponent: thComponent,
108 onHeaderRow: onHeaderRow,
109 index: rowIndex
110 });
111 return rowNode;
112 }));
113}
114
115var _default = Header;
116exports.default = _default;
\No newline at end of file