@nokecy/qc-ui 1.0.99 → 1.1.1
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/ConfirmPro/index.js +1 -1
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +49 -22
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +2 -14
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +52 -84
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +27 -30
- package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +0 -2
- package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.js +0 -2
- package/dist/cjs/ag-grid-plus/utils/logger.js +1 -2
- package/dist/cjs/array-table/index.js +44 -61
- package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +1 -7
- package/dist/cjs/dashboard/dashboard/index.js +0 -1
- package/dist/cjs/dashboard/widget/selector/index.js +0 -3
- package/dist/cjs/deleteConfirm/index.js +1 -1
- package/dist/cjs/formDesigner/FormDesigner.js +1 -3
- package/dist/cjs/formDesigner/widgets/SchemaEditorWidget.js +0 -1
- package/dist/cjs/generatedListPage/PerformanceMonitor.js +0 -3
- package/dist/cjs/generatedListPage/RequestManager.js +9 -11
- package/dist/cjs/standardFormDialog/PortalManager.js +2 -10
- package/dist/cjs/standardFormDialog/withStandardForm.js +0 -2
- package/dist/cjs/toolBar/index.js +1 -1
- package/dist/esm/ConfirmPro/index.js +1 -1
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +49 -22
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +2 -14
- package/dist/esm/ag-grid-plus/context/useSchemeManager.js +52 -84
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +27 -30
- package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +0 -2
- package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.js +0 -2
- package/dist/esm/ag-grid-plus/utils/logger.js +1 -2
- package/dist/esm/array-table/index.js +44 -61
- package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +1 -7
- package/dist/esm/dashboard/dashboard/index.js +0 -1
- package/dist/esm/dashboard/widget/selector/index.js +0 -3
- package/dist/esm/deleteConfirm/index.js +1 -1
- package/dist/esm/formDesigner/FormDesigner.js +1 -3
- package/dist/esm/formDesigner/widgets/SchemaEditorWidget.js +0 -1
- package/dist/esm/generatedListPage/PerformanceMonitor.js +0 -3
- package/dist/esm/generatedListPage/RequestManager.js +9 -11
- package/dist/esm/standardFormDialog/PortalManager.js +2 -10
- package/dist/esm/standardFormDialog/withStandardForm.js +0 -2
- package/dist/esm/toolBar/index.js +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +2 -1
|
@@ -25,8 +25,6 @@ import PreviewArrayTable from "./preview";
|
|
|
25
25
|
import { Space } from "antd";
|
|
26
26
|
import Setting from "../ag-grid-plus/setting";
|
|
27
27
|
import { GridPlusContext } from "../ag-grid-plus/context/gridContext";
|
|
28
|
-
import { useSchemeManager } from "../ag-grid-plus/context/useSchemeManager";
|
|
29
|
-
import { LocalStorageSchemeAdapter } from "../ag-grid-plus/shared/storage/localStorageAdapter";
|
|
30
28
|
import { flatConfigToColumnState, flatConfigToGridState } from "../ag-grid-plus/setting/columnGroupUtils";
|
|
31
29
|
|
|
32
30
|
// 导入 AG-Grid v33 主题
|
|
@@ -34,7 +32,14 @@ import { agGridTheme } from "../ag-grid-plus/theme";
|
|
|
34
32
|
|
|
35
33
|
//@ts-ignore
|
|
36
34
|
var ArrayTableInner = observer(function (props) {
|
|
37
|
-
var height = props.height
|
|
35
|
+
var height = props.height,
|
|
36
|
+
gridKey = props.gridKey;
|
|
37
|
+
|
|
38
|
+
// 【新增】运行时验证 gridKey
|
|
39
|
+
if (!gridKey) {
|
|
40
|
+
console.error('[ArrayTable] gridKey 是必需的属性,用于方案管理和状态持久化');
|
|
41
|
+
throw new Error('[ArrayTable] gridKey 属性是必需的。请在 x-component-props 中提供 gridKey');
|
|
42
|
+
}
|
|
38
43
|
var _useState = useState(false),
|
|
39
44
|
_useState2 = _slicedToArray(_useState, 2),
|
|
40
45
|
isAdd = _useState2[0],
|
|
@@ -67,10 +72,12 @@ var ArrayTableInner = observer(function (props) {
|
|
|
67
72
|
var _useRowDrag = useRowDrag(field),
|
|
68
73
|
handleRowDragMove = _useRowDrag.handleRowDragMove;
|
|
69
74
|
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
// 直接使用 Context 获取方案管理状态
|
|
76
|
+
// ArrayTable 外层已经提供了完整的 GridPlusContext.Provider
|
|
77
|
+
var context = useContext(GridPlusContext);
|
|
78
|
+
var _ref = context || {},
|
|
79
|
+
currentSchemes = _ref.currentSchemes,
|
|
80
|
+
columnSchemes = _ref.columnSchemes;
|
|
74
81
|
|
|
75
82
|
// 获取当前表格的激活方案
|
|
76
83
|
var currentScheme = useMemo(function () {
|
|
@@ -111,17 +118,8 @@ var ArrayTableInner = observer(function (props) {
|
|
|
111
118
|
firstCol: (_currentScheme$column = currentScheme.columnConfig[0]) === null || _currentScheme$column === void 0 ? void 0 : _currentScheme$column.field,
|
|
112
119
|
updatedAt: currentScheme.updatedAt
|
|
113
120
|
});
|
|
114
|
-
console.log('[ArrayTable] 方案恢复检查:', {
|
|
115
|
-
schemeId: currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id,
|
|
116
|
-
schemeName: currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.name,
|
|
117
|
-
configHash: configHash,
|
|
118
|
-
lastHash: lastAppliedRef.current.configHash,
|
|
119
|
-
shouldApply: configHash !== lastAppliedRef.current.configHash
|
|
120
|
-
});
|
|
121
|
-
|
|
122
121
|
// 【关键】检查配置是否真正变化,避免重复应用
|
|
123
122
|
if (configHash === lastAppliedRef.current.configHash) {
|
|
124
|
-
console.log('[ArrayTable] 配置未变化,跳过应用');
|
|
125
123
|
return;
|
|
126
124
|
}
|
|
127
125
|
|
|
@@ -137,12 +135,9 @@ var ArrayTableInner = observer(function (props) {
|
|
|
137
135
|
state: columnState,
|
|
138
136
|
applyOrder: true // 强制应用列顺序
|
|
139
137
|
});
|
|
140
|
-
console.log('[ArrayTable] 方案已成功应用');
|
|
141
|
-
|
|
142
138
|
// 如果方案中包含过滤器配置,也一并应用
|
|
143
139
|
if (currentScheme.filterModel) {
|
|
144
140
|
gridApiState.setFilterModel(currentScheme.filterModel);
|
|
145
|
-
console.log('[ArrayTable] 过滤器已应用');
|
|
146
141
|
}
|
|
147
142
|
|
|
148
143
|
// 记录本次应用的配置哈希
|
|
@@ -155,19 +150,14 @@ var ArrayTableInner = observer(function (props) {
|
|
|
155
150
|
// 使用 requestAnimationFrame 延迟应用
|
|
156
151
|
var rafId = requestAnimationFrame(function () {
|
|
157
152
|
try {
|
|
158
|
-
console.log('[ArrayTable] 正在应用方案:', currentScheme.name);
|
|
159
|
-
|
|
160
153
|
// 【关键检测】检查是否包含分组配置
|
|
161
154
|
var hasGroups = currentScheme.columnConfig.some(function (item) {
|
|
162
155
|
return item.type === 'group';
|
|
163
156
|
});
|
|
164
|
-
console.log('[ArrayTable] 是否包含分组:', hasGroups);
|
|
165
|
-
|
|
166
157
|
// 【条件更新】只有在包含分组时才更新 columnDefs
|
|
167
158
|
// 原因:array-table 的列是动态生成的,无分组时不应该覆盖动态列定义
|
|
168
159
|
if (hasGroups) {
|
|
169
160
|
var gridColumnDefs = flatConfigToGridState(currentScheme.columnConfig);
|
|
170
|
-
console.log('[ArrayTable] 检测到分组,更新 columnDefs');
|
|
171
161
|
gridApiState.setGridOption('columnDefs', gridColumnDefs);
|
|
172
162
|
|
|
173
163
|
// 等待 columnDefs 更新完成后再应用列状态
|
|
@@ -180,7 +170,7 @@ var ArrayTableInner = observer(function (props) {
|
|
|
180
170
|
}, 100);
|
|
181
171
|
} else {
|
|
182
172
|
// 无分组时,直接应用列状态即可
|
|
183
|
-
|
|
173
|
+
|
|
184
174
|
applyColumnStateAndFilter();
|
|
185
175
|
}
|
|
186
176
|
} catch (error) {
|
|
@@ -307,8 +297,8 @@ var ArrayTableInner = observer(function (props) {
|
|
|
307
297
|
' <span data-ref="eSortAsc" class="ag-header-icon ag-sort-ascending-icon"></span>' + ' <span data-ref="eSortDesc" class="ag-header-icon ag-sort-descending-icon"></span>' + ' <span data-ref="eSortNone" class="ag-header-icon ag-sort-none-icon"></span>' + " </div>" + "</div>"
|
|
308
298
|
}
|
|
309
299
|
},
|
|
310
|
-
getRowId: function getRowId(
|
|
311
|
-
var data =
|
|
300
|
+
getRowId: function getRowId(_ref2) {
|
|
301
|
+
var data = _ref2.data;
|
|
312
302
|
return data._id || data.id;
|
|
313
303
|
}
|
|
314
304
|
// rowDragEntireRow={true}
|
|
@@ -342,43 +332,36 @@ var ArrayTableInner = observer(function (props) {
|
|
|
342
332
|
ArrayTableInner.displayName = "ArrayTableInner";
|
|
343
333
|
|
|
344
334
|
/**
|
|
345
|
-
* ArrayTable 组件
|
|
335
|
+
* ArrayTable 组件
|
|
336
|
+
*
|
|
337
|
+
* 注意:需要在外部使用 GridPlusContext.Provider 包裹以提供方案管理功能
|
|
346
338
|
*
|
|
347
|
-
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```tsx
|
|
341
|
+
* const adapter = useMemo(() => new LocalStorageSchemeAdapter({
|
|
342
|
+
* storageKey: `array-table-schemes-${gridKey}`
|
|
343
|
+
* }), [gridKey]);
|
|
344
|
+
*
|
|
345
|
+
* const schemeManager = useSchemeManager({ adapter, autoLoad: true });
|
|
346
|
+
*
|
|
347
|
+
* const contextValue = useMemo(() => ({
|
|
348
|
+
* extensibleColumns: [],
|
|
349
|
+
* columnState: undefined,
|
|
350
|
+
* onSaveColumnState: () => {},
|
|
351
|
+
* applyToGlobal: () => {},
|
|
352
|
+
* resetCurrent: () => {},
|
|
353
|
+
* resetAll: () => {},
|
|
354
|
+
* queryFormItems: [],
|
|
355
|
+
* ...schemeManager
|
|
356
|
+
* }), [schemeManager]);
|
|
357
|
+
*
|
|
358
|
+
* <GridPlusContext.Provider value={contextValue}>
|
|
359
|
+
* <ArrayTable gridKey="my-table" height={400} />
|
|
360
|
+
* </GridPlusContext.Provider>
|
|
361
|
+
* ```
|
|
348
362
|
*/
|
|
349
363
|
//@ts-ignore
|
|
350
|
-
var ArrayTable =
|
|
351
|
-
// 创建 LocalStorage 适配器实例 (使用 useMemo 避免重复创建)
|
|
352
|
-
var adapter = useMemo(function () {
|
|
353
|
-
return new LocalStorageSchemeAdapter({
|
|
354
|
-
storageKey: "array-table-schemes-".concat(props.gridKey || 'default'),
|
|
355
|
-
enableDebugLog: false
|
|
356
|
-
});
|
|
357
|
-
}, [props.gridKey]);
|
|
358
|
-
|
|
359
|
-
// 初始化方案管理器
|
|
360
|
-
var schemeManager = useSchemeManager({
|
|
361
|
-
adapter: adapter,
|
|
362
|
-
autoLoad: true,
|
|
363
|
-
showErrorMessage: true
|
|
364
|
-
});
|
|
365
|
-
|
|
366
|
-
// 构建 Context Value
|
|
367
|
-
var contextValue = useMemo(function () {
|
|
368
|
-
return _objectSpread({
|
|
369
|
-
extensibleColumns: [],
|
|
370
|
-
columnState: undefined,
|
|
371
|
-
onSaveColumnState: function onSaveColumnState() {},
|
|
372
|
-
applyToGlobal: function applyToGlobal() {},
|
|
373
|
-
resetCurrent: function resetCurrent() {},
|
|
374
|
-
resetAll: function resetAll() {},
|
|
375
|
-
queryFormItems: []
|
|
376
|
-
}, schemeManager);
|
|
377
|
-
}, [schemeManager]);
|
|
378
|
-
return /*#__PURE__*/React.createElement(GridPlusContext.Provider, {
|
|
379
|
-
value: contextValue
|
|
380
|
-
}, /*#__PURE__*/React.createElement(ArrayTableInner, props));
|
|
381
|
-
});
|
|
364
|
+
var ArrayTable = ArrayTableInner;
|
|
382
365
|
ArrayTable.displayName = "ArrayTable";
|
|
383
366
|
ArrayTable.Column = function () {
|
|
384
367
|
return /*#__PURE__*/React.createElement(Fragment, null);
|
|
@@ -17,13 +17,7 @@ export function convertASTToRailroad(ast) {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// 调试日志
|
|
20
|
-
if (ast.type === 'Alternative' || ast.type === 'CharacterClass') {
|
|
21
|
-
console.log("\u5904\u7406 ".concat(ast.type, " \u8282\u70B9:"), {
|
|
22
|
-
type: ast.type,
|
|
23
|
-
expressions: ast.expressions,
|
|
24
|
-
isArray: Array.isArray(ast.expressions)
|
|
25
|
-
});
|
|
26
|
-
}
|
|
20
|
+
if (ast.type === 'Alternative' || ast.type === 'CharacterClass') {}
|
|
27
21
|
switch (ast.type) {
|
|
28
22
|
case 'RegExp':
|
|
29
23
|
// 正则表达式根节点,提取 body
|
|
@@ -103,13 +103,10 @@ var WidgetSelector = function WidgetSelector(props) {
|
|
|
103
103
|
finData[key].visible = false;
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
|
-
console.log('finData', finData);
|
|
107
106
|
//已添加次数
|
|
108
107
|
currentLayout.forEach(function (item) {
|
|
109
108
|
var _finData$key;
|
|
110
109
|
var key = item.i.split('-')[0];
|
|
111
|
-
console.log('item.i', item.i);
|
|
112
|
-
console.log('finData[key]', finData[key]);
|
|
113
110
|
finData[key].length = finData[key].length ? ((_finData$key = finData[key]) === null || _finData$key === void 0 ? void 0 : _finData$key.length) + 1 : 1;
|
|
114
111
|
});
|
|
115
112
|
return finData;
|
|
@@ -55,9 +55,7 @@ var FormDesigner = function FormDesigner(props) {
|
|
|
55
55
|
var getComponents = function getComponents() {
|
|
56
56
|
var components = {};
|
|
57
57
|
businessComponents.map(function (x) {
|
|
58
|
-
if (!x.Behavior) {
|
|
59
|
-
console.log(x);
|
|
60
|
-
}
|
|
58
|
+
if (!x.Behavior) {}
|
|
61
59
|
components[x.Behavior[0].name] = x;
|
|
62
60
|
});
|
|
63
61
|
return components;
|
|
@@ -5,7 +5,6 @@ import { MonacoInput } from '@nokecy/designable-react-settings-form';
|
|
|
5
5
|
// import MonacoEditor from 'react-monaco-editor';
|
|
6
6
|
|
|
7
7
|
export var SchemaEditorWidget = function SchemaEditorWidget(props) {
|
|
8
|
-
console.log(JSON.stringify(transformToSchema(props.tree), null, 2));
|
|
9
8
|
return /*#__PURE__*/React.createElement(MonacoInput, _extends({}, props, {
|
|
10
9
|
value: JSON.stringify(transformToSchema(props.tree), null, 2),
|
|
11
10
|
onChange: function onChange(value) {
|
|
@@ -201,9 +201,6 @@ export var PerformanceDevTools = function PerformanceDevTools(_ref2) {
|
|
|
201
201
|
}
|
|
202
202
|
var handleShowReport = function handleShowReport() {
|
|
203
203
|
var report = onGetReport();
|
|
204
|
-
console.group("\uD83D\uDE80 Performance Report: ".concat(componentName));
|
|
205
|
-
console.table(report);
|
|
206
|
-
console.groupEnd();
|
|
207
204
|
setShowDetails(!showDetails);
|
|
208
205
|
};
|
|
209
206
|
var getPerformanceColor = function getPerformanceColor(value, thresholds) {
|
|
@@ -203,32 +203,30 @@ export var RequestManager = /*#__PURE__*/function () {
|
|
|
203
203
|
case 0:
|
|
204
204
|
key = this.generateCacheKey(params); // 1. 检查缓存
|
|
205
205
|
if (!this.options.enableCache) {
|
|
206
|
-
_context3.next =
|
|
206
|
+
_context3.next = 5;
|
|
207
207
|
break;
|
|
208
208
|
}
|
|
209
209
|
cachedData = this.getFromCache(key);
|
|
210
210
|
if (!(cachedData !== null)) {
|
|
211
|
-
_context3.next =
|
|
211
|
+
_context3.next = 5;
|
|
212
212
|
break;
|
|
213
213
|
}
|
|
214
|
-
console.debug('[RequestManager] Cache hit:', key);
|
|
215
214
|
return _context3.abrupt("return", cachedData);
|
|
216
|
-
case
|
|
215
|
+
case 5:
|
|
217
216
|
if (!this.options.enableDedup) {
|
|
218
|
-
_context3.next =
|
|
217
|
+
_context3.next = 9;
|
|
219
218
|
break;
|
|
220
219
|
}
|
|
221
220
|
pending = this.pendingRequests.get(key);
|
|
222
221
|
if (!pending) {
|
|
223
|
-
_context3.next =
|
|
222
|
+
_context3.next = 9;
|
|
224
223
|
break;
|
|
225
224
|
}
|
|
226
|
-
console.debug('[RequestManager] Dedup request:', key);
|
|
227
225
|
return _context3.abrupt("return", pending.promise);
|
|
228
|
-
case
|
|
229
|
-
_context3.next =
|
|
226
|
+
case 9:
|
|
227
|
+
_context3.next = 11;
|
|
230
228
|
return this.waitForSlot();
|
|
231
|
-
case
|
|
229
|
+
case 11:
|
|
232
230
|
// 4. 创建新请求
|
|
233
231
|
abortController = new AbortController();
|
|
234
232
|
this.activeRequests++;
|
|
@@ -282,7 +280,7 @@ export var RequestManager = /*#__PURE__*/function () {
|
|
|
282
280
|
key: key
|
|
283
281
|
});
|
|
284
282
|
return _context3.abrupt("return", promise);
|
|
285
|
-
case
|
|
283
|
+
case 16:
|
|
286
284
|
case "end":
|
|
287
285
|
return _context3.stop();
|
|
288
286
|
}
|
|
@@ -68,7 +68,6 @@ var PortalManager = /*#__PURE__*/function () {
|
|
|
68
68
|
lastAccessedAt: now,
|
|
69
69
|
isOpen: true
|
|
70
70
|
});
|
|
71
|
-
console.debug("[PortalManager] Registered portal: ".concat(id));
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
/**
|
|
@@ -95,7 +94,6 @@ var PortalManager = /*#__PURE__*/function () {
|
|
|
95
94
|
if (portal) {
|
|
96
95
|
portal.isOpen = false;
|
|
97
96
|
portal.lastAccessedAt = Date.now();
|
|
98
|
-
console.debug("[PortalManager] Marked portal as closed: ".concat(id));
|
|
99
97
|
}
|
|
100
98
|
}
|
|
101
99
|
|
|
@@ -106,9 +104,7 @@ var PortalManager = /*#__PURE__*/function () {
|
|
|
106
104
|
}, {
|
|
107
105
|
key: "unregister",
|
|
108
106
|
value: function unregister(id) {
|
|
109
|
-
if (this.portals.delete(id)) {
|
|
110
|
-
console.debug("[PortalManager] Unregistered portal: ".concat(id));
|
|
111
|
-
}
|
|
107
|
+
if (this.portals.delete(id)) {}
|
|
112
108
|
}
|
|
113
109
|
|
|
114
110
|
/**
|
|
@@ -170,12 +166,9 @@ var PortalManager = /*#__PURE__*/function () {
|
|
|
170
166
|
if (shouldClean) {
|
|
171
167
|
_this.portals.delete(id);
|
|
172
168
|
cleanedCount++;
|
|
173
|
-
console.debug("[PortalManager] Cleaned up portal: ".concat(id));
|
|
174
169
|
}
|
|
175
170
|
});
|
|
176
|
-
if (cleanedCount > 0) {
|
|
177
|
-
console.info("[PortalManager] Cleanup completed: removed ".concat(cleanedCount, " portals"));
|
|
178
|
-
}
|
|
171
|
+
if (cleanedCount > 0) {}
|
|
179
172
|
}
|
|
180
173
|
|
|
181
174
|
/**
|
|
@@ -210,7 +203,6 @@ var PortalManager = /*#__PURE__*/function () {
|
|
|
210
203
|
key: "clear",
|
|
211
204
|
value: function clear() {
|
|
212
205
|
this.portals.clear();
|
|
213
|
-
console.info('[PortalManager] All portals cleared');
|
|
214
206
|
}
|
|
215
207
|
|
|
216
208
|
/**
|
|
@@ -78,7 +78,6 @@ export var withStandardForm = function withStandardForm(config) {
|
|
|
78
78
|
// 使用外部传入的schema配置
|
|
79
79
|
finalFormConfig = externalSchema.form;
|
|
80
80
|
finalFormSchema = externalSchema.schema;
|
|
81
|
-
console.log("\u2705 withStandardForm: ".concat(formId, " \u4F7F\u7528\u5916\u90E8Schema\u914D\u7F6E"));
|
|
82
81
|
} else {
|
|
83
82
|
// 构建表单 Schema(向后兼容)
|
|
84
83
|
finalFormSchema = {
|
|
@@ -130,7 +129,6 @@ export var withStandardForm = function withStandardForm(config) {
|
|
|
130
129
|
maxColumns: 2
|
|
131
130
|
}
|
|
132
131
|
};
|
|
133
|
-
console.log("\u2705 withStandardForm: ".concat(formId, " \u4F7F\u7528\u5185\u90E8\u6784\u5EFASchema"));
|
|
134
132
|
}
|
|
135
133
|
|
|
136
134
|
// 创建自定义的 useSchemaField hook
|