1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
6 |
|
7 | Object.defineProperty(exports, "__esModule", {
|
8 | value: true
|
9 | });
|
10 | exports.default = void 0;
|
11 |
|
12 | var React = _interopRequireWildcard(require("react"));
|
13 |
|
14 | var _HeaderRow = _interopRequireDefault(require("./HeaderRow"));
|
15 |
|
16 | var _TableContext = _interopRequireDefault(require("../context/TableContext"));
|
17 |
|
18 | function parseHeaderRows(rootColumns) {
|
19 | var rows = [];
|
20 |
|
21 | function fillRowCells(columns, colIndex) {
|
22 | var rowIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
23 |
|
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 | }
|
60 |
|
61 |
|
62 | fillRowCells(rootColumns, 0);
|
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 |
|
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 |
|
82 | function 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 |
|
115 | var _default = Header;
|
116 | exports.default = _default; |
\ | No newline at end of file |