@hi-ui/table 4.1.3-alpha.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @hi-ui/table
2
2
 
3
+ ## 4.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2597](https://github.com/XiaoMi/hiui/pull/2597) [`0ddf24960`](https://github.com/XiaoMi/hiui/commit/0ddf24960194fdd15653e34e0a6cef54b1586748) Thanks [@zyprepare](https://github.com/zyprepare)! - chore: axios 升级为 1.5.0
8
+
9
+ ### Patch Changes
10
+
11
+ - [#2608](https://github.com/XiaoMi/hiui/pull/2608) [`fb9b1281d`](https://github.com/XiaoMi/hiui/commit/fb9b1281d99ba0d21b5cb32c87b5e671272c1c8e) Thanks [@zyprepare](https://github.com/zyprepare)! - fix: 修复紧凑模式下多选项间距问题
12
+
13
+ - Updated dependencies [[`b3b36813a`](https://github.com/XiaoMi/hiui/commit/b3b36813a6968c5c96c39d1100935372e3aa5b4d)]:
14
+ - @hi-ui/select@4.2.0
15
+
3
16
  ## 4.1.2
4
17
 
5
18
  ### Patch Changes
@@ -45,12 +45,6 @@ var useTable = require('./use-table.js');
45
45
 
46
46
  var useEmbedExpand = require('./hooks/use-embed-expand.js');
47
47
 
48
- var TheadContent = require('./TheadContent.js');
49
-
50
- var ColGroupContent = require('./ColGroupContent.js');
51
-
52
- var TbodyContent = require('./TbodyContent.js');
53
-
54
48
  function _interopDefaultLegacy(e) {
55
49
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
56
50
  'default': e
@@ -67,6 +61,7 @@ var EMBED_DATA_KEY = "TABLE_EMBED_DATA_KEY_" + index.uuid();
67
61
  var DEFAULT_COLUMNS = [];
68
62
  var DEFAULT_DATA = [];
69
63
  var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
64
+ // ********************** 内嵌式面板 *********************** //
70
65
  var _a$prefixCls = _a.prefixCls,
71
66
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
72
67
  _a$role = _a.role,
@@ -84,7 +79,8 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
84
79
  expandedEmbedRowKeys = _a.expandedEmbedRowKeys,
85
80
  onEmbedExpand = _a.onEmbedExpand,
86
81
  expandedRender = _a.expandedRender,
87
- size = _a.size,
82
+ _a$size = _a.size,
83
+ size = _a$size === void 0 ? 'md' : _a$size,
88
84
  extra = _a.extra,
89
85
  onRow = _a.onRow,
90
86
  stickyFooter = _a.stickyFooter,
@@ -94,9 +90,7 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
94
90
  fixedColumnTrigger = _a$fixedColumnTrigger === void 0 ? 'auto' : _a$fixedColumnTrigger,
95
91
  emptyContent = _a.emptyContent,
96
92
  virtual = _a.virtual,
97
- needDoubleTable = _a.needDoubleTable,
98
- rest = tslib.__rest(_a, ["prefixCls", "role", "className", "columns", "data", "striped", "bordered", "rowExpandable", "defaultExpandedEmbedRowKeys", "expandedEmbedRowKeys", "onEmbedExpand", "expandedRender", "size", "extra", "onRow", "onHeaderRow", "stickyFooter", "stickyFooterBottom", "fixedColumnTrigger", "emptyContent", "virtual", "needDoubleTable"]); // ********************** 内嵌式面板 *********************** //
99
-
93
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "columns", "data", "striped", "bordered", "rowExpandable", "defaultExpandedEmbedRowKeys", "expandedEmbedRowKeys", "onEmbedExpand", "expandedRender", "size", "extra", "onRow", "onHeaderRow", "stickyFooter", "stickyFooterBottom", "fixedColumnTrigger", "emptyContent", "virtual"]);
100
94
 
101
95
  var _useEmbedExpand = useEmbedExpand.useEmbedExpand({
102
96
  defaultExpandedEmbedRowKeys: defaultExpandedEmbedRowKeys,
@@ -152,70 +146,48 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
152
146
 
153
147
  return columns;
154
148
  }, [embedExpandable, getEmbedPanelColumn, columns]);
155
- var i18n = core.useLocaleContext();
156
-
157
- var _useMemo = React.useMemo(function () {
158
- // 确保包含 avg 属性,且值为数字类型的字符串
159
- var avgRow = {
160
- id: 'avg',
161
- raw: {
162
- key: 'avg'
163
- }
164
- };
165
- var hasAvgColumn = false;
166
- columns.forEach(function (column, index$1) {
167
- if (index$1 === 0) {
168
- // @ts-ignore
169
- avgRow.raw[column.dataKey] = i18n.get('table.average');
170
- }
149
+ var i18n = core.useLocaleContext(); // 确保包含 avg 属性,且值为数字类型的字符串
171
150
 
172
- if (index.checkNeedTotalOrEvg(data, column, 'avg')) {
173
- hasAvgColumn = true; // @ts-ignore
174
- // @ts-ignore
151
+ var avgRow = {
152
+ id: 'avg',
153
+ raw: {
154
+ key: 'avg'
155
+ }
156
+ };
157
+ var hasAvgColumn = false;
158
+ columns.forEach(function (column, index$1) {
159
+ if (index$1 === 0) {
160
+ // @ts-ignore
161
+ avgRow.raw[column.dataKey] = i18n.get('table.average');
162
+ }
175
163
 
176
- avgRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, true);
177
- }
178
- });
179
- return {
180
- avgRow: avgRow,
181
- hasAvgColumn: hasAvgColumn
182
- };
183
- }, [columns, data, i18n]),
184
- avgRow = _useMemo.avgRow,
185
- hasAvgColumn = _useMemo.hasAvgColumn;
186
-
187
- var _useMemo2 = React.useMemo(function () {
188
- // 确保包含total属性,且值为数字类型的字符串
189
- var sumRow = {
190
- id: 'sum',
191
- raw: {
192
- key: 'sum'
193
- }
194
- };
195
- var hasSumColumn = false;
196
- columns.forEach(function (column, index$1) {
197
- if (index$1 === 0) {
198
- // @ts-ignore
199
- sumRow.raw[column.dataKey] = i18n.get('table.total');
200
- }
164
+ if (index.checkNeedTotalOrEvg(data, column, 'avg')) {
165
+ hasAvgColumn = true; // @ts-ignore
201
166
 
202
- if (index.checkNeedTotalOrEvg(data, column, 'total')) {
203
- hasSumColumn = true; // 获取当前数据最大小数点个数,并设置最后总和值小数点
204
- // @ts-ignore
205
- // 获取当前数据最大小数点个数,并设置最后总和值小数点
206
- // @ts-ignore
167
+ avgRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, true);
168
+ }
169
+ }); // 确保包含total属性,且值为数字类型的字符串
207
170
 
208
- sumRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, false);
209
- }
210
- });
211
- return {
212
- sumRow: sumRow,
213
- hasSumColumn: hasSumColumn
214
- };
215
- }, [columns, data, i18n]),
216
- sumRow = _useMemo2.sumRow,
217
- hasSumColumn = _useMemo2.hasSumColumn;
171
+ var sumRow = {
172
+ id: 'sum',
173
+ raw: {
174
+ key: 'sum'
175
+ }
176
+ };
177
+ var hasSumColumn = false;
178
+ columns.forEach(function (column, index$1) {
179
+ if (index$1 === 0) {
180
+ // @ts-ignore
181
+ sumRow.raw[column.dataKey] = i18n.get('table.total');
182
+ }
218
183
 
184
+ if (index.checkNeedTotalOrEvg(data, column, 'total')) {
185
+ hasSumColumn = true; // 获取当前数据最大小数点个数,并设置最后总和值小数点
186
+ // @ts-ignore
187
+
188
+ sumRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, false);
189
+ }
190
+ });
219
191
  var providedValue = useTable.useTable(Object.assign(Object.assign({}, rest), {
220
192
  columns: mergedColumns,
221
193
  data: data,
@@ -228,67 +200,11 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
228
200
  leftFixedColumnsWidth = providedValue.leftFixedColumnsWidth,
229
201
  rightFixedColumnsWidth = providedValue.rightFixedColumnsWidth,
230
202
  scrollSize = providedValue.scrollSize,
231
- getTableHeaderProps = providedValue.getTableHeaderProps,
232
- scrollBodyElementRef = providedValue.scrollBodyElementRef,
233
- onTableBodyScroll = providedValue.onTableBodyScroll,
234
- canScroll = providedValue.canScroll,
235
- bodyTableRef = providedValue.bodyTableRef,
236
- scrollWidth = providedValue.scrollWidth;
203
+ getTableHeaderProps = providedValue.getTableHeaderProps;
237
204
  var hasBorder = borderedProp !== null && borderedProp !== void 0 ? borderedProp : bordered;
238
205
  var extraHeader = extra && extra.header;
239
206
  var extraFooter = extra && extra.footer;
240
207
  var alwaysFixedColumn = fixedColumnTrigger === 'always';
241
-
242
- var renderTable = function renderTable() {
243
- return needDoubleTable ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", Object.assign({}, getTableHeaderProps()), /*#__PURE__*/React__default["default"].createElement(TableHeader.TableHeader, null), extraHeader ? /*#__PURE__*/React__default["default"].createElement("div", {
244
- style: {
245
- position: 'absolute',
246
- right: 0,
247
- zIndex: 11,
248
- bottom: 0,
249
- top: 0
250
- }
251
- }, extraHeader) : null), /*#__PURE__*/React__default["default"].createElement(TableBody.TableBody, {
252
- emptyContent: emptyContent
253
- })) : /*#__PURE__*/React__default["default"].createElement("div", {
254
- ref: scrollBodyElementRef,
255
- className: prefixCls + "-content",
256
- onScroll: onTableBodyScroll,
257
- style: {
258
- // 表格宽度大于div宽度才出现横向滚动条
259
- overflowX: canScroll ? 'scroll' : undefined
260
- }
261
- }, /*#__PURE__*/React__default["default"].createElement("table", {
262
- ref: bodyTableRef,
263
- style: {
264
- width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
265
- }
266
- }, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TheadContent.TheadContent, null), /*#__PURE__*/React__default["default"].createElement(TbodyContent.TbodyContent, {
267
- emptyContent: emptyContent
268
- })));
269
- };
270
-
271
- var renderFreezeShadow = function renderFreezeShadow() {
272
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
273
- className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--left",
274
- style: {
275
- width: leftFixedColumnsWidth + 'px'
276
- }
277
- }) : null, (alwaysFixedColumn || scrollSize.scrollRight > 0) && rightFrozenColKeys.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
278
- className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--right",
279
- style: {
280
- width: rightFixedColumnsWidth + 'px'
281
- }
282
- }) : null);
283
- };
284
-
285
- var tableFooter = /*#__PURE__*/React__default["default"].createElement("div", {
286
- className: prefixCls + "-footer",
287
- style: stickyFooter ? {
288
- position: 'sticky',
289
- bottom: stickyFooterBottom
290
- } : undefined
291
- }, extraFooter);
292
208
  var cls = classname.cx(prefixCls, className, hasBorder && prefixCls + "--bordered", striped && prefixCls + "--striped", size && prefixCls + "--size-" + size, virtual && prefixCls + "--virtual");
293
209
  return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
294
210
  ref: ref,
@@ -312,7 +228,37 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
312
228
  hasSumColumn: hasSumColumn,
313
229
  virtual: virtual
314
230
  })
315
- }, renderTable()), renderFreezeShadow()), tableFooter);
231
+ }, /*#__PURE__*/React__default["default"].createElement("div", Object.assign({}, getTableHeaderProps()), /*#__PURE__*/React__default["default"].createElement(TableHeader.TableHeader, {
232
+ prefixCls: prefixCls + "-header"
233
+ }), extraHeader ? /*#__PURE__*/React__default["default"].createElement("div", {
234
+ style: {
235
+ position: 'absolute',
236
+ right: 0,
237
+ zIndex: 11,
238
+ bottom: 0,
239
+ top: 0
240
+ }
241
+ }, extraHeader) : null), /*#__PURE__*/React__default["default"].createElement(TableBody.TableBody, {
242
+ prefixCls: prefixCls,
243
+ emptyContent: emptyContent
244
+ })), (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
245
+ className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--left",
246
+ style: {
247
+ width: leftFixedColumnsWidth + 'px'
248
+ }
249
+ }) : null, (alwaysFixedColumn || scrollSize.scrollRight > 0) && rightFrozenColKeys.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
250
+ className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--right",
251
+ style: {
252
+ width: rightFixedColumnsWidth + 'px'
253
+ }
254
+ }) : null), /*#__PURE__*/React__default["default"].createElement("div", {
255
+ className: prefixCls + "-footer",
256
+ style: stickyFooter ? {
257
+ position: 'sticky',
258
+ bottom: stickyFooterBottom // boxShadow: '0 5px 15px 0 rgba(0, 0, 0, 0.1)'
259
+
260
+ } : undefined
261
+ }, extraFooter));
316
262
  });
317
263
 
318
264
  if (env.__DEV__) {
package/lib/cjs/Table.js CHANGED
@@ -66,13 +66,7 @@ var Loading__default = /*#__PURE__*/_interopDefaultLegacy(Loading);
66
66
  var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
67
67
 
68
68
  var _prefix = classname.getPrefixCls('table');
69
- /**
70
- * 需要使用双表格的场景对应的 API
71
- * 这些场景下的功能无法通过单表格实现,故而设计成双表格,即表头和表体分别用一个 table 实现
72
- */
73
-
74
69
 
75
- var DOUBLE_TABLE_SCENE = ['maxHeight', 'sticky', 'stickyTop', 'setting', 'virtual'];
76
70
  var STANDARD_PRESET = {
77
71
  striped: true,
78
72
  bordered: true,
@@ -91,6 +85,7 @@ var DEFAULT_PAGINATION = {
91
85
  */
92
86
 
93
87
  var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
88
+ // ************************ 预置标准模式 ************************ //
94
89
  var _a$prefixCls = _a.prefixCls,
95
90
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
96
91
  _a$standard = _a.standard,
@@ -113,13 +108,8 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
113
108
  extra = _a.extra,
114
109
  _a$data = _a.data,
115
110
  data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
116
- rest = tslib.__rest(_a, ["prefixCls", "standard", "loading", "dataSource", "pagination", "uniqueId", "columns", "hiddenColKeys", "onHiddenColKeysChange", "sortedColKeys", "onSortedColKeysChange", "checkDisabledColKeys", "onSetColKeysChange", "rowSelection", "fieldKey", "extra", "data"]); // 是否需要双表格
117
-
118
-
119
- var needDoubleTable = DOUBLE_TABLE_SCENE.some(function (prop) {
120
- return !!rest[prop];
121
- });
122
- var virtual = rest.virtual; // ************************ 预置标准模式 ************************ //
111
+ virtual = _a.virtual,
112
+ rest = tslib.__rest(_a, ["prefixCls", "standard", "loading", "dataSource", "pagination", "uniqueId", "columns", "hiddenColKeys", "onHiddenColKeysChange", "sortedColKeys", "onSortedColKeysChange", "checkDisabledColKeys", "onSetColKeysChange", "rowSelection", "fieldKey", "extra", "data", "virtual"]);
123
113
 
124
114
  var tableProps = reactUtils.withDefaultProps(rest, standard ? STANDARD_PRESET : undefined);
125
115
 
@@ -331,7 +321,6 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
331
321
  data: mergedData,
332
322
  fieldKey: fieldKey,
333
323
  virtual: virtual,
334
- needDoubleTable: needDoubleTable,
335
324
  extra: Object.assign({
336
325
  header: setting ? /*#__PURE__*/React__default["default"].createElement(TableSettingMenu.TableSettingMenu, {
337
326
  prefixCls: prefixCls + "-setting",
@@ -27,14 +27,12 @@ var useLatest = require('@hi-ui/use-latest');
27
27
 
28
28
  var typeAssertion = require('@hi-ui/type-assertion');
29
29
 
30
+ var emptyState = require('@hi-ui/empty-state');
31
+
30
32
  var TableRow = require('./TableRow.js');
31
33
 
32
34
  var context = require('./context.js');
33
35
 
34
- var ColGroupContent = require('./ColGroupContent.js');
35
-
36
- var TbodyContent = require('./TbodyContent.js');
37
-
38
36
  function _interopDefaultLegacy(e) {
39
37
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
40
38
  'default': e
@@ -56,8 +54,10 @@ var TableBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
56
54
 
57
55
  var _useTableContext = context.useTableContext(),
58
56
  columns = _useTableContext.columns,
57
+ leafColumns = _useTableContext.leafColumns,
59
58
  isExpandTreeRows = _useTableContext.isExpandTreeRows,
60
59
  transitionData = _useTableContext.transitionData,
60
+ getColgroupProps = _useTableContext.getColgroupProps,
61
61
  bodyTableRef = _useTableContext.bodyTableRef,
62
62
  scrollBodyElementRef = _useTableContext.scrollBodyElementRef,
63
63
  onTableBodyScroll = _useTableContext.onTableBodyScroll,
@@ -65,6 +65,10 @@ var TableBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
65
65
  maxHeight = _useTableContext.maxHeight,
66
66
  canScroll = _useTableContext.canScroll,
67
67
  scrollWidth = _useTableContext.scrollWidth,
68
+ hasAvgColumn = _useTableContext.hasAvgColumn,
69
+ avgRow = _useTableContext.avgRow,
70
+ hasSumColumn = _useTableContext.hasSumColumn,
71
+ sumRow = _useTableContext.sumRow,
68
72
  colWidths = _useTableContext.colWidths,
69
73
  virtual = _useTableContext.virtual,
70
74
  measureRowElementRef = _useTableContext.measureRowElementRef;
@@ -153,7 +157,7 @@ var TableBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
153
157
  rowData: row
154
158
  }, getRequiredProps(row.id))));
155
159
  }
156
- })) : TbodyContent.renderEmptyContent(Object.assign({
160
+ })) : renderEmptyContent(Object.assign({
157
161
  className: prefixCls + "-empty-content",
158
162
  colSpan: columns.length,
159
163
  emptyContent: emptyContent
@@ -177,11 +181,65 @@ var TableBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
177
181
  style: {
178
182
  width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
179
183
  }
180
- }, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TbodyContent.TbodyContent, null)));
184
+ }, /*#__PURE__*/React__default["default"].createElement("colgroup", null, leafColumns.map(function (col, idx) {
185
+ return /*#__PURE__*/React__default["default"].createElement("col", Object.assign({
186
+ key: idx,
187
+ className: prefixCls + "-col"
188
+ }, getColgroupProps(col, idx)));
189
+ })), /*#__PURE__*/React__default["default"].createElement("tbody", null, typeAssertion.isArrayNonEmpty(transitionData) ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, transitionData.map(function (row, index) {
190
+ return /*#__PURE__*/React__default["default"].createElement(TableRow.TableRow, Object.assign({
191
+ ref: index === 0 ? measureRowElementRef : null,
192
+ // key={depth + index}
193
+ key: row.id,
194
+ // @ts-ignore
195
+ rowIndex: index,
196
+ rowData: row
197
+ }, getRequiredProps(row.id)));
198
+ }), hasSumColumn ? /*#__PURE__*/React__default["default"].createElement(TableRow.TableRow, {
199
+ key: sumRow.id,
200
+ rowIndex: transitionData.length,
201
+ rowData: sumRow,
202
+ isSumRow: true
203
+ }) : null, hasAvgColumn ? /*#__PURE__*/React__default["default"].createElement(TableRow.TableRow, {
204
+ key: avgRow.id,
205
+ rowIndex: transitionData.length + 1,
206
+ rowData: avgRow,
207
+ isAvgRow: true
208
+ }) : null) : // 空状态,colSpan 占满表格整行
209
+ renderEmptyContent(Object.assign({
210
+ className: prefixCls + "-empty-content",
211
+ colSpan: columns.length,
212
+ emptyContent: emptyContent
213
+ }, scrollBodyElementRef.current ? {
214
+ scrollBodyWidth: window.getComputedStyle(scrollBodyElementRef.current).getPropertyValue('width')
215
+ } : {})))));
181
216
  });
182
217
 
183
218
  if (env.__DEV__) {
184
219
  TableBody.displayName = 'TableBody';
185
220
  }
221
+ /**
222
+ * 负责空状态渲染
223
+ */
224
+
225
+
226
+ var renderEmptyContent = function renderEmptyContent(_ref2) {
227
+ var className = _ref2.className,
228
+ colSpan = _ref2.colSpan,
229
+ emptyContent = _ref2.emptyContent,
230
+ scrollBodyWidth = _ref2.scrollBodyWidth;
231
+ return /*#__PURE__*/React__default["default"].createElement("tr", {
232
+ className: className
233
+ }, /*#__PURE__*/React__default["default"].createElement("td", {
234
+ colSpan: colSpan
235
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
236
+ style: {
237
+ position: 'sticky',
238
+ left: 0,
239
+ width: scrollBodyWidth !== null && scrollBodyWidth !== void 0 ? scrollBodyWidth : '100%',
240
+ overflow: 'hidden'
241
+ }
242
+ }, emptyContent || /*#__PURE__*/React__default["default"].createElement(emptyState.EmptyState, null))));
243
+ };
186
244
 
187
245
  exports.TableBody = TableBody;
@@ -17,15 +17,19 @@ Object.defineProperty(exports, '__esModule', {
17
17
 
18
18
  var React = require('react');
19
19
 
20
+ var reactResizable = require('react-resizable');
21
+
20
22
  var classname = require('@hi-ui/classname');
21
23
 
22
24
  var env = require('@hi-ui/env');
23
25
 
26
+ var typeAssertion = require('@hi-ui/type-assertion');
27
+
24
28
  var context = require('./context.js');
25
29
 
26
- var ColGroupContent = require('./ColGroupContent.js');
30
+ var TableAdvancedFilter = require('./TableAdvancedFilter.js');
27
31
 
28
- var TheadContent = require('./TheadContent.js');
32
+ var useCheckState = require('@hi-ui/use-check-state');
29
33
 
30
34
  function _interopDefaultLegacy(e) {
31
35
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
@@ -43,10 +47,21 @@ var TableHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
43
47
  className = _ref.className;
44
48
 
45
49
  var _useTableContext = context.useTableContext(),
50
+ groupedColumns = _useTableContext.groupedColumns,
51
+ resizable = _useTableContext.resizable,
52
+ colWidths = _useTableContext.colWidths,
53
+ isHoveredHighlightCol = _useTableContext.isHoveredHighlightCol,
54
+ isHighlightedCol = _useTableContext.isHighlightedCol,
55
+ getColgroupProps = _useTableContext.getColgroupProps,
56
+ onColumnResizable = _useTableContext.onColumnResizable,
57
+ getStickyColProps = _useTableContext.getStickyColProps,
46
58
  onTableBodyScrollMock = _useTableContext.onTableBodyScrollMock,
47
59
  scrollHeaderElementRef = _useTableContext.scrollHeaderElementRef,
48
- getTableHeaderProps = _useTableContext.getTableHeaderProps;
60
+ leafColumns = _useTableContext.leafColumns,
61
+ getTableHeaderProps = _useTableContext.getTableHeaderProps,
62
+ showColMenu = _useTableContext.showColMenu;
49
63
 
64
+ var activeColumnKeysAction = useCheckState.useCheckState();
50
65
  var cls = classname.cx(prefixCls, className);
51
66
  return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
52
67
  className: cls,
@@ -56,9 +71,60 @@ var TableHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
56
71
  width: '100%',
57
72
  position: 'relative'
58
73
  }
59
- }, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TheadContent.TheadContent, {
74
+ }, /*#__PURE__*/React__default["default"].createElement("colgroup", null, leafColumns.map(function (col, idx) {
75
+ return /*#__PURE__*/React__default["default"].createElement("col", Object.assign({
76
+ key: idx,
77
+ className: prefixCls + "-col"
78
+ }, getColgroupProps(col, idx)));
79
+ })), /*#__PURE__*/React__default["default"].createElement("thead", {
60
80
  onWheel: onTableBodyScrollMock
61
- })));
81
+ }, groupedColumns.map(function (cols, colsIndex) {
82
+ return /*#__PURE__*/React__default["default"].createElement("tr", {
83
+ key: colsIndex
84
+ }, cols.map(function (col, colIndex) {
85
+ var _ref2 = col || {},
86
+ dataKey = _ref2.dataKey,
87
+ title = _ref2.title,
88
+ raw = _ref2.raw;
89
+
90
+ var titleContent = typeAssertion.isFunction(title) ? title(col) : title;
91
+ var cell = /*#__PURE__*/React__default["default"].createElement("th", Object.assign({
92
+ key: dataKey
93
+ }, getStickyColProps(col), {
94
+ className: classname.cx(prefixCls + "-cell", raw.className, isHighlightedCol(dataKey) && prefixCls + "-cell__col--highlight", isHoveredHighlightCol(dataKey) && prefixCls + "-cell__col--hovered-highlight", activeColumnKeysAction.has(dataKey) && prefixCls + "-cell__col--active"),
95
+ // @ts-ignore
96
+ colSpan: col.colSpan,
97
+ // @ts-ignore
98
+ rowSpan: col.rowSpan
99
+ }), titleContent, TableAdvancedFilter.renderFilter({
100
+ prefixCls: prefixCls + "-filter",
101
+ columnKey: dataKey,
102
+ showColMenu: showColMenu,
103
+ column: col,
104
+ onOpen: function onOpen() {
105
+ return activeColumnKeysAction.add(dataKey);
106
+ },
107
+ onClose: function onClose() {
108
+ return activeColumnKeysAction.remove(dataKey);
109
+ }
110
+ }));
111
+ return resizable && colIndex !== colWidths.length - 1 ? /*#__PURE__*/React__default["default"].createElement(reactResizable.Resizable, {
112
+ key: colIndex,
113
+ className: prefixCls + "__resizable",
114
+ draggableOpts: {
115
+ enableUserSelectHack: false
116
+ },
117
+ handle: /*#__PURE__*/React__default["default"].createElement("span", {
118
+ className: prefixCls + "__resizable-handle"
119
+ }),
120
+ height: 0,
121
+ width: colWidths[colIndex],
122
+ onResize: function onResize(evt, options) {
123
+ onColumnResizable(evt, options, colIndex);
124
+ }
125
+ }, cell) : cell;
126
+ }));
127
+ }))));
62
128
  });
63
129
 
64
130
  if (env.__DEV__) {
@@ -90,17 +90,19 @@ var useColWidth = function useColWidth(_ref) {
90
90
  var _resizeObserver = new ResizeObserver(function () {
91
91
  if (virtual) {
92
92
  setColWidths(getVirtualWidths());
93
- } // else {
94
- // if (measureRowElement.childNodes) {
95
- // const _realColumnsWidth = Array.from(measureRowElement.childNodes).map((node) => {
96
- // return (node as HTMLElement).getBoundingClientRect().width || 0
97
- // })
98
- // if (_realColumnsWidth.some((width) => width && width > 0)) {
99
- // setColWidths(_realColumnsWidth)
100
- // }
101
- // }
102
- // }
103
-
93
+ } else {
94
+ if (measureRowElement.childNodes) {
95
+ var _realColumnsWidth = Array.from(measureRowElement.childNodes).map(function (node) {
96
+ return node.getBoundingClientRect().width || 0;
97
+ });
98
+
99
+ if (_realColumnsWidth.some(function (width) {
100
+ return width && width > 0;
101
+ })) {
102
+ setColWidths(_realColumnsWidth);
103
+ }
104
+ }
105
+ }
104
106
  });
105
107
 
106
108
  _resizeObserver.observe(measureRowElement);