@nokecy/qc-ui 1.1.87 → 1.1.89
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/dist/cjs/ag-grid-plus/ag-gridPlus.js +151 -145
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +4 -4
- package/dist/cjs/ag-grid-plus/interface.d.ts +8 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.d.ts +4 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.js +63 -53
- package/dist/cjs/ag-grid-plus/queryForm/queryColumns.d.ts +8 -0
- package/dist/cjs/ag-grid-plus/queryForm/queryColumns.js +52 -0
- package/dist/cjs/ag-grid-plus/queryForm/schemaKey.d.ts +15 -8
- package/dist/cjs/ag-grid-plus/queryForm/schemaKey.js +64 -12
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +3 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +69 -106
- package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +3 -1
- package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +14 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +98 -110
- package/dist/cjs/ag-grid-plus/types.d.ts +6 -0
- package/dist/cjs/array-table/batchRemove.d.ts +36 -0
- package/dist/cjs/array-table/batchRemove.js +299 -0
- package/dist/cjs/array-table/cellFocusScope.js +44 -8
- package/dist/cjs/array-table/cellInteractionLock.d.ts +13 -0
- package/dist/cjs/array-table/cellInteractionLock.js +26 -0
- package/dist/cjs/array-table/hooks.d.ts +11 -6
- package/dist/cjs/array-table/hooks.js +138 -88
- package/dist/cjs/array-table/index.d.ts +8 -2
- package/dist/cjs/array-table/index.js +55 -32
- package/dist/cjs/array-table/indexColumn.d.ts +1 -1
- package/dist/cjs/array-table/indexColumn.js +3 -2
- package/dist/cjs/array-table/interface.d.ts +13 -1
- package/dist/cjs/array-table/preview.js +8 -0
- package/dist/cjs/array-table/readOnlyFormatters.d.ts +9 -1
- package/dist/cjs/array-table/readOnlyFormatters.js +41 -13
- package/dist/cjs/array-table/rowIdentity.d.ts +17 -0
- package/dist/cjs/array-table/rowIdentity.js +43 -0
- package/dist/cjs/array-table/sorting.d.ts +3 -0
- package/dist/cjs/array-table/sorting.js +46 -0
- package/dist/cjs/array-table/utils.js +146 -67
- package/dist/cjs/dialogSelect/index.d.ts +3 -0
- package/dist/cjs/dialogSelect/index.js +13 -3
- package/dist/cjs/editable/index.js +101 -139
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +14 -0
- package/dist/cjs/readPretty/arrayTable.js +29 -14
- package/dist/cjs/readPretty/formily.d.ts +1 -0
- package/dist/cjs/readPretty/formily.js +7 -0
- package/dist/cjs/readPretty/index.d.ts +1 -0
- package/dist/cjs/readPretty/index.js +7 -0
- package/dist/cjs/readPretty/schemaScope.d.ts +2 -0
- package/dist/cjs/readPretty/schemaScope.js +49 -0
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +151 -145
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +4 -4
- package/dist/esm/ag-grid-plus/interface.d.ts +8 -0
- package/dist/esm/ag-grid-plus/queryForm/index.d.ts +4 -0
- package/dist/esm/ag-grid-plus/queryForm/index.js +64 -55
- package/dist/esm/ag-grid-plus/queryForm/queryColumns.d.ts +8 -0
- package/dist/esm/ag-grid-plus/queryForm/queryColumns.js +46 -0
- package/dist/esm/ag-grid-plus/queryForm/schemaKey.d.ts +15 -8
- package/dist/esm/ag-grid-plus/queryForm/schemaKey.js +64 -12
- package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +3 -0
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +70 -107
- package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +3 -1
- package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +2 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +14 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +95 -110
- package/dist/esm/ag-grid-plus/types.d.ts +6 -0
- package/dist/esm/array-table/batchRemove.d.ts +36 -0
- package/dist/esm/array-table/batchRemove.js +289 -0
- package/dist/esm/array-table/cellFocusScope.js +45 -9
- package/dist/esm/array-table/cellInteractionLock.d.ts +13 -0
- package/dist/esm/array-table/cellInteractionLock.js +21 -0
- package/dist/esm/array-table/hooks.d.ts +11 -6
- package/dist/esm/array-table/hooks.js +139 -89
- package/dist/esm/array-table/index.d.ts +8 -2
- package/dist/esm/array-table/index.js +55 -32
- package/dist/esm/array-table/indexColumn.d.ts +1 -1
- package/dist/esm/array-table/indexColumn.js +3 -2
- package/dist/esm/array-table/interface.d.ts +13 -1
- package/dist/esm/array-table/preview.js +8 -0
- package/dist/esm/array-table/readOnlyFormatters.d.ts +9 -1
- package/dist/esm/array-table/readOnlyFormatters.js +41 -12
- package/dist/esm/array-table/rowIdentity.d.ts +17 -0
- package/dist/esm/array-table/rowIdentity.js +37 -0
- package/dist/esm/array-table/sorting.d.ts +3 -0
- package/dist/esm/array-table/sorting.js +40 -0
- package/dist/esm/array-table/utils.js +147 -68
- package/dist/esm/dialogSelect/index.d.ts +3 -0
- package/dist/esm/dialogSelect/index.js +13 -3
- package/dist/esm/editable/index.js +102 -140
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/readPretty/arrayTable.js +30 -13
- package/dist/esm/readPretty/formily.d.ts +1 -0
- package/dist/esm/readPretty/formily.js +1 -0
- package/dist/esm/readPretty/index.d.ts +1 -0
- package/dist/esm/readPretty/index.js +1 -0
- package/dist/esm/readPretty/schemaScope.d.ts +2 -0
- package/dist/esm/readPretty/schemaScope.js +42 -0
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +1 -1
|
@@ -8,6 +8,20 @@ import type { FlatColumnItem, OldColumnState } from './columnGroupTypes';
|
|
|
8
8
|
* 生成唯一 ID
|
|
9
9
|
*/
|
|
10
10
|
export declare const generateId: () => string;
|
|
11
|
+
/** 方案与 AG-Grid 使用相同的列标识规则。@author nokecy */
|
|
12
|
+
export declare function getColumnIdentity(column: {
|
|
13
|
+
colId?: string;
|
|
14
|
+
field?: string;
|
|
15
|
+
}): string | undefined;
|
|
16
|
+
/** 递归匹配业务列;仅对缺失标识的已存方案使用唯一原始标题恢复。@author nokecy */
|
|
17
|
+
export declare function findOriginalColumn(item: {
|
|
18
|
+
colId?: string;
|
|
19
|
+
field?: string;
|
|
20
|
+
originalHeaderName?: string;
|
|
21
|
+
headerName?: string;
|
|
22
|
+
}, definitions?: (ColDef | ColGroupDef)[]): ColDef | undefined;
|
|
23
|
+
/** 为列方案补齐业务列身份,保留用户的顺序、标题与布局设置。@author nokecy */
|
|
24
|
+
export declare function normalizeColumnConfig(items: FlatColumnItem[], definitions?: (ColDef | ColGroupDef)[]): FlatColumnItem[];
|
|
11
25
|
/**
|
|
12
26
|
* 去掉只做查询条件的列(hideInTable),含分组内的
|
|
13
27
|
* 这类列只进查询表单,不是表格列:列方案的还原、新增列检测都不能把它带进表格
|
|
@@ -7,13 +7,16 @@ exports.checkIsLastChild = checkIsLastChild;
|
|
|
7
7
|
exports.dropQueryOnlyItems = dropQueryOnlyItems;
|
|
8
8
|
exports.excludeQueryOnlyColumns = excludeQueryOnlyColumns;
|
|
9
9
|
exports.findLastDescendantIndex = findLastDescendantIndex;
|
|
10
|
+
exports.findOriginalColumn = findOriginalColumn;
|
|
10
11
|
exports.flatConfigToColumnState = flatConfigToColumnState;
|
|
11
12
|
exports.flatConfigToGridState = flatConfigToGridState;
|
|
12
13
|
exports.generateId = void 0;
|
|
14
|
+
exports.getColumnIdentity = getColumnIdentity;
|
|
13
15
|
exports.gridStateToFlatConfig = gridStateToFlatConfig;
|
|
14
16
|
exports.isOldSchemeData = isOldSchemeData;
|
|
15
17
|
exports.migrateOldScheme = migrateOldScheme;
|
|
16
18
|
exports.normalizeCellAlign = normalizeCellAlign;
|
|
19
|
+
exports.normalizeColumnConfig = normalizeColumnConfig;
|
|
17
20
|
exports.reorderItems = reorderItems;
|
|
18
21
|
var _lodash = require("lodash");
|
|
19
22
|
var _logger = require("../utils/logger");
|
|
@@ -40,6 +43,49 @@ var generateId = exports.generateId = function generateId() {
|
|
|
40
43
|
return (0, _lodash.uniqueId)('col_');
|
|
41
44
|
};
|
|
42
45
|
|
|
46
|
+
/** 方案与 AG-Grid 使用相同的列标识规则。@author nokecy */
|
|
47
|
+
function getColumnIdentity(column) {
|
|
48
|
+
return column.colId || column.field || undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** 递归匹配业务列;仅对缺失标识的已存方案使用唯一原始标题恢复。@author nokecy */
|
|
52
|
+
function findOriginalColumn(item, definitions) {
|
|
53
|
+
var columns = [];
|
|
54
|
+
var collect = function collect(defs) {
|
|
55
|
+
return defs.forEach(function (def) {
|
|
56
|
+
if ('children' in def && def.children) collect(def.children);else columns.push(def);
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
collect(definitions !== null && definitions !== void 0 ? definitions : []);
|
|
60
|
+
if (item.colId) return columns.find(function (column) {
|
|
61
|
+
return getColumnIdentity(column) === item.colId;
|
|
62
|
+
});
|
|
63
|
+
var title = item.originalHeaderName || item.headerName;
|
|
64
|
+
var candidates = item.field ? columns.filter(function (column) {
|
|
65
|
+
return column.field === item.field;
|
|
66
|
+
}) : columns.filter(function (column) {
|
|
67
|
+
return !!getColumnIdentity(column) && !!title && column.headerName === title;
|
|
68
|
+
});
|
|
69
|
+
if (candidates.length === 1) return candidates[0];
|
|
70
|
+
var named = candidates.filter(function (column) {
|
|
71
|
+
return !!title && column.headerName === title;
|
|
72
|
+
});
|
|
73
|
+
return named.length === 1 ? named[0] : undefined;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** 为列方案补齐业务列身份,保留用户的顺序、标题与布局设置。@author nokecy */
|
|
77
|
+
function normalizeColumnConfig(items, definitions) {
|
|
78
|
+
return items.map(function (item) {
|
|
79
|
+
if (item.type !== 'column') return item;
|
|
80
|
+
var original = findOriginalColumn(item, definitions);
|
|
81
|
+
return original ? _objectSpread(_objectSpread({}, item), {}, {
|
|
82
|
+
colId: original.colId,
|
|
83
|
+
field: original.field,
|
|
84
|
+
originalHeaderName: original.headerName || item.originalHeaderName
|
|
85
|
+
}) : item;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
43
89
|
/**
|
|
44
90
|
* 去掉只做查询条件的列(hideInTable),含分组内的
|
|
45
91
|
* 这类列只进查询表单,不是表格列:列方案的还原、新增列检测都不能把它带进表格
|
|
@@ -64,12 +110,12 @@ function dropQueryOnlyItems(flatConfig, originalColumnDefs) {
|
|
|
64
110
|
var queryOnlyFields = new Set();
|
|
65
111
|
var collect = function collect(defs) {
|
|
66
112
|
return defs.forEach(function (def) {
|
|
67
|
-
if ('children' in def && def.children) collect(def.children);else if (def.hideInTable && def
|
|
113
|
+
if ('children' in def && def.children) collect(def.children);else if (def.hideInTable && getColumnIdentity(def)) queryOnlyFields.add(getColumnIdentity(def));
|
|
68
114
|
});
|
|
69
115
|
};
|
|
70
116
|
collect(originalColumnDefs !== null && originalColumnDefs !== void 0 ? originalColumnDefs : []);
|
|
71
117
|
return flatConfig.filter(function (item) {
|
|
72
|
-
return item.type !== 'column' || !item
|
|
118
|
+
return item.type !== 'column' || !getColumnIdentity(item) || !queryOnlyFields.has(getColumnIdentity(item));
|
|
73
119
|
});
|
|
74
120
|
}
|
|
75
121
|
|
|
@@ -85,37 +131,6 @@ function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
85
131
|
var result = [];
|
|
86
132
|
var order = 0;
|
|
87
133
|
|
|
88
|
-
/**
|
|
89
|
-
* 从原始列定义中查找指定字段的原始 headerName
|
|
90
|
-
*/
|
|
91
|
-
function findOriginalHeaderName(field, defs) {
|
|
92
|
-
if (!defs || !field) return undefined;
|
|
93
|
-
var _iterator = _createForOfIteratorHelper(defs),
|
|
94
|
-
_step;
|
|
95
|
-
try {
|
|
96
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
97
|
-
var def = _step.value;
|
|
98
|
-
// 检查是否是分组
|
|
99
|
-
if ('children' in def && def.children) {
|
|
100
|
-
// 递归查找分组内的列
|
|
101
|
-
var found = findOriginalHeaderName(field, def.children);
|
|
102
|
-
if (found) return found;
|
|
103
|
-
} else {
|
|
104
|
-
// 检查是否是目标列
|
|
105
|
-
var colDef = def;
|
|
106
|
-
if (colDef.field === field) {
|
|
107
|
-
return colDef.headerName;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
} catch (err) {
|
|
112
|
-
_iterator.e(err);
|
|
113
|
-
} finally {
|
|
114
|
-
_iterator.f();
|
|
115
|
-
}
|
|
116
|
-
return undefined;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
134
|
/**
|
|
120
135
|
* 递归遍历列定义树
|
|
121
136
|
*/
|
|
@@ -140,10 +155,11 @@ function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
140
155
|
// 递归处理子节点
|
|
141
156
|
traverse(item.children, level + 1, groupId);
|
|
142
157
|
} else {
|
|
158
|
+
var _findOriginalColumn;
|
|
143
159
|
// 这是一个列节点
|
|
144
160
|
var _headerName = item.headerName || item.field || '未命名列';
|
|
145
161
|
// 从原始列定义中获取 originalHeaderName,如果没有则使用当前 headerName
|
|
146
|
-
var originalHeaderName =
|
|
162
|
+
var originalHeaderName = ((_findOriginalColumn = findOriginalColumn(item, originalColumnDefs)) === null || _findOriginalColumn === void 0 ? void 0 : _findOriginalColumn.headerName) || _headerName;
|
|
147
163
|
result.push({
|
|
148
164
|
id: generateId(),
|
|
149
165
|
type: 'column',
|
|
@@ -151,6 +167,7 @@ function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
151
167
|
level: level,
|
|
152
168
|
order: order++,
|
|
153
169
|
field: item.field,
|
|
170
|
+
colId: item.colId,
|
|
154
171
|
headerName: _headerName,
|
|
155
172
|
originalHeaderName: originalHeaderName,
|
|
156
173
|
// 从原始定义获取,或使用当前值
|
|
@@ -183,50 +200,19 @@ function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
183
200
|
*/
|
|
184
201
|
function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
185
202
|
// 只做查询条件的列不进表格:方案里存过的剔除,也不当新增列补回 @author nokecy
|
|
186
|
-
flatConfig = dropQueryOnlyItems(flatConfig, originalColumnDefs);
|
|
203
|
+
flatConfig = dropQueryOnlyItems(normalizeColumnConfig(flatConfig, originalColumnDefs), originalColumnDefs);
|
|
187
204
|
originalColumnDefs = excludeQueryOnlyColumns(originalColumnDefs);
|
|
188
205
|
|
|
189
|
-
/**
|
|
190
|
-
* 从原始列定义中查找指定字段的列定义(支持递归查找分组内的列)
|
|
191
|
-
*/
|
|
192
|
-
function findOriginalColDef(field, defs) {
|
|
193
|
-
if (!defs) return undefined;
|
|
194
|
-
var _iterator2 = _createForOfIteratorHelper(defs),
|
|
195
|
-
_step2;
|
|
196
|
-
try {
|
|
197
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
198
|
-
var def = _step2.value;
|
|
199
|
-
// 检查是否是分组
|
|
200
|
-
if ('children' in def && def.children) {
|
|
201
|
-
// 递归查找分组内的列
|
|
202
|
-
var found = findOriginalColDef(field, def.children);
|
|
203
|
-
if (found) return found;
|
|
204
|
-
} else {
|
|
205
|
-
// 检查是否是目标列(使用类型守卫)
|
|
206
|
-
var colDef = def;
|
|
207
|
-
if (colDef.field === field) {
|
|
208
|
-
return colDef;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
} catch (err) {
|
|
213
|
-
_iterator2.e(err);
|
|
214
|
-
} finally {
|
|
215
|
-
_iterator2.f();
|
|
216
|
-
}
|
|
217
|
-
return undefined;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
206
|
/**
|
|
221
207
|
* 递归收集所有列定义(包括分组内的列)
|
|
222
208
|
*/
|
|
223
209
|
function collectAllColumns(defs) {
|
|
224
210
|
var columns = [];
|
|
225
|
-
var
|
|
226
|
-
|
|
211
|
+
var _iterator = _createForOfIteratorHelper(defs),
|
|
212
|
+
_step;
|
|
227
213
|
try {
|
|
228
|
-
for (
|
|
229
|
-
var def =
|
|
214
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
215
|
+
var def = _step.value;
|
|
230
216
|
if ('children' in def && def.children) {
|
|
231
217
|
columns.push.apply(columns, _toConsumableArray(collectAllColumns(def.children)));
|
|
232
218
|
} else {
|
|
@@ -234,9 +220,9 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
234
220
|
}
|
|
235
221
|
}
|
|
236
222
|
} catch (err) {
|
|
237
|
-
|
|
223
|
+
_iterator.e(err);
|
|
238
224
|
} finally {
|
|
239
|
-
|
|
225
|
+
_iterator.f();
|
|
240
226
|
}
|
|
241
227
|
return columns;
|
|
242
228
|
}
|
|
@@ -264,7 +250,7 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
264
250
|
} else {
|
|
265
251
|
// 构建列节点
|
|
266
252
|
// 查找原始列定义
|
|
267
|
-
var originalDef =
|
|
253
|
+
var originalDef = findOriginalColumn(item, originalColumnDefs);
|
|
268
254
|
|
|
269
255
|
// 如果找到原始列定义,合并所有属性
|
|
270
256
|
if (originalDef) {
|
|
@@ -284,6 +270,7 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
284
270
|
// 如果没有找到原始定义,使用基本属性
|
|
285
271
|
return {
|
|
286
272
|
field: item.field,
|
|
273
|
+
colId: item.colId,
|
|
287
274
|
headerName: item.headerName,
|
|
288
275
|
width: item.width,
|
|
289
276
|
hide: item.hide,
|
|
@@ -302,9 +289,9 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
302
289
|
if (originalColumnDefs && originalColumnDefs.length > 0) {
|
|
303
290
|
// 收集 flatConfig 中所有已存在的 field
|
|
304
291
|
var existingFields = new Set(flatConfig.filter(function (item) {
|
|
305
|
-
return item.type === 'column' && item
|
|
292
|
+
return item.type === 'column' && getColumnIdentity(item);
|
|
306
293
|
}).map(function (item) {
|
|
307
|
-
return item
|
|
294
|
+
return getColumnIdentity(item);
|
|
308
295
|
}));
|
|
309
296
|
|
|
310
297
|
// 收集原始列定义中所有的列(保留顺序索引)
|
|
@@ -313,7 +300,7 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
313
300
|
// 找出新增的列及其在原始定义中的索引
|
|
314
301
|
var newColumnsWithIndex = [];
|
|
315
302
|
allOriginalColumns.forEach(function (col, index) {
|
|
316
|
-
if (col
|
|
303
|
+
if (getColumnIdentity(col) && !existingFields.has(getColumnIdentity(col))) {
|
|
317
304
|
newColumnsWithIndex.push({
|
|
318
305
|
col: col,
|
|
319
306
|
originalIndex: index
|
|
@@ -328,23 +315,23 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
328
315
|
});
|
|
329
316
|
|
|
330
317
|
// 将新增列插入到正确位置(基于其在原始定义中的相对位置)
|
|
331
|
-
var
|
|
332
|
-
|
|
318
|
+
var _iterator2 = _createForOfIteratorHelper(newColumnsWithIndex),
|
|
319
|
+
_step2;
|
|
333
320
|
try {
|
|
334
|
-
for (
|
|
335
|
-
var
|
|
336
|
-
col =
|
|
337
|
-
originalIndex =
|
|
321
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
322
|
+
var _step2$value = _step2.value,
|
|
323
|
+
col = _step2$value.col,
|
|
324
|
+
originalIndex = _step2$value.originalIndex;
|
|
338
325
|
var insertIndex = 0; // 默认插入到开头
|
|
339
326
|
|
|
340
327
|
// 从该列之前的列开始查找,找到第一个在 result 中存在的列
|
|
341
328
|
var _loop = function _loop() {
|
|
342
329
|
var prevCol = allOriginalColumns[i];
|
|
343
|
-
if (!prevCol
|
|
330
|
+
if (!getColumnIdentity(prevCol)) return 0; // continue
|
|
344
331
|
|
|
345
332
|
// 在 result 中找到这个前置列的位置
|
|
346
333
|
var prevIndexInResult = result.findIndex(function (r) {
|
|
347
|
-
return r
|
|
334
|
+
return getColumnIdentity(r) === getColumnIdentity(prevCol);
|
|
348
335
|
});
|
|
349
336
|
if (prevIndexInResult !== -1) {
|
|
350
337
|
insertIndex = prevIndexInResult + 1;
|
|
@@ -362,9 +349,9 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
362
349
|
result.splice(insertIndex, 0, col);
|
|
363
350
|
}
|
|
364
351
|
} catch (err) {
|
|
365
|
-
|
|
352
|
+
_iterator2.e(err);
|
|
366
353
|
} finally {
|
|
367
|
-
|
|
354
|
+
_iterator2.f();
|
|
368
355
|
}
|
|
369
356
|
}
|
|
370
357
|
}
|
|
@@ -409,6 +396,7 @@ function migrateOldScheme(oldState) {
|
|
|
409
396
|
level: col.groupName ? 1 : 0,
|
|
410
397
|
order: order++,
|
|
411
398
|
field: col.field,
|
|
399
|
+
colId: col.colId,
|
|
412
400
|
headerName: col.headerName,
|
|
413
401
|
width: col.width,
|
|
414
402
|
hide: col.hide,
|
|
@@ -504,7 +492,7 @@ function isOldSchemeData(data) {
|
|
|
504
492
|
*/
|
|
505
493
|
function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
506
494
|
// 只做查询条件的列不进表格:方案里存过的剔除,也不当新增列补回 @author nokecy
|
|
507
|
-
flatConfig = dropQueryOnlyItems(flatConfig, originalColumnDefs);
|
|
495
|
+
flatConfig = dropQueryOnlyItems(normalizeColumnConfig(flatConfig, originalColumnDefs), originalColumnDefs);
|
|
508
496
|
originalColumnDefs = excludeQueryOnlyColumns(originalColumnDefs);
|
|
509
497
|
|
|
510
498
|
/**
|
|
@@ -512,11 +500,11 @@ function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
512
500
|
*/
|
|
513
501
|
function collectAllColumns(defs) {
|
|
514
502
|
var columns = [];
|
|
515
|
-
var
|
|
516
|
-
|
|
503
|
+
var _iterator3 = _createForOfIteratorHelper(defs),
|
|
504
|
+
_step3;
|
|
517
505
|
try {
|
|
518
|
-
for (
|
|
519
|
-
var def =
|
|
506
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
507
|
+
var def = _step3.value;
|
|
520
508
|
if ('children' in def && def.children) {
|
|
521
509
|
columns.push.apply(columns, _toConsumableArray(collectAllColumns(def.children)));
|
|
522
510
|
} else {
|
|
@@ -524,9 +512,9 @@ function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
524
512
|
}
|
|
525
513
|
}
|
|
526
514
|
} catch (err) {
|
|
527
|
-
|
|
515
|
+
_iterator3.e(err);
|
|
528
516
|
} finally {
|
|
529
|
-
|
|
517
|
+
_iterator3.f();
|
|
530
518
|
}
|
|
531
519
|
return columns;
|
|
532
520
|
}
|
|
@@ -534,14 +522,14 @@ function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
534
522
|
return item.type === 'column';
|
|
535
523
|
}) // 只处理列节点,分组不在 columnState 中
|
|
536
524
|
.filter(function (item) {
|
|
537
|
-
return item
|
|
538
|
-
}) //
|
|
525
|
+
return getColumnIdentity(item);
|
|
526
|
+
}) // 控件列可只有 colId。@author nokecy
|
|
539
527
|
.sort(function (a, b) {
|
|
540
528
|
return a.order - b.order;
|
|
541
529
|
}) // 按 order 字段排序
|
|
542
530
|
.map(function (item) {
|
|
543
531
|
var state = {
|
|
544
|
-
colId: item
|
|
532
|
+
colId: getColumnIdentity(item)
|
|
545
533
|
};
|
|
546
534
|
|
|
547
535
|
// 只设置有值的属性,undefined 表示不改变该属性
|
|
@@ -560,9 +548,9 @@ function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
560
548
|
if (originalColumnDefs && originalColumnDefs.length > 0) {
|
|
561
549
|
// 收集 flatConfig 中所有已存在的 field
|
|
562
550
|
var existingFields = new Set(flatConfig.filter(function (item) {
|
|
563
|
-
return item.type === 'column' && item
|
|
551
|
+
return item.type === 'column' && getColumnIdentity(item);
|
|
564
552
|
}).map(function (item) {
|
|
565
|
-
return item
|
|
553
|
+
return getColumnIdentity(item);
|
|
566
554
|
}));
|
|
567
555
|
|
|
568
556
|
// 收集原始列定义中所有的列(保留顺序索引)
|
|
@@ -571,7 +559,7 @@ function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
571
559
|
// 找出新增的列及其在原始定义中的索引
|
|
572
560
|
var newColumnsWithIndex = [];
|
|
573
561
|
allOriginalColumns.forEach(function (col, index) {
|
|
574
|
-
if (col
|
|
562
|
+
if (getColumnIdentity(col) && !existingFields.has(getColumnIdentity(col))) {
|
|
575
563
|
newColumnsWithIndex.push({
|
|
576
564
|
col: col,
|
|
577
565
|
originalIndex: index
|
|
@@ -586,23 +574,23 @@ function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
586
574
|
});
|
|
587
575
|
|
|
588
576
|
// 将新增列插入到正确位置(基于其在原始定义中的相对位置)
|
|
589
|
-
var
|
|
590
|
-
|
|
577
|
+
var _iterator4 = _createForOfIteratorHelper(newColumnsWithIndex),
|
|
578
|
+
_step4;
|
|
591
579
|
try {
|
|
592
|
-
for (
|
|
593
|
-
var
|
|
594
|
-
col =
|
|
595
|
-
originalIndex =
|
|
580
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
581
|
+
var _step4$value = _step4.value,
|
|
582
|
+
col = _step4$value.col,
|
|
583
|
+
originalIndex = _step4$value.originalIndex;
|
|
596
584
|
var insertIndex = 0; // 默认插入到开头
|
|
597
585
|
|
|
598
586
|
// 从该列之前的列开始查找,找到第一个在 result 中存在的列
|
|
599
587
|
var _loop2 = function _loop2() {
|
|
600
588
|
var prevCol = allOriginalColumns[i];
|
|
601
|
-
if (!prevCol
|
|
589
|
+
if (!getColumnIdentity(prevCol)) return 0; // continue
|
|
602
590
|
|
|
603
591
|
// 在 result 中找到这个前置列的位置
|
|
604
592
|
var prevIndexInResult = result.findIndex(function (r) {
|
|
605
|
-
return r.colId === prevCol
|
|
593
|
+
return r.colId === getColumnIdentity(prevCol);
|
|
606
594
|
});
|
|
607
595
|
if (prevIndexInResult !== -1) {
|
|
608
596
|
insertIndex = prevIndexInResult + 1;
|
|
@@ -618,14 +606,14 @@ function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
618
606
|
|
|
619
607
|
// 在 insertIndex 位置插入新列状态
|
|
620
608
|
result.splice(insertIndex, 0, {
|
|
621
|
-
colId: col
|
|
609
|
+
colId: getColumnIdentity(col)
|
|
622
610
|
// 新增列使用默认状态,不设置 hide/width 等
|
|
623
611
|
});
|
|
624
612
|
}
|
|
625
613
|
} catch (err) {
|
|
626
|
-
|
|
614
|
+
_iterator4.e(err);
|
|
627
615
|
} finally {
|
|
628
|
-
|
|
616
|
+
_iterator4.f();
|
|
629
617
|
}
|
|
630
618
|
}
|
|
631
619
|
}
|
|
@@ -128,6 +128,8 @@ export interface ExtendedColDef extends ColDef {
|
|
|
128
128
|
hideInSearch?: boolean;
|
|
129
129
|
/** 查询字段名 (不同于显示字段) */
|
|
130
130
|
queryField?: string;
|
|
131
|
+
/** 查询区独立标题;优先于列方案中的表头名称。@author nokecy */
|
|
132
|
+
searchTitle?: string;
|
|
131
133
|
/** 是否文本缩略显示并使用 tooltip */
|
|
132
134
|
ellipsis?: boolean;
|
|
133
135
|
/** 枚举值配置 */
|
|
@@ -142,6 +144,8 @@ export interface ExtendedColDef extends ColDef {
|
|
|
142
144
|
searchComponent?: ReactNode | ((props: any) => JSX.Element);
|
|
143
145
|
/** 搜索组件属性 */
|
|
144
146
|
searchComponentProps?: any;
|
|
147
|
+
/** 查询组件的枚举数据源。@author nokecy */
|
|
148
|
+
enum?: any[];
|
|
145
149
|
/** 搜索表单排序顺序 */
|
|
146
150
|
searchSort?: number;
|
|
147
151
|
/** 列计算类型 */
|
|
@@ -208,6 +212,8 @@ export interface QueryFormItem {
|
|
|
208
212
|
field: string;
|
|
209
213
|
/** 表头名称 */
|
|
210
214
|
headerName: string;
|
|
215
|
+
/** 查询区独立标题。@author nokecy */
|
|
216
|
+
searchTitle?: string;
|
|
211
217
|
/** 排序顺序 */
|
|
212
218
|
order: number;
|
|
213
219
|
/** 是否精确查询 */
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ArrayField } from '@formily/core';
|
|
3
|
+
import type { GridApi, IRowNode, SelectionChangedEvent } from 'ag-grid-community';
|
|
4
|
+
import type { ArrayTableProps, ObservableColumnSource } from './interface';
|
|
5
|
+
/** 标准删除控件在行内的字段路径与静态约束。@author nokecy */
|
|
6
|
+
export type RemovalAction = {
|
|
7
|
+
path: string[];
|
|
8
|
+
schemas: any[];
|
|
9
|
+
column: ObservableColumnSource;
|
|
10
|
+
};
|
|
11
|
+
/** 收集标准删除入口,保留列级显隐约束,不把其他业务按钮当成删除。@author nokecy */
|
|
12
|
+
export declare function collectRemovalActions(sources: ObservableColumnSource[]): RemovalAction[];
|
|
13
|
+
/**
|
|
14
|
+
* 与行内删除共用字段的运行时权限;未挂载的普通行采用静态规则。
|
|
15
|
+
* 含动态权限且尚未求值的行保持不可删除,避免绕过业务禁用条件。@author nokecy
|
|
16
|
+
*/
|
|
17
|
+
export declare function findRemovalAction(field: ArrayField, index: number, actions: RemovalAction[]): RemovalAction | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* 把选择时的稳定行标识转换为当前表单索引;确认前全部复核,倒序删除保持数组地址正确。
|
|
20
|
+
* 返回 false 表示所选行已删除或变为不可删除,整个批次不执行。@author nokecy
|
|
21
|
+
*/
|
|
22
|
+
export declare function removeSelectedRows(field: ArrayField, ids: string[], actions: RemovalAction[], getId: (row: any) => string, onRemove?: (index: number) => void, event?: React.MouseEvent): boolean;
|
|
23
|
+
/** 公共明细表格的勾选及批量删除,沿用业务行权限、行标识与删除通知。@author nokecy */
|
|
24
|
+
export declare function useArrayTableBatchRemove(field: ArrayField, sources: ObservableColumnSource[], props: ArrayTableProps, apiRef: React.MutableRefObject<GridApi | undefined>, getId: (row: any) => string): {
|
|
25
|
+
rowSelection: "multiple" | "single" | import("ag-grid-community/dist/types/src/entities/gridOptions").SingleRowSelectionOptions<any, any> | import("ag-grid-community/dist/types/src/entities/gridOptions").MultiRowSelectionOptions<any, any> | {
|
|
26
|
+
isRowSelectable: (node: IRowNode) => boolean;
|
|
27
|
+
headerCheckbox?: boolean | undefined;
|
|
28
|
+
selectAll?: "filtered" | undefined;
|
|
29
|
+
mode: "singleRow" | "multiRow";
|
|
30
|
+
checkboxes: boolean;
|
|
31
|
+
enableClickSelection: boolean;
|
|
32
|
+
} | undefined;
|
|
33
|
+
selectionColumnDef: import("ag-grid-community").SelectionColumnDef | undefined;
|
|
34
|
+
onSelectionChanged: (event: SelectionChangedEvent) => void;
|
|
35
|
+
toolbar: React.JSX.Element;
|
|
36
|
+
};
|