@hi-ui/table 4.12.0 → 4.12.2
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 +17 -0
- package/lib/cjs/BaseTable.js +36 -18
- package/lib/cjs/Table.js +6 -0
- package/lib/cjs/hooks/use-col-width.js +8 -9
- package/lib/cjs/utils/index.js +16 -0
- package/lib/esm/BaseTable.js +37 -19
- package/lib/esm/Table.js +6 -0
- package/lib/esm/hooks/use-col-width.js +8 -9
- package/lib/esm/utils/index.js +16 -1
- package/lib/types/utils/index.d.ts +1 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @hi-ui/table
|
|
2
2
|
|
|
3
|
+
## 4.12.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#3382](https://github.com/XiaoMi/hiui/pull/3382) [`144de50f5`](https://github.com/XiaoMi/hiui/commit/144de50f528c834942d1d04467f7234c1710f758) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 统计行加上表头分组情况的处理 (#3381)
|
|
8
|
+
|
|
9
|
+
- Updated dependencies [[`d5b4363`](https://github.com/XiaoMi/hiui/commit/d5b4363888ebc0869a70482de2eb114326ee4d3c)]:
|
|
10
|
+
- @hi-ui/core@4.0.10
|
|
11
|
+
|
|
12
|
+
## 4.12.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- [#3328](https://github.com/XiaoMi/hiui/pull/3328) [`6e274310f`](https://github.com/XiaoMi/hiui/commit/6e274310f9545a82090ffa586cf31a7c79b305ba) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 优化列宽设置逻辑,确保在列变化时准确计算并更新列宽 (#3327)
|
|
17
|
+
|
|
18
|
+
- [#3330](https://github.com/XiaoMi/hiui/pull/3330) [`df35306`](https://github.com/XiaoMi/hiui/commit/df353062b0d0b0cf3bd4e62280df20ba7e7a4774) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(table): 修复设置 scrollbar 后冻结列失效问题 (#3329)
|
|
19
|
+
|
|
3
20
|
## 4.12.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
package/lib/cjs/BaseTable.js
CHANGED
|
@@ -132,6 +132,8 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
132
132
|
}, [embedExpandable, getEmbedPanelColumn, columns]);
|
|
133
133
|
var i18n = core.useLocaleContext();
|
|
134
134
|
var _useMemo = React.useMemo(function () {
|
|
135
|
+
var _a;
|
|
136
|
+
// 确保包含 avg 属性,且值为数字类型的字符串
|
|
135
137
|
// 确保包含 avg 属性,且值为数字类型的字符串
|
|
136
138
|
var avgRow = {
|
|
137
139
|
id: 'avg',
|
|
@@ -140,9 +142,15 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
140
142
|
}
|
|
141
143
|
};
|
|
142
144
|
var hasAvgColumn = false;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
var flattenedColumns = index.flattenColumns(columns);
|
|
146
|
+
// 找第一个非选择框列
|
|
147
|
+
// 找第一个非选择框列
|
|
148
|
+
var firstDataColumnIndex = 0;
|
|
149
|
+
if (((_a = columns[0]) === null || _a === void 0 ? void 0 : _a.dataKey) === Table.SELECTION_DATA_KEY) {
|
|
150
|
+
firstDataColumnIndex = 1;
|
|
151
|
+
}
|
|
152
|
+
flattenedColumns.forEach(function (column, index$1) {
|
|
153
|
+
if (index$1 === firstDataColumnIndex) {
|
|
146
154
|
// @ts-ignore
|
|
147
155
|
avgRow.raw[column.dataKey] = i18n.get('table.average');
|
|
148
156
|
}
|
|
@@ -161,6 +169,8 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
161
169
|
avgRow = _useMemo.avgRow,
|
|
162
170
|
hasAvgColumn = _useMemo.hasAvgColumn;
|
|
163
171
|
var _useMemo2 = React.useMemo(function () {
|
|
172
|
+
var _a;
|
|
173
|
+
// 确保包含total属性,且值为数字类型的字符串
|
|
164
174
|
// 确保包含total属性,且值为数字类型的字符串
|
|
165
175
|
var sumRow = {
|
|
166
176
|
id: 'sum',
|
|
@@ -169,16 +179,19 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
169
179
|
}
|
|
170
180
|
};
|
|
171
181
|
var hasSumColumn = false;
|
|
172
|
-
|
|
173
|
-
|
|
182
|
+
var flattenedColumns = index.flattenColumns(columns);
|
|
183
|
+
var firstDataColumnIndex = 0;
|
|
184
|
+
if (((_a = columns[0]) === null || _a === void 0 ? void 0 : _a.dataKey) === Table.SELECTION_DATA_KEY) {
|
|
185
|
+
firstDataColumnIndex = 1;
|
|
186
|
+
}
|
|
187
|
+
flattenedColumns.forEach(function (column, index$1) {
|
|
188
|
+
if (index$1 === firstDataColumnIndex) {
|
|
174
189
|
// @ts-ignore
|
|
175
190
|
sumRow.raw[column.dataKey] = i18n.get('table.total');
|
|
176
191
|
}
|
|
177
192
|
if (index.checkNeedTotalOrEvg(data, column, 'total')) {
|
|
178
193
|
hasSumColumn = true;
|
|
179
|
-
// 获取当前数据最大小数点个数,并设置最后总和值小数点
|
|
180
194
|
// @ts-ignore
|
|
181
|
-
// 获取当前数据最大小数点个数,并设置最后总和值小数点
|
|
182
195
|
// @ts-ignore
|
|
183
196
|
sumRow.raw[column.dataKey] = index.getTotalOrEvgRowData(data, column, false);
|
|
184
197
|
}
|
|
@@ -217,22 +230,27 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
217
230
|
var extraFooter = extra && extra.footer;
|
|
218
231
|
var alwaysFixedColumn = fixedColumnTrigger === 'always';
|
|
219
232
|
var renderTable = function renderTable() {
|
|
220
|
-
var
|
|
221
|
-
ref: scrollBodyElementRef,
|
|
222
|
-
className: prefixCls + "-content",
|
|
223
|
-
onScroll: onTableBodyScroll,
|
|
224
|
-
style: {
|
|
225
|
-
// 表格宽度大于div宽度才出现横向滚动条
|
|
226
|
-
overflowX: canScroll ? 'scroll' : undefined
|
|
227
|
-
}
|
|
228
|
-
}, /*#__PURE__*/React__default["default"].createElement("table", {
|
|
233
|
+
var tableContent = /*#__PURE__*/React__default["default"].createElement("table", {
|
|
229
234
|
ref: bodyTableRef,
|
|
230
235
|
style: {
|
|
231
236
|
width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
|
|
232
237
|
}
|
|
233
238
|
}, /*#__PURE__*/React__default["default"].createElement(ColGroupContent.ColGroupContent, null), /*#__PURE__*/React__default["default"].createElement(TheadContent.TheadContent, null), /*#__PURE__*/React__default["default"].createElement(TbodyContent.TbodyContent, {
|
|
234
239
|
emptyContent: emptyContent
|
|
235
|
-
}))
|
|
240
|
+
}));
|
|
241
|
+
var singleTableContent = /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
|
242
|
+
className: prefixCls + "-content"
|
|
243
|
+
}, !scrollbar ? {
|
|
244
|
+
ref: scrollBodyElementRef,
|
|
245
|
+
onScroll: onTableBodyScroll,
|
|
246
|
+
style: {
|
|
247
|
+
// 表格宽度大于div宽度才出现横向滚动条
|
|
248
|
+
overflowX: canScroll ? 'scroll' : undefined
|
|
249
|
+
}
|
|
250
|
+
} : {}), !scrollbar ? tableContent : ( /*#__PURE__*/React__default["default"].createElement(Scrollbar__default["default"], Object.assign({
|
|
251
|
+
ref: scrollBodyElementRef,
|
|
252
|
+
onScroll: onTableBodyScroll
|
|
253
|
+
}, typeAssertion.isObject(scrollbar) ? scrollbar : null), tableContent)));
|
|
236
254
|
var doubleTableContent = /*#__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", {
|
|
237
255
|
style: {
|
|
238
256
|
position: 'absolute',
|
|
@@ -244,7 +262,7 @@ var BaseTable = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
244
262
|
}, extraHeader)) : null), /*#__PURE__*/React__default["default"].createElement(TableBody.TableBody, {
|
|
245
263
|
emptyContent: emptyContent
|
|
246
264
|
}));
|
|
247
|
-
return needDoubleTable ? doubleTableContent :
|
|
265
|
+
return needDoubleTable ? doubleTableContent : singleTableContent;
|
|
248
266
|
};
|
|
249
267
|
var renderFreezeShadow = function renderFreezeShadow() {
|
|
250
268
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? ( /*#__PURE__*/React__default["default"].createElement("div", {
|
package/lib/cjs/Table.js
CHANGED
|
@@ -206,6 +206,12 @@ var Table = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
206
206
|
var rowKey = getRowKeyField(rowItem);
|
|
207
207
|
var checked = isCheckedRowKey(rowKey);
|
|
208
208
|
var disabledCheckbox = checkRowIsDisabledCheckbox(rowItem);
|
|
209
|
+
if (rowItem.key === 'avg' || rowItem.key === 'sum') {
|
|
210
|
+
return {
|
|
211
|
+
node: null,
|
|
212
|
+
checked: false
|
|
213
|
+
};
|
|
214
|
+
}
|
|
209
215
|
return {
|
|
210
216
|
node: type === 'checkbox' ? ( /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
|
|
211
217
|
checked: checked,
|
|
@@ -35,6 +35,9 @@ var useColWidth = function useColWidth(_ref) {
|
|
|
35
35
|
}),
|
|
36
36
|
colWidths = _React$useState[0],
|
|
37
37
|
setColWidths = _React$useState[1];
|
|
38
|
+
/**
|
|
39
|
+
* 根据实际内容区(table 的第一行)渲染,再次精确收集并设置每列宽度
|
|
40
|
+
*/
|
|
38
41
|
var getWidths = React.useCallback(function (measureRowElement) {
|
|
39
42
|
if (measureRowElement && measureRowElement.childNodes) {
|
|
40
43
|
// 超出的宽度,即每列真实的宽度超出设置的宽度的总和
|
|
@@ -105,16 +108,12 @@ var useColWidth = function useColWidth(_ref) {
|
|
|
105
108
|
}
|
|
106
109
|
}, [getVirtualWidths, virtual]);
|
|
107
110
|
useUpdateEffect.useUpdateEffect(function () {
|
|
111
|
+
// 当列变化时,重新设置列宽
|
|
108
112
|
setColWidths(index.getGroupItemWidth(columns).colWidths);
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
// ? // 走更新逻辑
|
|
114
|
-
// getWidths(measureRowElementRef.current)
|
|
115
|
-
// : // 当列数变化时重新走初始化逻辑
|
|
116
|
-
// getGroupItemWidth(columns)
|
|
117
|
-
// })
|
|
113
|
+
// 重新设置列宽后,真实的宽度会发生变化,基于真实的宽度再次重新计算出合适的列宽
|
|
114
|
+
requestAnimationFrame(function () {
|
|
115
|
+
setColWidths(getWidths(measureRowElementRef.current));
|
|
116
|
+
});
|
|
118
117
|
}, [columns]);
|
|
119
118
|
/**
|
|
120
119
|
* 根据实际内容区(table 的第一行)渲染,再次精确收集并设置每列宽度
|
package/lib/cjs/utils/index.js
CHANGED
|
@@ -223,7 +223,23 @@ var getColumnByDefaultSortOrder = function getColumnByDefaultSortOrder(columns)
|
|
|
223
223
|
}
|
|
224
224
|
return {};
|
|
225
225
|
};
|
|
226
|
+
var flattenColumns = function flattenColumns(columns) {
|
|
227
|
+
var result = [];
|
|
228
|
+
var traverse = function traverse(cols) {
|
|
229
|
+
cols.forEach(function (col) {
|
|
230
|
+
var _a;
|
|
231
|
+
if ((_a = col.children) === null || _a === void 0 ? void 0 : _a.length) {
|
|
232
|
+
traverse(col.children);
|
|
233
|
+
} else {
|
|
234
|
+
result.push(col);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
traverse(columns);
|
|
239
|
+
return result;
|
|
240
|
+
};
|
|
226
241
|
exports.checkNeedTotalOrEvg = checkNeedTotalOrEvg;
|
|
242
|
+
exports.flattenColumns = flattenColumns;
|
|
227
243
|
exports.getColumnByDataKey = getColumnByDataKey;
|
|
228
244
|
exports.getColumnByDefaultSortOrder = getColumnByDefaultSortOrder;
|
|
229
245
|
exports.getGroupItemWidth = getGroupItemWidth;
|
package/lib/esm/BaseTable.js
CHANGED
|
@@ -20,7 +20,7 @@ import { TableBody } from './TableBody.js';
|
|
|
20
20
|
import { TableHeader } from './TableHeader.js';
|
|
21
21
|
import { defaultLoadingIcon } from './icons/index.js';
|
|
22
22
|
import { TableProvider } from './context.js';
|
|
23
|
-
import { uuid, checkNeedTotalOrEvg, getTotalOrEvgRowData } from './utils/index.js';
|
|
23
|
+
import { uuid, flattenColumns, checkNeedTotalOrEvg, getTotalOrEvgRowData } from './utils/index.js';
|
|
24
24
|
import { useTable } from './use-table.js';
|
|
25
25
|
import { useEmbedExpand } from './hooks/use-embed-expand.js';
|
|
26
26
|
import { TheadContent } from './TheadContent.js';
|
|
@@ -119,6 +119,8 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
119
119
|
}, [embedExpandable, getEmbedPanelColumn, columns]);
|
|
120
120
|
var i18n = useLocaleContext();
|
|
121
121
|
var _useMemo = useMemo(function () {
|
|
122
|
+
var _a;
|
|
123
|
+
// 确保包含 avg 属性,且值为数字类型的字符串
|
|
122
124
|
// 确保包含 avg 属性,且值为数字类型的字符串
|
|
123
125
|
var avgRow = {
|
|
124
126
|
id: 'avg',
|
|
@@ -127,9 +129,15 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
127
129
|
}
|
|
128
130
|
};
|
|
129
131
|
var hasAvgColumn = false;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
var flattenedColumns = flattenColumns(columns);
|
|
133
|
+
// 找第一个非选择框列
|
|
134
|
+
// 找第一个非选择框列
|
|
135
|
+
var firstDataColumnIndex = 0;
|
|
136
|
+
if (((_a = columns[0]) === null || _a === void 0 ? void 0 : _a.dataKey) === SELECTION_DATA_KEY) {
|
|
137
|
+
firstDataColumnIndex = 1;
|
|
138
|
+
}
|
|
139
|
+
flattenedColumns.forEach(function (column, index) {
|
|
140
|
+
if (index === firstDataColumnIndex) {
|
|
133
141
|
// @ts-ignore
|
|
134
142
|
avgRow.raw[column.dataKey] = i18n.get('table.average');
|
|
135
143
|
}
|
|
@@ -148,6 +156,8 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
148
156
|
avgRow = _useMemo.avgRow,
|
|
149
157
|
hasAvgColumn = _useMemo.hasAvgColumn;
|
|
150
158
|
var _useMemo2 = useMemo(function () {
|
|
159
|
+
var _a;
|
|
160
|
+
// 确保包含total属性,且值为数字类型的字符串
|
|
151
161
|
// 确保包含total属性,且值为数字类型的字符串
|
|
152
162
|
var sumRow = {
|
|
153
163
|
id: 'sum',
|
|
@@ -156,16 +166,19 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
156
166
|
}
|
|
157
167
|
};
|
|
158
168
|
var hasSumColumn = false;
|
|
159
|
-
|
|
160
|
-
|
|
169
|
+
var flattenedColumns = flattenColumns(columns);
|
|
170
|
+
var firstDataColumnIndex = 0;
|
|
171
|
+
if (((_a = columns[0]) === null || _a === void 0 ? void 0 : _a.dataKey) === SELECTION_DATA_KEY) {
|
|
172
|
+
firstDataColumnIndex = 1;
|
|
173
|
+
}
|
|
174
|
+
flattenedColumns.forEach(function (column, index) {
|
|
175
|
+
if (index === firstDataColumnIndex) {
|
|
161
176
|
// @ts-ignore
|
|
162
177
|
sumRow.raw[column.dataKey] = i18n.get('table.total');
|
|
163
178
|
}
|
|
164
179
|
if (checkNeedTotalOrEvg(data, column, 'total')) {
|
|
165
180
|
hasSumColumn = true;
|
|
166
|
-
// 获取当前数据最大小数点个数,并设置最后总和值小数点
|
|
167
181
|
// @ts-ignore
|
|
168
|
-
// 获取当前数据最大小数点个数,并设置最后总和值小数点
|
|
169
182
|
// @ts-ignore
|
|
170
183
|
sumRow.raw[column.dataKey] = getTotalOrEvgRowData(data, column, false);
|
|
171
184
|
}
|
|
@@ -204,22 +217,27 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
204
217
|
var extraFooter = extra && extra.footer;
|
|
205
218
|
var alwaysFixedColumn = fixedColumnTrigger === 'always';
|
|
206
219
|
var renderTable = function renderTable() {
|
|
207
|
-
var
|
|
208
|
-
ref: scrollBodyElementRef,
|
|
209
|
-
className: prefixCls + "-content",
|
|
210
|
-
onScroll: onTableBodyScroll,
|
|
211
|
-
style: {
|
|
212
|
-
// 表格宽度大于div宽度才出现横向滚动条
|
|
213
|
-
overflowX: canScroll ? 'scroll' : undefined
|
|
214
|
-
}
|
|
215
|
-
}, /*#__PURE__*/React__default.createElement("table", {
|
|
220
|
+
var tableContent = /*#__PURE__*/React__default.createElement("table", {
|
|
216
221
|
ref: bodyTableRef,
|
|
217
222
|
style: {
|
|
218
223
|
width: canScroll && scrollWidth !== undefined ? scrollWidth : '100%'
|
|
219
224
|
}
|
|
220
225
|
}, /*#__PURE__*/React__default.createElement(ColGroupContent, null), /*#__PURE__*/React__default.createElement(TheadContent, null), /*#__PURE__*/React__default.createElement(TbodyContent, {
|
|
221
226
|
emptyContent: emptyContent
|
|
222
|
-
}))
|
|
227
|
+
}));
|
|
228
|
+
var singleTableContent = /*#__PURE__*/React__default.createElement("div", Object.assign({
|
|
229
|
+
className: prefixCls + "-content"
|
|
230
|
+
}, !scrollbar ? {
|
|
231
|
+
ref: scrollBodyElementRef,
|
|
232
|
+
onScroll: onTableBodyScroll,
|
|
233
|
+
style: {
|
|
234
|
+
// 表格宽度大于div宽度才出现横向滚动条
|
|
235
|
+
overflowX: canScroll ? 'scroll' : undefined
|
|
236
|
+
}
|
|
237
|
+
} : {}), !scrollbar ? tableContent : ( /*#__PURE__*/React__default.createElement(Scrollbar, Object.assign({
|
|
238
|
+
ref: scrollBodyElementRef,
|
|
239
|
+
onScroll: onTableBodyScroll
|
|
240
|
+
}, isObject(scrollbar) ? scrollbar : null), tableContent)));
|
|
223
241
|
var doubleTableContent = /*#__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", {
|
|
224
242
|
style: {
|
|
225
243
|
position: 'absolute',
|
|
@@ -231,7 +249,7 @@ var BaseTable = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
231
249
|
}, extraHeader)) : null), /*#__PURE__*/React__default.createElement(TableBody, {
|
|
232
250
|
emptyContent: emptyContent
|
|
233
251
|
}));
|
|
234
|
-
return needDoubleTable ? doubleTableContent :
|
|
252
|
+
return needDoubleTable ? doubleTableContent : singleTableContent;
|
|
235
253
|
};
|
|
236
254
|
var renderFreezeShadow = function renderFreezeShadow() {
|
|
237
255
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, (alwaysFixedColumn || scrollSize.scrollLeft > 0) && leftFrozenColKeys.length > 0 ? ( /*#__PURE__*/React__default.createElement("div", {
|
package/lib/esm/Table.js
CHANGED
|
@@ -191,6 +191,12 @@ var Table = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
191
191
|
var rowKey = getRowKeyField(rowItem);
|
|
192
192
|
var checked = isCheckedRowKey(rowKey);
|
|
193
193
|
var disabledCheckbox = checkRowIsDisabledCheckbox(rowItem);
|
|
194
|
+
if (rowItem.key === 'avg' || rowItem.key === 'sum') {
|
|
195
|
+
return {
|
|
196
|
+
node: null,
|
|
197
|
+
checked: false
|
|
198
|
+
};
|
|
199
|
+
}
|
|
194
200
|
return {
|
|
195
201
|
node: type === 'checkbox' ? ( /*#__PURE__*/React__default.createElement(Checkbox, {
|
|
196
202
|
checked: checked,
|
|
@@ -23,6 +23,9 @@ var useColWidth = function useColWidth(_ref) {
|
|
|
23
23
|
}),
|
|
24
24
|
colWidths = _React$useState[0],
|
|
25
25
|
setColWidths = _React$useState[1];
|
|
26
|
+
/**
|
|
27
|
+
* 根据实际内容区(table 的第一行)渲染,再次精确收集并设置每列宽度
|
|
28
|
+
*/
|
|
26
29
|
var getWidths = useCallback(function (measureRowElement) {
|
|
27
30
|
if (measureRowElement && measureRowElement.childNodes) {
|
|
28
31
|
// 超出的宽度,即每列真实的宽度超出设置的宽度的总和
|
|
@@ -93,16 +96,12 @@ var useColWidth = function useColWidth(_ref) {
|
|
|
93
96
|
}
|
|
94
97
|
}, [getVirtualWidths, virtual]);
|
|
95
98
|
useUpdateEffect(function () {
|
|
99
|
+
// 当列变化时,重新设置列宽
|
|
96
100
|
setColWidths(getGroupItemWidth(columns).colWidths);
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
// ? // 走更新逻辑
|
|
102
|
-
// getWidths(measureRowElementRef.current)
|
|
103
|
-
// : // 当列数变化时重新走初始化逻辑
|
|
104
|
-
// getGroupItemWidth(columns)
|
|
105
|
-
// })
|
|
101
|
+
// 重新设置列宽后,真实的宽度会发生变化,基于真实的宽度再次重新计算出合适的列宽
|
|
102
|
+
requestAnimationFrame(function () {
|
|
103
|
+
setColWidths(getWidths(measureRowElementRef.current));
|
|
104
|
+
});
|
|
106
105
|
}, [columns]);
|
|
107
106
|
/**
|
|
108
107
|
* 根据实际内容区(table 的第一行)渲染,再次精确收集并设置每列宽度
|
package/lib/esm/utils/index.js
CHANGED
|
@@ -218,4 +218,19 @@ var getColumnByDefaultSortOrder = function getColumnByDefaultSortOrder(columns)
|
|
|
218
218
|
}
|
|
219
219
|
return {};
|
|
220
220
|
};
|
|
221
|
-
|
|
221
|
+
var flattenColumns = function flattenColumns(columns) {
|
|
222
|
+
var result = [];
|
|
223
|
+
var traverse = function traverse(cols) {
|
|
224
|
+
cols.forEach(function (col) {
|
|
225
|
+
var _a;
|
|
226
|
+
if ((_a = col.children) === null || _a === void 0 ? void 0 : _a.length) {
|
|
227
|
+
traverse(col.children);
|
|
228
|
+
} else {
|
|
229
|
+
result.push(col);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
traverse(columns);
|
|
234
|
+
return result;
|
|
235
|
+
};
|
|
236
|
+
export { checkNeedTotalOrEvg, flattenColumns, getColumnByDataKey, getColumnByDefaultSortOrder, getGroupItemWidth, getTotalOrEvgRowData, parseFixedColumns, parseLocalArray, setColumnsDefaultWidth, uuid };
|
|
@@ -27,3 +27,4 @@ export declare const getColumnByDataKey: (columns: TableColumnItem[], dataKey: s
|
|
|
27
27
|
* 获取默认排序的列
|
|
28
28
|
*/
|
|
29
29
|
export declare const getColumnByDefaultSortOrder: (columns: TableColumnItem[]) => TableColumnItem;
|
|
30
|
+
export declare const flattenColumns: (columns: TableColumnItem[]) => TableColumnItem[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hi-ui/table",
|
|
3
|
-
"version": "4.12.
|
|
3
|
+
"version": "4.12.2",
|
|
4
4
|
"description": "A sub-package for @hi-ui/hiui.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "HiUI <mi-hiui@xiaomi.com>",
|
|
@@ -78,12 +78,12 @@
|
|
|
78
78
|
"react-resizable": "^3.0.4"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
|
-
"@hi-ui/core": ">=4.0.
|
|
81
|
+
"@hi-ui/core": ">=4.0.10",
|
|
82
82
|
"react": ">=16.8.6",
|
|
83
83
|
"react-dom": ">=16.8.6"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
|
-
"@hi-ui/core": "^4.0.
|
|
86
|
+
"@hi-ui/core": "^4.0.10",
|
|
87
87
|
"@hi-ui/core-css": "^4.1.5",
|
|
88
88
|
"@types/react-resizable": "^1.7.4",
|
|
89
89
|
"react": "^17.0.1",
|