@hi-ui/table 4.1.1 → 4.1.3-alpha.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.
@@ -8,7 +8,7 @@
8
8
  * LICENSE file in the root directory of this source tree.
9
9
  */
10
10
  import { __rest } from 'tslib';
11
- import React__default, { forwardRef } from 'react';
11
+ import React__default, { forwardRef, useMemo } from 'react';
12
12
  import { getPrefixCls, cx } from '@hi-ui/classname';
13
13
  import { __DEV__ } from '@hi-ui/env';
14
14
  import { useLocaleContext } from '@hi-ui/core';
@@ -22,6 +22,9 @@ import { TableProvider } from './context.js';
22
22
  import { uuid, checkNeedTotalOrEvg, getTotalOrEvgRowData } from './utils/index.js';
23
23
  import { useTable } from './use-table.js';
24
24
  import { useEmbedExpand } from './hooks/use-embed-expand.js';
25
+ import { TheadContent } from './TheadContent.js';
26
+ import { ColGroupContent } from './ColGroupContent.js';
27
+ import { TbodyContent } from './TbodyContent.js';
25
28
  var _role = 'table';
26
29
 
27
30
  var _prefix = getPrefixCls('table');
@@ -30,7 +33,6 @@ var EMBED_DATA_KEY = "TABLE_EMBED_DATA_KEY_" + uuid();
30
33
  var DEFAULT_COLUMNS = [];
31
34
  var DEFAULT_DATA = [];
32
35
  var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
33
- // ********************** 内嵌式面板 *********************** //
34
36
  var _a$prefixCls = _a.prefixCls,
35
37
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
36
38
  _a$role = _a.role,
@@ -58,7 +60,9 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
58
60
  fixedColumnTrigger = _a$fixedColumnTrigger === void 0 ? 'auto' : _a$fixedColumnTrigger,
59
61
  emptyContent = _a.emptyContent,
60
62
  virtual = _a.virtual,
61
- rest = __rest(_a, ["prefixCls", "role", "className", "columns", "data", "striped", "bordered", "rowExpandable", "defaultExpandedEmbedRowKeys", "expandedEmbedRowKeys", "onEmbedExpand", "expandedRender", "size", "extra", "onRow", "onHeaderRow", "stickyFooter", "stickyFooterBottom", "fixedColumnTrigger", "emptyContent", "virtual"]);
63
+ needDoubleTable = _a.needDoubleTable,
64
+ rest = __rest(_a, ["prefixCls", "role", "className", "columns", "data", "striped", "bordered", "rowExpandable", "defaultExpandedEmbedRowKeys", "expandedEmbedRowKeys", "onEmbedExpand", "expandedRender", "size", "extra", "onRow", "onHeaderRow", "stickyFooter", "stickyFooterBottom", "fixedColumnTrigger", "emptyContent", "virtual", "needDoubleTable"]); // ********************** 内嵌式面板 *********************** //
65
+
62
66
 
63
67
  var _useEmbedExpand = useEmbedExpand({
64
68
  defaultExpandedEmbedRowKeys: defaultExpandedEmbedRowKeys,
@@ -114,48 +118,70 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
114
118
 
115
119
  return columns;
116
120
  }, [embedExpandable, getEmbedPanelColumn, columns]);
117
- var i18n = useLocaleContext(); // 确保包含 avg 属性,且值为数字类型的字符串
121
+ var i18n = useLocaleContext();
118
122
 
119
- var avgRow = {
120
- id: 'avg',
121
- raw: {
122
- key: 'avg'
123
- }
124
- };
125
- var hasAvgColumn = false;
126
- columns.forEach(function (column, index) {
127
- if (index === 0) {
128
- // @ts-ignore
129
- avgRow.raw[column.dataKey] = i18n.get('table.average');
130
- }
123
+ var _useMemo = useMemo(function () {
124
+ // 确保包含 avg 属性,且值为数字类型的字符串
125
+ var avgRow = {
126
+ id: 'avg',
127
+ raw: {
128
+ key: 'avg'
129
+ }
130
+ };
131
+ var hasAvgColumn = false;
132
+ columns.forEach(function (column, index) {
133
+ if (index === 0) {
134
+ // @ts-ignore
135
+ avgRow.raw[column.dataKey] = i18n.get('table.average');
136
+ }
131
137
 
132
- if (checkNeedTotalOrEvg(data, column, 'avg')) {
133
- hasAvgColumn = true; // @ts-ignore
138
+ if (checkNeedTotalOrEvg(data, column, 'avg')) {
139
+ hasAvgColumn = true; // @ts-ignore
140
+ // @ts-ignore
134
141
 
135
- avgRow.raw[column.dataKey] = getTotalOrEvgRowData(data, column, true);
136
- }
137
- }); // 确保包含total属性,且值为数字类型的字符串
142
+ avgRow.raw[column.dataKey] = getTotalOrEvgRowData(data, column, true);
143
+ }
144
+ });
145
+ return {
146
+ avgRow: avgRow,
147
+ hasAvgColumn: hasAvgColumn
148
+ };
149
+ }, [columns, data, i18n]),
150
+ avgRow = _useMemo.avgRow,
151
+ hasAvgColumn = _useMemo.hasAvgColumn;
138
152
 
139
- var sumRow = {
140
- id: 'sum',
141
- raw: {
142
- key: 'sum'
143
- }
144
- };
145
- var hasSumColumn = false;
146
- columns.forEach(function (column, index) {
147
- if (index === 0) {
148
- // @ts-ignore
149
- sumRow.raw[column.dataKey] = i18n.get('table.total');
150
- }
153
+ var _useMemo2 = useMemo(function () {
154
+ // 确保包含total属性,且值为数字类型的字符串
155
+ var sumRow = {
156
+ id: 'sum',
157
+ raw: {
158
+ key: 'sum'
159
+ }
160
+ };
161
+ var hasSumColumn = false;
162
+ columns.forEach(function (column, index) {
163
+ if (index === 0) {
164
+ // @ts-ignore
165
+ sumRow.raw[column.dataKey] = i18n.get('table.total');
166
+ }
151
167
 
152
- if (checkNeedTotalOrEvg(data, column, 'total')) {
153
- hasSumColumn = true; // 获取当前数据最大小数点个数,并设置最后总和值小数点
154
- // @ts-ignore
168
+ if (checkNeedTotalOrEvg(data, column, 'total')) {
169
+ hasSumColumn = true; // 获取当前数据最大小数点个数,并设置最后总和值小数点
170
+ // @ts-ignore
171
+ // 获取当前数据最大小数点个数,并设置最后总和值小数点
172
+ // @ts-ignore
173
+
174
+ sumRow.raw[column.dataKey] = getTotalOrEvgRowData(data, column, false);
175
+ }
176
+ });
177
+ return {
178
+ sumRow: sumRow,
179
+ hasSumColumn: hasSumColumn
180
+ };
181
+ }, [columns, data, i18n]),
182
+ sumRow = _useMemo2.sumRow,
183
+ hasSumColumn = _useMemo2.hasSumColumn;
155
184
 
156
- sumRow.raw[column.dataKey] = getTotalOrEvgRowData(data, column, false);
157
- }
158
- });
159
185
  var providedValue = useTable(Object.assign(Object.assign({}, rest), {
160
186
  columns: mergedColumns,
161
187
  data: data,
@@ -168,11 +194,67 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
168
194
  leftFixedColumnsWidth = providedValue.leftFixedColumnsWidth,
169
195
  rightFixedColumnsWidth = providedValue.rightFixedColumnsWidth,
170
196
  scrollSize = providedValue.scrollSize,
171
- getTableHeaderProps = providedValue.getTableHeaderProps;
197
+ getTableHeaderProps = providedValue.getTableHeaderProps,
198
+ scrollBodyElementRef = providedValue.scrollBodyElementRef,
199
+ onTableBodyScroll = providedValue.onTableBodyScroll,
200
+ canScroll = providedValue.canScroll,
201
+ bodyTableRef = providedValue.bodyTableRef,
202
+ scrollWidth = providedValue.scrollWidth;
172
203
  var hasBorder = borderedProp !== null && borderedProp !== void 0 ? borderedProp : bordered;
173
204
  var extraHeader = extra && extra.header;
174
205
  var extraFooter = extra && extra.footer;
175
206
  var alwaysFixedColumn = fixedColumnTrigger === 'always';
207
+
208
+ var renderTable = function renderTable() {
209
+ return needDoubleTable ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", Object.assign({}, getTableHeaderProps()), /*#__PURE__*/React__default.createElement(TableHeader, null), extraHeader ? /*#__PURE__*/React__default.createElement("div", {
210
+ style: {
211
+ position: 'absolute',
212
+ right: 0,
213
+ zIndex: 11,
214
+ bottom: 0,
215
+ top: 0
216
+ }
217
+ }, extraHeader) : null), /*#__PURE__*/React__default.createElement(TableBody, {
218
+ emptyContent: emptyContent
219
+ })) : /*#__PURE__*/React__default.createElement("div", {
220
+ ref: scrollBodyElementRef,
221
+ className: prefixCls + "-content",
222
+ onScroll: onTableBodyScroll,
223
+ style: {
224
+ // 表格宽度大于div宽度才出现横向滚动条
225
+ overflowX: canScroll ? 'scroll' : undefined
226
+ }
227
+ }, /*#__PURE__*/React__default.createElement("table", {
228
+ ref: bodyTableRef,
229
+ style: {
230
+ width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
231
+ }
232
+ }, /*#__PURE__*/React__default.createElement(ColGroupContent, null), /*#__PURE__*/React__default.createElement(TheadContent, null), /*#__PURE__*/React__default.createElement(TbodyContent, {
233
+ emptyContent: emptyContent
234
+ })));
235
+ };
236
+
237
+ var renderFreezeShadow = function renderFreezeShadow() {
238
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? /*#__PURE__*/React__default.createElement("div", {
239
+ className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--left",
240
+ style: {
241
+ width: leftFixedColumnsWidth + 'px'
242
+ }
243
+ }) : null, (alwaysFixedColumn || scrollSize.scrollRight > 0) && rightFrozenColKeys.length > 0 ? /*#__PURE__*/React__default.createElement("div", {
244
+ className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--right",
245
+ style: {
246
+ width: rightFixedColumnsWidth + 'px'
247
+ }
248
+ }) : null);
249
+ };
250
+
251
+ var tableFooter = /*#__PURE__*/React__default.createElement("div", {
252
+ className: prefixCls + "-footer",
253
+ style: stickyFooter ? {
254
+ position: 'sticky',
255
+ bottom: stickyFooterBottom
256
+ } : undefined
257
+ }, extraFooter);
176
258
  var cls = cx(prefixCls, className, hasBorder && prefixCls + "--bordered", striped && prefixCls + "--striped", size && prefixCls + "--size-" + size, virtual && prefixCls + "--virtual");
177
259
  return /*#__PURE__*/React__default.createElement("div", Object.assign({
178
260
  ref: ref,
@@ -196,37 +278,7 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
196
278
  hasSumColumn: hasSumColumn,
197
279
  virtual: virtual
198
280
  })
199
- }, /*#__PURE__*/React__default.createElement("div", Object.assign({}, getTableHeaderProps()), /*#__PURE__*/React__default.createElement(TableHeader, {
200
- prefixCls: prefixCls + "-header"
201
- }), extraHeader ? /*#__PURE__*/React__default.createElement("div", {
202
- style: {
203
- position: 'absolute',
204
- right: 0,
205
- zIndex: 11,
206
- bottom: 0,
207
- top: 0
208
- }
209
- }, extraHeader) : null), /*#__PURE__*/React__default.createElement(TableBody, {
210
- prefixCls: prefixCls,
211
- emptyContent: emptyContent
212
- })), (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? /*#__PURE__*/React__default.createElement("div", {
213
- className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--left",
214
- style: {
215
- width: leftFixedColumnsWidth + 'px'
216
- }
217
- }) : null, (alwaysFixedColumn || scrollSize.scrollRight > 0) && rightFrozenColKeys.length > 0 ? /*#__PURE__*/React__default.createElement("div", {
218
- className: prefixCls + "-freeze-shadow " + prefixCls + "-freeze-shadow--right",
219
- style: {
220
- width: rightFixedColumnsWidth + 'px'
221
- }
222
- }) : null), /*#__PURE__*/React__default.createElement("div", {
223
- className: prefixCls + "-footer",
224
- style: stickyFooter ? {
225
- position: 'sticky',
226
- bottom: stickyFooterBottom // boxShadow: '0 5px 15px 0 rgba(0, 0, 0, 0.1)'
227
-
228
- } : undefined
229
- }, extraFooter));
281
+ }, renderTable()), renderFreezeShadow()), tableFooter);
230
282
  });
231
283
 
232
284
  if (__DEV__) {
@@ -0,0 +1,37 @@
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
+ import React__default, { forwardRef } from 'react';
11
+ import { getPrefixCls } from '@hi-ui/classname';
12
+ import { __DEV__ } from '@hi-ui/env';
13
+ import { useTableContext } from './context.js';
14
+
15
+ var _prefix = getPrefixCls('table-colgroup');
16
+
17
+ var ColGroupContent = /*#__PURE__*/forwardRef(function (_ref, ref) {
18
+ var _ref$prefixCls = _ref.prefixCls,
19
+ prefixCls = _ref$prefixCls === void 0 ? _prefix : _ref$prefixCls;
20
+
21
+ var _useTableContext = useTableContext(),
22
+ getColgroupProps = _useTableContext.getColgroupProps,
23
+ leafColumns = _useTableContext.leafColumns;
24
+
25
+ return /*#__PURE__*/React__default.createElement("colgroup", null, leafColumns.map(function (col, idx) {
26
+ return /*#__PURE__*/React__default.createElement("col", Object.assign({
27
+ key: idx,
28
+ className: prefixCls + "-col"
29
+ }, getColgroupProps(col, idx)));
30
+ }));
31
+ });
32
+
33
+ if (__DEV__) {
34
+ ColGroupContent.displayName = 'ColGroupContent';
35
+ }
36
+
37
+ export { ColGroupContent };
package/lib/esm/Table.js CHANGED
@@ -27,7 +27,13 @@ import { uuid } from './utils/index.js';
27
27
  import { useColSet } from './hooks/use-col-set.js';
28
28
 
29
29
  var _prefix = getPrefixCls('table');
30
+ /**
31
+ * 需要使用双表格的场景对应的 API
32
+ * 这些场景下的功能无法通过单表格实现,故而设计成双表格,即表头和表体分别用一个 table 实现
33
+ */
34
+
30
35
 
36
+ var DOUBLE_TABLE_SCENE = ['maxHeight', 'sticky', 'stickyTop', 'setting', 'virtual'];
31
37
  var STANDARD_PRESET = {
32
38
  striped: true,
33
39
  bordered: true,
@@ -46,7 +52,6 @@ var DEFAULT_PAGINATION = {
46
52
  */
47
53
 
48
54
  var Table = /*#__PURE__*/forwardRef(function (_a, ref) {
49
- // ************************ 预置标准模式 ************************ //
50
55
  var _a$prefixCls = _a.prefixCls,
51
56
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
52
57
  _a$standard = _a.standard,
@@ -69,8 +74,13 @@ var Table = /*#__PURE__*/forwardRef(function (_a, ref) {
69
74
  extra = _a.extra,
70
75
  _a$data = _a.data,
71
76
  data = _a$data === void 0 ? DEFAULT_DATA : _a$data,
72
- virtual = _a.virtual,
73
- rest = __rest(_a, ["prefixCls", "standard", "loading", "dataSource", "pagination", "uniqueId", "columns", "hiddenColKeys", "onHiddenColKeysChange", "sortedColKeys", "onSortedColKeysChange", "checkDisabledColKeys", "onSetColKeysChange", "rowSelection", "fieldKey", "extra", "data", "virtual"]);
77
+ rest = __rest(_a, ["prefixCls", "standard", "loading", "dataSource", "pagination", "uniqueId", "columns", "hiddenColKeys", "onHiddenColKeysChange", "sortedColKeys", "onSortedColKeysChange", "checkDisabledColKeys", "onSetColKeysChange", "rowSelection", "fieldKey", "extra", "data"]); // 是否需要双表格
78
+
79
+
80
+ var needDoubleTable = DOUBLE_TABLE_SCENE.some(function (prop) {
81
+ return !!rest[prop];
82
+ });
83
+ var virtual = rest.virtual; // ************************ 预置标准模式 ************************ //
74
84
 
75
85
  var tableProps = withDefaultProps(rest, standard ? STANDARD_PRESET : undefined);
76
86
 
@@ -282,6 +292,7 @@ var Table = /*#__PURE__*/forwardRef(function (_a, ref) {
282
292
  data: mergedData,
283
293
  fieldKey: fieldKey,
284
294
  virtual: virtual,
295
+ needDoubleTable: needDoubleTable,
285
296
  extra: Object.assign({
286
297
  header: setting ? /*#__PURE__*/React__default.createElement(TableSettingMenu, {
287
298
  prefixCls: prefixCls + "-setting",
@@ -13,9 +13,10 @@ import { getPrefixCls, cx } from '@hi-ui/classname';
13
13
  import { __DEV__ } from '@hi-ui/env';
14
14
  import { useLatestCallback } from '@hi-ui/use-latest';
15
15
  import { isArrayNonEmpty } from '@hi-ui/type-assertion';
16
- import { EmptyState } from '@hi-ui/empty-state';
17
16
  import { TableRow } from './TableRow.js';
18
17
  import { useTableContext } from './context.js';
18
+ import { ColGroupContent } from './ColGroupContent.js';
19
+ import { renderEmptyContent, TbodyContent } from './TbodyContent.js';
19
20
  var _role = 'table';
20
21
 
21
22
  var _prefix = getPrefixCls(_role);
@@ -29,11 +30,8 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
29
30
 
30
31
  var _useTableContext = useTableContext(),
31
32
  columns = _useTableContext.columns,
32
- leafColumns = _useTableContext.leafColumns,
33
- setMeasureRowElement = _useTableContext.setMeasureRowElement,
34
33
  isExpandTreeRows = _useTableContext.isExpandTreeRows,
35
34
  transitionData = _useTableContext.transitionData,
36
- getColgroupProps = _useTableContext.getColgroupProps,
37
35
  bodyTableRef = _useTableContext.bodyTableRef,
38
36
  scrollBodyElementRef = _useTableContext.scrollBodyElementRef,
39
37
  onTableBodyScroll = _useTableContext.onTableBodyScroll,
@@ -41,12 +39,9 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
41
39
  maxHeight = _useTableContext.maxHeight,
42
40
  canScroll = _useTableContext.canScroll,
43
41
  scrollWidth = _useTableContext.scrollWidth,
44
- hasAvgColumn = _useTableContext.hasAvgColumn,
45
- avgRow = _useTableContext.avgRow,
46
- hasSumColumn = _useTableContext.hasSumColumn,
47
- sumRow = _useTableContext.sumRow,
48
42
  colWidths = _useTableContext.colWidths,
49
- virtual = _useTableContext.virtual;
43
+ virtual = _useTableContext.virtual,
44
+ measureRowElementRef = _useTableContext.measureRowElementRef;
50
45
 
51
46
  var cls = cx(prefixCls + "-body");
52
47
  var getRequiredProps = useLatestCallback(function (id) {
@@ -63,10 +58,8 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
63
58
 
64
59
  var _useState = useState(0),
65
60
  scrollLeft = _useState[0],
66
- setScrollLeft = _useState[1]; // 是否使用虚拟滚动
61
+ setScrollLeft = _useState[1];
67
62
 
68
-
69
- var showVirtual = virtual && isArrayNonEmpty(transitionData);
70
63
  var rowWidth = useMemo(function () {
71
64
  var tmpWidth = 0;
72
65
  colWidths.forEach(function (width) {
@@ -81,7 +74,7 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
81
74
  onTableBodyScroll(evt);
82
75
  }, [scrollBodyElementRef, onTableBodyScroll]);
83
76
 
84
- if (showVirtual) {
77
+ if (virtual) {
85
78
  // TODO: avg和summay row的逻辑
86
79
  var realHeight = (_a = scrollBodyElementRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height;
87
80
  var vMaxHeight = maxHeight ? !isNaN(Number(String(maxHeight).replace(/px/, ''))) ? Number(maxHeight) : realHeight : 300;
@@ -92,20 +85,11 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
92
85
  onWheel: onTableBodyScrollMock,
93
86
  style: {
94
87
  maxHeight: maxHeight !== undefined ? maxHeight : undefined,
95
- // // maxHeight 小于 table 实际高度才出现纵向滚动条
96
- // overflowY:
97
- // maxHeight !== undefined &&
98
- // bodyTableRef.current &&
99
- // bodyTableRef.current.clientHeight > maxHeight
100
- // ? 'scroll'
101
- // : undefined,
102
88
  // 表格宽度大于div宽度才出现横向滚动条
103
89
  overflowX: canScroll ? 'scroll' : undefined
104
90
  }
105
91
  }, /*#__PURE__*/React__default.createElement("div", {
106
- ref: function ref(domElement) {
107
- setMeasureRowElement(domElement);
108
- },
92
+ ref: measureRowElementRef,
109
93
  style: {
110
94
  height: 1,
111
95
  background: 'transparent'
@@ -117,7 +101,7 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
117
101
  background: 'transparent',
118
102
  width: rowWidth
119
103
  }
120
- }), /*#__PURE__*/React__default.createElement("div", {
104
+ }), isArrayNonEmpty(transitionData) ? /*#__PURE__*/React__default.createElement("div", {
121
105
  style: {
122
106
  width: '100%',
123
107
  position: 'sticky',
@@ -143,7 +127,13 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
143
127
  rowData: row
144
128
  }, getRequiredProps(row.id))));
145
129
  }
146
- })));
130
+ })) : renderEmptyContent(Object.assign({
131
+ className: prefixCls + "-empty-content",
132
+ colSpan: columns.length,
133
+ emptyContent: emptyContent
134
+ }, scrollBodyElementRef.current ? {
135
+ scrollBodyWidth: window.getComputedStyle(scrollBodyElementRef.current).getPropertyValue('width')
136
+ } : {})));
147
137
  } // 外层增加 div 作为滚动容器
148
138
 
149
139
 
@@ -153,13 +143,6 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
153
143
  onScroll: onTableBodyScroll,
154
144
  style: {
155
145
  maxHeight: maxHeight !== undefined ? maxHeight : undefined,
156
- // // maxHeight 小于 table 实际高度才出现纵向滚动条
157
- // overflowY:
158
- // maxHeight !== undefined &&
159
- // bodyTableRef.current &&
160
- // bodyTableRef.current.clientHeight > maxHeight
161
- // ? 'scroll'
162
- // : undefined,
163
146
  // 表格宽度大于div宽度才出现横向滚动条
164
147
  overflowX: canScroll ? 'scroll' : undefined
165
148
  }
@@ -168,69 +151,11 @@ var TableBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
168
151
  style: {
169
152
  width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
170
153
  }
171
- }, /*#__PURE__*/React__default.createElement("colgroup", null, leafColumns.map(function (col, idx) {
172
- return /*#__PURE__*/React__default.createElement("col", Object.assign({
173
- key: idx,
174
- className: prefixCls + "-col"
175
- }, getColgroupProps(col, idx)));
176
- })), /*#__PURE__*/React__default.createElement("tbody", null, isArrayNonEmpty(transitionData) ? /*#__PURE__*/React__default.createElement(React__default.Fragment, null, transitionData.map(function (row, index) {
177
- return /*#__PURE__*/React__default.createElement(TableRow, Object.assign({
178
- ref: function ref(dom) {
179
- if (index === 0) {
180
- setMeasureRowElement(dom);
181
- }
182
- },
183
- // key={depth + index}
184
- key: row.id,
185
- // @ts-ignore
186
- rowIndex: index,
187
- rowData: row
188
- }, getRequiredProps(row.id)));
189
- }), hasSumColumn ? /*#__PURE__*/React__default.createElement(TableRow, {
190
- key: sumRow.id,
191
- rowIndex: transitionData.length,
192
- rowData: sumRow,
193
- isSumRow: true
194
- }) : null, hasAvgColumn ? /*#__PURE__*/React__default.createElement(TableRow, {
195
- key: avgRow.id,
196
- rowIndex: transitionData.length + 1,
197
- rowData: avgRow,
198
- isAvgRow: true
199
- }) : null) : // 空状态,colSpan 占满表格整行
200
- renderEmptyContent(Object.assign({
201
- className: prefixCls + "-empty-content",
202
- colSpan: columns.length,
203
- emptyContent: emptyContent
204
- }, scrollBodyElementRef.current ? {
205
- scrollBodyWidth: window.getComputedStyle(scrollBodyElementRef.current).getPropertyValue('width')
206
- } : {})))));
154
+ }, /*#__PURE__*/React__default.createElement(ColGroupContent, null), /*#__PURE__*/React__default.createElement(TbodyContent, null)));
207
155
  });
208
156
 
209
157
  if (__DEV__) {
210
158
  TableBody.displayName = 'TableBody';
211
159
  }
212
- /**
213
- * 负责空状态渲染
214
- */
215
-
216
-
217
- var renderEmptyContent = function renderEmptyContent(_ref2) {
218
- var className = _ref2.className,
219
- colSpan = _ref2.colSpan,
220
- emptyContent = _ref2.emptyContent,
221
- scrollBodyWidth = _ref2.scrollBodyWidth;
222
- return /*#__PURE__*/React__default.createElement("tr", {
223
- className: className
224
- }, /*#__PURE__*/React__default.createElement("td", {
225
- colSpan: colSpan
226
- }, /*#__PURE__*/React__default.createElement("div", {
227
- style: {
228
- position: 'sticky',
229
- left: 0,
230
- width: scrollBodyWidth !== null && scrollBodyWidth !== void 0 ? scrollBodyWidth : '100%',
231
- overflow: 'hidden'
232
- }
233
- }, emptyContent || /*#__PURE__*/React__default.createElement(EmptyState, null))));
234
- };
235
160
 
236
161
  export { TableBody };
@@ -8,13 +8,11 @@
8
8
  * LICENSE file in the root directory of this source tree.
9
9
  */
10
10
  import React__default, { forwardRef } from 'react';
11
- import { Resizable } from 'react-resizable';
12
11
  import { getPrefixCls, cx } from '@hi-ui/classname';
13
12
  import { __DEV__ } from '@hi-ui/env';
14
- import { isFunction } from '@hi-ui/type-assertion';
15
13
  import { useTableContext } from './context.js';
16
- import { renderFilter } from './TableAdvancedFilter.js';
17
- import { useCheckState } from '@hi-ui/use-check-state';
14
+ import { ColGroupContent } from './ColGroupContent.js';
15
+ import { TheadContent } from './TheadContent.js';
18
16
 
19
17
  var _prefix = getPrefixCls('table-header');
20
18
 
@@ -24,21 +22,10 @@ var TableHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
24
22
  className = _ref.className;
25
23
 
26
24
  var _useTableContext = useTableContext(),
27
- groupedColumns = _useTableContext.groupedColumns,
28
- resizable = _useTableContext.resizable,
29
- colWidths = _useTableContext.colWidths,
30
- isHoveredHighlightCol = _useTableContext.isHoveredHighlightCol,
31
- isHighlightedCol = _useTableContext.isHighlightedCol,
32
- getColgroupProps = _useTableContext.getColgroupProps,
33
- onColumnResizable = _useTableContext.onColumnResizable,
34
- getStickyColProps = _useTableContext.getStickyColProps,
35
25
  onTableBodyScrollMock = _useTableContext.onTableBodyScrollMock,
36
26
  scrollHeaderElementRef = _useTableContext.scrollHeaderElementRef,
37
- leafColumns = _useTableContext.leafColumns,
38
- getTableHeaderProps = _useTableContext.getTableHeaderProps,
39
- showColMenu = _useTableContext.showColMenu;
27
+ getTableHeaderProps = _useTableContext.getTableHeaderProps;
40
28
 
41
- var activeColumnKeysAction = useCheckState();
42
29
  var cls = cx(prefixCls, className);
43
30
  return /*#__PURE__*/React__default.createElement("div", Object.assign({
44
31
  className: cls,
@@ -48,60 +35,9 @@ var TableHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
48
35
  width: '100%',
49
36
  position: 'relative'
50
37
  }
51
- }, /*#__PURE__*/React__default.createElement("colgroup", null, leafColumns.map(function (col, idx) {
52
- return /*#__PURE__*/React__default.createElement("col", Object.assign({
53
- key: idx,
54
- className: prefixCls + "-col"
55
- }, getColgroupProps(col, idx)));
56
- })), /*#__PURE__*/React__default.createElement("thead", {
38
+ }, /*#__PURE__*/React__default.createElement(ColGroupContent, null), /*#__PURE__*/React__default.createElement(TheadContent, {
57
39
  onWheel: onTableBodyScrollMock
58
- }, groupedColumns.map(function (cols, colsIndex) {
59
- return /*#__PURE__*/React__default.createElement("tr", {
60
- key: colsIndex
61
- }, cols.map(function (col, colIndex) {
62
- var _ref2 = col || {},
63
- dataKey = _ref2.dataKey,
64
- title = _ref2.title,
65
- raw = _ref2.raw;
66
-
67
- var titleContent = isFunction(title) ? title(col) : title;
68
- var cell = /*#__PURE__*/React__default.createElement("th", Object.assign({
69
- key: dataKey
70
- }, getStickyColProps(col), {
71
- 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"),
72
- // @ts-ignore
73
- colSpan: col.colSpan,
74
- // @ts-ignore
75
- rowSpan: col.rowSpan
76
- }), titleContent, renderFilter({
77
- prefixCls: prefixCls + "-filter",
78
- columnKey: dataKey,
79
- showColMenu: showColMenu,
80
- column: col,
81
- onOpen: function onOpen() {
82
- return activeColumnKeysAction.add(dataKey);
83
- },
84
- onClose: function onClose() {
85
- return activeColumnKeysAction.remove(dataKey);
86
- }
87
- }));
88
- return resizable && colIndex !== colWidths.length - 1 ? /*#__PURE__*/React__default.createElement(Resizable, {
89
- key: colIndex,
90
- className: prefixCls + "__resizable",
91
- draggableOpts: {
92
- enableUserSelectHack: false
93
- },
94
- handle: /*#__PURE__*/React__default.createElement("span", {
95
- className: prefixCls + "__resizable-handle"
96
- }),
97
- height: 0,
98
- width: colWidths[colIndex],
99
- onResize: function onResize(evt, options) {
100
- onColumnResizable(evt, options, colIndex);
101
- }
102
- }, cell) : cell;
103
- }));
104
- }))));
40
+ })));
105
41
  });
106
42
 
107
43
  if (__DEV__) {