@nokecy/qc-ui 1.1.87 → 1.1.88
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 +148 -144
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +4 -4
- package/dist/cjs/ag-grid-plus/interface.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.d.ts +2 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.js +47 -51
- 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 +148 -144
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +4 -4
- package/dist/esm/ag-grid-plus/interface.d.ts +2 -0
- package/dist/esm/ag-grid-plus/queryForm/index.d.ts +2 -0
- package/dist/esm/ag-grid-plus/queryForm/index.js +47 -52
- 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
|
@@ -77,6 +77,7 @@ function useDeepCompareStable(value) {
|
|
|
77
77
|
return ref.current;
|
|
78
78
|
}
|
|
79
79
|
function AgGridPlus(props) {
|
|
80
|
+
var _ref;
|
|
80
81
|
var gridTheme = useAgGridTheme();
|
|
81
82
|
var _theme$useToken = theme.useToken(),
|
|
82
83
|
token = _theme$useToken.token; // 高级筛选入口跟随主题及客户主色。@author nokecy
|
|
@@ -228,35 +229,6 @@ function AgGridPlus(props) {
|
|
|
228
229
|
_useState28 = _slicedToArray(_useState27, 2),
|
|
229
230
|
advancedQueryRules = _useState28[0],
|
|
230
231
|
setAdvancedQueryRules = _useState28[1];
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* 【P1 架构优化】使用单向数据流架构
|
|
234
|
-
*
|
|
235
|
-
* 数据流层次:
|
|
236
|
-
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
237
|
-
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
238
|
-
* 3. UI State: Context State (仅用于 UI 交互)
|
|
239
|
-
*
|
|
240
|
-
* 优势:
|
|
241
|
-
* - 清晰的数据流向(单向可追踪)
|
|
242
|
-
* - 消除状态同步冲突(单一数据源)
|
|
243
|
-
* - 架构清晰度 +60%,Bug -40%
|
|
244
|
-
*/
|
|
245
|
-
var schemeDataFlow = useSchemeDataFlow(gridKey || '', allColDefsRef.current, {
|
|
246
|
-
columnSchemes: columnSchemes,
|
|
247
|
-
querySchemes: querySchemes,
|
|
248
|
-
currentSchemes: currentSchemes
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
// 解构单向数据流的数据
|
|
252
|
-
var currentColumnSchemes = schemeDataFlow.columnSchemes,
|
|
253
|
-
currentColumnScheme = schemeDataFlow.currentColumnScheme,
|
|
254
|
-
currentQuerySchemes = schemeDataFlow.querySchemes,
|
|
255
|
-
currentQueryScheme = schemeDataFlow.currentQueryScheme,
|
|
256
|
-
derivedColumnDefs = schemeDataFlow.derivedColumnDefs,
|
|
257
|
-
derivedColumnState = schemeDataFlow.derivedColumnState,
|
|
258
|
-
isUsingGlobalFallback = schemeDataFlow.isUsingGlobalFallback,
|
|
259
|
-
isUsingGlobalQueryFallback = schemeDataFlow.isUsingGlobalQueryFallback;
|
|
260
232
|
useImperativeHandle(propsGridRef, function () {
|
|
261
233
|
return gridRef.current;
|
|
262
234
|
});
|
|
@@ -313,117 +285,6 @@ function AgGridPlus(props) {
|
|
|
313
285
|
|
|
314
286
|
// 用于列类型推断的首行数据。为什么必须是 state 而不是 ref,见该 hook 的注释。@author nokecy
|
|
315
287
|
var typeInferenceRow = useTypeInferenceRow(rowData);
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
319
|
-
*
|
|
320
|
-
* 优势:
|
|
321
|
-
* 1. 使用已派生的状态,避免重复计算
|
|
322
|
-
* 2. 单向数据流,状态同步更可靠
|
|
323
|
-
* 3. 性能提升 67%,代码更清晰
|
|
324
|
-
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
325
|
-
*/
|
|
326
|
-
useEffect(function () {
|
|
327
|
-
if (!gridKey || !apiRef.current) return;
|
|
328
|
-
|
|
329
|
-
// 使用 Promise 链确保顺序执行,避免竞态条件
|
|
330
|
-
var cancelled = false;
|
|
331
|
-
Promise.resolve().then(function () {
|
|
332
|
-
if (cancelled || !apiRef.current) return;
|
|
333
|
-
|
|
334
|
-
// 1. 应用派生的列状态(使用 applyColumnState API)
|
|
335
|
-
if (derivedColumnState && derivedColumnState.length > 0) {
|
|
336
|
-
// 使用 applyColumnState 而不是 setGridOption("columnDefs")
|
|
337
|
-
apiRef.current.applyColumnState({
|
|
338
|
-
state: derivedColumnState,
|
|
339
|
-
applyOrder: true // 应用列顺序
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
// 2. 应用派生的列样式
|
|
344
|
-
if (derivedColumnState) {
|
|
345
|
-
setColumnCellClass(handelgridPlusColumnState(derivedColumnState));
|
|
346
|
-
}
|
|
347
|
-
}).then(function () {
|
|
348
|
-
// 等待 Grid 状态稳定(使用 requestAnimationFrame 而非固定延迟)
|
|
349
|
-
return new Promise(function (resolve) {
|
|
350
|
-
if (cancelled) {
|
|
351
|
-
resolve();
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
requestAnimationFrame(function () {
|
|
355
|
-
// 双重 RAF 确保渲染完成
|
|
356
|
-
requestAnimationFrame(function () {
|
|
357
|
-
return resolve();
|
|
358
|
-
});
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
}).then(function () {
|
|
362
|
-
if (cancelled || !apiRef.current) return;
|
|
363
|
-
|
|
364
|
-
// 3. 应用过滤器(在列状态稳定后执行)
|
|
365
|
-
if (currentColumnScheme !== null && currentColumnScheme !== void 0 && currentColumnScheme.filterModel) {
|
|
366
|
-
apiRef.current.setFilterModel(currentColumnScheme.filterModel);
|
|
367
|
-
}
|
|
368
|
-
}).catch(function (error) {
|
|
369
|
-
if (!cancelled) {
|
|
370
|
-
console.error('[AgGridPlus] 应用方案失败:', error);
|
|
371
|
-
logger.error('[AgGridPlus] 应用方案失败', error);
|
|
372
|
-
}
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
// 清理函数:取消进行中的操作
|
|
376
|
-
return function () {
|
|
377
|
-
cancelled = true;
|
|
378
|
-
};
|
|
379
|
-
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
|
|
380
|
-
]);
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
384
|
-
*
|
|
385
|
-
* 场景:
|
|
386
|
-
* - 用户删除当前正在使用的方案
|
|
387
|
-
* - currentColumnScheme?.id 从有值变为 null
|
|
388
|
-
*
|
|
389
|
-
* 行为:
|
|
390
|
-
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
391
|
-
* - 清除所有过滤器
|
|
392
|
-
* - 清除列样式配置
|
|
393
|
-
*
|
|
394
|
-
* 优势:
|
|
395
|
-
* - 符合单向数据流架构
|
|
396
|
-
* - 适用于所有方案切换场景(删除/取消选择)
|
|
397
|
-
* - 用户体验好,自动恢复到初始状态
|
|
398
|
-
*/
|
|
399
|
-
var prevSchemeIdRef = useRef(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
|
|
400
|
-
useEffect(function () {
|
|
401
|
-
if (!gridKey || !apiRef.current || !ready) return;
|
|
402
|
-
var prevSchemeId = prevSchemeIdRef.current;
|
|
403
|
-
var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
|
|
404
|
-
|
|
405
|
-
// 检测方案被删除:从有值变为 null/undefined
|
|
406
|
-
if (prevSchemeId && !currentSchemeId) {
|
|
407
|
-
Promise.resolve().then(function () {
|
|
408
|
-
if (!apiRef.current) return;
|
|
409
|
-
|
|
410
|
-
// 1. 重置列状态为初始状态
|
|
411
|
-
apiRef.current.resetColumnState();
|
|
412
|
-
|
|
413
|
-
// 2. 清除所有过滤器
|
|
414
|
-
apiRef.current.setFilterModel(null);
|
|
415
|
-
|
|
416
|
-
// 3. 清除列样式配置
|
|
417
|
-
setColumnCellClass({});
|
|
418
|
-
}).catch(function (error) {
|
|
419
|
-
console.error('[AgGridPlus] 重置列状态失败:', error);
|
|
420
|
-
logger.error('[AgGridPlus] 重置列状态失败', error);
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
// 更新引用
|
|
425
|
-
prevSchemeIdRef.current = currentSchemeId;
|
|
426
|
-
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, ready]);
|
|
427
288
|
useEffect(function () {
|
|
428
289
|
setRowData(dataSource || propRowData || []);
|
|
429
290
|
}, [dataSource, propRowData]);
|
|
@@ -562,6 +423,147 @@ function AgGridPlus(props) {
|
|
|
562
423
|
return cols;
|
|
563
424
|
}, [React.Children.count(children), props.columnDefs, extensibleColumns, gridKey, entityType, hostEntityExtensions, typeInferenceRow, valueEnumContrast ? token.colorBgContainer : undefined]);
|
|
564
425
|
|
|
426
|
+
// 方案派生依赖本轮源码列,避免读取尚未更新的 ref 快照。@author nokecy
|
|
427
|
+
/**
|
|
428
|
+
* 【P1 架构优化】使用单向数据流架构
|
|
429
|
+
*
|
|
430
|
+
* 数据流层次:
|
|
431
|
+
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
432
|
+
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
433
|
+
* 3. UI State: Context State (仅用于 UI 交互)
|
|
434
|
+
*
|
|
435
|
+
* 优势:
|
|
436
|
+
* - 清晰的数据流向(单向可追踪)
|
|
437
|
+
* - 消除状态同步冲突(单一数据源)
|
|
438
|
+
* - 架构清晰度 +60%,Bug -40%
|
|
439
|
+
*/
|
|
440
|
+
var schemeDataFlow = useSchemeDataFlow(gridKey || '', allColDefs, {
|
|
441
|
+
columnSchemes: columnSchemes,
|
|
442
|
+
querySchemes: querySchemes,
|
|
443
|
+
currentSchemes: currentSchemes
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
// 解构单向数据流的数据
|
|
447
|
+
var currentColumnSchemes = schemeDataFlow.columnSchemes,
|
|
448
|
+
currentColumnScheme = schemeDataFlow.currentColumnScheme,
|
|
449
|
+
currentQuerySchemes = schemeDataFlow.querySchemes,
|
|
450
|
+
currentQueryScheme = schemeDataFlow.currentQueryScheme,
|
|
451
|
+
derivedColumnDefs = schemeDataFlow.derivedColumnDefs,
|
|
452
|
+
derivedColumnState = schemeDataFlow.derivedColumnState,
|
|
453
|
+
isUsingGlobalFallback = schemeDataFlow.isUsingGlobalFallback,
|
|
454
|
+
isUsingGlobalQueryFallback = schemeDataFlow.isUsingGlobalQueryFallback;
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
458
|
+
*
|
|
459
|
+
* 优势:
|
|
460
|
+
* 1. 使用已派生的状态,避免重复计算
|
|
461
|
+
* 2. 单向数据流,状态同步更可靠
|
|
462
|
+
* 3. 性能提升 67%,代码更清晰
|
|
463
|
+
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
464
|
+
*/
|
|
465
|
+
useEffect(function () {
|
|
466
|
+
if (!gridKey || !apiRef.current) return;
|
|
467
|
+
|
|
468
|
+
// 使用 Promise 链确保顺序执行,避免竞态条件
|
|
469
|
+
var cancelled = false;
|
|
470
|
+
Promise.resolve().then(function () {
|
|
471
|
+
if (cancelled || !apiRef.current) return;
|
|
472
|
+
|
|
473
|
+
// 1. 应用派生的列状态(使用 applyColumnState API)
|
|
474
|
+
if (derivedColumnState && derivedColumnState.length > 0) {
|
|
475
|
+
// 使用 applyColumnState 而不是 setGridOption("columnDefs")
|
|
476
|
+
apiRef.current.applyColumnState({
|
|
477
|
+
state: derivedColumnState,
|
|
478
|
+
applyOrder: true // 应用列顺序
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
// 2. 应用派生的列样式
|
|
483
|
+
if (derivedColumnState) {
|
|
484
|
+
setColumnCellClass(handelgridPlusColumnState(derivedColumnState));
|
|
485
|
+
}
|
|
486
|
+
}).then(function () {
|
|
487
|
+
// 等待 Grid 状态稳定(使用 requestAnimationFrame 而非固定延迟)
|
|
488
|
+
return new Promise(function (resolve) {
|
|
489
|
+
if (cancelled) {
|
|
490
|
+
resolve();
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
493
|
+
requestAnimationFrame(function () {
|
|
494
|
+
// 双重 RAF 确保渲染完成
|
|
495
|
+
requestAnimationFrame(function () {
|
|
496
|
+
return resolve();
|
|
497
|
+
});
|
|
498
|
+
});
|
|
499
|
+
});
|
|
500
|
+
}).then(function () {
|
|
501
|
+
if (cancelled || !apiRef.current) return;
|
|
502
|
+
|
|
503
|
+
// 3. 应用过滤器(在列状态稳定后执行)
|
|
504
|
+
if (currentColumnScheme !== null && currentColumnScheme !== void 0 && currentColumnScheme.filterModel) {
|
|
505
|
+
apiRef.current.setFilterModel(currentColumnScheme.filterModel);
|
|
506
|
+
}
|
|
507
|
+
}).catch(function (error) {
|
|
508
|
+
if (!cancelled) {
|
|
509
|
+
console.error('[AgGridPlus] 应用方案失败:', error);
|
|
510
|
+
logger.error('[AgGridPlus] 应用方案失败', error);
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
// 清理函数:取消进行中的操作
|
|
515
|
+
return function () {
|
|
516
|
+
cancelled = true;
|
|
517
|
+
};
|
|
518
|
+
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
|
|
519
|
+
]);
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
523
|
+
*
|
|
524
|
+
* 场景:
|
|
525
|
+
* - 用户删除当前正在使用的方案
|
|
526
|
+
* - currentColumnScheme?.id 从有值变为 null
|
|
527
|
+
*
|
|
528
|
+
* 行为:
|
|
529
|
+
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
530
|
+
* - 清除所有过滤器
|
|
531
|
+
* - 清除列样式配置
|
|
532
|
+
*
|
|
533
|
+
* 优势:
|
|
534
|
+
* - 符合单向数据流架构
|
|
535
|
+
* - 适用于所有方案切换场景(删除/取消选择)
|
|
536
|
+
* - 用户体验好,自动恢复到初始状态
|
|
537
|
+
*/
|
|
538
|
+
var prevSchemeIdRef = useRef(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
|
|
539
|
+
useEffect(function () {
|
|
540
|
+
if (!gridKey || !apiRef.current || !ready) return;
|
|
541
|
+
var prevSchemeId = prevSchemeIdRef.current;
|
|
542
|
+
var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
|
|
543
|
+
|
|
544
|
+
// 检测方案被删除:从有值变为 null/undefined
|
|
545
|
+
if (prevSchemeId && !currentSchemeId) {
|
|
546
|
+
Promise.resolve().then(function () {
|
|
547
|
+
if (!apiRef.current) return;
|
|
548
|
+
|
|
549
|
+
// 1. 重置列状态为初始状态
|
|
550
|
+
apiRef.current.resetColumnState();
|
|
551
|
+
|
|
552
|
+
// 2. 清除所有过滤器
|
|
553
|
+
apiRef.current.setFilterModel(null);
|
|
554
|
+
|
|
555
|
+
// 3. 清除列样式配置
|
|
556
|
+
setColumnCellClass({});
|
|
557
|
+
}).catch(function (error) {
|
|
558
|
+
console.error('[AgGridPlus] 重置列状态失败:', error);
|
|
559
|
+
logger.error('[AgGridPlus] 重置列状态失败', error);
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
// 更新引用
|
|
564
|
+
prevSchemeIdRef.current = currentSchemeId;
|
|
565
|
+
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, ready]);
|
|
566
|
+
|
|
565
567
|
// 稳定化 gridParams 和 sortColumn 的引用(深比较,内容不变即复用旧引用)
|
|
566
568
|
var stableGridParams = useDeepCompareStable(gridParams);
|
|
567
569
|
var stableSortColumn = useDeepCompareStable(sortColumn);
|
|
@@ -1010,10 +1012,11 @@ function AgGridPlus(props) {
|
|
|
1010
1012
|
|
|
1011
1013
|
// 构建查询表单项(带 order 属性)
|
|
1012
1014
|
var queryFormItems = useMemo(function () {
|
|
1013
|
-
var
|
|
1014
|
-
|
|
1015
|
+
var _flattenColumnState;
|
|
1016
|
+
// 查询方案按叶列排序和隐藏,分组本身不作为查询字段。@author nokecy
|
|
1017
|
+
var items = ((_flattenColumnState = flattenColumnState(allColDefs)) === null || _flattenColumnState === void 0 || (_flattenColumnState = _flattenColumnState.filter(function (col) {
|
|
1015
1018
|
return col.filter !== false && !col.hideInSearch;
|
|
1016
|
-
})) === null ||
|
|
1019
|
+
})) === null || _flattenColumnState === void 0 ? void 0 : _flattenColumnState.map(function (col) {
|
|
1017
1020
|
var _col$queryField, _col$searchSort;
|
|
1018
1021
|
return _objectSpread({
|
|
1019
1022
|
field: (_col$queryField = col.queryField) !== null && _col$queryField !== void 0 ? _col$queryField : col.field,
|
|
@@ -1145,8 +1148,9 @@ function AgGridPlus(props) {
|
|
|
1145
1148
|
}
|
|
1146
1149
|
}, search == false ? null : /*#__PURE__*/React.createElement(FormRender, {
|
|
1147
1150
|
colDefs: flattenColumnState(visibleFormItems),
|
|
1151
|
+
effectiveColDefs: flattenColumnState(colDefs),
|
|
1148
1152
|
defaultRows: queryDefaultRows,
|
|
1149
|
-
columnStates: columnState
|
|
1153
|
+
columnStates: (_ref = derivedColumnState !== null && derivedColumnState !== void 0 ? derivedColumnState : columnState) !== null && _ref !== void 0 ? _ref : [],
|
|
1150
1154
|
defaultExpand: defaultSearchExpand,
|
|
1151
1155
|
gridApi: apiRef.current,
|
|
1152
1156
|
onQuery: function onQuery(formValues) {
|
|
@@ -171,8 +171,8 @@ export function useDerivedGridState(currentScheme, allColDefs) {
|
|
|
171
171
|
console.error('[useDerivedGridState] 转换失败:', error);
|
|
172
172
|
return null;
|
|
173
173
|
}
|
|
174
|
-
}, [//
|
|
175
|
-
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
174
|
+
}, [// 同一方案的内容修改也要重新派生,保持表格与查询区使用相同快照。@author nokecy
|
|
175
|
+
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.columnConfig, allColDefs]);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
/**
|
|
@@ -207,8 +207,8 @@ export function useDerivedColumnState(currentScheme, allColDefs) {
|
|
|
207
207
|
console.error('[useDerivedColumnState] 转换失败:', error);
|
|
208
208
|
return null;
|
|
209
209
|
}
|
|
210
|
-
}, [//
|
|
211
|
-
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
210
|
+
}, [// 同一方案保存后 columnConfig 会更新,不能只比较方案 ID。@author nokecy
|
|
211
|
+
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.columnConfig, allColDefs]);
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
/**
|
|
@@ -5,6 +5,8 @@ declare const FormRender: (props: {
|
|
|
5
5
|
className?: any;
|
|
6
6
|
gridApi?: GridApi<any> | undefined;
|
|
7
7
|
colDefs: ColDef[];
|
|
8
|
+
/** 与表格同轮渲染的生效列定义快照。@author nokecy */
|
|
9
|
+
effectiveColDefs?: ColDef<any, any>[] | undefined;
|
|
8
10
|
columnStates: ColumnState[];
|
|
9
11
|
defaultExpand?: Boolean | undefined;
|
|
10
12
|
defaultRows?: number | undefined;
|
|
@@ -12,26 +12,28 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
|
12
12
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
13
|
import { DatePicker, FormButtonGroup, FormGrid, FormItem, Form, Input, Select, Submit } from '@formily/antd-v5'; // @author nokecy
|
|
14
14
|
import { createForm } from '@formily/core';
|
|
15
|
-
import { onFieldInit } from '@formily/core';
|
|
16
15
|
import { createSchemaField } from '@formily/react';
|
|
17
16
|
import { Button, theme } from 'antd';
|
|
18
17
|
import classNames from 'classnames';
|
|
19
18
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
20
19
|
import QueryForm from "./queryForm";
|
|
21
20
|
import { queryFormSchemaKey } from "./schemaKey";
|
|
21
|
+
import { resolveQueryColumns } from "./queryColumns";
|
|
22
22
|
import BoolSelect from "../_utils/boolSelect";
|
|
23
23
|
import "./index.less";
|
|
24
24
|
var FormRender = function FormRender(props) {
|
|
25
25
|
var className = props.className,
|
|
26
|
-
gridApi = props.gridApi,
|
|
27
26
|
colDefs = props.colDefs,
|
|
27
|
+
_props$effectiveColDe = props.effectiveColDefs,
|
|
28
|
+
effectiveColDefs = _props$effectiveColDe === void 0 ? colDefs : _props$effectiveColDe,
|
|
28
29
|
columnStates = props.columnStates,
|
|
29
30
|
onQuery = props.onQuery,
|
|
30
31
|
_props$defaultRows = props.defaultRows,
|
|
31
32
|
defaultRows = _props$defaultRows === void 0 ? 1 : _props$defaultRows;
|
|
32
33
|
var _theme$useToken = theme.useToken(),
|
|
33
34
|
token = _theme$useToken.token; // 筛选区跟随宿主主题。@author nokecy
|
|
34
|
-
|
|
35
|
+
var queryColumns = resolveQueryColumns(colDefs, effectiveColDefs, columnStates);
|
|
36
|
+
var schemaKey = queryFormSchemaKey(undefined, queryColumns);
|
|
35
37
|
var _useState = useState({
|
|
36
38
|
type: 'object',
|
|
37
39
|
properties: {}
|
|
@@ -39,25 +41,11 @@ var FormRender = function FormRender(props) {
|
|
|
39
41
|
_useState2 = _slicedToArray(_useState, 2),
|
|
40
42
|
schema = _useState2[0],
|
|
41
43
|
setSchema = _useState2[1];
|
|
44
|
+
|
|
45
|
+
// 表单与 SchemaField 实例保持稳定,元数据更新不清空已输入的查询值。@author nokecy
|
|
42
46
|
var form = useMemo(function () {
|
|
43
|
-
return createForm(
|
|
44
|
-
effects: function effects() {
|
|
45
|
-
return [onFieldInit('queryForm', function (field) {
|
|
46
|
-
field.query('queryForm').take(function (node) {
|
|
47
|
-
node.setComponentProps({
|
|
48
|
-
onReset: onReset,
|
|
49
|
-
defaultExpand: props.defaultExpand
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
})];
|
|
53
|
-
}
|
|
54
|
-
});
|
|
47
|
+
return createForm();
|
|
55
48
|
}, []);
|
|
56
|
-
|
|
57
|
-
// 【修复】移除此处的 onInit 调用
|
|
58
|
-
// 原因:此时 schema 尚未设置,form.values 为空,默认值还未应用
|
|
59
|
-
// 改为在下方 schema 设置完成后调用 onInit
|
|
60
|
-
|
|
61
49
|
var SchemaField = useMemo(function () {
|
|
62
50
|
return createSchemaField({
|
|
63
51
|
components: {
|
|
@@ -73,7 +61,7 @@ var FormRender = function FormRender(props) {
|
|
|
73
61
|
BoolSelect: BoolSelect
|
|
74
62
|
}
|
|
75
63
|
});
|
|
76
|
-
}, [
|
|
64
|
+
}, []);
|
|
77
65
|
var onSubmit = function onSubmit() {
|
|
78
66
|
onQuery && onQuery(form.values);
|
|
79
67
|
};
|
|
@@ -113,47 +101,31 @@ var FormRender = function FormRender(props) {
|
|
|
113
101
|
return component ? component : "Input";
|
|
114
102
|
}
|
|
115
103
|
};
|
|
116
|
-
var getSchema = function getSchema(
|
|
117
|
-
var _columns, _columns2;
|
|
104
|
+
var getSchema = function getSchema() {
|
|
118
105
|
var rootSchema = {
|
|
119
106
|
type: 'object',
|
|
120
107
|
properties: {}
|
|
121
108
|
};
|
|
122
|
-
if (!columnStates) {
|
|
123
|
-
return rootSchema;
|
|
124
|
-
}
|
|
125
109
|
var gridSchema = {
|
|
126
110
|
type: 'void',
|
|
127
111
|
"name": 'queryForm',
|
|
128
112
|
"x-component": 'QueryForm',
|
|
129
113
|
properties: {},
|
|
130
114
|
"x-component-props": {
|
|
131
|
-
defaultRows: defaultRows
|
|
115
|
+
defaultRows: defaultRows,
|
|
116
|
+
defaultExpand: props.defaultExpand,
|
|
117
|
+
onReset: onReset
|
|
132
118
|
}
|
|
133
119
|
};
|
|
134
|
-
|
|
135
|
-
var
|
|
136
|
-
var state = columnStates.find(function (x) {
|
|
137
|
-
return x.colId == colDef.field;
|
|
138
|
-
});
|
|
139
|
-
var columnDefs = gridApi === null || gridApi === void 0 ? void 0 : gridApi.getColumnDef(colDef.field);
|
|
140
|
-
// 查询组件属性(下拉选项)以本次传入的列为准:AG Grid 在本副作用之后才应用新 columnDefs,此刻取到的还是上一版。@author nokecy
|
|
141
|
-
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, colDef), columnDefs), state), {}, {
|
|
142
|
-
searchComponentProps: (_searchComponentProps = colDef.searchComponentProps) !== null && _searchComponentProps !== void 0 ? _searchComponentProps : columnDefs === null || columnDefs === void 0 ? void 0 : columnDefs.searchComponentProps
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
columns = columns ? (_columns = columns) === null || _columns === void 0 ? void 0 : _columns.filter(function (i) {
|
|
146
|
-
return (i === null || i === void 0 ? void 0 : i.visible) != false && !(i !== null && i !== void 0 && i.hide) && !(i !== null && i !== void 0 && i.hideInSearch) || (i === null || i === void 0 ? void 0 : i.hideInTable);
|
|
147
|
-
}) : [];
|
|
148
|
-
columns.map(function (col) {
|
|
149
|
-
var _colDef$queryField;
|
|
120
|
+
queryColumns.forEach(function (col) {
|
|
121
|
+
var _colDef$queryField, _colDef$searchTitle;
|
|
150
122
|
var colDef = col;
|
|
151
123
|
var name = (_colDef$queryField = colDef.queryField) !== null && _colDef$queryField !== void 0 ? _colDef$queryField : colDef.field;
|
|
152
|
-
var headerName = colDef.headerName;
|
|
124
|
+
var headerName = (_colDef$searchTitle = colDef.searchTitle) !== null && _colDef$searchTitle !== void 0 ? _colDef$searchTitle : colDef.headerName;
|
|
153
125
|
//表单自定义组件
|
|
154
126
|
var component = getComponent(colDef);
|
|
155
127
|
if (colDef.filter != false) {
|
|
156
|
-
var _colDef$searchCompone, _colDef$searchCompone2, _colDef$searchCompone3;
|
|
128
|
+
var _colDef$searchCompone, _colDef$searchCompone2, _colDef$searchCompone3, _colDef$searchCompone4;
|
|
157
129
|
// 为多选下拉框添加maxTagCount配置
|
|
158
130
|
var componentProps = _objectSpread({
|
|
159
131
|
placeholder: "\u8BF7\u8F93\u5165".concat(headerName),
|
|
@@ -175,7 +147,7 @@ var FormRender = function FormRender(props) {
|
|
|
175
147
|
type: 'string',
|
|
176
148
|
title: headerName,
|
|
177
149
|
required: (colDef === null || colDef === void 0 || (_colDef$searchCompone = colDef.searchComponentProps) === null || _colDef$searchCompone === void 0 ? void 0 : _colDef$searchCompone.required) || false,
|
|
178
|
-
default: (colDef === null || colDef === void 0 || (_colDef$
|
|
150
|
+
default: (_colDef$searchCompone2 = colDef === null || colDef === void 0 || (_colDef$searchCompone3 = colDef.searchComponentProps) === null || _colDef$searchCompone3 === void 0 ? void 0 : _colDef$searchCompone3.default) !== null && _colDef$searchCompone2 !== void 0 ? _colDef$searchCompone2 : colDef === null || colDef === void 0 || (_colDef$searchCompone4 = colDef.searchComponentProps) === null || _colDef$searchCompone4 === void 0 ? void 0 : _colDef$searchCompone4.defaultValue,
|
|
179
151
|
enum: colDef === null || colDef === void 0 ? void 0 : colDef.enum,
|
|
180
152
|
"x-component": component,
|
|
181
153
|
"x-component-props": componentProps,
|
|
@@ -190,7 +162,7 @@ var FormRender = function FormRender(props) {
|
|
|
190
162
|
});
|
|
191
163
|
///@ts-ignore
|
|
192
164
|
rootSchema.properties["queryForm"] = gridSchema;
|
|
193
|
-
if (!
|
|
165
|
+
if (!queryColumns.length) {
|
|
194
166
|
///@ts-ignore
|
|
195
167
|
delete rootSchema.properties["queryForm"];
|
|
196
168
|
}
|
|
@@ -199,18 +171,40 @@ var FormRender = function FormRender(props) {
|
|
|
199
171
|
|
|
200
172
|
// 【新增】用于追踪是否已完成首次初始化
|
|
201
173
|
var initializedRef = useRef(false);
|
|
174
|
+
var previousFieldsRef = useRef([]);
|
|
202
175
|
useEffect(function () {
|
|
203
176
|
var _new_schema$propertie, _new_schema$propertie2;
|
|
204
|
-
var new_schema = getSchema(
|
|
177
|
+
var new_schema = getSchema();
|
|
178
|
+
var fieldSchemas = (_new_schema$propertie = (_new_schema$propertie2 = new_schema.properties) === null || _new_schema$propertie2 === void 0 || (_new_schema$propertie2 = _new_schema$propertie2.queryForm) === null || _new_schema$propertie2 === void 0 ? void 0 : _new_schema$propertie2.properties) !== null && _new_schema$propertie !== void 0 ? _new_schema$propertie : {};
|
|
179
|
+
// 移除失效查询项的字段图和值,避免界面已经移除却仍提交旧筛选。@author nokecy
|
|
180
|
+
previousFieldsRef.current.filter(function (name) {
|
|
181
|
+
return !(name in fieldSchemas);
|
|
182
|
+
}).forEach(function (name) {
|
|
183
|
+
form.clearFormGraph(name);
|
|
184
|
+
form.deleteValuesIn(name);
|
|
185
|
+
form.deleteInitialValuesIn(name);
|
|
186
|
+
});
|
|
187
|
+
previousFieldsRef.current = Object.keys(fieldSchemas);
|
|
205
188
|
setSchema(new_schema);
|
|
206
|
-
//
|
|
207
|
-
Object.entries(
|
|
189
|
+
// 已有字段同步元数据,不触碰仍有效字段的查询值,也不触发查询。@author nokecy
|
|
190
|
+
Object.entries(fieldSchemas).forEach(function (_ref) {
|
|
208
191
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
209
192
|
name = _ref2[0],
|
|
210
193
|
fieldSchema = _ref2[1];
|
|
211
194
|
form.query(name).take(function (field) {
|
|
195
|
+
var _fieldSchema$enum;
|
|
212
196
|
field.title = fieldSchema.title;
|
|
213
|
-
field.
|
|
197
|
+
field.required = fieldSchema.required;
|
|
198
|
+
// Select 会把 dataSource 映射为 options;仅配置 options 时也同步该数据源。@author nokecy
|
|
199
|
+
field.dataSource = (_fieldSchema$enum = fieldSchema.enum) !== null && _fieldSchema$enum !== void 0 ? _fieldSchema$enum : fieldSchema['x-component-props'].options;
|
|
200
|
+
field.component = [fieldSchema['x-component'], fieldSchema['x-component-props']];
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
form.query('queryForm').take(function (field) {
|
|
204
|
+
return field.setComponentProps({
|
|
205
|
+
defaultRows: defaultRows,
|
|
206
|
+
defaultExpand: props.defaultExpand,
|
|
207
|
+
onReset: onReset
|
|
214
208
|
});
|
|
215
209
|
});
|
|
216
210
|
|
|
@@ -225,7 +219,7 @@ var FormRender = function FormRender(props) {
|
|
|
225
219
|
}, 0);
|
|
226
220
|
});
|
|
227
221
|
}
|
|
228
|
-
}, [
|
|
222
|
+
}, [schemaKey, defaultRows, props.defaultExpand]);
|
|
229
223
|
return /*#__PURE__*/React.createElement("div", {
|
|
230
224
|
className: classNames(className, "ag-grid-table-search ag-grid-table-search-query-filter"),
|
|
231
225
|
style: {
|
|
@@ -234,6 +228,7 @@ var FormRender = function FormRender(props) {
|
|
|
234
228
|
}, /*#__PURE__*/React.createElement(Form, {
|
|
235
229
|
form: form,
|
|
236
230
|
labelWidth: 100,
|
|
231
|
+
labelWrap: true,
|
|
237
232
|
feedbackLayout: "none",
|
|
238
233
|
onAutoSubmit: onSubmit
|
|
239
234
|
}, /*#__PURE__*/React.createElement(SchemaField, {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ColumnState } from 'ag-grid-community';
|
|
2
|
+
import type { ExtendedColDef } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* 从同一轮渲染的列定义快照派生查询项,不在副作用中读取 AG Grid 的上一轮定义。
|
|
5
|
+
* 表头名称跟随生效列方案;查询专用元数据和独立标题由页面声明。
|
|
6
|
+
* @author nokecy
|
|
7
|
+
*/
|
|
8
|
+
export declare const resolveQueryColumns: (sourceColumns: readonly ExtendedColDef[], effectiveColumns: readonly ExtendedColDef[], columnStates: readonly ColumnState[]) => ExtendedColDef[];
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
/**
|
|
8
|
+
* 从同一轮渲染的列定义快照派生查询项,不在副作用中读取 AG Grid 的上一轮定义。
|
|
9
|
+
* 表头名称跟随生效列方案;查询专用元数据和独立标题由页面声明。
|
|
10
|
+
* @author nokecy
|
|
11
|
+
*/
|
|
12
|
+
export var resolveQueryColumns = function resolveQueryColumns(sourceColumns, effectiveColumns, columnStates) {
|
|
13
|
+
var effectiveById = new Map();
|
|
14
|
+
effectiveColumns.forEach(function (column) {
|
|
15
|
+
if (column.colId) effectiveById.set(column.colId, column);
|
|
16
|
+
if (column.field) effectiveById.set(column.field, column);
|
|
17
|
+
});
|
|
18
|
+
var stateById = new Map(columnStates.map(function (state) {
|
|
19
|
+
return [state.colId, state];
|
|
20
|
+
}));
|
|
21
|
+
return sourceColumns.map(function (source) {
|
|
22
|
+
var _source$colId, _ref, _state$hide, _effective$headerName;
|
|
23
|
+
var columnId = (_source$colId = source.colId) !== null && _source$colId !== void 0 ? _source$colId : source.field;
|
|
24
|
+
var effective = columnId ? effectiveById.get(columnId) : undefined;
|
|
25
|
+
var state = columnId ? stateById.get(columnId) : undefined;
|
|
26
|
+
return _objectSpread(_objectSpread(_objectSpread({}, source), effective), {}, {
|
|
27
|
+
// 查询只使用列状态的显隐;null 表示沿用生效列定义。@author nokecy
|
|
28
|
+
hide: (_ref = (_state$hide = state === null || state === void 0 ? void 0 : state.hide) !== null && _state$hide !== void 0 ? _state$hide : effective === null || effective === void 0 ? void 0 : effective.hide) !== null && _ref !== void 0 ? _ref : source.hide,
|
|
29
|
+
// 查询元数据不从持久表格方案反向覆盖源码。@author nokecy
|
|
30
|
+
field: source.field,
|
|
31
|
+
queryField: source.queryField,
|
|
32
|
+
headerName: (_effective$headerName = effective === null || effective === void 0 ? void 0 : effective.headerName) !== null && _effective$headerName !== void 0 ? _effective$headerName : source.headerName,
|
|
33
|
+
searchTitle: source.searchTitle,
|
|
34
|
+
hideInSearch: source.hideInSearch,
|
|
35
|
+
hideInTable: source.hideInTable,
|
|
36
|
+
filter: source.filter,
|
|
37
|
+
type: source.type,
|
|
38
|
+
enum: source.enum,
|
|
39
|
+
searchComponent: source.searchComponent,
|
|
40
|
+
searchComponentProps: source.searchComponentProps
|
|
41
|
+
});
|
|
42
|
+
}).filter(function (column) {
|
|
43
|
+
var _column$queryField;
|
|
44
|
+
return Boolean((_column$queryField = column.queryField) !== null && _column$queryField !== void 0 ? _column$queryField : column.field) && column.filter !== false && !column.hideInSearch && (column.hideInTable || column.visible !== false && !column.hide);
|
|
45
|
+
});
|
|
46
|
+
};
|