@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 +15 -0
- package/lib/cjs/BaseTable.js +127 -71
- package/lib/cjs/ColGroupContent.js +56 -0
- package/lib/cjs/Table.js +14 -3
- package/lib/cjs/TableBody.js +6 -64
- package/lib/cjs/TableHeader.js +5 -71
- package/lib/cjs/TbodyContent.js +129 -0
- package/lib/cjs/TheadContent.js +120 -0
- package/lib/cjs/hooks/use-col-width.js +27 -22
- package/lib/cjs/styles/index.scss.js +1 -1
- package/lib/cjs/use-table.js +25 -11
- package/lib/esm/BaseTable.js +124 -71
- package/lib/esm/ColGroupContent.js +37 -0
- package/lib/esm/Table.js +14 -3
- package/lib/esm/TableBody.js +3 -62
- package/lib/esm/TableHeader.js +5 -69
- package/lib/esm/TbodyContent.js +105 -0
- package/lib/esm/TheadContent.js +96 -0
- package/lib/esm/hooks/use-col-width.js +27 -22
- package/lib/esm/styles/index.scss.js +1 -1
- package/lib/esm/use-table.js +25 -11
- package/lib/types/BaseTable.d.ts +4 -0
- package/lib/types/ColGroupContent.d.ts +8 -0
- package/lib/types/TbodyContent.d.ts +18 -0
- package/lib/types/TheadContent.d.ts +9 -0
- package/lib/types/context.d.ts +12 -8
- package/lib/types/hooks/use-col-width.d.ts +1 -1
- package/lib/types/use-table.d.ts +11 -5
- package/package.json +2 -2
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
|
package/lib/cjs/BaseTable.js
CHANGED
|
@@ -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
|
-
|
|
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();
|
|
150
|
-
|
|
151
|
-
var
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
165
|
-
|
|
173
|
+
if (index.checkNeedTotalOrEvg(data, column, 'avg')) {
|
|
174
|
+
hasAvgColumn = true; // @ts-ignore
|
|
175
|
+
// @ts-ignore
|
|
166
176
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
},
|
|
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
|
-
|
|
112
|
-
|
|
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",
|
package/lib/cjs/TableBody.js
CHANGED
|
@@ -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(
|
|
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;
|
package/lib/cjs/TableHeader.js
CHANGED
|
@@ -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
|
|
26
|
+
var ColGroupContent = require('./ColGroupContent.js');
|
|
31
27
|
|
|
32
|
-
var
|
|
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
|
-
|
|
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(
|
|
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
|
-
}
|
|
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__) {
|