@nokecy/qc-ui 1.0.82 → 1.0.83

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.
Files changed (81) hide show
  1. package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.d.ts +9 -0
  2. package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.js +43 -0
  3. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +245 -121
  4. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  5. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  6. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  7. package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.js +12 -26
  8. package/dist/cjs/ag-grid-plus/schemes/types.d.ts +8 -5
  9. package/dist/cjs/ag-grid-plus/schemes/utils/validator.js +14 -18
  10. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  11. package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +348 -0
  12. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  13. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +940 -0
  14. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +208 -248
  15. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  16. package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +160 -0
  17. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  18. package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +94 -0
  19. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  20. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.js +5 -0
  21. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  22. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +281 -0
  23. package/dist/cjs/ag-grid-plus/setting/index.d.ts +2 -1
  24. package/dist/cjs/ag-grid-plus/setting/index.js +4 -2
  25. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  26. package/dist/cjs/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  27. package/dist/cjs/ag-grid-plus/types.d.ts +2 -0
  28. package/dist/cjs/array-table/index.js +30 -118
  29. package/dist/cjs/draggableModal/index.d.ts +1 -1
  30. package/dist/cjs/draggableModal/index.js +251 -25
  31. package/dist/cjs/draggableModal/style.less +185 -12
  32. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.d.ts +9 -0
  33. package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +44 -0
  34. package/dist/esm/ag-grid-plus/ag-gridPlus.js +245 -121
  35. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.d.ts +1 -1
  36. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.js +1 -1
  37. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.js +60 -14
  38. package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.js +13 -27
  39. package/dist/esm/ag-grid-plus/schemes/types.d.ts +8 -5
  40. package/dist/esm/ag-grid-plus/schemes/utils/validator.js +14 -18
  41. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.d.ts +16 -0
  42. package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +338 -0
  43. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.d.ts +20 -0
  44. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +932 -0
  45. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +207 -247
  46. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.d.ts +15 -0
  47. package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +150 -0
  48. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.d.ts +18 -0
  49. package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +87 -0
  50. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +59 -0
  51. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.js +1 -0
  52. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +75 -0
  53. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +265 -0
  54. package/dist/esm/ag-grid-plus/setting/index.d.ts +2 -1
  55. package/dist/esm/ag-grid-plus/setting/index.js +4 -2
  56. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.d.ts +2 -1
  57. package/dist/esm/ag-grid-plus/storage/SchemeSyncManager.js +11 -8
  58. package/dist/esm/ag-grid-plus/types.d.ts +2 -0
  59. package/dist/esm/array-table/index.js +31 -119
  60. package/dist/esm/draggableModal/index.d.ts +1 -1
  61. package/dist/esm/draggableModal/index.js +252 -27
  62. package/dist/esm/draggableModal/style.less +185 -12
  63. package/dist/umd/qc-ui.min.css +1 -1
  64. package/dist/umd/qc-ui.min.js +1 -1
  65. package/package.json +1 -1
  66. package/dist/cjs/ag-grid-plus/gridManager/index.d.ts +0 -7
  67. package/dist/cjs/ag-grid-plus/gridManager/index.js +0 -40
  68. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  69. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -32
  70. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  71. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -32
  72. package/dist/cjs/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  73. package/dist/cjs/ag-grid-plus/setting/diySetting/index.js +0 -268
  74. package/dist/esm/ag-grid-plus/gridManager/index.d.ts +0 -7
  75. package/dist/esm/ag-grid-plus/gridManager/index.js +0 -35
  76. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.d.ts +0 -7
  77. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.refactored.js +0 -27
  78. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.d.ts +0 -7
  79. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.refactored.js +0 -27
  80. package/dist/esm/ag-grid-plus/setting/diySetting/index.d.ts +0 -10
  81. package/dist/esm/ag-grid-plus/setting/diySetting/index.js +0 -259
@@ -75,7 +75,7 @@ function useColumnSchemes(config) {
75
75
  * 加载方案列表
76
76
  */
77
77
  var loadSchemesList = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
78
- var loadedSchemes, schemeToLoad, lastSchemeId;
78
+ var loadedSchemes, schemeToLoad, lastSchemeId, _schemeToLoad$columnC;
79
79
  return _regeneratorRuntime().wrap(function _callee$(_context) {
80
80
  while (1) switch (_context.prev = _context.next) {
81
81
  case 0:
@@ -116,6 +116,12 @@ function useColumnSchemes(config) {
116
116
 
117
117
  // 3. 应用方案
118
118
  if (schemeToLoad) {
119
+ console.log('[useColumnSchemes] 加载方案完成,准备调用 onSchemeChange:', {
120
+ schemeId: schemeToLoad.id,
121
+ schemeName: schemeToLoad.name,
122
+ hasColumnConfig: !!schemeToLoad.columnConfig,
123
+ columnConfigCount: ((_schemeToLoad$columnC = schemeToLoad.columnConfig) === null || _schemeToLoad$columnC === void 0 ? void 0 : _schemeToLoad$columnC.length) || 0
124
+ });
119
125
  setCurrentScheme(schemeToLoad);
120
126
  onSchemeChange === null || onSchemeChange === void 0 || onSchemeChange(schemeToLoad);
121
127
  }
@@ -223,6 +229,7 @@ function useColumnSchemes(config) {
223
229
  */
224
230
  var saveScheme = (0, _react.useCallback)( /*#__PURE__*/function () {
225
231
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(updates) {
232
+ var _updates$columnConfig, _updates$columnConfig2, _updatedScheme$column, _updatedScheme$column2, _updatedScheme$column3;
226
233
  var nameValidation, descValidation, updatedScheme, updatedSchemes;
227
234
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
228
235
  while (1) switch (_context4.prev = _context4.next) {
@@ -234,47 +241,86 @@ function useColumnSchemes(config) {
234
241
  console.error('[useColumnSchemes] 没有激活的方案');
235
242
  return _context4.abrupt("return");
236
243
  case 3:
244
+ console.log('[useColumnSchemes] saveScheme 被调用:', {
245
+ currentSchemeId: currentScheme.id,
246
+ currentSchemeName: currentScheme.name,
247
+ updates: updates,
248
+ hasColumnConfig: !!(updates !== null && updates !== void 0 && updates.columnConfig),
249
+ columnConfigLength: (updates === null || updates === void 0 || (_updates$columnConfig = updates.columnConfig) === null || _updates$columnConfig === void 0 ? void 0 : _updates$columnConfig.length) || 0,
250
+ columnConfigDetail: updates === null || updates === void 0 || (_updates$columnConfig2 = updates.columnConfig) === null || _updates$columnConfig2 === void 0 ? void 0 : _updates$columnConfig2.map(function (item) {
251
+ return {
252
+ type: item.type,
253
+ headerName: item.headerName,
254
+ field: item.field,
255
+ order: item.order,
256
+ parentId: item.parentId
257
+ };
258
+ })
259
+ });
260
+
261
+ // 验证更新内容
237
262
  if (!(updates !== null && updates !== void 0 && updates.name)) {
238
- _context4.next = 9;
263
+ _context4.next = 10;
239
264
  break;
240
265
  }
241
266
  nameValidation = (0, _validator.validateSchemeName)(updates.name);
242
267
  if (nameValidation.valid) {
243
- _context4.next = 7;
268
+ _context4.next = 8;
244
269
  break;
245
270
  }
246
271
  throw new Error(nameValidation.error);
247
- case 7:
272
+ case 8:
248
273
  if (!(0, _validator.checkDuplicateName)(updates.name, schemes, currentScheme.id)) {
249
- _context4.next = 9;
274
+ _context4.next = 10;
250
275
  break;
251
276
  }
252
277
  throw new Error('方案名称已存在');
253
- case 9:
278
+ case 10:
254
279
  if (!(updates !== null && updates !== void 0 && updates.description)) {
255
- _context4.next = 13;
280
+ _context4.next = 14;
256
281
  break;
257
282
  }
258
283
  descValidation = (0, _validator.validateSchemeDescription)(updates.description);
259
284
  if (descValidation.valid) {
260
- _context4.next = 13;
285
+ _context4.next = 14;
261
286
  break;
262
287
  }
263
288
  throw new Error(descValidation.error);
264
- case 13:
289
+ case 14:
265
290
  updatedScheme = _objectSpread(_objectSpread(_objectSpread({}, currentScheme), updates), {}, {
266
291
  updatedAt: Date.now()
267
292
  });
293
+ console.log('[useColumnSchemes] 准备保存的方案数据:', {
294
+ schemeId: updatedScheme.id,
295
+ schemeName: updatedScheme.name,
296
+ hasColumnConfig: !!updatedScheme.columnConfig,
297
+ columnConfigLength: ((_updatedScheme$column = updatedScheme.columnConfig) === null || _updatedScheme$column === void 0 ? void 0 : _updatedScheme$column.length) || 0,
298
+ columnConfigDetail: (_updatedScheme$column2 = updatedScheme.columnConfig) === null || _updatedScheme$column2 === void 0 ? void 0 : _updatedScheme$column2.map(function (item) {
299
+ return {
300
+ type: item.type,
301
+ headerName: item.headerName,
302
+ field: item.field,
303
+ order: item.order,
304
+ parentId: item.parentId
305
+ };
306
+ })
307
+ });
268
308
  updatedSchemes = schemes.map(function (s) {
269
309
  return s.id === currentScheme.id ? updatedScheme : s;
270
310
  });
271
- _context4.next = 17;
311
+ _context4.next = 19;
272
312
  return saveSchemesToStorage(updatedSchemes);
273
- case 17:
313
+ case 19:
274
314
  setCurrentScheme(updatedScheme);
275
315
  setIsDirty(false);
316
+ console.log('[useColumnSchemes] 方案保存完成,当前 currentScheme:', {
317
+ schemeId: updatedScheme.id,
318
+ schemeName: updatedScheme.name,
319
+ hasColumnConfig: !!updatedScheme.columnConfig,
320
+ columnConfigLength: ((_updatedScheme$column3 = updatedScheme.columnConfig) === null || _updatedScheme$column3 === void 0 ? void 0 : _updatedScheme$column3.length) || 0
321
+ });
276
322
  onSchemeSave === null || onSchemeSave === void 0 || onSchemeSave(updatedScheme);
277
- case 20:
323
+ case 23:
278
324
  case "end":
279
325
  return _context4.stop();
280
326
  }
@@ -289,7 +335,7 @@ function useColumnSchemes(config) {
289
335
  * 创建新方案
290
336
  */
291
337
  var createScheme = (0, _react.useCallback)( /*#__PURE__*/function () {
292
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(name, columnState, options) {
338
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(name, columnConfig, options) {
293
339
  var nameValidation, uniqueName, newScheme, updatedSchemes;
294
340
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
295
341
  while (1) switch (_context5.prev = _context5.next) {
@@ -315,7 +361,7 @@ function useColumnSchemes(config) {
315
361
  name: uniqueName,
316
362
  createdAt: Date.now(),
317
363
  updatedAt: Date.now(),
318
- columnState: columnState
364
+ columnConfig: columnConfig
319
365
  }, options); // 如果设置为默认方案,取消其他方案的默认标记
320
366
  updatedSchemes = schemes;
321
367
  if (newScheme.isDefault) {
@@ -61,7 +61,7 @@ var LocalStorageAdapter = exports.LocalStorageAdapter = /*#__PURE__*/function ()
61
61
  key: "migrateOldData",
62
62
  value: (function () {
63
63
  var _migrateOldData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(gridId) {
64
- var oldKey, oldData, columnState, migratedScheme;
64
+ var oldKey, oldData;
65
65
  return _regeneratorRuntime().wrap(function _callee$(_context) {
66
66
  while (1) switch (_context.prev = _context.next) {
67
67
  case 0:
@@ -74,35 +74,21 @@ var LocalStorageAdapter = exports.LocalStorageAdapter = /*#__PURE__*/function ()
74
74
  return _context.abrupt("return", []);
75
75
  case 4:
76
76
  _context.prev = 4;
77
- columnState = JSON.parse(oldData); // 创建默认方案
78
- migratedScheme = {
79
- id: _constants.MIGRATED_DEFAULT_SCHEME_ID,
80
- name: _constants.DEFAULT_SCHEME_NAME,
81
- isDefault: true,
82
- isSystem: true,
83
- createdAt: Date.now(),
84
- updatedAt: Date.now(),
85
- columnState: columnState,
86
- description: '由旧版本列配置自动迁移'
87
- }; // 保存到新格式
88
- _context.next = 9;
89
- return this.saveSchemes(gridId, [migratedScheme]);
90
- case 9:
91
- // 可选:保留旧数据作为备份或删除
92
- // localStorage.removeItem(oldKey);
93
-
94
- console.log("[SchemeManager] \u5DF2\u8FC1\u79FB\u65E7\u5217\u914D\u7F6E\u6570\u636E\u5230\u65B9\u6848\u7CFB\u7EDF: ".concat(gridId));
95
- return _context.abrupt("return", [migratedScheme]);
96
- case 13:
97
- _context.prev = 13;
77
+ // 注意:旧数据已无法自动迁移,因为缺少 columnConfig
78
+ // 建议手动处理或提示用户重新配置
79
+ console.warn("[SchemeManager] \u68C0\u6D4B\u5230\u65E7\u683C\u5F0F\u6570\u636E,\u4F46\u65E0\u6CD5\u81EA\u52A8\u8FC1\u79FB: ".concat(gridId));
80
+ console.warn('[SchemeManager] 请手动重新配置列方案');
81
+ return _context.abrupt("return", []);
82
+ case 10:
83
+ _context.prev = 10;
98
84
  _context.t0 = _context["catch"](4);
99
- console.error('[SchemeManager] 迁移旧数据失败:', _context.t0);
85
+ console.error('[SchemeManager] 检查旧数据失败:', _context.t0);
100
86
  return _context.abrupt("return", []);
101
- case 17:
87
+ case 14:
102
88
  case "end":
103
89
  return _context.stop();
104
90
  }
105
- }, _callee, this, [[4, 13]]);
91
+ }, _callee, this, [[4, 10]]);
106
92
  }));
107
93
  function migrateOldData(_x) {
108
94
  return _migrateOldData.apply(this, arguments);
@@ -167,7 +153,7 @@ var LocalStorageAdapter = exports.LocalStorageAdapter = /*#__PURE__*/function ()
167
153
  case 9:
168
154
  schemes = JSON.parse(data); // 验证数据完整性
169
155
  return _context2.abrupt("return", schemes.filter(function (scheme) {
170
- return scheme.id && scheme.name && scheme.columnState && Array.isArray(scheme.columnState);
156
+ return scheme.id && scheme.name && scheme.columnConfig && Array.isArray(scheme.columnConfig);
171
157
  }));
172
158
  case 13:
173
159
  _context2.prev = 13;
@@ -1,4 +1,5 @@
1
1
  import { ColumnState } from 'ag-grid-community';
2
+ import type { FlatColumnItem } from '../setting/columnGroupTypes';
2
3
  /**
3
4
  * 列配置方案数据结构
4
5
  */
@@ -15,8 +16,10 @@ export interface ColumnScheme {
15
16
  createdAt: number;
16
17
  /** 更新时间戳 */
17
18
  updatedAt: number;
18
- /** AG-Grid 列状态数据 */
19
- columnState: ColumnState[];
19
+ /** 完整的列配置数据(包含分组层级结构) */
20
+ columnConfig: FlatColumnItem[];
21
+ /** AG-Grid 过滤器模型数据(可选) */
22
+ filterModel?: any;
20
23
  /** 方案描述(可选) */
21
24
  description?: string;
22
25
  /** 标签分类(可选,扩展功能) */
@@ -106,9 +109,9 @@ export interface UseColumnSchemesReturn {
106
109
  /** 保存当前方案(更新现有方案) */
107
110
  saveScheme: (updates?: Partial<ColumnScheme>) => Promise<void>;
108
111
  /** 创建新方案 */
109
- createScheme: (name: string, columnState: ColumnState[], options?: Partial<ColumnScheme>) => Promise<ColumnScheme>;
110
- /** 更新方案信息(不影响 columnState) */
111
- updateScheme: (schemeId: string, updates: Partial<Omit<ColumnScheme, 'id' | 'columnState'>>) => Promise<void>;
112
+ createScheme: (name: string, columnConfig: FlatColumnItem[], options?: Partial<ColumnScheme>) => Promise<ColumnScheme>;
113
+ /** 更新方案信息(不影响 columnConfig) */
114
+ updateScheme: (schemeId: string, updates: Partial<Omit<ColumnScheme, 'id' | 'columnConfig'>>) => Promise<void>;
112
115
  /** 删除方案 */
113
116
  deleteScheme: (schemeId: string) => Promise<void>;
114
117
  /** 重置到方案原始状态 */
@@ -17,35 +17,31 @@ function validateScheme(scheme, currentColumnDefs) {
17
17
  var invalidColumns = [];
18
18
  var validatedState = [];
19
19
 
20
- // 获取当前有效的列 ID 集合
21
- var validColIds = new Set(currentColumnDefs.filter(function (col) {
20
+ // 获取当前有效的列 field 集合
21
+ var validFields = new Set(currentColumnDefs.filter(function (col) {
22
22
  return col.field || col.colId;
23
23
  }).map(function (col) {
24
24
  return col.field || col.colId;
25
25
  }));
26
26
 
27
- // 验证每个列状态
28
- scheme.columnState.forEach(function (columnState) {
29
- var colId = columnState.colId;
30
- if (!colId) {
31
- warnings.push('发现没有 colId 的列状态');
32
- return;
27
+ // 验证每个列配置项
28
+ scheme.columnConfig.forEach(function (item) {
29
+ // 只验证列类型(非分组),因为分组没有对应的 field
30
+ if (item.type === 'column' && item.field) {
31
+ // 检查列是否仍然存在于表格定义中
32
+ if (!validFields.has(item.field)) {
33
+ invalidColumns.push(item.field);
34
+ warnings.push("\u5217 \"".concat(item.field, "\" \u5728\u5F53\u524D\u8868\u683C\u4E2D\u4E0D\u5B58\u5728"));
35
+ }
33
36
  }
34
-
35
- // 检查列是否仍然存在于表格定义中
36
- if (!validColIds.has(colId)) {
37
- invalidColumns.push(colId);
38
- warnings.push("\u5217 \"".concat(colId, "\" \u5728\u5F53\u524D\u8868\u683C\u4E2D\u4E0D\u5B58\u5728"));
39
- return;
40
- }
41
-
42
- // 列有效,添加到验证后的状态中
43
- validatedState.push(columnState);
44
37
  });
45
38
  var valid = invalidColumns.length === 0;
46
39
  if (!valid) {
47
40
  warnings.push("\u5171\u6709 ".concat(invalidColumns.length, " \u4E2A\u5217\u5728\u5F53\u524D\u8868\u683C\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u81EA\u52A8\u8FC7\u6EE4"));
48
41
  }
42
+
43
+ // 注意: validatedState 保持为空数组,因为 columnConfig 不是 ColumnState 格式
44
+ // 如果需要转换,应在调用方进行
49
45
  return {
50
46
  valid: valid,
51
47
  invalidColumns: invalidColumns,
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 列配置表单组件
3
+ * 使用 Formily ArrayTable 展示和编辑列配置
4
+ * 支持表头分组的树形结构展示
5
+ */
6
+ import React from 'react';
7
+ import { Form } from '@formily/core';
8
+ interface ColumnConfigFormProps {
9
+ form: Form;
10
+ onDeleteNode: (nodeId: string) => void;
11
+ }
12
+ /**
13
+ * 列配置表单组件
14
+ */
15
+ declare const ColumnConfigForm: React.FC<ColumnConfigFormProps>;
16
+ export default ColumnConfigForm;
@@ -0,0 +1,348 @@
1
+ "use strict";
2
+
3
+ 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); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _antd = require("antd");
10
+ var _icons = require("@ant-design/icons");
11
+ var _antdV = require("@formily/antd-v5");
12
+ var _react2 = require("@formily/react");
13
+ var _arrayTable = _interopRequireDefault(require("../../array-table"));
14
+ var _NameColumnRenderer = _interopRequireDefault(require("./NameColumnRenderer"));
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ 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); }
17
+ 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; }
18
+ /**
19
+ * 列配置表单组件
20
+ * 使用 Formily ArrayTable 展示和编辑列配置
21
+ * 支持表头分组的树形结构展示
22
+ */
23
+
24
+ var SchemaField = (0, _react2.createSchemaField)({
25
+ components: {
26
+ FormItem: _antdV.FormItem,
27
+ FormGrid: _antdV.FormGrid,
28
+ Space: _antd.Space,
29
+ Input: _antdV.Input,
30
+ Select: _antdV.Select,
31
+ ArrayTable: _arrayTable.default,
32
+ NumberPicker: _antdV.NumberPicker,
33
+ Switch: _antdV.Switch
34
+ }
35
+ });
36
+
37
+ /**
38
+ * 自定义排序抓手
39
+ */
40
+ var CustomSortHandle = function CustomSortHandle() {
41
+ return /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
42
+ title: "\u62D6\u52A8\u6392\u5E8F\uFF08\u4EC5\u652F\u6301\u540C\u7EA7\uFF09"
43
+ }, /*#__PURE__*/_react.default.createElement(_icons.HolderOutlined, {
44
+ style: {
45
+ fontSize: 16,
46
+ color: '#999',
47
+ cursor: 'move'
48
+ }
49
+ }));
50
+ };
51
+
52
+ /**
53
+ * 列配置表单组件
54
+ */
55
+ var ColumnConfigForm = function ColumnConfigForm(_ref) {
56
+ var form = _ref.form,
57
+ onDeleteNode = _ref.onDeleteNode;
58
+ /**
59
+ * 渲染操作列
60
+ * 根据节点类型显示不同的操作按钮
61
+ */
62
+ var renderActions = (0, _react.useCallback)(function (record) {
63
+ var type = record.type,
64
+ id = record.id,
65
+ headerName = record.headerName,
66
+ _isNew = record._isNew;
67
+ if (type === 'group') {
68
+ return /*#__PURE__*/_react.default.createElement(_antd.Space, null, _isNew && /*#__PURE__*/_react.default.createElement(_antd.Popconfirm, {
69
+ title: "\u786E\u5B9A\u8981\u5220\u9664\u5206\u7EC4\"".concat(headerName, "\"\u53CA\u5176\u6240\u6709\u5B50\u5217\u5417\uFF1F"),
70
+ onConfirm: function onConfirm() {
71
+ return onDeleteNode(id);
72
+ },
73
+ okText: "\u786E\u5B9A",
74
+ cancelText: "\u53D6\u6D88"
75
+ }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
76
+ title: "\u5220\u9664\u5206\u7EC4"
77
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
78
+ type: "link",
79
+ size: "small",
80
+ danger: true,
81
+ icon: /*#__PURE__*/_react.default.createElement(_icons.DeleteOutlined, null)
82
+ }))));
83
+ } else {
84
+ // 列不允许删除
85
+ return null;
86
+ }
87
+ }, [onDeleteNode]);
88
+
89
+ // 配置 ArrayTable 属性
90
+ var tableProps = {
91
+ onRowDrag: true,
92
+ components: {
93
+ SortHandle: CustomSortHandle
94
+ }
95
+ };
96
+ return /*#__PURE__*/_react.default.createElement(_antdV.FormLayout, null, /*#__PURE__*/_react.default.createElement(SchemaField, null, /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
97
+ "x-component": "FormGrid",
98
+ "x-component-props": {
99
+ maxColumns: [1, 3],
100
+ strictAutoFit: true
101
+ }
102
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.Array, {
103
+ name: "items",
104
+ title: "",
105
+ "x-component": "ArrayTable",
106
+ "x-component-props": tableProps,
107
+ "x-decorator": "FormItem",
108
+ "x-decorator-props": {
109
+ gridSpan: 3
110
+ }
111
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.Object, null, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
112
+ name: "id",
113
+ "x-display": "hidden"
114
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.String, {
115
+ name: "type",
116
+ "x-display": "hidden"
117
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.Number, {
118
+ name: "level",
119
+ "x-display": "hidden"
120
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.Number, {
121
+ name: "order",
122
+ "x-display": "hidden"
123
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.String, {
124
+ name: "parentId",
125
+ "x-display": "hidden"
126
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.String, {
127
+ name: "groupId",
128
+ "x-display": "hidden"
129
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.String, {
130
+ name: "field",
131
+ "x-display": "hidden"
132
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.Boolean, {
133
+ name: "_isNew",
134
+ "x-display": "hidden"
135
+ }), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
136
+ "x-component": "ArrayTable.Column",
137
+ "x-component-props": {
138
+ width: 60,
139
+ title: '排序',
140
+ align: 'center'
141
+ }
142
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
143
+ "x-decorator": "FormItem",
144
+ required: true,
145
+ "x-component": "ArrayTable.SortHandle"
146
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
147
+ "x-component": "ArrayTable.Column",
148
+ "x-component-props": {
149
+ width: 200,
150
+ title: '名称'
151
+ }
152
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
153
+ name: "headerName",
154
+ "x-decorator": "FormItem",
155
+ "x-component": function xComponent(props) {
156
+ var _props$name;
157
+ var index = (_props$name = props.name) === null || _props$name === void 0 || (_props$name = _props$name.toString().match(/\d+/)) === null || _props$name === void 0 ? void 0 : _props$name[0];
158
+ var items = form.values.items || [];
159
+ var record = items[parseInt(index || '0')];
160
+ return /*#__PURE__*/_react.default.createElement(_NameColumnRenderer.default, {
161
+ value: props.value,
162
+ record: record,
163
+ allItems: items,
164
+ onChange: props.onChange
165
+ });
166
+ }
167
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
168
+ "x-component": "ArrayTable.Column",
169
+ "x-component-props": {
170
+ width: 180,
171
+ title: '操作',
172
+ align: 'center'
173
+ }
174
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
175
+ "x-component": function xComponent(props) {
176
+ var _props$name2;
177
+ var index = (_props$name2 = props.name) === null || _props$name2 === void 0 || (_props$name2 = _props$name2.toString().match(/\d+/)) === null || _props$name2 === void 0 ? void 0 : _props$name2[0];
178
+ var items = form.values.items || [];
179
+ var record = items[parseInt(index || '0')];
180
+ if (!record) return null;
181
+ return renderActions(record);
182
+ }
183
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
184
+ "x-component": "ArrayTable.Column",
185
+ "x-component-props": {
186
+ width: 100,
187
+ title: '宽度'
188
+ }
189
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
190
+ name: "width",
191
+ "x-decorator": "FormItem",
192
+ "x-component": function xComponent(props) {
193
+ var _props$name3;
194
+ var index = (_props$name3 = props.name) === null || _props$name3 === void 0 || (_props$name3 = _props$name3.toString().match(/\d+/)) === null || _props$name3 === void 0 ? void 0 : _props$name3[0];
195
+ var items = form.values.items || [];
196
+ var record = items[parseInt(index || '0')];
197
+ if ((record === null || record === void 0 ? void 0 : record.type) !== 'column') {
198
+ return /*#__PURE__*/_react.default.createElement("span", null, "-");
199
+ }
200
+ return /*#__PURE__*/_react.default.createElement(_antdV.NumberPicker, {
201
+ value: props.value,
202
+ onChange: props.onChange
203
+ });
204
+ }
205
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
206
+ "x-component": "ArrayTable.Column",
207
+ "x-component-props": {
208
+ width: 100,
209
+ title: '占满'
210
+ }
211
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
212
+ name: "flex",
213
+ "x-decorator": "FormItem",
214
+ "x-component": function xComponent(props) {
215
+ var _props$name4;
216
+ var index = (_props$name4 = props.name) === null || _props$name4 === void 0 || (_props$name4 = _props$name4.toString().match(/\d+/)) === null || _props$name4 === void 0 ? void 0 : _props$name4[0];
217
+ var items = form.values.items || [];
218
+ var record = items[parseInt(index || '0')];
219
+ if ((record === null || record === void 0 ? void 0 : record.type) !== 'column') {
220
+ return /*#__PURE__*/_react.default.createElement("span", null, "-");
221
+ }
222
+ return /*#__PURE__*/_react.default.createElement(_antdV.Select, {
223
+ value: props.value,
224
+ onChange: props.onChange,
225
+ options: [{
226
+ value: 1,
227
+ label: '占满'
228
+ }, {
229
+ value: 0,
230
+ label: '不占满'
231
+ }]
232
+ });
233
+ }
234
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
235
+ "x-component": "ArrayTable.Column",
236
+ "x-component-props": {
237
+ width: 100,
238
+ title: '固定'
239
+ }
240
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
241
+ name: "pinned",
242
+ "x-decorator": "FormItem",
243
+ "x-component": function xComponent(props) {
244
+ var _props$name5;
245
+ var index = (_props$name5 = props.name) === null || _props$name5 === void 0 || (_props$name5 = _props$name5.toString().match(/\d+/)) === null || _props$name5 === void 0 ? void 0 : _props$name5[0];
246
+ var items = form.values.items || [];
247
+ var record = items[parseInt(index || '0')];
248
+ if ((record === null || record === void 0 ? void 0 : record.type) !== 'column') {
249
+ return /*#__PURE__*/_react.default.createElement("span", null, "-");
250
+ }
251
+ return /*#__PURE__*/_react.default.createElement(_antdV.Select, {
252
+ value: props.value,
253
+ onChange: props.onChange,
254
+ options: [{
255
+ value: 'left',
256
+ label: '左固定'
257
+ }, {
258
+ value: 'right',
259
+ label: '右固定'
260
+ }, {
261
+ value: 'notPinned',
262
+ label: '不固定'
263
+ }]
264
+ });
265
+ }
266
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
267
+ "x-component": "ArrayTable.Column",
268
+ "x-component-props": {
269
+ width: 80,
270
+ title: '隐藏',
271
+ align: 'center'
272
+ }
273
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
274
+ name: "hide",
275
+ "x-decorator": "FormItem",
276
+ "x-component": function xComponent(props) {
277
+ var _props$name6;
278
+ var index = (_props$name6 = props.name) === null || _props$name6 === void 0 || (_props$name6 = _props$name6.toString().match(/\d+/)) === null || _props$name6 === void 0 ? void 0 : _props$name6[0];
279
+ var items = form.values.items || [];
280
+ var record = items[parseInt(index || '0')];
281
+ if ((record === null || record === void 0 ? void 0 : record.type) !== 'column') {
282
+ return /*#__PURE__*/_react.default.createElement("span", null, "-");
283
+ }
284
+ return /*#__PURE__*/_react.default.createElement(_antdV.Switch, {
285
+ checked: props.value,
286
+ onChange: props.onChange
287
+ });
288
+ }
289
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
290
+ "x-component": "ArrayTable.Column",
291
+ "x-component-props": {
292
+ width: 120,
293
+ title: '布局'
294
+ }
295
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
296
+ name: "cellClass",
297
+ "x-decorator": "FormItem",
298
+ "x-component": function xComponent(props) {
299
+ var _props$name7;
300
+ var index = (_props$name7 = props.name) === null || _props$name7 === void 0 || (_props$name7 = _props$name7.toString().match(/\d+/)) === null || _props$name7 === void 0 ? void 0 : _props$name7[0];
301
+ var items = form.values.items || [];
302
+ var record = items[parseInt(index || '0')];
303
+ if ((record === null || record === void 0 ? void 0 : record.type) !== 'column') {
304
+ return /*#__PURE__*/_react.default.createElement("span", null, "-");
305
+ }
306
+ return /*#__PURE__*/_react.default.createElement(_antdV.Select, {
307
+ value: props.value || 'custom-cell-left',
308
+ onChange: props.onChange,
309
+ options: [{
310
+ value: 'custom-cell-left',
311
+ label: '左对齐'
312
+ }, {
313
+ value: 'custom-cell-right',
314
+ label: '右对齐'
315
+ }, {
316
+ value: 'custom-cell-centered',
317
+ label: '居中'
318
+ }]
319
+ });
320
+ }
321
+ })), /*#__PURE__*/_react.default.createElement(SchemaField.Void, {
322
+ "x-component": "ArrayTable.Column",
323
+ "x-component-props": {
324
+ width: 100,
325
+ title: '列过滤',
326
+ align: 'center'
327
+ }
328
+ }, /*#__PURE__*/_react.default.createElement(SchemaField.String, {
329
+ name: "suppressHeaderFilterButton",
330
+ "x-decorator": "FormItem",
331
+ "x-component": function xComponent(props) {
332
+ var _props$name8;
333
+ var index = (_props$name8 = props.name) === null || _props$name8 === void 0 || (_props$name8 = _props$name8.toString().match(/\d+/)) === null || _props$name8 === void 0 ? void 0 : _props$name8[0];
334
+ var items = form.values.items || [];
335
+ var record = items[parseInt(index || '0')];
336
+ if ((record === null || record === void 0 ? void 0 : record.type) !== 'column') {
337
+ return /*#__PURE__*/_react.default.createElement("span", null, "-");
338
+ }
339
+ return /*#__PURE__*/_react.default.createElement(_antdV.Switch, {
340
+ checked: !props.value,
341
+ onChange: function onChange(checked) {
342
+ return props.onChange(!checked);
343
+ }
344
+ });
345
+ }
346
+ })))))));
347
+ };
348
+ var _default = exports.default = ColumnConfigForm;