ztxkui 4.2.18-2 → 4.2.18-21
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/README.md +57 -57
- package/dist/DemoCom/SyhDemo.d.ts +3 -0
- package/dist/DemoCom/SyhDemo.js +257 -0
- package/dist/DemoCom/TableDemo.js +8 -4
- package/dist/TableDemo/BasicTable.js +2 -1
- package/dist/TableDemo/EditableTable.js +83 -67
- package/dist/TableDemo/ProEditableTable.d.ts +21 -0
- package/dist/TableDemo/ProEditableTable.js +482 -0
- package/dist/TableDemo/data.d.ts +15 -0
- package/dist/TableDemo/data.js +33 -1
- package/dist/TableDemo/index.js +6 -5
- package/dist/components/DatePicker/data-picker.d.ts +7 -8
- package/dist/components/Menu/menu.d.ts +3 -3
- package/dist/components/PrintContainer/utils.js +3 -3
- package/dist/components/ProTable/hooks.d.ts +28 -0
- package/dist/components/ProTable/hooks.js +279 -0
- package/dist/components/ProTable/index.d.ts +8 -0
- package/dist/components/ProTable/index.js +77 -0
- package/dist/components/ProTable/interface.d.ts +51 -0
- package/dist/components/ProTable/interface.js +1 -0
- package/dist/components/Table/components/FillDown.d.ts +8 -0
- package/dist/components/Table/components/FillDown.js +10 -0
- package/dist/components/Table/components/FilterDropdown.d.ts +14 -0
- package/dist/components/Table/components/FilterDropdown.js +69 -0
- package/dist/components/Table/constants.d.ts +2 -0
- package/dist/components/Table/constants.js +2 -0
- package/dist/components/Table/hooks/useColumns.d.ts +20 -8
- package/dist/components/Table/hooks/useColumns.js +484 -182
- package/dist/components/Table/hooks/useDropRef.js +2 -1
- package/dist/components/Table/hooks/useInnerPagination.js +1 -0
- package/dist/components/Table/hooks/useSelectSubtotal.d.ts +4 -0
- package/dist/components/Table/hooks/useSelectSubtotal.js +178 -0
- package/dist/components/Table/index.d.ts +7 -0
- package/dist/components/Table/table-adddel-column.d.ts +8 -5
- package/dist/components/Table/table-adddel-column.js +15 -5
- package/dist/components/Table/table-dynamic.js +63 -5
- package/dist/components/Table/table-enhance-cell.d.ts +6 -3
- package/dist/components/Table/table-enhance-cell.js +196 -109
- package/dist/components/Table/table-enhance-row.d.ts +4 -4
- package/dist/components/Table/table-enhance-row.js +10 -11
- package/dist/components/Table/table-headTooltip.d.ts +6 -0
- package/dist/components/Table/table-headTooltip.js +13 -0
- package/dist/components/Table/table-resizable-title.d.ts +4 -5
- package/dist/components/Table/table-resizable-title.js +32 -6
- package/dist/components/Table/table-sort.d.ts +11 -0
- package/dist/components/Table/table-sort.js +65 -0
- package/dist/components/Table/table.d.ts +20 -4
- package/dist/components/Table/table.js +478 -176
- package/dist/components/Table/utils/dom.d.ts +26 -0
- package/dist/components/Table/utils/dom.js +122 -0
- package/dist/components/Table/utils/filterHandle.d.ts +1 -0
- package/dist/components/Table/utils/filterHandle.js +51 -0
- package/dist/components/Table/utils/getSummaryData.d.ts +1 -0
- package/dist/components/Table/utils/getSummaryData.js +3 -1
- package/dist/components/Table/utils/shallowEqual.d.ts +2 -0
- package/dist/components/Table/utils/shallowEqual.js +34 -0
- package/dist/components/Table/utils/validate.d.ts +1 -1
- package/dist/components/Table/utils/validate.js +5 -5
- package/dist/components/TimePicker/time-picker.d.ts +0 -1
- package/dist/components/ZtIcon/index.d.ts +1 -1
- package/dist/components/business/Common/UserForgetPassword/index.js +17 -6
- package/dist/components/business/Common/UserInfo/index.js +3 -1
- package/dist/components/business/Common/UserPassword/index.d.ts +1 -0
- package/dist/components/business/Common/UserPassword/index.js +42 -14
- package/dist/components/business/Common/validatePassword.d.ts +8 -0
- package/dist/components/business/Common/validatePassword.js +168 -0
- package/dist/components/utils/index.d.ts +1 -0
- package/dist/components/utils/index.js +20 -0
- package/dist/components/utils/useLastest.d.ts +2 -0
- package/dist/components/utils/useLastest.js +6 -0
- package/dist/index.css +96 -7
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -0
- package/package.json +4 -3
|
@@ -14,64 +14,118 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
|
14
14
|
to[j] = from[i];
|
|
15
15
|
return to;
|
|
16
16
|
};
|
|
17
|
-
import React, { useCallback,
|
|
17
|
+
import React, { useCallback, useState, useRef, useMemo } from 'react';
|
|
18
|
+
import { unstable_batchedUpdates } from 'react-dom';
|
|
18
19
|
import Button from '../../Button';
|
|
19
20
|
import { Popconfirm } from '../../../index';
|
|
20
21
|
import { PicRightOutlined, MinusSquareOutlined } from '@ant-design/icons';
|
|
21
22
|
import TableAddDelColumn from '../table-adddel-column';
|
|
23
|
+
import TableHeadTooltip from '../table-headTooltip';
|
|
22
24
|
import { getInnerIndex } from './useInnerPagination';
|
|
25
|
+
import TableSortTitle from '../table-sort';
|
|
26
|
+
import FilterDropdown from '../components/FilterDropdown';
|
|
27
|
+
import FillDown from '../components/FillDown';
|
|
28
|
+
import { SearchOutlined } from '@ant-design/icons';
|
|
29
|
+
import { filterHandle } from '../utils/filterHandle';
|
|
23
30
|
// 获取表格columns完整数据
|
|
24
31
|
export var getTableLayoutFullData = function (columns, tableLayout) {
|
|
32
|
+
// const columns = _columns.map((item) => {
|
|
33
|
+
// return {
|
|
34
|
+
// ...item,
|
|
35
|
+
// key: item?.key || item?.title,
|
|
36
|
+
// dataIndex: item?.dataIndex || item?.title,
|
|
37
|
+
// };
|
|
38
|
+
// });
|
|
25
39
|
if (Array.isArray(tableLayout) && tableLayout.length > 0) {
|
|
26
|
-
var
|
|
40
|
+
var newAddColumns_1 = columns.filter(function (item) { return (item === null || item === void 0 ? void 0 : item.key) || (item === null || item === void 0 ? void 0 : item.dataIndex); });
|
|
41
|
+
// 找到没有传key 但是传了 fixed属性的字段
|
|
42
|
+
// 这块将 !== 'right'逻辑 改成 === 'left'逻辑
|
|
43
|
+
// 避免命中 { title: 'xxxx', render: xxx } || { title: 'xx', children: [..] }
|
|
44
|
+
var preColumns_1 = columns.filter(function (item) {
|
|
45
|
+
return !(item === null || item === void 0 ? void 0 : item.key) &&
|
|
46
|
+
!(item === null || item === void 0 ? void 0 : item.dataIndex) &&
|
|
47
|
+
((item === null || item === void 0 ? void 0 : item.fixed) === 'left' || (item === null || item === void 0 ? void 0 : item.fixed) === true);
|
|
48
|
+
});
|
|
27
49
|
var middleColumns_1 = [];
|
|
28
|
-
var afterColumns_1 =
|
|
50
|
+
var afterColumns_1 = columns.filter(function (item) { return !(item === null || item === void 0 ? void 0 : item.key) && !(item === null || item === void 0 ? void 0 : item.dataIndex) && (item === null || item === void 0 ? void 0 : item.fixed) === 'right'; });
|
|
29
51
|
// 这里存在,业务可能会修改原始columns数据,所以按照columns数据,将本地存储数据换新
|
|
30
52
|
// 1. 如果本地存储中有,原始columns中没有,那么删除掉本地存储中的
|
|
31
53
|
// 2. 将数据 按照 原始数据中的 是否固定 固定位置来分组。前 中 后三组
|
|
32
54
|
// 3. 缓存的数据只用来合并中间的并且能在原始columns中找到的内容
|
|
33
55
|
tableLayout.forEach(function (item) {
|
|
34
56
|
if ((item === null || item === void 0 ? void 0 : item.key) || (item === null || item === void 0 ? void 0 : item.dataIndex)) {
|
|
35
|
-
var
|
|
36
|
-
if (column.key) {
|
|
37
|
-
return
|
|
57
|
+
var index = newAddColumns_1.findIndex(function (column) {
|
|
58
|
+
if (column.key && item.key && column.key === (item === null || item === void 0 ? void 0 : item.key)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (column.dataIndex &&
|
|
62
|
+
item.dataIndex &&
|
|
63
|
+
column.dataIndex === (item === null || item === void 0 ? void 0 : item.dataIndex)) {
|
|
64
|
+
return true;
|
|
38
65
|
}
|
|
39
|
-
if (column.
|
|
40
|
-
return
|
|
66
|
+
if (column.title && item.title && column.title === (item === null || item === void 0 ? void 0 : item.title)) {
|
|
67
|
+
return true;
|
|
41
68
|
}
|
|
42
69
|
return false;
|
|
43
70
|
});
|
|
44
71
|
// 如果能再原始数据中找到对应的值
|
|
45
|
-
if (
|
|
46
|
-
|
|
72
|
+
if (index > -1) {
|
|
73
|
+
var result = newAddColumns_1[index];
|
|
74
|
+
var column = __assign(__assign({}, result), item);
|
|
75
|
+
// 兼容存入localstorge里面的旧数据
|
|
76
|
+
if (!item.key || !item.dataIndex) {
|
|
77
|
+
column = result;
|
|
78
|
+
}
|
|
79
|
+
// 如果业务代码中设置了hideColumn,那么不做自定义显隐控制
|
|
80
|
+
// if (result.hideColumn !== undefined) {
|
|
81
|
+
// column.hideColumn = result.hideColumn;
|
|
82
|
+
// column.isNoDynamicHide = true;
|
|
83
|
+
// }
|
|
84
|
+
if (!column.fixed) {
|
|
85
|
+
middleColumns_1.push(column);
|
|
86
|
+
}
|
|
87
|
+
else if (column.fixed === 'left' || column.fixed === true) {
|
|
88
|
+
preColumns_1.push(column);
|
|
89
|
+
}
|
|
90
|
+
else if (column.fixed === 'right') {
|
|
91
|
+
afterColumns_1.push(column);
|
|
92
|
+
}
|
|
93
|
+
newAddColumns_1.splice(index, 1);
|
|
47
94
|
}
|
|
48
95
|
// 如果没有在原始数据中找到对应的值,那说明这个应该删除,不应该添加进去
|
|
49
96
|
}
|
|
50
97
|
else if (item.children && !item.fixed) {
|
|
51
|
-
|
|
98
|
+
// 这里处理一下children里面的render方法。
|
|
99
|
+
// 这里没办法 因为可能children里面有render方法。
|
|
100
|
+
// 必须要用columns里面的来替换下 但是因为没有唯一键。所以只能通过title来做判断
|
|
101
|
+
var cColumn = columns.find(function (c) { return c.title === item.title; });
|
|
102
|
+
middleColumns_1.push(__assign(__assign({}, item), cColumn));
|
|
52
103
|
}
|
|
53
104
|
// 如果没有key 或者dataIndex 则说明该值不应该存在
|
|
54
105
|
// return {
|
|
55
106
|
// ...item,
|
|
56
107
|
// };
|
|
57
108
|
});
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
columns
|
|
62
|
-
.filter(function (column) { return column.fixed; })
|
|
63
|
-
.forEach(function (column) {
|
|
64
|
-
if (column.fixed === 'left') {
|
|
109
|
+
// 可能遍历到最后,newAddColumns里面可能还有值 并且他可能是固定列配置的项,所以需要再遍历一次 过滤调这些固定的选项
|
|
110
|
+
var filterNewAddColumns = newAddColumns_1.filter(function (column) {
|
|
111
|
+
if (column.fixed === 'left' || column.fixed === true) {
|
|
65
112
|
preColumns_1.push(__assign({}, column));
|
|
113
|
+
return false;
|
|
66
114
|
}
|
|
67
115
|
else if (column.fixed === 'right') {
|
|
68
116
|
afterColumns_1.push(__assign({}, column));
|
|
117
|
+
return false;
|
|
69
118
|
}
|
|
119
|
+
return true;
|
|
70
120
|
});
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
121
|
+
// 在按照规则,将原始columns中可能新增的数据,做一下处理
|
|
122
|
+
// 1. 取出所有定位元素,将定位元素添加到对应的组内
|
|
123
|
+
// 2. 找到所有没有定位的元素,并且tableLayout中中间元素中不存在的元素
|
|
124
|
+
// const newAddColumns = columns.filter(
|
|
125
|
+
// (column) =>
|
|
126
|
+
// !column.fixed && !middleColumns.find((item) => item.key === column.key)
|
|
127
|
+
// );
|
|
128
|
+
return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], preColumns_1), middleColumns_1), filterNewAddColumns), afterColumns_1);
|
|
75
129
|
}
|
|
76
130
|
return columns;
|
|
77
131
|
};
|
|
@@ -81,7 +135,7 @@ export var LOCALSTORAGE_KEY = 'ztui_dynamic_table_key';
|
|
|
81
135
|
export var LOCALSTORAGE_LRU_KEY = 'ztui_dynamic_table_lru_key';
|
|
82
136
|
// 搜索表单存储表单最大长度
|
|
83
137
|
export var LOCALSTORAGE_LRU_MAX_SIZE = 500;
|
|
84
|
-
function getStorage(key) {
|
|
138
|
+
export function getStorage(key) {
|
|
85
139
|
// 历史数据处理
|
|
86
140
|
// 直接从localstorage中取key值,如果能取到,那么需要删除原先的值,重新设置到统一出处
|
|
87
141
|
// 如果不能取到,那么什么都不做
|
|
@@ -152,134 +206,172 @@ export function setDynamicKey(dynamicStorageKey, value) {
|
|
|
152
206
|
obj[dynamicStorageKey] = value;
|
|
153
207
|
localStorage.setItem(LOCALSTORAGE_KEY, JSON.stringify(obj));
|
|
154
208
|
localStorage.setItem(LOCALSTORAGE_LRU_KEY, JSON.stringify(lruKeys));
|
|
209
|
+
// // 2023-11-29
|
|
210
|
+
// // 设置表格动态列配置相关信息
|
|
211
|
+
// catchHandle(
|
|
212
|
+
// {
|
|
213
|
+
// customKey: LOCALSTORAGE_KEY,
|
|
214
|
+
// customValue: JSON.stringify(obj),
|
|
215
|
+
// mark: '表格动态列配置缓存数据',
|
|
216
|
+
// },
|
|
217
|
+
// 'table_id'
|
|
218
|
+
// );
|
|
219
|
+
// catchHandle(
|
|
220
|
+
// {
|
|
221
|
+
// customKey: LOCALSTORAGE_LRU_KEY,
|
|
222
|
+
// customValue: JSON.stringify(lruKeys),
|
|
223
|
+
// mark: '表格动态列配置缓存LRUKey数据',
|
|
224
|
+
// },
|
|
225
|
+
// 'table_lru_id'
|
|
226
|
+
// );
|
|
155
227
|
}
|
|
156
|
-
function
|
|
157
|
-
var columns =
|
|
158
|
-
var
|
|
159
|
-
var
|
|
160
|
-
|
|
161
|
-
var
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
throw new Error('columns 必须为一个数组');
|
|
176
|
-
}
|
|
177
|
-
// 根据配置处理columns
|
|
178
|
-
// 主要处理是否隐藏
|
|
179
|
-
// 是否添加required配置
|
|
180
|
-
var _columns = [];
|
|
181
|
-
if (configInfo && Object.keys(configInfo).length > 0) {
|
|
182
|
-
catchColumns.forEach(function (col) {
|
|
183
|
-
var _a, _b, _c, _d;
|
|
184
|
-
var _column = __assign({}, col);
|
|
185
|
-
var dataIndex = _column.dataIndex;
|
|
186
|
-
if (!dataIndex) {
|
|
187
|
-
_columns.push(__assign({}, _column));
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
// 如果没有配置,或者配置isRequired为存在
|
|
191
|
-
if (((_a = configInfo[dataIndex]) === null || _a === void 0 ? void 0 : _a.isRequired) === 1 ||
|
|
192
|
-
((_b = configInfo[dataIndex]) === null || _b === void 0 ? void 0 : _b.isRequired) === '1') {
|
|
193
|
-
_column.required = true;
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
_column.validate = undefined;
|
|
197
|
-
}
|
|
198
|
-
// 如果没有配置,或者配置isDisplay为存在
|
|
199
|
-
if (!configInfo[dataIndex] ||
|
|
200
|
-
((_c = configInfo[dataIndex]) === null || _c === void 0 ? void 0 : _c.isDisplay) === 1 ||
|
|
201
|
-
((_d = configInfo[dataIndex]) === null || _d === void 0 ? void 0 : _d.isDisplay) === '1') {
|
|
202
|
-
_columns.push(__assign({}, _column));
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
_columns = catchColumns;
|
|
209
|
-
}
|
|
210
|
-
var _newColumns = [];
|
|
211
|
-
var _dynamicColumns = [];
|
|
212
|
-
// 处理columns
|
|
213
|
-
_columns.forEach(function (col) {
|
|
228
|
+
function getNewColumns(basicConfig, editableConfig, dynamicConfig, otherConfig) {
|
|
229
|
+
var columns = basicConfig.columns, newColumnsRef = basicConfig.newColumnsRef, showColumnDynamic = basicConfig.showColumnDynamic, showColumnDynamicKey = basicConfig.showColumnDynamicKey, configInfo = basicConfig.configInfo, currentDataSource = basicConfig.currentDataSource, preDataSource = basicConfig.preDataSource, rowKey = basicConfig.rowKey, dataSourceRef = basicConfig.dataSourceRef, expandableChildrenColumnName = basicConfig.expandableChildrenColumnName, upDateColumnsRef = basicConfig.upDateColumnsRef, setUpDateColumnsRef = basicConfig.setUpDateColumnsRef, isUpDateColumnsRef = basicConfig.isUpDateColumnsRef, setIsUpDateColumnsRef = basicConfig.setIsUpDateColumnsRef;
|
|
230
|
+
var onEditableSave = editableConfig.onEditableSave, onTableChange = editableConfig.onTableChange, currentPage = editableConfig.currentPage, onFillDownChangeRef = editableConfig.onFillDownChangeRef;
|
|
231
|
+
var ColumnDynamicCom = dynamicConfig.ColumnDynamicCom, DelAllCom = dynamicConfig.DelAllCom, onAddAndDelHandleMemo = dynamicConfig.onAddAndDelHandleMemo, onAddAndDelHandle = dynamicConfig.onAddAndDelHandle, hideAddIcon = dynamicConfig.hideAddIcon, addIconText = dynamicConfig.addIconText, hideDelIcon = dynamicConfig.hideDelIcon, delIconText = dynamicConfig.delIconText;
|
|
232
|
+
var copyByKey = otherConfig.copyByKey, myCatchColumns = otherConfig.myCatchColumns, customSortHandle = otherConfig.customSortHandle, customOrder = otherConfig.customOrder, setCustomOrder = otherConfig.setCustomOrder, isSort = otherConfig.isSort, handleSearch = otherConfig.handleSearch, handleReset = otherConfig.handleReset, searchInput = otherConfig.searchInput;
|
|
233
|
+
var tableLayout = showColumnDynamicKey
|
|
234
|
+
? getStorage(showColumnDynamicKey)
|
|
235
|
+
: myCatchColumns;
|
|
236
|
+
var catchColumns = getTableLayoutFullData(columns, tableLayout);
|
|
237
|
+
if (!Array.isArray(catchColumns)) {
|
|
238
|
+
throw new Error('columns 必须为一个数组');
|
|
239
|
+
}
|
|
240
|
+
// 根据配置处理columns
|
|
241
|
+
// 主要处理是否隐藏
|
|
242
|
+
// 是否添加required配置
|
|
243
|
+
var _columns = [];
|
|
244
|
+
if (configInfo && Object.keys(configInfo).length > 0) {
|
|
245
|
+
catchColumns.forEach(function (col) {
|
|
246
|
+
var _a, _b, _c, _d;
|
|
214
247
|
var _column = __assign({}, col);
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
_column.ellipsis = true;
|
|
248
|
+
var dataIndex = _column.dataIndex;
|
|
249
|
+
if (!dataIndex) {
|
|
250
|
+
_columns.push(__assign({}, _column));
|
|
219
251
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
record: record,
|
|
226
|
-
index: index,
|
|
227
|
-
editable: editable_1,
|
|
228
|
-
editableConfig: editableConfig_1,
|
|
229
|
-
dataIndex: dataIndex_1,
|
|
230
|
-
title: title_1,
|
|
231
|
-
handleSave: onEditableSave,
|
|
232
|
-
columns: function () { return newColumnsRef.current; },
|
|
233
|
-
onTableChange: onTableChange,
|
|
234
|
-
currentpage: currentPage,
|
|
235
|
-
});
|
|
236
|
-
} });
|
|
237
|
-
// 兼容下拉框滚动行为
|
|
238
|
-
if ((editableConfig_1 === null || editableConfig_1 === void 0 ? void 0 : editableConfig_1.type) === 'select') {
|
|
239
|
-
_column.ellipsis = false;
|
|
252
|
+
else {
|
|
253
|
+
// 如果没有配置,或者配置isRequired为存在
|
|
254
|
+
if (((_a = configInfo[dataIndex]) === null || _a === void 0 ? void 0 : _a.isRequired) === 1 ||
|
|
255
|
+
((_b = configInfo[dataIndex]) === null || _b === void 0 ? void 0 : _b.isRequired) === '1') {
|
|
256
|
+
_column.required = true;
|
|
240
257
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
258
|
+
else {
|
|
259
|
+
_column.validate = undefined;
|
|
260
|
+
}
|
|
261
|
+
// 如果没有配置,或者配置isDisplay为存在
|
|
262
|
+
if (!configInfo[dataIndex] ||
|
|
263
|
+
((_c = configInfo[dataIndex]) === null || _c === void 0 ? void 0 : _c.isDisplay) === 1 ||
|
|
264
|
+
((_d = configInfo[dataIndex]) === null || _d === void 0 ? void 0 : _d.isDisplay) === '1') {
|
|
265
|
+
_columns.push(__assign({}, _column));
|
|
248
266
|
}
|
|
249
|
-
_column.title = (React.createElement(React.Fragment, null,
|
|
250
|
-
_column.title,
|
|
251
|
-
React.createElement(Button, { type: "link", onClick: function () {
|
|
252
|
-
copyByKey(typeof _column.showCopy === 'string'
|
|
253
|
-
? _column.showCopy
|
|
254
|
-
: _column.key || _column.dataIndex);
|
|
255
|
-
}, style: {
|
|
256
|
-
fontSize: '13px',
|
|
257
|
-
marginLeft: '2px',
|
|
258
|
-
display: 'block',
|
|
259
|
-
width: '100%',
|
|
260
|
-
textAlign: _column.align,
|
|
261
|
-
} }, "\u590D\u5236\u6574\u5217")));
|
|
262
|
-
}
|
|
263
|
-
// 如果配置了固定列的 不做处理
|
|
264
|
-
if (!col.fixed) {
|
|
265
|
-
_dynamicColumns.push(__assign({}, col));
|
|
266
267
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
_columns = catchColumns;
|
|
272
|
+
}
|
|
273
|
+
var _newColumns = [];
|
|
274
|
+
var _dynamicColumns = [];
|
|
275
|
+
// 处理columns
|
|
276
|
+
_columns.forEach(function (col, index) {
|
|
277
|
+
var _column = __assign({}, col);
|
|
278
|
+
var align = _column.align;
|
|
279
|
+
// 这里解决一个bug,对于dataSource.slice().reverse() 之后。scu配置的字段并不会更新 render中的index
|
|
280
|
+
if (_column.shouldCellUpdate) {
|
|
281
|
+
var fn_1 = _column.shouldCellUpdate;
|
|
282
|
+
_column.shouldCellUpdate = function (record, preRecord) {
|
|
283
|
+
try {
|
|
284
|
+
var recordKey_1 = record[rowKey];
|
|
285
|
+
if (Array.isArray(currentDataSource) &&
|
|
286
|
+
Array.isArray(preDataSource)) {
|
|
287
|
+
var currentIndex = currentDataSource.findIndex(function (item) { return item[rowKey] === recordKey_1; });
|
|
288
|
+
var preIndex = preDataSource.findIndex(function (item) { return item[rowKey] === recordKey_1; });
|
|
289
|
+
if (currentIndex !== preIndex) {
|
|
290
|
+
return true;
|
|
291
|
+
}
|
|
292
|
+
if (typeof _column.dataIndex === 'string' &&
|
|
293
|
+
record[_column.dataIndex] !== preRecord[_column.dataIndex]) {
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
// 通过dynamic配置更新fixed的时候,触发更新
|
|
297
|
+
if (upDateColumnsRef.current &&
|
|
298
|
+
upDateColumnsRef.current[index] &&
|
|
299
|
+
upDateColumnsRef.current[index].fixed !== _column.fixed) {
|
|
300
|
+
setUpDateColumnsRef(_column, index);
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
if (isUpDateColumnsRef.current) {
|
|
304
|
+
setIsUpDateColumnsRef(false);
|
|
305
|
+
return true;
|
|
306
|
+
}
|
|
276
307
|
}
|
|
277
|
-
_column.title = (React.createElement(React.Fragment, null,
|
|
278
|
-
React.createElement("i", { className: "zt-column--required" }, "*"),
|
|
279
|
-
_column.title));
|
|
280
308
|
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
console.log(err);
|
|
311
|
+
}
|
|
312
|
+
return fn_1(record, preRecord);
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
// 添加超出隐藏
|
|
316
|
+
// !_column.render 兼容下拉框滚动行为,设置了ellipsis的话,会导致overflow:hidden,导致一些问题
|
|
317
|
+
if (_column.ellipsis !== false) {
|
|
318
|
+
_column.ellipsis = true;
|
|
319
|
+
}
|
|
320
|
+
// 如果列需要编辑
|
|
321
|
+
if (_column.editable) {
|
|
322
|
+
var title_1 = _column.title, editable_1 = _column.editable, editableConfig_1 = _column.editableConfig, dataIndex_1 = _column.dataIndex;
|
|
323
|
+
_column = __assign(__assign({}, _column), { onCell: function (record, index) {
|
|
324
|
+
return ({
|
|
325
|
+
record: record,
|
|
326
|
+
index: index,
|
|
327
|
+
editable: editable_1,
|
|
328
|
+
editableConfig: editableConfig_1,
|
|
329
|
+
dataIndex: dataIndex_1,
|
|
330
|
+
title: title_1,
|
|
331
|
+
handleSave: onEditableSave,
|
|
332
|
+
columns: function () { return newColumnsRef.current; },
|
|
333
|
+
onTableChange: onTableChange,
|
|
334
|
+
dataSource: function () { return dataSourceRef.current; },
|
|
335
|
+
currentpage: currentPage,
|
|
336
|
+
rowKey: rowKey,
|
|
337
|
+
expandableChildrenColumnName: expandableChildrenColumnName,
|
|
338
|
+
});
|
|
339
|
+
} });
|
|
340
|
+
// 兼容下拉框滚动行为
|
|
341
|
+
if ((editableConfig_1 === null || editableConfig_1 === void 0 ? void 0 : editableConfig_1.type) === 'select') {
|
|
342
|
+
_column.ellipsis = false;
|
|
281
343
|
}
|
|
282
|
-
|
|
344
|
+
}
|
|
345
|
+
// 如果列需要添加复制按钮
|
|
346
|
+
if (_column.showCopy) {
|
|
347
|
+
if (_column.validate) {
|
|
348
|
+
_column.validate.title = _column.validate.title
|
|
349
|
+
? _column.validate.title
|
|
350
|
+
: _column.title;
|
|
351
|
+
}
|
|
352
|
+
_column.title = (React.createElement(React.Fragment, null,
|
|
353
|
+
_column.title,
|
|
354
|
+
React.createElement(Button, { type: "link", onClick: function () {
|
|
355
|
+
copyByKey(typeof _column.showCopy === 'string'
|
|
356
|
+
? _column.showCopy
|
|
357
|
+
: _column.key || _column.dataIndex);
|
|
358
|
+
}, style: {
|
|
359
|
+
fontSize: '13px',
|
|
360
|
+
marginLeft: '2px',
|
|
361
|
+
display: 'block',
|
|
362
|
+
width: '100%',
|
|
363
|
+
textAlign: _column.align,
|
|
364
|
+
} }, "\u590D\u5236\u6574\u5217")));
|
|
365
|
+
}
|
|
366
|
+
// 如果配置了固定列的 不做处理
|
|
367
|
+
// if (!col.fixed) {
|
|
368
|
+
_dynamicColumns.push(__assign({}, col));
|
|
369
|
+
// }
|
|
370
|
+
// 添加必填标识
|
|
371
|
+
if (typeof _column.required === 'function') {
|
|
372
|
+
var res = _column.required();
|
|
373
|
+
var _res = typeof res === 'boolean' ? res : res === 1 || res === '1';
|
|
374
|
+
if (_res) {
|
|
283
375
|
if (_column.validate) {
|
|
284
376
|
_column.validate.title = _column.validate.title
|
|
285
377
|
? _column.validate.title
|
|
@@ -289,69 +381,279 @@ function useColumns(props) {
|
|
|
289
381
|
React.createElement("i", { className: "zt-column--required" }, "*"),
|
|
290
382
|
_column.title));
|
|
291
383
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
384
|
+
}
|
|
385
|
+
else if (_column.required) {
|
|
386
|
+
if (_column.validate) {
|
|
387
|
+
_column.validate.title = _column.validate.title
|
|
388
|
+
? _column.validate.title
|
|
389
|
+
: _column.title;
|
|
295
390
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
_column.
|
|
299
|
-
|
|
391
|
+
_column.title = (React.createElement(React.Fragment, null,
|
|
392
|
+
React.createElement("i", { className: "zt-column--required" }, "*"),
|
|
393
|
+
_column.title));
|
|
394
|
+
}
|
|
395
|
+
// 去掉不显示表头的项
|
|
396
|
+
if (!_column.hideColumn) {
|
|
397
|
+
_newColumns.push(_column);
|
|
398
|
+
}
|
|
399
|
+
// 添加render字段
|
|
400
|
+
if (!_column.render) {
|
|
401
|
+
_column.render = function (text, record, index) {
|
|
402
|
+
return text == null || text === '' ? '— —' : text;
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
// 添加表头提示信息
|
|
406
|
+
if (_column.headTooltip) {
|
|
407
|
+
_column.title = (React.createElement(TableHeadTooltip, { headTooltip: _column.headTooltip }, _column.title));
|
|
408
|
+
}
|
|
409
|
+
// 往下复制
|
|
410
|
+
if (_column.isFillDown) {
|
|
411
|
+
var title_2 = _column.title;
|
|
412
|
+
_column.title = function () {
|
|
413
|
+
return (React.createElement(FillDown, { title: title_2, field: key, onClick: onFillDownChangeRef }));
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
// 添加过滤规则
|
|
417
|
+
var filterKey = _column.key || _column.dataIndex;
|
|
418
|
+
if (_column.isFilter === true &&
|
|
419
|
+
typeof filterKey === 'string' &&
|
|
420
|
+
!onEditableSave) {
|
|
421
|
+
_column.filterDropdown = function (_a) {
|
|
422
|
+
var setSelectedKeys = _a.setSelectedKeys, selectedKeys = _a.selectedKeys, confirm = _a.confirm, clearFilters = _a.clearFilters;
|
|
423
|
+
return (React.createElement(FilterDropdown, { searchInputRef: searchInput, setSelectedKeys: setSelectedKeys, selectedKeys: selectedKeys, confirm: confirm, clearFilters: clearFilters, dataIndex: filterKey, handleSearch: handleSearch, handleReset: handleReset, dataSourceRef: dataSourceRef }));
|
|
424
|
+
};
|
|
425
|
+
_column.filterIcon = function () { return React.createElement(SearchOutlined, null); };
|
|
426
|
+
_column.onFilter = function (value, record) {
|
|
427
|
+
var arg = [];
|
|
428
|
+
for (var _i = 2; _i < arguments.length; _i++) {
|
|
429
|
+
arg[_i - 2] = arguments[_i];
|
|
430
|
+
}
|
|
431
|
+
return filterHandle(value, record, filterKey);
|
|
432
|
+
};
|
|
433
|
+
_column.onFilterDropdownVisibleChange = function (visible) {
|
|
434
|
+
if (visible) {
|
|
435
|
+
setTimeout(function () { var _a; return (_a = searchInput.current) === null || _a === void 0 ? void 0 : _a.select(); }, 100);
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
// 2023-05-04 添加排序功能 如果是必填字段 不做处理
|
|
440
|
+
var key = col.dataIndex;
|
|
441
|
+
if (typeof key === 'string' && !onEditableSave && !_column.required) {
|
|
442
|
+
// 如果用户传入了排序字段,那么说明该列需要排序
|
|
443
|
+
if (_column.sorter === true) {
|
|
444
|
+
var title_3 = _column.title;
|
|
445
|
+
_column.title = function () {
|
|
446
|
+
return (React.createElement(TableSortTitle, { title: title_3, field: key, customOrder: customOrder, setCustomOrder: setCustomOrder, onChange: customSortHandle, align: align }));
|
|
300
447
|
};
|
|
448
|
+
_column.sorter = false;
|
|
301
449
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
450
|
+
// 如果传入得排序函数
|
|
451
|
+
if (typeof _column.sorter === 'function') {
|
|
452
|
+
var title_4 = _column.title;
|
|
453
|
+
var sorterHandle_1 = _column.sorter;
|
|
454
|
+
_column.title = function () {
|
|
455
|
+
return (React.createElement(TableSortTitle, { title: title_4, field: key, customOrder: customOrder, setCustomOrder: setCustomOrder, align: align, onChange: function (info) {
|
|
456
|
+
customSortHandle(info, { sorterHandle: sorterHandle_1 });
|
|
457
|
+
} }));
|
|
458
|
+
};
|
|
459
|
+
_column.sorter = false;
|
|
308
460
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
var
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
React.createElement(DelAllCom, null))); },
|
|
315
|
-
width: 52,
|
|
316
|
-
fixed: 'left',
|
|
317
|
-
align: 'center',
|
|
318
|
-
render: function (text, render, index) { return (React.createElement(TableAddDelColumn, { onAddAndDelHandle: function (type) {
|
|
319
|
-
var innerIndex = getInnerIndex(currentPage, index);
|
|
320
|
-
onAddAndDelHandle(type, innerIndex);
|
|
321
|
-
}, hideAddIcon: hideAddIcon, addIconText: addIconText, hideDelIcon: hideDelIcon, delIconText: delIconText })); },
|
|
461
|
+
// 纯粹的前端排序
|
|
462
|
+
if (_column.sorter == null && isSort) {
|
|
463
|
+
var title_5 = _column.title;
|
|
464
|
+
_column.title = function () {
|
|
465
|
+
return (React.createElement(TableSortTitle, { title: title_5, field: key, customOrder: customOrder, setCustomOrder: setCustomOrder, onChange: customSortHandle, align: align }));
|
|
322
466
|
};
|
|
323
|
-
_newColumns.unshift(newColumn);
|
|
324
467
|
}
|
|
325
468
|
}
|
|
326
|
-
|
|
327
|
-
|
|
469
|
+
});
|
|
470
|
+
if (showColumnDynamic) {
|
|
471
|
+
// 如果需要展示动态列
|
|
472
|
+
if (!onAddAndDelHandle) {
|
|
473
|
+
// 并且不需要展示删减功能,那么动态列,加到序号列,也就是第0项
|
|
474
|
+
_newColumns[0].title = function () { return React.createElement(ColumnDynamicCom, null); };
|
|
475
|
+
_newColumns[0].filterDropdown = undefined;
|
|
476
|
+
_newColumns[0].filterIcon = undefined;
|
|
477
|
+
_newColumns[0].onFilter = undefined;
|
|
478
|
+
_newColumns[0].onFilterDropdownVisibleChange = undefined;
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
// 需要展示删减功能
|
|
328
482
|
var newColumn = {
|
|
329
483
|
title: function () { return (React.createElement(React.Fragment, null,
|
|
484
|
+
React.createElement(ColumnDynamicCom, null),
|
|
330
485
|
React.createElement(DelAllCom, null))); },
|
|
331
486
|
width: 52,
|
|
332
487
|
fixed: 'left',
|
|
333
488
|
align: 'center',
|
|
334
|
-
render: function (text,
|
|
489
|
+
render: function (text, record, index) { return (React.createElement(TableAddDelColumn, { onAddAndDelHandle: onAddAndDelHandleMemo, index: index, hideAddIcon: hideAddIcon, addIconText: addIconText, hideDelIcon: hideDelIcon, record: record, delIconText: delIconText })); },
|
|
335
490
|
};
|
|
336
491
|
_newColumns.unshift(newColumn);
|
|
337
492
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
493
|
+
}
|
|
494
|
+
else if (onAddAndDelHandle) {
|
|
495
|
+
// 没有动态列配置
|
|
496
|
+
var newColumn = {
|
|
497
|
+
title: function () { return (React.createElement(React.Fragment, null,
|
|
498
|
+
React.createElement(DelAllCom, null))); },
|
|
499
|
+
width: 52,
|
|
500
|
+
fixed: 'left',
|
|
501
|
+
align: 'center',
|
|
502
|
+
render: function (text, record, index) { return (React.createElement(TableAddDelColumn, { onAddAndDelHandle: onAddAndDelHandleMemo, index: index, hideAddIcon: hideAddIcon, addIconText: addIconText, hideDelIcon: hideDelIcon, record: record, delIconText: delIconText })); },
|
|
503
|
+
};
|
|
504
|
+
_newColumns.unshift(newColumn);
|
|
505
|
+
}
|
|
506
|
+
newColumnsRef.current = _newColumns;
|
|
507
|
+
return {
|
|
508
|
+
_newColumns: _newColumns,
|
|
509
|
+
_dynamicColumns: _dynamicColumns,
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
function useColumns(props) {
|
|
513
|
+
var columns = props.columns, hiddenColumnDynamicIcon = props.hiddenColumnDynamicIcon, showColumnDynamic = props.showColumnDynamic, showColumnDynamicKey = props.showColumnDynamicKey, onAddAndDelHandle = props.onAddAndDelHandle, hideAddIcon = props.hideAddIcon, showDelAllBtn = props.showDelAllBtn, delAllChange = props.delAllChange, addIconText = props.addIconText, hideDelIcon = props.hideDelIcon, delIconText = props.delIconText, showDynamicHandle = props.showDynamicHandle, onEditableSave = props.onEditableSave, configInfo = props.configInfo, copyByKey = props.copyByKey, onTableChange = props.onTableChange, currentPage = props.currentPage, currentDataSource = props.currentDataSource, preDataSource = props.preDataSource, rowKey = props.rowKey, dataSourceRef = props.dataSourceRef, expandableChildrenColumnName = props.expandableChildrenColumnName, customSortHandle = props.customSortHandle, customOrder = props.customOrder, setCustomOrder = props.setCustomOrder, isSort = props.isSort, onFillDownChangeRef = props.onFillDownChangeRef;
|
|
514
|
+
var newColumnsRef = useRef();
|
|
515
|
+
var _a = useAsyncSetValue(columns), upDateColumnsRef = _a[0], setUpDateColumnsRef = _a[1];
|
|
516
|
+
var _b = useAsyncSetValue(false), isUpDateColumnsRef = _b[0], setIsUpDateColumnsRef = _b[1];
|
|
517
|
+
var searchInput = useRef(null);
|
|
518
|
+
var handleSearch = function (selectedKeys, confirm, dataIndex) {
|
|
519
|
+
confirm();
|
|
520
|
+
};
|
|
521
|
+
var handleReset = function (clearFilters) {
|
|
522
|
+
clearFilters();
|
|
523
|
+
};
|
|
524
|
+
// 动态列配置显隐
|
|
525
|
+
var ColumnDynamicCom = useCallback(function () {
|
|
526
|
+
return hiddenColumnDynamicIcon ? null : (React.createElement(PicRightOutlined, { className: "zt-column--daynamic-icon", onClick: showDynamicHandle }));
|
|
527
|
+
}, [showDynamicHandle, hiddenColumnDynamicIcon]);
|
|
528
|
+
// 动态列配置显隐
|
|
529
|
+
var DelAllCom = useCallback(function () {
|
|
530
|
+
return showDelAllBtn ? (React.createElement(Popconfirm, { title: "\u662F\u5426\u5168\u90E8\u5220\u9664", onConfirm: function () { return delAllChange && delAllChange(); } },
|
|
531
|
+
React.createElement(MinusSquareOutlined, { className: "zt-column--daynamic-icon", style: { marginLeft: '4px' } }))) : null;
|
|
532
|
+
}, [delAllChange, showDelAllBtn]);
|
|
533
|
+
// 增减行回调
|
|
534
|
+
var onAddAndDelHandleMemo = useCallback(function (type, index) {
|
|
535
|
+
unstable_batchedUpdates(function () {
|
|
536
|
+
var innerIndex = getInnerIndex(currentPage, index);
|
|
537
|
+
onAddAndDelHandle && onAddAndDelHandle(type, innerIndex);
|
|
538
|
+
});
|
|
539
|
+
},
|
|
540
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
541
|
+
[onAddAndDelHandle]);
|
|
542
|
+
// 设置方法
|
|
543
|
+
var getNewColumnsMemo = useCallback(function (columns, refresh, myCatchColumns) {
|
|
544
|
+
// console.log('计算', currentDataSource, preDataSource);
|
|
545
|
+
return getNewColumns({
|
|
546
|
+
columns: columns,
|
|
547
|
+
newColumnsRef: newColumnsRef,
|
|
548
|
+
showColumnDynamic: showColumnDynamic,
|
|
549
|
+
showColumnDynamicKey: showColumnDynamicKey,
|
|
550
|
+
configInfo: configInfo,
|
|
551
|
+
currentDataSource: currentDataSource,
|
|
552
|
+
preDataSource: preDataSource,
|
|
553
|
+
rowKey: rowKey,
|
|
554
|
+
dataSourceRef: dataSourceRef,
|
|
555
|
+
expandableChildrenColumnName: expandableChildrenColumnName,
|
|
556
|
+
upDateColumnsRef: upDateColumnsRef,
|
|
557
|
+
setUpDateColumnsRef: setUpDateColumnsRef,
|
|
558
|
+
isUpDateColumnsRef: isUpDateColumnsRef,
|
|
559
|
+
setIsUpDateColumnsRef: setIsUpDateColumnsRef,
|
|
560
|
+
}, {
|
|
561
|
+
onEditableSave: onEditableSave,
|
|
562
|
+
onTableChange: onTableChange,
|
|
563
|
+
onFillDownChangeRef: onFillDownChangeRef,
|
|
564
|
+
currentPage: currentPage,
|
|
565
|
+
}, {
|
|
566
|
+
ColumnDynamicCom: ColumnDynamicCom,
|
|
567
|
+
DelAllCom: DelAllCom,
|
|
568
|
+
onAddAndDelHandleMemo: onAddAndDelHandleMemo,
|
|
569
|
+
onAddAndDelHandle: onAddAndDelHandle,
|
|
570
|
+
hideAddIcon: hideAddIcon,
|
|
571
|
+
addIconText: addIconText,
|
|
572
|
+
hideDelIcon: hideDelIcon,
|
|
573
|
+
delIconText: delIconText,
|
|
574
|
+
}, {
|
|
575
|
+
copyByKey: copyByKey,
|
|
576
|
+
myCatchColumns: myCatchColumns,
|
|
577
|
+
customSortHandle: customSortHandle,
|
|
578
|
+
customOrder: customOrder,
|
|
579
|
+
setCustomOrder: setCustomOrder,
|
|
580
|
+
isSort: isSort,
|
|
581
|
+
handleSearch: handleSearch,
|
|
582
|
+
handleReset: handleReset,
|
|
583
|
+
searchInput: searchInput,
|
|
584
|
+
});
|
|
342
585
|
}, [
|
|
343
|
-
columns,
|
|
344
586
|
showColumnDynamic,
|
|
587
|
+
showColumnDynamicKey,
|
|
588
|
+
configInfo,
|
|
589
|
+
onEditableSave,
|
|
590
|
+
onTableChange,
|
|
591
|
+
currentPage,
|
|
592
|
+
ColumnDynamicCom,
|
|
593
|
+
DelAllCom,
|
|
594
|
+
onAddAndDelHandleMemo,
|
|
345
595
|
onAddAndDelHandle,
|
|
346
596
|
hideAddIcon,
|
|
347
597
|
addIconText,
|
|
348
598
|
hideDelIcon,
|
|
349
599
|
delIconText,
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
600
|
+
copyByKey,
|
|
601
|
+
currentDataSource,
|
|
602
|
+
preDataSource,
|
|
603
|
+
rowKey,
|
|
604
|
+
dataSourceRef,
|
|
605
|
+
expandableChildrenColumnName,
|
|
606
|
+
customSortHandle,
|
|
607
|
+
customOrder,
|
|
608
|
+
setCustomOrder,
|
|
609
|
+
upDateColumnsRef,
|
|
610
|
+
setUpDateColumnsRef,
|
|
611
|
+
isUpDateColumnsRef,
|
|
612
|
+
setIsUpDateColumnsRef,
|
|
613
|
+
isSort,
|
|
614
|
+
onFillDownChangeRef,
|
|
354
615
|
]);
|
|
355
|
-
|
|
616
|
+
var _c = useState(false), refreshColumns = _c[0], setRefreshColumns = _c[1];
|
|
617
|
+
var _d = useState([]), myCatchColumns = _d[0], setMyCatchColumns = _d[1];
|
|
618
|
+
var refreshColumnsHandle = useCallback(function (columns) {
|
|
619
|
+
unstable_batchedUpdates(function () {
|
|
620
|
+
setRefreshColumns(function (refresh) { return !refresh; });
|
|
621
|
+
setIsUpDateColumnsRef(true);
|
|
622
|
+
if (columns) {
|
|
623
|
+
setMyCatchColumns(columns);
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
setMyCatchColumns([]);
|
|
627
|
+
}
|
|
628
|
+
});
|
|
629
|
+
}, [setIsUpDateColumnsRef]);
|
|
630
|
+
var calcColumns = useMemo(function () {
|
|
631
|
+
return getNewColumnsMemo(columns, refreshColumns, myCatchColumns);
|
|
632
|
+
}, [getNewColumnsMemo, columns, refreshColumns, myCatchColumns]);
|
|
633
|
+
return {
|
|
634
|
+
newColumns: calcColumns._newColumns,
|
|
635
|
+
dynamicColumns: calcColumns._dynamicColumns,
|
|
636
|
+
refreshColumnsHandle: refreshColumnsHandle,
|
|
637
|
+
};
|
|
638
|
+
}
|
|
639
|
+
// 异步修改值
|
|
640
|
+
function useAsyncSetValue(initialValue) {
|
|
641
|
+
var timeoutRef = useRef();
|
|
642
|
+
var targetRef = useRef(initialValue);
|
|
643
|
+
var setValue = useCallback(function (value, index) {
|
|
644
|
+
if (timeoutRef.current) {
|
|
645
|
+
clearTimeout(timeoutRef.current);
|
|
646
|
+
timeoutRef.current = null;
|
|
647
|
+
}
|
|
648
|
+
timeoutRef.current = setTimeout(function () {
|
|
649
|
+
if (Array.isArray(targetRef.current)) {
|
|
650
|
+
targetRef.current[index] = value;
|
|
651
|
+
}
|
|
652
|
+
else {
|
|
653
|
+
targetRef.current = value;
|
|
654
|
+
}
|
|
655
|
+
});
|
|
656
|
+
}, []);
|
|
657
|
+
return [targetRef, setValue];
|
|
356
658
|
}
|
|
357
659
|
export default useColumns;
|