@hi-ui/table 4.2.0 → 4.3.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,20 @@
1
1
  # @hi-ui/table
2
2
 
3
+ ## 4.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#2642](https://github.com/XiaoMi/hiui/pull/2642) [`74d8c5148`](https://github.com/XiaoMi/hiui/commit/74d8c51489ae7a88c90b1426e9da118125579b97) Thanks [@zyprepare](https://github.com/zyprepare)! - perf: 将之前的双表格结构优化成单表格,冻结列和表头吸顶等场景依然采用双表格结构
8
+
9
+ - [#2647](https://github.com/XiaoMi/hiui/pull/2647) [`8767c9470`](https://github.com/XiaoMi/hiui/commit/8767c94702fdc697207001f639508907e20fc6a5) Thanks [@zyprepare](https://github.com/zyprepare)! - feat: add footerRender api
10
+
11
+ ### Patch Changes
12
+
13
+ - [#2648](https://github.com/XiaoMi/hiui/pull/2648) [`54387a81e`](https://github.com/XiaoMi/hiui/commit/54387a81e1c6add77e791af8d849a6518077afd5) Thanks [@zyprepare](https://github.com/zyprepare)! - perf: 优化 resizable 模式下可调整的最小宽度
14
+
15
+ - Updated dependencies [[`4f7c8c906`](https://github.com/XiaoMi/hiui/commit/4f7c8c9063d9b72068a2db5fa614eed130aafd0f)]:
16
+ - @hi-ui/select@4.2.2
17
+
3
18
  ## 4.2.0
4
19
 
5
20
  ### Minor Changes
@@ -45,6 +45,12 @@ 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
+
48
54
  function _interopDefaultLegacy(e) {
49
55
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
50
56
  'default': e
@@ -61,7 +67,6 @@ var EMBED_DATA_KEY = "TABLE_EMBED_DATA_KEY_" + index.uuid();
61
67
  var DEFAULT_COLUMNS = [];
62
68
  var DEFAULT_DATA = [];
63
69
  var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
64
- // ********************** 内嵌式面板 *********************** //
65
70
  var _a$prefixCls = _a.prefixCls,
66
71
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
67
72
  _a$role = _a.role,
@@ -90,7 +95,9 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
90
95
  fixedColumnTrigger = _a$fixedColumnTrigger === void 0 ? 'auto' : _a$fixedColumnTrigger,
91
96
  emptyContent = _a.emptyContent,
92
97
  virtual = _a.virtual,
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"]);
98
+ needDoubleTable = _a.needDoubleTable,
99
+ 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"]); // ********************** 内嵌式面板 *********************** //
100
+
94
101
 
95
102
  var _useEmbedExpand = useEmbedExpand.useEmbedExpand({
96
103
  defaultExpandedEmbedRowKeys: defaultExpandedEmbedRowKeys,
@@ -146,48 +153,70 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
146
153
 
147
154
  return columns;
148
155
  }, [embedExpandable, getEmbedPanelColumn, columns]);
149
- var i18n = core.useLocaleContext(); // 确保包含 avg 属性,且值为数字类型的字符串
150
-
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
- }
156
+ var i18n = core.useLocaleContext();
157
+
158
+ var _useMemo = React.useMemo(function () {
159
+ // 确保包含 avg 属性,且值为数字类型的字符串
160
+ var avgRow = {
161
+ id: 'avg',
162
+ raw: {
163
+ key: 'avg'
164
+ }
165
+ };
166
+ var hasAvgColumn = false;
167
+ columns.forEach(function (column, index$1) {
168
+ if (index$1 === 0) {
169
+ // @ts-ignore
170
+ avgRow.raw[column.dataKey] = i18n.get('table.average');
171
+ }
163
172
 
164
- if (index.checkNeedTotalOrEvg(data, column, 'avg')) {
165
- hasAvgColumn = true; // @ts-ignore
173
+ if (index.checkNeedTotalOrEvg(data, column, 'avg')) {
174
+ hasAvgColumn = true; // @ts-ignore
175
+ // @ts-ignore
166
176
 
167
- avgRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, true);
168
- }
169
- }); // 确保包含total属性,且值为数字类型的字符串
177
+ avgRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, true);
178
+ }
179
+ });
180
+ return {
181
+ avgRow: avgRow,
182
+ hasAvgColumn: hasAvgColumn
183
+ };
184
+ }, [columns, data, i18n]),
185
+ avgRow = _useMemo.avgRow,
186
+ hasAvgColumn = _useMemo.hasAvgColumn;
187
+
188
+ var _useMemo2 = React.useMemo(function () {
189
+ // 确保包含total属性,且值为数字类型的字符串
190
+ var sumRow = {
191
+ id: 'sum',
192
+ raw: {
193
+ key: 'sum'
194
+ }
195
+ };
196
+ var hasSumColumn = false;
197
+ columns.forEach(function (column, index$1) {
198
+ if (index$1 === 0) {
199
+ // @ts-ignore
200
+ sumRow.raw[column.dataKey] = i18n.get('table.total');
201
+ }
170
202
 
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
- }
203
+ if (index.checkNeedTotalOrEvg(data, column, 'total')) {
204
+ hasSumColumn = true; // 获取当前数据最大小数点个数,并设置最后总和值小数点
205
+ // @ts-ignore
206
+ // 获取当前数据最大小数点个数,并设置最后总和值小数点
207
+ // @ts-ignore
183
208
 
184
- if (index.checkNeedTotalOrEvg(data, column, 'total')) {
185
- hasSumColumn = true; // 获取当前数据最大小数点个数,并设置最后总和值小数点
186
- // @ts-ignore
209
+ sumRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, false);
210
+ }
211
+ });
212
+ return {
213
+ sumRow: sumRow,
214
+ hasSumColumn: hasSumColumn
215
+ };
216
+ }, [columns, data, i18n]),
217
+ sumRow = _useMemo2.sumRow,
218
+ hasSumColumn = _useMemo2.hasSumColumn;
187
219
 
188
- sumRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, false);
189
- }
190
- });
191
220
  var providedValue = useTable.useTable(Object.assign(Object.assign({}, rest), {
192
221
  columns: mergedColumns,
193
222
  data: data,
@@ -200,11 +229,68 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
200
229
  leftFixedColumnsWidth = providedValue.leftFixedColumnsWidth,
201
230
  rightFixedColumnsWidth = providedValue.rightFixedColumnsWidth,
202
231
  scrollSize = providedValue.scrollSize,
203
- getTableHeaderProps = providedValue.getTableHeaderProps;
232
+ getTableHeaderProps = providedValue.getTableHeaderProps,
233
+ scrollBodyElementRef = providedValue.scrollBodyElementRef,
234
+ onTableBodyScroll = providedValue.onTableBodyScroll,
235
+ canScroll = providedValue.canScroll,
236
+ bodyTableRef = providedValue.bodyTableRef,
237
+ scrollWidth = providedValue.scrollWidth,
238
+ footerRender = providedValue.footerRender;
204
239
  var hasBorder = borderedProp !== null && borderedProp !== void 0 ? borderedProp : bordered;
205
240
  var extraHeader = extra && extra.header;
206
241
  var extraFooter = extra && extra.footer;
207
242
  var alwaysFixedColumn = fixedColumnTrigger === 'always';
243
+
244
+ var renderTable = function renderTable() {
245
+ 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", {
246
+ style: {
247
+ position: 'absolute',
248
+ right: 0,
249
+ zIndex: 11,
250
+ bottom: 0,
251
+ top: 0
252
+ }
253
+ }, extraHeader) : null), /*#__PURE__*/React__default["default"].createElement(TableBody.TableBody, {
254
+ emptyContent: emptyContent
255
+ })) : /*#__PURE__*/React__default["default"].createElement("div", {
256
+ ref: scrollBodyElementRef,
257
+ className: prefixCls + "-content",
258
+ onScroll: onTableBodyScroll,
259
+ style: {
260
+ // 表格宽度大于div宽度才出现横向滚动条
261
+ overflowX: canScroll ? 'scroll' : undefined
262
+ }
263
+ }, /*#__PURE__*/React__default["default"].createElement("table", {
264
+ ref: bodyTableRef,
265
+ style: {
266
+ width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
267
+ }
268
+ }, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TheadContent.TheadContent, null), /*#__PURE__*/React__default["default"].createElement(TbodyContent.TbodyContent, {
269
+ emptyContent: emptyContent
270
+ })));
271
+ };
272
+
273
+ var renderFreezeShadow = function renderFreezeShadow() {
274
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
275
+ className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--left",
276
+ style: {
277
+ width: leftFixedColumnsWidth + 'px'
278
+ }
279
+ }) : null, (alwaysFixedColumn || scrollSize.scrollRight > 0) && rightFrozenColKeys.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
280
+ className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--right",
281
+ style: {
282
+ width: rightFixedColumnsWidth + 'px'
283
+ }
284
+ }) : null);
285
+ };
286
+
287
+ var tableFooter = /*#__PURE__*/React__default["default"].createElement("div", {
288
+ className: prefixCls + "-footer",
289
+ style: stickyFooter ? {
290
+ position: 'sticky',
291
+ bottom: stickyFooterBottom
292
+ } : undefined
293
+ }, typeAssertion.isFunction(footerRender) ? footerRender( /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, extraFooter)) : extraFooter);
208
294
  var cls = classname.cx(prefixCls, className, hasBorder && prefixCls + "--bordered", striped && prefixCls + "--striped", size && prefixCls + "--size-" + size, virtual && prefixCls + "--virtual");
209
295
  return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
210
296
  ref: ref,
@@ -228,37 +314,7 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
228
314
  hasSumColumn: hasSumColumn,
229
315
  virtual: virtual
230
316
  })
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));
317
+ }, renderTable()), renderFreezeShadow()), tableFooter);
262
318
  });
263
319
 
264
320
  if (env.__DEV__) {
@@ -0,0 +1,56 @@
1
+ /** @LICENSE
2
+ * @hi-ui/table
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/table#readme
4
+ *
5
+ * Copyright (c) HiUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+
14
+ Object.defineProperty(exports, '__esModule', {
15
+ value: true
16
+ });
17
+
18
+ var React = require('react');
19
+
20
+ var classname = require('@hi-ui/classname');
21
+
22
+ var env = require('@hi-ui/env');
23
+
24
+ var context = require('./context.js');
25
+
26
+ function _interopDefaultLegacy(e) {
27
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
28
+ 'default': e
29
+ };
30
+ }
31
+
32
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
33
+
34
+ var _prefix = classname.getPrefixCls('table-colgroup');
35
+
36
+ var ColGroupContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
37
+ var _ref$prefixCls = _ref.prefixCls,
38
+ prefixCls = _ref$prefixCls === void 0 ? _prefix : _ref$prefixCls;
39
+
40
+ var _useTableContext = context.useTableContext(),
41
+ getColgroupProps = _useTableContext.getColgroupProps,
42
+ leafColumns = _useTableContext.leafColumns;
43
+
44
+ return /*#__PURE__*/React__default["default"].createElement("colgroup", null, leafColumns.map(function (col, idx) {
45
+ return /*#__PURE__*/React__default["default"].createElement("col", Object.assign({
46
+ key: idx,
47
+ className: prefixCls + "-col"
48
+ }, getColgroupProps(col, idx)));
49
+ }));
50
+ });
51
+
52
+ if (env.__DEV__) {
53
+ ColGroupContent.displayName = 'ColGroupContent';
54
+ }
55
+
56
+ exports.ColGroupContent = ColGroupContent;
package/lib/cjs/Table.js CHANGED
@@ -66,7 +66,13 @@ 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
+
69
74
 
75
+ var DOUBLE_TABLE_SCENE = ['maxHeight', 'sticky', 'stickyTop', 'setting', 'virtual'];
70
76
  var STANDARD_PRESET = {
71
77
  striped: true,
72
78
  bordered: true,
@@ -85,7 +91,6 @@ var DEFAULT_PAGINATION = {
85
91
  */
86
92
 
87
93
  var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
88
- // ************************ 预置标准模式 ************************ //
89
94
  var _a$prefixCls = _a.prefixCls,
90
95
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
91
96
  _a$standard = _a.standard,
@@ -108,8 +113,13 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
108
113
  extra = _a.extra,
109
114
  _a$data = _a.data,
110
115
  data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
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"]);
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; // ************************ 预置标准模式 ************************ //
113
123
 
114
124
  var tableProps = reactUtils.withDefaultProps(rest, standard ? STANDARD_PRESET : undefined);
115
125
 
@@ -321,6 +331,7 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
321
331
  data: mergedData,
322
332
  fieldKey: fieldKey,
323
333
  virtual: virtual,
334
+ needDoubleTable: needDoubleTable,
324
335
  extra: Object.assign({
325
336
  header: setting ? /*#__PURE__*/React__default["default"].createElement(TableSettingMenu.TableSettingMenu, {
326
337
  prefixCls: prefixCls + "-setting",
@@ -27,12 +27,14 @@ 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
-
32
30
  var TableRow = require('./TableRow.js');
33
31
 
34
32
  var context = require('./context.js');
35
33
 
34
+ var ColGroupContent = require('./ColGroupContent.js');
35
+
36
+ var TbodyContent = require('./TbodyContent.js');
37
+
36
38
  function _interopDefaultLegacy(e) {
37
39
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
38
40
  'default': e
@@ -54,10 +56,8 @@ var TableBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
54
56
 
55
57
  var _useTableContext = context.useTableContext(),
56
58
  columns = _useTableContext.columns,
57
- leafColumns = _useTableContext.leafColumns,
58
59
  isExpandTreeRows = _useTableContext.isExpandTreeRows,
59
60
  transitionData = _useTableContext.transitionData,
60
- getColgroupProps = _useTableContext.getColgroupProps,
61
61
  bodyTableRef = _useTableContext.bodyTableRef,
62
62
  scrollBodyElementRef = _useTableContext.scrollBodyElementRef,
63
63
  onTableBodyScroll = _useTableContext.onTableBodyScroll,
@@ -65,10 +65,6 @@ 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,
72
68
  colWidths = _useTableContext.colWidths,
73
69
  virtual = _useTableContext.virtual,
74
70
  measureRowElementRef = _useTableContext.measureRowElementRef;
@@ -157,7 +153,7 @@ var TableBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
157
153
  rowData: row
158
154
  }, getRequiredProps(row.id))));
159
155
  }
160
- })) : renderEmptyContent(Object.assign({
156
+ })) : TbodyContent.renderEmptyContent(Object.assign({
161
157
  className: prefixCls + "-empty-content",
162
158
  colSpan: columns.length,
163
159
  emptyContent: emptyContent
@@ -181,65 +177,11 @@ var TableBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
181
177
  style: {
182
178
  width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
183
179
  }
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
- } : {})))));
180
+ }, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TbodyContent.TbodyContent, null)));
216
181
  });
217
182
 
218
183
  if (env.__DEV__) {
219
184
  TableBody.displayName = 'TableBody';
220
185
  }
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
- };
244
186
 
245
187
  exports.TableBody = TableBody;
@@ -17,19 +17,15 @@ Object.defineProperty(exports, '__esModule', {
17
17
 
18
18
  var React = require('react');
19
19
 
20
- var reactResizable = require('react-resizable');
21
-
22
20
  var classname = require('@hi-ui/classname');
23
21
 
24
22
  var env = require('@hi-ui/env');
25
23
 
26
- var typeAssertion = require('@hi-ui/type-assertion');
27
-
28
24
  var context = require('./context.js');
29
25
 
30
- var TableAdvancedFilter = require('./TableAdvancedFilter.js');
26
+ var ColGroupContent = require('./ColGroupContent.js');
31
27
 
32
- var useCheckState = require('@hi-ui/use-check-state');
28
+ var TheadContent = require('./TheadContent.js');
33
29
 
34
30
  function _interopDefaultLegacy(e) {
35
31
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
@@ -47,21 +43,10 @@ var TableHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
47
43
  className = _ref.className;
48
44
 
49
45
  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,
58
46
  onTableBodyScrollMock = _useTableContext.onTableBodyScrollMock,
59
47
  scrollHeaderElementRef = _useTableContext.scrollHeaderElementRef,
60
- leafColumns = _useTableContext.leafColumns,
61
- getTableHeaderProps = _useTableContext.getTableHeaderProps,
62
- showColMenu = _useTableContext.showColMenu;
48
+ getTableHeaderProps = _useTableContext.getTableHeaderProps;
63
49
 
64
- var activeColumnKeysAction = useCheckState.useCheckState();
65
50
  var cls = classname.cx(prefixCls, className);
66
51
  return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
67
52
  className: cls,
@@ -71,60 +56,9 @@ var TableHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
71
56
  width: '100%',
72
57
  position: 'relative'
73
58
  }
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", {
59
+ }, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TheadContent.TheadContent, {
80
60
  onWheel: onTableBodyScrollMock
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
- }))));
61
+ })));
128
62
  });
129
63
 
130
64
  if (env.__DEV__) {