@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
|
* 这类列只进查询表单,不是表格列:列方案的还原、新增列检测都不能把它带进表格
|
|
@@ -25,6 +25,49 @@ export var generateId = function generateId() {
|
|
|
25
25
|
return uniqueId('col_');
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
+
/** 方案与 AG-Grid 使用相同的列标识规则。@author nokecy */
|
|
29
|
+
export function getColumnIdentity(column) {
|
|
30
|
+
return column.colId || column.field || undefined;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** 递归匹配业务列;仅对缺失标识的已存方案使用唯一原始标题恢复。@author nokecy */
|
|
34
|
+
export function findOriginalColumn(item, definitions) {
|
|
35
|
+
var columns = [];
|
|
36
|
+
var collect = function collect(defs) {
|
|
37
|
+
return defs.forEach(function (def) {
|
|
38
|
+
if ('children' in def && def.children) collect(def.children);else columns.push(def);
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
collect(definitions !== null && definitions !== void 0 ? definitions : []);
|
|
42
|
+
if (item.colId) return columns.find(function (column) {
|
|
43
|
+
return getColumnIdentity(column) === item.colId;
|
|
44
|
+
});
|
|
45
|
+
var title = item.originalHeaderName || item.headerName;
|
|
46
|
+
var candidates = item.field ? columns.filter(function (column) {
|
|
47
|
+
return column.field === item.field;
|
|
48
|
+
}) : columns.filter(function (column) {
|
|
49
|
+
return !!getColumnIdentity(column) && !!title && column.headerName === title;
|
|
50
|
+
});
|
|
51
|
+
if (candidates.length === 1) return candidates[0];
|
|
52
|
+
var named = candidates.filter(function (column) {
|
|
53
|
+
return !!title && column.headerName === title;
|
|
54
|
+
});
|
|
55
|
+
return named.length === 1 ? named[0] : undefined;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** 为列方案补齐业务列身份,保留用户的顺序、标题与布局设置。@author nokecy */
|
|
59
|
+
export function normalizeColumnConfig(items, definitions) {
|
|
60
|
+
return items.map(function (item) {
|
|
61
|
+
if (item.type !== 'column') return item;
|
|
62
|
+
var original = findOriginalColumn(item, definitions);
|
|
63
|
+
return original ? _objectSpread(_objectSpread({}, item), {}, {
|
|
64
|
+
colId: original.colId,
|
|
65
|
+
field: original.field,
|
|
66
|
+
originalHeaderName: original.headerName || item.originalHeaderName
|
|
67
|
+
}) : item;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
28
71
|
/**
|
|
29
72
|
* 去掉只做查询条件的列(hideInTable),含分组内的
|
|
30
73
|
* 这类列只进查询表单,不是表格列:列方案的还原、新增列检测都不能把它带进表格
|
|
@@ -49,12 +92,12 @@ export function dropQueryOnlyItems(flatConfig, originalColumnDefs) {
|
|
|
49
92
|
var queryOnlyFields = new Set();
|
|
50
93
|
var collect = function collect(defs) {
|
|
51
94
|
return defs.forEach(function (def) {
|
|
52
|
-
if ('children' in def && def.children) collect(def.children);else if (def.hideInTable && def
|
|
95
|
+
if ('children' in def && def.children) collect(def.children);else if (def.hideInTable && getColumnIdentity(def)) queryOnlyFields.add(getColumnIdentity(def));
|
|
53
96
|
});
|
|
54
97
|
};
|
|
55
98
|
collect(originalColumnDefs !== null && originalColumnDefs !== void 0 ? originalColumnDefs : []);
|
|
56
99
|
return flatConfig.filter(function (item) {
|
|
57
|
-
return item.type !== 'column' || !item
|
|
100
|
+
return item.type !== 'column' || !getColumnIdentity(item) || !queryOnlyFields.has(getColumnIdentity(item));
|
|
58
101
|
});
|
|
59
102
|
}
|
|
60
103
|
|
|
@@ -70,37 +113,6 @@ export function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
70
113
|
var result = [];
|
|
71
114
|
var order = 0;
|
|
72
115
|
|
|
73
|
-
/**
|
|
74
|
-
* 从原始列定义中查找指定字段的原始 headerName
|
|
75
|
-
*/
|
|
76
|
-
function findOriginalHeaderName(field, defs) {
|
|
77
|
-
if (!defs || !field) return undefined;
|
|
78
|
-
var _iterator = _createForOfIteratorHelper(defs),
|
|
79
|
-
_step;
|
|
80
|
-
try {
|
|
81
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
82
|
-
var def = _step.value;
|
|
83
|
-
// 检查是否是分组
|
|
84
|
-
if ('children' in def && def.children) {
|
|
85
|
-
// 递归查找分组内的列
|
|
86
|
-
var found = findOriginalHeaderName(field, def.children);
|
|
87
|
-
if (found) return found;
|
|
88
|
-
} else {
|
|
89
|
-
// 检查是否是目标列
|
|
90
|
-
var colDef = def;
|
|
91
|
-
if (colDef.field === field) {
|
|
92
|
-
return colDef.headerName;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
} catch (err) {
|
|
97
|
-
_iterator.e(err);
|
|
98
|
-
} finally {
|
|
99
|
-
_iterator.f();
|
|
100
|
-
}
|
|
101
|
-
return undefined;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
116
|
/**
|
|
105
117
|
* 递归遍历列定义树
|
|
106
118
|
*/
|
|
@@ -125,10 +137,11 @@ export function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
125
137
|
// 递归处理子节点
|
|
126
138
|
traverse(item.children, level + 1, groupId);
|
|
127
139
|
} else {
|
|
140
|
+
var _findOriginalColumn;
|
|
128
141
|
// 这是一个列节点
|
|
129
142
|
var _headerName = item.headerName || item.field || '未命名列';
|
|
130
143
|
// 从原始列定义中获取 originalHeaderName,如果没有则使用当前 headerName
|
|
131
|
-
var originalHeaderName =
|
|
144
|
+
var originalHeaderName = ((_findOriginalColumn = findOriginalColumn(item, originalColumnDefs)) === null || _findOriginalColumn === void 0 ? void 0 : _findOriginalColumn.headerName) || _headerName;
|
|
132
145
|
result.push({
|
|
133
146
|
id: generateId(),
|
|
134
147
|
type: 'column',
|
|
@@ -136,6 +149,7 @@ export function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
136
149
|
level: level,
|
|
137
150
|
order: order++,
|
|
138
151
|
field: item.field,
|
|
152
|
+
colId: item.colId,
|
|
139
153
|
headerName: _headerName,
|
|
140
154
|
originalHeaderName: originalHeaderName,
|
|
141
155
|
// 从原始定义获取,或使用当前值
|
|
@@ -168,50 +182,19 @@ export function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
|
|
|
168
182
|
*/
|
|
169
183
|
export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
170
184
|
// 只做查询条件的列不进表格:方案里存过的剔除,也不当新增列补回 @author nokecy
|
|
171
|
-
flatConfig = dropQueryOnlyItems(flatConfig, originalColumnDefs);
|
|
185
|
+
flatConfig = dropQueryOnlyItems(normalizeColumnConfig(flatConfig, originalColumnDefs), originalColumnDefs);
|
|
172
186
|
originalColumnDefs = excludeQueryOnlyColumns(originalColumnDefs);
|
|
173
187
|
|
|
174
|
-
/**
|
|
175
|
-
* 从原始列定义中查找指定字段的列定义(支持递归查找分组内的列)
|
|
176
|
-
*/
|
|
177
|
-
function findOriginalColDef(field, defs) {
|
|
178
|
-
if (!defs) return undefined;
|
|
179
|
-
var _iterator2 = _createForOfIteratorHelper(defs),
|
|
180
|
-
_step2;
|
|
181
|
-
try {
|
|
182
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
183
|
-
var def = _step2.value;
|
|
184
|
-
// 检查是否是分组
|
|
185
|
-
if ('children' in def && def.children) {
|
|
186
|
-
// 递归查找分组内的列
|
|
187
|
-
var found = findOriginalColDef(field, def.children);
|
|
188
|
-
if (found) return found;
|
|
189
|
-
} else {
|
|
190
|
-
// 检查是否是目标列(使用类型守卫)
|
|
191
|
-
var colDef = def;
|
|
192
|
-
if (colDef.field === field) {
|
|
193
|
-
return colDef;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
} catch (err) {
|
|
198
|
-
_iterator2.e(err);
|
|
199
|
-
} finally {
|
|
200
|
-
_iterator2.f();
|
|
201
|
-
}
|
|
202
|
-
return undefined;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
188
|
/**
|
|
206
189
|
* 递归收集所有列定义(包括分组内的列)
|
|
207
190
|
*/
|
|
208
191
|
function collectAllColumns(defs) {
|
|
209
192
|
var columns = [];
|
|
210
|
-
var
|
|
211
|
-
|
|
193
|
+
var _iterator = _createForOfIteratorHelper(defs),
|
|
194
|
+
_step;
|
|
212
195
|
try {
|
|
213
|
-
for (
|
|
214
|
-
var def =
|
|
196
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
197
|
+
var def = _step.value;
|
|
215
198
|
if ('children' in def && def.children) {
|
|
216
199
|
columns.push.apply(columns, _toConsumableArray(collectAllColumns(def.children)));
|
|
217
200
|
} else {
|
|
@@ -219,9 +202,9 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
219
202
|
}
|
|
220
203
|
}
|
|
221
204
|
} catch (err) {
|
|
222
|
-
|
|
205
|
+
_iterator.e(err);
|
|
223
206
|
} finally {
|
|
224
|
-
|
|
207
|
+
_iterator.f();
|
|
225
208
|
}
|
|
226
209
|
return columns;
|
|
227
210
|
}
|
|
@@ -249,7 +232,7 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
249
232
|
} else {
|
|
250
233
|
// 构建列节点
|
|
251
234
|
// 查找原始列定义
|
|
252
|
-
var originalDef =
|
|
235
|
+
var originalDef = findOriginalColumn(item, originalColumnDefs);
|
|
253
236
|
|
|
254
237
|
// 如果找到原始列定义,合并所有属性
|
|
255
238
|
if (originalDef) {
|
|
@@ -269,6 +252,7 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
269
252
|
// 如果没有找到原始定义,使用基本属性
|
|
270
253
|
return {
|
|
271
254
|
field: item.field,
|
|
255
|
+
colId: item.colId,
|
|
272
256
|
headerName: item.headerName,
|
|
273
257
|
width: item.width,
|
|
274
258
|
hide: item.hide,
|
|
@@ -287,9 +271,9 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
287
271
|
if (originalColumnDefs && originalColumnDefs.length > 0) {
|
|
288
272
|
// 收集 flatConfig 中所有已存在的 field
|
|
289
273
|
var existingFields = new Set(flatConfig.filter(function (item) {
|
|
290
|
-
return item.type === 'column' && item
|
|
274
|
+
return item.type === 'column' && getColumnIdentity(item);
|
|
291
275
|
}).map(function (item) {
|
|
292
|
-
return item
|
|
276
|
+
return getColumnIdentity(item);
|
|
293
277
|
}));
|
|
294
278
|
|
|
295
279
|
// 收集原始列定义中所有的列(保留顺序索引)
|
|
@@ -298,7 +282,7 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
298
282
|
// 找出新增的列及其在原始定义中的索引
|
|
299
283
|
var newColumnsWithIndex = [];
|
|
300
284
|
allOriginalColumns.forEach(function (col, index) {
|
|
301
|
-
if (col
|
|
285
|
+
if (getColumnIdentity(col) && !existingFields.has(getColumnIdentity(col))) {
|
|
302
286
|
newColumnsWithIndex.push({
|
|
303
287
|
col: col,
|
|
304
288
|
originalIndex: index
|
|
@@ -313,23 +297,23 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
313
297
|
});
|
|
314
298
|
|
|
315
299
|
// 将新增列插入到正确位置(基于其在原始定义中的相对位置)
|
|
316
|
-
var
|
|
317
|
-
|
|
300
|
+
var _iterator2 = _createForOfIteratorHelper(newColumnsWithIndex),
|
|
301
|
+
_step2;
|
|
318
302
|
try {
|
|
319
|
-
for (
|
|
320
|
-
var
|
|
321
|
-
col =
|
|
322
|
-
originalIndex =
|
|
303
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
304
|
+
var _step2$value = _step2.value,
|
|
305
|
+
col = _step2$value.col,
|
|
306
|
+
originalIndex = _step2$value.originalIndex;
|
|
323
307
|
var insertIndex = 0; // 默认插入到开头
|
|
324
308
|
|
|
325
309
|
// 从该列之前的列开始查找,找到第一个在 result 中存在的列
|
|
326
310
|
var _loop = function _loop() {
|
|
327
311
|
var prevCol = allOriginalColumns[i];
|
|
328
|
-
if (!prevCol
|
|
312
|
+
if (!getColumnIdentity(prevCol)) return 0; // continue
|
|
329
313
|
|
|
330
314
|
// 在 result 中找到这个前置列的位置
|
|
331
315
|
var prevIndexInResult = result.findIndex(function (r) {
|
|
332
|
-
return r
|
|
316
|
+
return getColumnIdentity(r) === getColumnIdentity(prevCol);
|
|
333
317
|
});
|
|
334
318
|
if (prevIndexInResult !== -1) {
|
|
335
319
|
insertIndex = prevIndexInResult + 1;
|
|
@@ -347,9 +331,9 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
|
|
|
347
331
|
result.splice(insertIndex, 0, col);
|
|
348
332
|
}
|
|
349
333
|
} catch (err) {
|
|
350
|
-
|
|
334
|
+
_iterator2.e(err);
|
|
351
335
|
} finally {
|
|
352
|
-
|
|
336
|
+
_iterator2.f();
|
|
353
337
|
}
|
|
354
338
|
}
|
|
355
339
|
}
|
|
@@ -394,6 +378,7 @@ export function migrateOldScheme(oldState) {
|
|
|
394
378
|
level: col.groupName ? 1 : 0,
|
|
395
379
|
order: order++,
|
|
396
380
|
field: col.field,
|
|
381
|
+
colId: col.colId,
|
|
397
382
|
headerName: col.headerName,
|
|
398
383
|
width: col.width,
|
|
399
384
|
hide: col.hide,
|
|
@@ -489,7 +474,7 @@ export function isOldSchemeData(data) {
|
|
|
489
474
|
*/
|
|
490
475
|
export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
491
476
|
// 只做查询条件的列不进表格:方案里存过的剔除,也不当新增列补回 @author nokecy
|
|
492
|
-
flatConfig = dropQueryOnlyItems(flatConfig, originalColumnDefs);
|
|
477
|
+
flatConfig = dropQueryOnlyItems(normalizeColumnConfig(flatConfig, originalColumnDefs), originalColumnDefs);
|
|
493
478
|
originalColumnDefs = excludeQueryOnlyColumns(originalColumnDefs);
|
|
494
479
|
|
|
495
480
|
/**
|
|
@@ -497,11 +482,11 @@ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
497
482
|
*/
|
|
498
483
|
function collectAllColumns(defs) {
|
|
499
484
|
var columns = [];
|
|
500
|
-
var
|
|
501
|
-
|
|
485
|
+
var _iterator3 = _createForOfIteratorHelper(defs),
|
|
486
|
+
_step3;
|
|
502
487
|
try {
|
|
503
|
-
for (
|
|
504
|
-
var def =
|
|
488
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
489
|
+
var def = _step3.value;
|
|
505
490
|
if ('children' in def && def.children) {
|
|
506
491
|
columns.push.apply(columns, _toConsumableArray(collectAllColumns(def.children)));
|
|
507
492
|
} else {
|
|
@@ -509,9 +494,9 @@ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
509
494
|
}
|
|
510
495
|
}
|
|
511
496
|
} catch (err) {
|
|
512
|
-
|
|
497
|
+
_iterator3.e(err);
|
|
513
498
|
} finally {
|
|
514
|
-
|
|
499
|
+
_iterator3.f();
|
|
515
500
|
}
|
|
516
501
|
return columns;
|
|
517
502
|
}
|
|
@@ -519,14 +504,14 @@ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
519
504
|
return item.type === 'column';
|
|
520
505
|
}) // 只处理列节点,分组不在 columnState 中
|
|
521
506
|
.filter(function (item) {
|
|
522
|
-
return item
|
|
523
|
-
}) //
|
|
507
|
+
return getColumnIdentity(item);
|
|
508
|
+
}) // 控件列可只有 colId。@author nokecy
|
|
524
509
|
.sort(function (a, b) {
|
|
525
510
|
return a.order - b.order;
|
|
526
511
|
}) // 按 order 字段排序
|
|
527
512
|
.map(function (item) {
|
|
528
513
|
var state = {
|
|
529
|
-
colId: item
|
|
514
|
+
colId: getColumnIdentity(item)
|
|
530
515
|
};
|
|
531
516
|
|
|
532
517
|
// 只设置有值的属性,undefined 表示不改变该属性
|
|
@@ -545,9 +530,9 @@ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
545
530
|
if (originalColumnDefs && originalColumnDefs.length > 0) {
|
|
546
531
|
// 收集 flatConfig 中所有已存在的 field
|
|
547
532
|
var existingFields = new Set(flatConfig.filter(function (item) {
|
|
548
|
-
return item.type === 'column' && item
|
|
533
|
+
return item.type === 'column' && getColumnIdentity(item);
|
|
549
534
|
}).map(function (item) {
|
|
550
|
-
return item
|
|
535
|
+
return getColumnIdentity(item);
|
|
551
536
|
}));
|
|
552
537
|
|
|
553
538
|
// 收集原始列定义中所有的列(保留顺序索引)
|
|
@@ -556,7 +541,7 @@ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
556
541
|
// 找出新增的列及其在原始定义中的索引
|
|
557
542
|
var newColumnsWithIndex = [];
|
|
558
543
|
allOriginalColumns.forEach(function (col, index) {
|
|
559
|
-
if (col
|
|
544
|
+
if (getColumnIdentity(col) && !existingFields.has(getColumnIdentity(col))) {
|
|
560
545
|
newColumnsWithIndex.push({
|
|
561
546
|
col: col,
|
|
562
547
|
originalIndex: index
|
|
@@ -571,23 +556,23 @@ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
571
556
|
});
|
|
572
557
|
|
|
573
558
|
// 将新增列插入到正确位置(基于其在原始定义中的相对位置)
|
|
574
|
-
var
|
|
575
|
-
|
|
559
|
+
var _iterator4 = _createForOfIteratorHelper(newColumnsWithIndex),
|
|
560
|
+
_step4;
|
|
576
561
|
try {
|
|
577
|
-
for (
|
|
578
|
-
var
|
|
579
|
-
col =
|
|
580
|
-
originalIndex =
|
|
562
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
563
|
+
var _step4$value = _step4.value,
|
|
564
|
+
col = _step4$value.col,
|
|
565
|
+
originalIndex = _step4$value.originalIndex;
|
|
581
566
|
var insertIndex = 0; // 默认插入到开头
|
|
582
567
|
|
|
583
568
|
// 从该列之前的列开始查找,找到第一个在 result 中存在的列
|
|
584
569
|
var _loop2 = function _loop2() {
|
|
585
570
|
var prevCol = allOriginalColumns[i];
|
|
586
|
-
if (!prevCol
|
|
571
|
+
if (!getColumnIdentity(prevCol)) return 0; // continue
|
|
587
572
|
|
|
588
573
|
// 在 result 中找到这个前置列的位置
|
|
589
574
|
var prevIndexInResult = result.findIndex(function (r) {
|
|
590
|
-
return r.colId === prevCol
|
|
575
|
+
return r.colId === getColumnIdentity(prevCol);
|
|
591
576
|
});
|
|
592
577
|
if (prevIndexInResult !== -1) {
|
|
593
578
|
insertIndex = prevIndexInResult + 1;
|
|
@@ -603,14 +588,14 @@ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
|
|
|
603
588
|
|
|
604
589
|
// 在 insertIndex 位置插入新列状态
|
|
605
590
|
result.splice(insertIndex, 0, {
|
|
606
|
-
colId: col
|
|
591
|
+
colId: getColumnIdentity(col)
|
|
607
592
|
// 新增列使用默认状态,不设置 hide/width 等
|
|
608
593
|
});
|
|
609
594
|
}
|
|
610
595
|
} catch (err) {
|
|
611
|
-
|
|
596
|
+
_iterator4.e(err);
|
|
612
597
|
} finally {
|
|
613
|
-
|
|
598
|
+
_iterator4.f();
|
|
614
599
|
}
|
|
615
600
|
}
|
|
616
601
|
}
|
|
@@ -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
|
+
};
|