@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
|
@@ -43,7 +43,7 @@ var _requestParams = require("./utils/requestParams");
|
|
|
43
43
|
var _errors = require("./errors");
|
|
44
44
|
var _logger = require("./utils/logger");
|
|
45
45
|
var _entityExtensionColumns = require("./utils/entityExtensionColumns");
|
|
46
|
-
var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "emptyState", "accessible", "enableClickSelection", "rowSelection", "useNativeTreeFilter", "entityType", "valueEnumContrast"];
|
|
46
|
+
var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "onQueryValuesChange", "emptyState", "accessible", "enableClickSelection", "rowSelection", "useNativeTreeFilter", "entityType", "valueEnumContrast"];
|
|
47
47
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
48
48
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
49
49
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -85,6 +85,7 @@ function useDeepCompareStable(value) {
|
|
|
85
85
|
return ref.current;
|
|
86
86
|
}
|
|
87
87
|
function AgGridPlus(props) {
|
|
88
|
+
var _ref;
|
|
88
89
|
var gridTheme = (0, _theme.useAgGridTheme)();
|
|
89
90
|
var _theme$useToken = _antd.theme.useToken(),
|
|
90
91
|
token = _theme$useToken.token; // 高级筛选入口跟随主题及客户主色。@author nokecy
|
|
@@ -108,6 +109,7 @@ function AgGridPlus(props) {
|
|
|
108
109
|
overlayNoRowsTemplateText = props.overlayNoRowsTemplateText,
|
|
109
110
|
queryDefaultRows = props.queryDefaultRows,
|
|
110
111
|
onSelectedRowsChange = props.onSelectedRowsChange,
|
|
112
|
+
onQueryValuesChange = props.onQueryValuesChange,
|
|
111
113
|
emptyState = props.emptyState,
|
|
112
114
|
_props$accessible = props.accessible,
|
|
113
115
|
accessible = _props$accessible === void 0 ? true : _props$accessible,
|
|
@@ -236,35 +238,6 @@ function AgGridPlus(props) {
|
|
|
236
238
|
_useState28 = _slicedToArray(_useState27, 2),
|
|
237
239
|
advancedQueryRules = _useState28[0],
|
|
238
240
|
setAdvancedQueryRules = _useState28[1];
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* 【P1 架构优化】使用单向数据流架构
|
|
242
|
-
*
|
|
243
|
-
* 数据流层次:
|
|
244
|
-
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
245
|
-
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
246
|
-
* 3. UI State: Context State (仅用于 UI 交互)
|
|
247
|
-
*
|
|
248
|
-
* 优势:
|
|
249
|
-
* - 清晰的数据流向(单向可追踪)
|
|
250
|
-
* - 消除状态同步冲突(单一数据源)
|
|
251
|
-
* - 架构清晰度 +60%,Bug -40%
|
|
252
|
-
*/
|
|
253
|
-
var schemeDataFlow = (0, _useSchemeDataFlow.useSchemeDataFlow)(gridKey || '', allColDefsRef.current, {
|
|
254
|
-
columnSchemes: columnSchemes,
|
|
255
|
-
querySchemes: querySchemes,
|
|
256
|
-
currentSchemes: currentSchemes
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
// 解构单向数据流的数据
|
|
260
|
-
var currentColumnSchemes = schemeDataFlow.columnSchemes,
|
|
261
|
-
currentColumnScheme = schemeDataFlow.currentColumnScheme,
|
|
262
|
-
currentQuerySchemes = schemeDataFlow.querySchemes,
|
|
263
|
-
currentQueryScheme = schemeDataFlow.currentQueryScheme,
|
|
264
|
-
derivedColumnDefs = schemeDataFlow.derivedColumnDefs,
|
|
265
|
-
derivedColumnState = schemeDataFlow.derivedColumnState,
|
|
266
|
-
isUsingGlobalFallback = schemeDataFlow.isUsingGlobalFallback,
|
|
267
|
-
isUsingGlobalQueryFallback = schemeDataFlow.isUsingGlobalQueryFallback;
|
|
268
241
|
(0, _react.useImperativeHandle)(propsGridRef, function () {
|
|
269
242
|
return gridRef.current;
|
|
270
243
|
});
|
|
@@ -321,117 +294,6 @@ function AgGridPlus(props) {
|
|
|
321
294
|
|
|
322
295
|
// 用于列类型推断的首行数据。为什么必须是 state 而不是 ref,见该 hook 的注释。@author nokecy
|
|
323
296
|
var typeInferenceRow = (0, _useTypeInferenceRow.useTypeInferenceRow)(rowData);
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
327
|
-
*
|
|
328
|
-
* 优势:
|
|
329
|
-
* 1. 使用已派生的状态,避免重复计算
|
|
330
|
-
* 2. 单向数据流,状态同步更可靠
|
|
331
|
-
* 3. 性能提升 67%,代码更清晰
|
|
332
|
-
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
333
|
-
*/
|
|
334
|
-
(0, _react.useEffect)(function () {
|
|
335
|
-
if (!gridKey || !apiRef.current) return;
|
|
336
|
-
|
|
337
|
-
// 使用 Promise 链确保顺序执行,避免竞态条件
|
|
338
|
-
var cancelled = false;
|
|
339
|
-
Promise.resolve().then(function () {
|
|
340
|
-
if (cancelled || !apiRef.current) return;
|
|
341
|
-
|
|
342
|
-
// 1. 应用派生的列状态(使用 applyColumnState API)
|
|
343
|
-
if (derivedColumnState && derivedColumnState.length > 0) {
|
|
344
|
-
// 使用 applyColumnState 而不是 setGridOption("columnDefs")
|
|
345
|
-
apiRef.current.applyColumnState({
|
|
346
|
-
state: derivedColumnState,
|
|
347
|
-
applyOrder: true // 应用列顺序
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
// 2. 应用派生的列样式
|
|
352
|
-
if (derivedColumnState) {
|
|
353
|
-
setColumnCellClass(handelgridPlusColumnState(derivedColumnState));
|
|
354
|
-
}
|
|
355
|
-
}).then(function () {
|
|
356
|
-
// 等待 Grid 状态稳定(使用 requestAnimationFrame 而非固定延迟)
|
|
357
|
-
return new Promise(function (resolve) {
|
|
358
|
-
if (cancelled) {
|
|
359
|
-
resolve();
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
requestAnimationFrame(function () {
|
|
363
|
-
// 双重 RAF 确保渲染完成
|
|
364
|
-
requestAnimationFrame(function () {
|
|
365
|
-
return resolve();
|
|
366
|
-
});
|
|
367
|
-
});
|
|
368
|
-
});
|
|
369
|
-
}).then(function () {
|
|
370
|
-
if (cancelled || !apiRef.current) return;
|
|
371
|
-
|
|
372
|
-
// 3. 应用过滤器(在列状态稳定后执行)
|
|
373
|
-
if (currentColumnScheme !== null && currentColumnScheme !== void 0 && currentColumnScheme.filterModel) {
|
|
374
|
-
apiRef.current.setFilterModel(currentColumnScheme.filterModel);
|
|
375
|
-
}
|
|
376
|
-
}).catch(function (error) {
|
|
377
|
-
if (!cancelled) {
|
|
378
|
-
console.error('[AgGridPlus] 应用方案失败:', error);
|
|
379
|
-
_logger.logger.error('[AgGridPlus] 应用方案失败', error);
|
|
380
|
-
}
|
|
381
|
-
});
|
|
382
|
-
|
|
383
|
-
// 清理函数:取消进行中的操作
|
|
384
|
-
return function () {
|
|
385
|
-
cancelled = true;
|
|
386
|
-
};
|
|
387
|
-
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
|
|
388
|
-
]);
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
392
|
-
*
|
|
393
|
-
* 场景:
|
|
394
|
-
* - 用户删除当前正在使用的方案
|
|
395
|
-
* - currentColumnScheme?.id 从有值变为 null
|
|
396
|
-
*
|
|
397
|
-
* 行为:
|
|
398
|
-
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
399
|
-
* - 清除所有过滤器
|
|
400
|
-
* - 清除列样式配置
|
|
401
|
-
*
|
|
402
|
-
* 优势:
|
|
403
|
-
* - 符合单向数据流架构
|
|
404
|
-
* - 适用于所有方案切换场景(删除/取消选择)
|
|
405
|
-
* - 用户体验好,自动恢复到初始状态
|
|
406
|
-
*/
|
|
407
|
-
var prevSchemeIdRef = (0, _react.useRef)(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
|
|
408
|
-
(0, _react.useEffect)(function () {
|
|
409
|
-
if (!gridKey || !apiRef.current || !ready) return;
|
|
410
|
-
var prevSchemeId = prevSchemeIdRef.current;
|
|
411
|
-
var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
|
|
412
|
-
|
|
413
|
-
// 检测方案被删除:从有值变为 null/undefined
|
|
414
|
-
if (prevSchemeId && !currentSchemeId) {
|
|
415
|
-
Promise.resolve().then(function () {
|
|
416
|
-
if (!apiRef.current) return;
|
|
417
|
-
|
|
418
|
-
// 1. 重置列状态为初始状态
|
|
419
|
-
apiRef.current.resetColumnState();
|
|
420
|
-
|
|
421
|
-
// 2. 清除所有过滤器
|
|
422
|
-
apiRef.current.setFilterModel(null);
|
|
423
|
-
|
|
424
|
-
// 3. 清除列样式配置
|
|
425
|
-
setColumnCellClass({});
|
|
426
|
-
}).catch(function (error) {
|
|
427
|
-
console.error('[AgGridPlus] 重置列状态失败:', error);
|
|
428
|
-
_logger.logger.error('[AgGridPlus] 重置列状态失败', error);
|
|
429
|
-
});
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
// 更新引用
|
|
433
|
-
prevSchemeIdRef.current = currentSchemeId;
|
|
434
|
-
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, ready]);
|
|
435
297
|
(0, _react.useEffect)(function () {
|
|
436
298
|
setRowData(dataSource || propRowData || []);
|
|
437
299
|
}, [dataSource, propRowData]);
|
|
@@ -570,6 +432,147 @@ function AgGridPlus(props) {
|
|
|
570
432
|
return cols;
|
|
571
433
|
}, [_react.default.Children.count(children), props.columnDefs, extensibleColumns, gridKey, entityType, hostEntityExtensions, typeInferenceRow, valueEnumContrast ? token.colorBgContainer : undefined]);
|
|
572
434
|
|
|
435
|
+
// 方案派生依赖本轮源码列,避免读取尚未更新的 ref 快照。@author nokecy
|
|
436
|
+
/**
|
|
437
|
+
* 【P1 架构优化】使用单向数据流架构
|
|
438
|
+
*
|
|
439
|
+
* 数据流层次:
|
|
440
|
+
* 1. Source of Truth: useSchemeDataFlow (Scheme State)
|
|
441
|
+
* 2. Derived State: derivedColumnDefs/derivedColumnState (只读派生)
|
|
442
|
+
* 3. UI State: Context State (仅用于 UI 交互)
|
|
443
|
+
*
|
|
444
|
+
* 优势:
|
|
445
|
+
* - 清晰的数据流向(单向可追踪)
|
|
446
|
+
* - 消除状态同步冲突(单一数据源)
|
|
447
|
+
* - 架构清晰度 +60%,Bug -40%
|
|
448
|
+
*/
|
|
449
|
+
var schemeDataFlow = (0, _useSchemeDataFlow.useSchemeDataFlow)(gridKey || '', allColDefs, {
|
|
450
|
+
columnSchemes: columnSchemes,
|
|
451
|
+
querySchemes: querySchemes,
|
|
452
|
+
currentSchemes: currentSchemes
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
// 解构单向数据流的数据
|
|
456
|
+
var currentColumnSchemes = schemeDataFlow.columnSchemes,
|
|
457
|
+
currentColumnScheme = schemeDataFlow.currentColumnScheme,
|
|
458
|
+
currentQuerySchemes = schemeDataFlow.querySchemes,
|
|
459
|
+
currentQueryScheme = schemeDataFlow.currentQueryScheme,
|
|
460
|
+
derivedColumnDefs = schemeDataFlow.derivedColumnDefs,
|
|
461
|
+
derivedColumnState = schemeDataFlow.derivedColumnState,
|
|
462
|
+
isUsingGlobalFallback = schemeDataFlow.isUsingGlobalFallback,
|
|
463
|
+
isUsingGlobalQueryFallback = schemeDataFlow.isUsingGlobalQueryFallback;
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* 【P0 + P1 优化】使用派生状态应用方案(单向数据流)
|
|
467
|
+
*
|
|
468
|
+
* 优势:
|
|
469
|
+
* 1. 使用已派生的状态,避免重复计算
|
|
470
|
+
* 2. 单向数据流,状态同步更可靠
|
|
471
|
+
* 3. 性能提升 67%,代码更清晰
|
|
472
|
+
* 4. 使用 Promise 链和 requestAnimationFrame 解决竞态条件
|
|
473
|
+
*/
|
|
474
|
+
(0, _react.useEffect)(function () {
|
|
475
|
+
if (!gridKey || !apiRef.current) return;
|
|
476
|
+
|
|
477
|
+
// 使用 Promise 链确保顺序执行,避免竞态条件
|
|
478
|
+
var cancelled = false;
|
|
479
|
+
Promise.resolve().then(function () {
|
|
480
|
+
if (cancelled || !apiRef.current) return;
|
|
481
|
+
|
|
482
|
+
// 1. 应用派生的列状态(使用 applyColumnState API)
|
|
483
|
+
if (derivedColumnState && derivedColumnState.length > 0) {
|
|
484
|
+
// 使用 applyColumnState 而不是 setGridOption("columnDefs")
|
|
485
|
+
apiRef.current.applyColumnState({
|
|
486
|
+
state: derivedColumnState,
|
|
487
|
+
applyOrder: true // 应用列顺序
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
// 2. 应用派生的列样式
|
|
492
|
+
if (derivedColumnState) {
|
|
493
|
+
setColumnCellClass(handelgridPlusColumnState(derivedColumnState));
|
|
494
|
+
}
|
|
495
|
+
}).then(function () {
|
|
496
|
+
// 等待 Grid 状态稳定(使用 requestAnimationFrame 而非固定延迟)
|
|
497
|
+
return new Promise(function (resolve) {
|
|
498
|
+
if (cancelled) {
|
|
499
|
+
resolve();
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
requestAnimationFrame(function () {
|
|
503
|
+
// 双重 RAF 确保渲染完成
|
|
504
|
+
requestAnimationFrame(function () {
|
|
505
|
+
return resolve();
|
|
506
|
+
});
|
|
507
|
+
});
|
|
508
|
+
});
|
|
509
|
+
}).then(function () {
|
|
510
|
+
if (cancelled || !apiRef.current) return;
|
|
511
|
+
|
|
512
|
+
// 3. 应用过滤器(在列状态稳定后执行)
|
|
513
|
+
if (currentColumnScheme !== null && currentColumnScheme !== void 0 && currentColumnScheme.filterModel) {
|
|
514
|
+
apiRef.current.setFilterModel(currentColumnScheme.filterModel);
|
|
515
|
+
}
|
|
516
|
+
}).catch(function (error) {
|
|
517
|
+
if (!cancelled) {
|
|
518
|
+
console.error('[AgGridPlus] 应用方案失败:', error);
|
|
519
|
+
_logger.logger.error('[AgGridPlus] 应用方案失败', error);
|
|
520
|
+
}
|
|
521
|
+
});
|
|
522
|
+
|
|
523
|
+
// 清理函数:取消进行中的操作
|
|
524
|
+
return function () {
|
|
525
|
+
cancelled = true;
|
|
526
|
+
};
|
|
527
|
+
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, derivedColumnState, ready // 添加 ready 依赖,确保 Grid 初始化完成后再应用方案
|
|
528
|
+
]);
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* 【新增】监听当前方案 ID 变化,当方案被删除时重置列状态
|
|
532
|
+
*
|
|
533
|
+
* 场景:
|
|
534
|
+
* - 用户删除当前正在使用的方案
|
|
535
|
+
* - currentColumnScheme?.id 从有值变为 null
|
|
536
|
+
*
|
|
537
|
+
* 行为:
|
|
538
|
+
* - 重置列状态为初始状态(默认顺序、宽度等)
|
|
539
|
+
* - 清除所有过滤器
|
|
540
|
+
* - 清除列样式配置
|
|
541
|
+
*
|
|
542
|
+
* 优势:
|
|
543
|
+
* - 符合单向数据流架构
|
|
544
|
+
* - 适用于所有方案切换场景(删除/取消选择)
|
|
545
|
+
* - 用户体验好,自动恢复到初始状态
|
|
546
|
+
*/
|
|
547
|
+
var prevSchemeIdRef = (0, _react.useRef)(currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id);
|
|
548
|
+
(0, _react.useEffect)(function () {
|
|
549
|
+
if (!gridKey || !apiRef.current || !ready) return;
|
|
550
|
+
var prevSchemeId = prevSchemeIdRef.current;
|
|
551
|
+
var currentSchemeId = currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id;
|
|
552
|
+
|
|
553
|
+
// 检测方案被删除:从有值变为 null/undefined
|
|
554
|
+
if (prevSchemeId && !currentSchemeId) {
|
|
555
|
+
Promise.resolve().then(function () {
|
|
556
|
+
if (!apiRef.current) return;
|
|
557
|
+
|
|
558
|
+
// 1. 重置列状态为初始状态
|
|
559
|
+
apiRef.current.resetColumnState();
|
|
560
|
+
|
|
561
|
+
// 2. 清除所有过滤器
|
|
562
|
+
apiRef.current.setFilterModel(null);
|
|
563
|
+
|
|
564
|
+
// 3. 清除列样式配置
|
|
565
|
+
setColumnCellClass({});
|
|
566
|
+
}).catch(function (error) {
|
|
567
|
+
console.error('[AgGridPlus] 重置列状态失败:', error);
|
|
568
|
+
_logger.logger.error('[AgGridPlus] 重置列状态失败', error);
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
// 更新引用
|
|
573
|
+
prevSchemeIdRef.current = currentSchemeId;
|
|
574
|
+
}, [gridKey, currentColumnScheme === null || currentColumnScheme === void 0 ? void 0 : currentColumnScheme.id, ready]);
|
|
575
|
+
|
|
573
576
|
// 稳定化 gridParams 和 sortColumn 的引用(深比较,内容不变即复用旧引用)
|
|
574
577
|
var stableGridParams = useDeepCompareStable(gridParams);
|
|
575
578
|
var stableSortColumn = useDeepCompareStable(sortColumn);
|
|
@@ -1018,10 +1021,11 @@ function AgGridPlus(props) {
|
|
|
1018
1021
|
|
|
1019
1022
|
// 构建查询表单项(带 order 属性)
|
|
1020
1023
|
var queryFormItems = (0, _react.useMemo)(function () {
|
|
1021
|
-
var
|
|
1022
|
-
|
|
1024
|
+
var _flattenColumnState;
|
|
1025
|
+
// 查询方案按叶列排序和隐藏,分组本身不作为查询字段。@author nokecy
|
|
1026
|
+
var items = ((_flattenColumnState = (0, _processFormColumnState.default)(allColDefs)) === null || _flattenColumnState === void 0 || (_flattenColumnState = _flattenColumnState.filter(function (col) {
|
|
1023
1027
|
return col.filter !== false && !col.hideInSearch;
|
|
1024
|
-
})) === null ||
|
|
1028
|
+
})) === null || _flattenColumnState === void 0 ? void 0 : _flattenColumnState.map(function (col) {
|
|
1025
1029
|
var _col$queryField, _col$searchSort;
|
|
1026
1030
|
return _objectSpread({
|
|
1027
1031
|
field: (_col$queryField = col.queryField) !== null && _col$queryField !== void 0 ? _col$queryField : col.field,
|
|
@@ -1153,10 +1157,12 @@ function AgGridPlus(props) {
|
|
|
1153
1157
|
}
|
|
1154
1158
|
}, search == false ? null : /*#__PURE__*/_react.default.createElement(_queryForm.default, {
|
|
1155
1159
|
colDefs: (0, _processFormColumnState.default)(visibleFormItems),
|
|
1160
|
+
effectiveColDefs: (0, _processFormColumnState.default)(colDefs),
|
|
1156
1161
|
defaultRows: queryDefaultRows,
|
|
1157
|
-
columnStates: columnState
|
|
1162
|
+
columnStates: (_ref = derivedColumnState !== null && derivedColumnState !== void 0 ? derivedColumnState : columnState) !== null && _ref !== void 0 ? _ref : [],
|
|
1158
1163
|
defaultExpand: defaultSearchExpand,
|
|
1159
1164
|
gridApi: apiRef.current,
|
|
1165
|
+
onValuesChange: onQueryValuesChange,
|
|
1160
1166
|
onQuery: function onQuery(formValues) {
|
|
1161
1167
|
// 优先使用高级搜索:如果存在高级搜索条件,忽略简单查询
|
|
1162
1168
|
if (advancedQueryRules.children.length > 0) {
|
|
@@ -179,8 +179,8 @@ function useDerivedGridState(currentScheme, allColDefs) {
|
|
|
179
179
|
console.error('[useDerivedGridState] 转换失败:', error);
|
|
180
180
|
return null;
|
|
181
181
|
}
|
|
182
|
-
}, [//
|
|
183
|
-
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
182
|
+
}, [// 同一方案的内容修改也要重新派生,保持表格与查询区使用相同快照。@author nokecy
|
|
183
|
+
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.columnConfig, allColDefs]);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
/**
|
|
@@ -215,8 +215,8 @@ function useDerivedColumnState(currentScheme, allColDefs) {
|
|
|
215
215
|
console.error('[useDerivedColumnState] 转换失败:', error);
|
|
216
216
|
return null;
|
|
217
217
|
}
|
|
218
|
-
}, [//
|
|
219
|
-
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, allColDefs]);
|
|
218
|
+
}, [// 同一方案保存后 columnConfig 会更新,不能只比较方案 ID。@author nokecy
|
|
219
|
+
currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.columnConfig, allColDefs]);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
/**
|
|
@@ -85,6 +85,12 @@ interface GridProps extends AgGridReactProps {
|
|
|
85
85
|
* 选中行变化回调函数
|
|
86
86
|
*/
|
|
87
87
|
onSelectedRowsChange?: (selectedRows: any[]) => void;
|
|
88
|
+
/**
|
|
89
|
+
* 查询区条件值变化时回调(输入、默认值落位、重置都会触发),参数为当前条件快照,以查询字段名为键。
|
|
90
|
+
* 只通知、不发起查询;宿主可据此与上次查询用的条件比较,提示「条件已变更,请查询」。
|
|
91
|
+
* @author nokecy
|
|
92
|
+
*/
|
|
93
|
+
onQueryValuesChange?: (values: Record<string, any>) => void;
|
|
88
94
|
/**
|
|
89
95
|
* 错误处理回调函数
|
|
90
96
|
* 当组件发生错误时调用,可用于自定义错误处理逻辑
|
|
@@ -144,6 +150,8 @@ interface AgGridColumnPropsClone extends ColDef {
|
|
|
144
150
|
hideInTable?: boolean;
|
|
145
151
|
hideInSearch?: boolean;
|
|
146
152
|
queryField?: string;
|
|
153
|
+
/** 查询区独立标题;优先于列方案中的表头名称。@author nokecy */
|
|
154
|
+
searchTitle?: string;
|
|
147
155
|
/**
|
|
148
156
|
* 是否文本缩略显示,并使用tooltip
|
|
149
157
|
*/
|
|
@@ -5,10 +5,14 @@ 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;
|
|
11
13
|
onQuery: (formValue: any) => void;
|
|
12
14
|
onInit?: ((defaultValues: any) => void) | undefined;
|
|
15
|
+
/** 查询条件值变化(输入、默认值落位、重置)时回调,参数为当前条件快照;不触发查询。@author nokecy */
|
|
16
|
+
onValuesChange?: ((values: Record<string, any>) => void) | undefined;
|
|
13
17
|
}) => React.JSX.Element;
|
|
14
18
|
export default FormRender;
|
|
@@ -13,6 +13,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
13
13
|
var _react2 = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _queryForm = _interopRequireDefault(require("./queryForm"));
|
|
15
15
|
var _schemaKey = require("./schemaKey");
|
|
16
|
+
var _queryColumns = require("./queryColumns");
|
|
16
17
|
var _boolSelect = _interopRequireDefault(require("../_utils/boolSelect"));
|
|
17
18
|
require("./index.less");
|
|
18
19
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
@@ -31,15 +32,17 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
|
31
32
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // @author nokecy
|
|
32
33
|
var FormRender = function FormRender(props) {
|
|
33
34
|
var className = props.className,
|
|
34
|
-
gridApi = props.gridApi,
|
|
35
35
|
colDefs = props.colDefs,
|
|
36
|
+
_props$effectiveColDe = props.effectiveColDefs,
|
|
37
|
+
effectiveColDefs = _props$effectiveColDe === void 0 ? colDefs : _props$effectiveColDe,
|
|
36
38
|
columnStates = props.columnStates,
|
|
37
39
|
onQuery = props.onQuery,
|
|
38
40
|
_props$defaultRows = props.defaultRows,
|
|
39
41
|
defaultRows = _props$defaultRows === void 0 ? 1 : _props$defaultRows;
|
|
40
42
|
var _theme$useToken = _antd.theme.useToken(),
|
|
41
43
|
token = _theme$useToken.token; // 筛选区跟随宿主主题。@author nokecy
|
|
42
|
-
|
|
44
|
+
var queryColumns = (0, _queryColumns.resolveQueryColumns)(colDefs, effectiveColDefs, columnStates);
|
|
45
|
+
var schemaKey = (0, _schemaKey.queryFormSchemaKey)(undefined, queryColumns);
|
|
43
46
|
var _useState = (0, _react2.useState)({
|
|
44
47
|
type: 'object',
|
|
45
48
|
properties: {}
|
|
@@ -47,25 +50,25 @@ var FormRender = function FormRender(props) {
|
|
|
47
50
|
_useState2 = _slicedToArray(_useState, 2),
|
|
48
51
|
schema = _useState2[0],
|
|
49
52
|
setSchema = _useState2[1];
|
|
53
|
+
|
|
54
|
+
// 表单与 SchemaField 实例保持稳定,元数据更新不清空已输入的查询值。@author nokecy
|
|
50
55
|
var form = (0, _react2.useMemo)(function () {
|
|
51
|
-
return (0, _core.createForm)(
|
|
52
|
-
effects: function effects() {
|
|
53
|
-
return [(0, _core.onFieldInit)('queryForm', function (field) {
|
|
54
|
-
field.query('queryForm').take(function (node) {
|
|
55
|
-
node.setComponentProps({
|
|
56
|
-
onReset: onReset,
|
|
57
|
-
defaultExpand: props.defaultExpand
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
})];
|
|
61
|
-
}
|
|
62
|
-
});
|
|
56
|
+
return (0, _core.createForm)();
|
|
63
57
|
}, []);
|
|
64
58
|
|
|
65
|
-
//
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
// 条件变化只通知宿主(如提示「条件已变更」),回调走 ref,宿主每次渲染传新函数也不重复订阅。@author nokecy
|
|
60
|
+
var onValuesChangeRef = (0, _react2.useRef)(props.onValuesChange);
|
|
61
|
+
onValuesChangeRef.current = props.onValuesChange;
|
|
62
|
+
(0, _react2.useEffect)(function () {
|
|
63
|
+
var id = form.subscribe(function (_ref) {
|
|
64
|
+
var _onValuesChangeRef$cu;
|
|
65
|
+
var type = _ref.type;
|
|
66
|
+
if (type === _core.LifeCycleTypes.ON_FORM_VALUES_CHANGE) (_onValuesChangeRef$cu = onValuesChangeRef.current) === null || _onValuesChangeRef$cu === void 0 || _onValuesChangeRef$cu.call(onValuesChangeRef, _objectSpread({}, form.values));
|
|
67
|
+
});
|
|
68
|
+
return function () {
|
|
69
|
+
return form.unsubscribe(id);
|
|
70
|
+
};
|
|
71
|
+
}, [form]);
|
|
69
72
|
var SchemaField = (0, _react2.useMemo)(function () {
|
|
70
73
|
return (0, _react.createSchemaField)({
|
|
71
74
|
components: {
|
|
@@ -81,7 +84,7 @@ var FormRender = function FormRender(props) {
|
|
|
81
84
|
BoolSelect: _boolSelect.default
|
|
82
85
|
}
|
|
83
86
|
});
|
|
84
|
-
}, [
|
|
87
|
+
}, []);
|
|
85
88
|
var onSubmit = function onSubmit() {
|
|
86
89
|
onQuery && onQuery(form.values);
|
|
87
90
|
};
|
|
@@ -121,47 +124,31 @@ var FormRender = function FormRender(props) {
|
|
|
121
124
|
return component ? component : "Input";
|
|
122
125
|
}
|
|
123
126
|
};
|
|
124
|
-
var getSchema = function getSchema(
|
|
125
|
-
var _columns, _columns2;
|
|
127
|
+
var getSchema = function getSchema() {
|
|
126
128
|
var rootSchema = {
|
|
127
129
|
type: 'object',
|
|
128
130
|
properties: {}
|
|
129
131
|
};
|
|
130
|
-
if (!columnStates) {
|
|
131
|
-
return rootSchema;
|
|
132
|
-
}
|
|
133
132
|
var gridSchema = {
|
|
134
133
|
type: 'void',
|
|
135
134
|
"name": 'queryForm',
|
|
136
135
|
"x-component": 'QueryForm',
|
|
137
136
|
properties: {},
|
|
138
137
|
"x-component-props": {
|
|
139
|
-
defaultRows: defaultRows
|
|
138
|
+
defaultRows: defaultRows,
|
|
139
|
+
defaultExpand: props.defaultExpand,
|
|
140
|
+
onReset: onReset
|
|
140
141
|
}
|
|
141
142
|
};
|
|
142
|
-
|
|
143
|
-
var
|
|
144
|
-
var state = columnStates.find(function (x) {
|
|
145
|
-
return x.colId == colDef.field;
|
|
146
|
-
});
|
|
147
|
-
var columnDefs = gridApi === null || gridApi === void 0 ? void 0 : gridApi.getColumnDef(colDef.field);
|
|
148
|
-
// 查询组件属性(下拉选项)以本次传入的列为准:AG Grid 在本副作用之后才应用新 columnDefs,此刻取到的还是上一版。@author nokecy
|
|
149
|
-
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, colDef), columnDefs), state), {}, {
|
|
150
|
-
searchComponentProps: (_searchComponentProps = colDef.searchComponentProps) !== null && _searchComponentProps !== void 0 ? _searchComponentProps : columnDefs === null || columnDefs === void 0 ? void 0 : columnDefs.searchComponentProps
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
columns = columns ? (_columns = columns) === null || _columns === void 0 ? void 0 : _columns.filter(function (i) {
|
|
154
|
-
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);
|
|
155
|
-
}) : [];
|
|
156
|
-
columns.map(function (col) {
|
|
157
|
-
var _colDef$queryField;
|
|
143
|
+
queryColumns.forEach(function (col) {
|
|
144
|
+
var _colDef$queryField, _colDef$searchTitle;
|
|
158
145
|
var colDef = col;
|
|
159
146
|
var name = (_colDef$queryField = colDef.queryField) !== null && _colDef$queryField !== void 0 ? _colDef$queryField : colDef.field;
|
|
160
|
-
var headerName = colDef.headerName;
|
|
147
|
+
var headerName = (_colDef$searchTitle = colDef.searchTitle) !== null && _colDef$searchTitle !== void 0 ? _colDef$searchTitle : colDef.headerName;
|
|
161
148
|
//表单自定义组件
|
|
162
149
|
var component = getComponent(colDef);
|
|
163
150
|
if (colDef.filter != false) {
|
|
164
|
-
var _colDef$searchCompone, _colDef$searchCompone2, _colDef$searchCompone3;
|
|
151
|
+
var _colDef$searchCompone, _colDef$searchCompone2, _colDef$searchCompone3, _colDef$searchCompone4;
|
|
165
152
|
// 为多选下拉框添加maxTagCount配置
|
|
166
153
|
var componentProps = _objectSpread({
|
|
167
154
|
placeholder: "\u8BF7\u8F93\u5165".concat(headerName),
|
|
@@ -183,7 +170,7 @@ var FormRender = function FormRender(props) {
|
|
|
183
170
|
type: 'string',
|
|
184
171
|
title: headerName,
|
|
185
172
|
required: (colDef === null || colDef === void 0 || (_colDef$searchCompone = colDef.searchComponentProps) === null || _colDef$searchCompone === void 0 ? void 0 : _colDef$searchCompone.required) || false,
|
|
186
|
-
default: (colDef === null || colDef === void 0 || (_colDef$
|
|
173
|
+
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,
|
|
187
174
|
enum: colDef === null || colDef === void 0 ? void 0 : colDef.enum,
|
|
188
175
|
"x-component": component,
|
|
189
176
|
"x-component-props": componentProps,
|
|
@@ -198,7 +185,7 @@ var FormRender = function FormRender(props) {
|
|
|
198
185
|
});
|
|
199
186
|
///@ts-ignore
|
|
200
187
|
rootSchema.properties["queryForm"] = gridSchema;
|
|
201
|
-
if (!
|
|
188
|
+
if (!queryColumns.length) {
|
|
202
189
|
///@ts-ignore
|
|
203
190
|
delete rootSchema.properties["queryForm"];
|
|
204
191
|
}
|
|
@@ -207,18 +194,40 @@ var FormRender = function FormRender(props) {
|
|
|
207
194
|
|
|
208
195
|
// 【新增】用于追踪是否已完成首次初始化
|
|
209
196
|
var initializedRef = (0, _react2.useRef)(false);
|
|
197
|
+
var previousFieldsRef = (0, _react2.useRef)([]);
|
|
210
198
|
(0, _react2.useEffect)(function () {
|
|
211
199
|
var _new_schema$propertie, _new_schema$propertie2;
|
|
212
|
-
var new_schema = getSchema(
|
|
200
|
+
var new_schema = getSchema();
|
|
201
|
+
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 : {};
|
|
202
|
+
// 移除失效查询项的字段图和值,避免界面已经移除却仍提交旧筛选。@author nokecy
|
|
203
|
+
previousFieldsRef.current.filter(function (name) {
|
|
204
|
+
return !(name in fieldSchemas);
|
|
205
|
+
}).forEach(function (name) {
|
|
206
|
+
form.clearFormGraph(name);
|
|
207
|
+
form.deleteValuesIn(name);
|
|
208
|
+
form.deleteInitialValuesIn(name);
|
|
209
|
+
});
|
|
210
|
+
previousFieldsRef.current = Object.keys(fieldSchemas);
|
|
213
211
|
setSchema(new_schema);
|
|
214
|
-
//
|
|
215
|
-
Object.entries(
|
|
216
|
-
var
|
|
217
|
-
name =
|
|
218
|
-
fieldSchema =
|
|
212
|
+
// 已有字段同步元数据,不触碰仍有效字段的查询值,也不触发查询。@author nokecy
|
|
213
|
+
Object.entries(fieldSchemas).forEach(function (_ref2) {
|
|
214
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
215
|
+
name = _ref3[0],
|
|
216
|
+
fieldSchema = _ref3[1];
|
|
219
217
|
form.query(name).take(function (field) {
|
|
218
|
+
var _fieldSchema$enum;
|
|
220
219
|
field.title = fieldSchema.title;
|
|
221
|
-
field.
|
|
220
|
+
field.required = fieldSchema.required;
|
|
221
|
+
// Select 会把 dataSource 映射为 options;仅配置 options 时也同步该数据源。@author nokecy
|
|
222
|
+
field.dataSource = (_fieldSchema$enum = fieldSchema.enum) !== null && _fieldSchema$enum !== void 0 ? _fieldSchema$enum : fieldSchema['x-component-props'].options;
|
|
223
|
+
field.component = [fieldSchema['x-component'], fieldSchema['x-component-props']];
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
form.query('queryForm').take(function (field) {
|
|
227
|
+
return field.setComponentProps({
|
|
228
|
+
defaultRows: defaultRows,
|
|
229
|
+
defaultExpand: props.defaultExpand,
|
|
230
|
+
onReset: onReset
|
|
222
231
|
});
|
|
223
232
|
});
|
|
224
233
|
|
|
@@ -233,7 +242,7 @@ var FormRender = function FormRender(props) {
|
|
|
233
242
|
}, 0);
|
|
234
243
|
});
|
|
235
244
|
}
|
|
236
|
-
}, [
|
|
245
|
+
}, [schemaKey, defaultRows, props.defaultExpand]);
|
|
237
246
|
return /*#__PURE__*/_react2.default.createElement("div", {
|
|
238
247
|
className: (0, _classnames.default)(className, "ag-grid-table-search ag-grid-table-search-query-filter"),
|
|
239
248
|
style: {
|
|
@@ -242,6 +251,7 @@ var FormRender = function FormRender(props) {
|
|
|
242
251
|
}, /*#__PURE__*/_react2.default.createElement(_antdV.Form, {
|
|
243
252
|
form: form,
|
|
244
253
|
labelWidth: 100,
|
|
254
|
+
labelWrap: true,
|
|
245
255
|
feedbackLayout: "none",
|
|
246
256
|
onAutoSubmit: onSubmit
|
|
247
257
|
}, /*#__PURE__*/_react2.default.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[];
|