@nokecy/qc-ui 1.1.20 → 1.1.22

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.
@@ -9,6 +9,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
9
9
  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; }
10
10
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
11
11
  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); }
12
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
13
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
15
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
12
16
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
13
17
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
18
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -121,8 +125,10 @@ export function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
121
125
  * 【重要】如果提供了 originalColumnDefs,会合并原始列定义中的所有属性
122
126
  * 这样可以保留 cellRenderer、valueFormatter、valueEnum 等自定义渲染属性
123
127
  *
128
+ * 【重要】会自动检测并追加代码中新增的列(在 originalColumnDefs 中存在但 flatConfig 中不存在的列)
129
+ *
124
130
  * @param flatConfig 扁平化配置数组
125
- * @param originalColumnDefs 原始列定义数组(可选),用于保留自定义属性
131
+ * @param originalColumnDefs 原始列定义数组(可选),用于保留自定义属性和检测新增列
126
132
  * @returns AG-Grid 列定义数组
127
133
  */
128
134
  export function flatConfigToGridState(flatConfig, originalColumnDefs) {
@@ -157,6 +163,30 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
157
163
  return undefined;
158
164
  }
159
165
 
166
+ /**
167
+ * 递归收集所有列定义(包括分组内的列)
168
+ */
169
+ function collectAllColumns(defs) {
170
+ var columns = [];
171
+ var _iterator3 = _createForOfIteratorHelper(defs),
172
+ _step3;
173
+ try {
174
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
175
+ var def = _step3.value;
176
+ if ('children' in def && def.children) {
177
+ columns.push.apply(columns, _toConsumableArray(collectAllColumns(def.children)));
178
+ } else {
179
+ columns.push(def);
180
+ }
181
+ }
182
+ } catch (err) {
183
+ _iterator3.e(err);
184
+ } finally {
185
+ _iterator3.f();
186
+ }
187
+ return columns;
188
+ }
189
+
160
190
  /**
161
191
  * 递归构建树形结构
162
192
  */
@@ -211,7 +241,74 @@ export function flatConfigToGridState(flatConfig, originalColumnDefs) {
211
241
  }
212
242
  });
213
243
  }
214
- return buildTree();
244
+ var result = buildTree();
245
+
246
+ // 【新增】检测并插入代码中新增的列到原始位置
247
+ // 场景:用户保存列配置后,开发者在代码中新增了列,这些列应该在其原始定义位置显示
248
+ if (originalColumnDefs && originalColumnDefs.length > 0) {
249
+ // 收集 flatConfig 中所有已存在的 field
250
+ var existingFields = new Set(flatConfig.filter(function (item) {
251
+ return item.type === 'column' && item.field;
252
+ }).map(function (item) {
253
+ return item.field;
254
+ }));
255
+
256
+ // 收集原始列定义中所有的列(保留顺序索引)
257
+ var allOriginalColumns = collectAllColumns(originalColumnDefs);
258
+
259
+ // 找出新增的列及其在原始定义中的索引
260
+ var newColumnsWithIndex = [];
261
+ allOriginalColumns.forEach(function (col, index) {
262
+ if (col.field && !existingFields.has(col.field)) {
263
+ newColumnsWithIndex.push({
264
+ col: col,
265
+ originalIndex: index
266
+ });
267
+ }
268
+ });
269
+ if (newColumnsWithIndex.length > 0) {
270
+ // 将新增列插入到正确位置(基于其在原始定义中的相对位置)
271
+ var _iterator4 = _createForOfIteratorHelper(newColumnsWithIndex),
272
+ _step4;
273
+ try {
274
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
275
+ var _step4$value = _step4.value,
276
+ col = _step4$value.col,
277
+ originalIndex = _step4$value.originalIndex;
278
+ var insertIndex = 0; // 默认插入到开头
279
+
280
+ // 从该列之前的列开始查找,找到第一个在 result 中存在的列
281
+ var _loop = function _loop() {
282
+ var prevCol = allOriginalColumns[i];
283
+ if (!prevCol.field) return 0; // continue
284
+
285
+ // 在 result 中找到这个前置列的位置
286
+ var prevIndexInResult = result.findIndex(function (r) {
287
+ return r.field === prevCol.field;
288
+ });
289
+ if (prevIndexInResult !== -1) {
290
+ insertIndex = prevIndexInResult + 1;
291
+ return 1; // break
292
+ }
293
+ },
294
+ _ret;
295
+ for (var i = originalIndex - 1; i >= 0; i--) {
296
+ _ret = _loop();
297
+ if (_ret === 0) continue;
298
+ if (_ret === 1) break;
299
+ }
300
+
301
+ // 在 insertIndex 位置插入新列
302
+ result.splice(insertIndex, 0, col);
303
+ }
304
+ } catch (err) {
305
+ _iterator4.e(err);
306
+ } finally {
307
+ _iterator4.f();
308
+ }
309
+ }
310
+ }
311
+ return result;
215
312
  }
216
313
 
217
314
  /**
@@ -339,11 +436,37 @@ export function isOldSchemeData(data) {
339
436
  * 扁平化配置 → AG-Grid Column State
340
437
  * 将扁平化数组转换为 AG-Grid 的 columnState 格式,用于控制列的顺序和属性
341
438
  *
439
+ * 【重要】会自动检测并追加代码中新增的列(在 originalColumnDefs 中存在但 flatConfig 中不存在的列)
440
+ *
342
441
  * @param flatConfig 扁平化配置数组
442
+ * @param originalColumnDefs 原始列定义数组(可选),用于检测新增列
343
443
  * @returns AG-Grid columnState 数组
344
444
  */
345
- export function flatConfigToColumnState(flatConfig) {
346
- return flatConfig.filter(function (item) {
445
+ export function flatConfigToColumnState(flatConfig, originalColumnDefs) {
446
+ /**
447
+ * 递归收集所有列定义(包括分组内的列)
448
+ */
449
+ function collectAllColumns(defs) {
450
+ var columns = [];
451
+ var _iterator5 = _createForOfIteratorHelper(defs),
452
+ _step5;
453
+ try {
454
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
455
+ var def = _step5.value;
456
+ if ('children' in def && def.children) {
457
+ columns.push.apply(columns, _toConsumableArray(collectAllColumns(def.children)));
458
+ } else {
459
+ columns.push(def);
460
+ }
461
+ }
462
+ } catch (err) {
463
+ _iterator5.e(err);
464
+ } finally {
465
+ _iterator5.f();
466
+ }
467
+ return columns;
468
+ }
469
+ var result = flatConfig.filter(function (item) {
347
470
  return item.type === 'column';
348
471
  }) // 只处理列节点,分组不在 columnState 中
349
472
  .filter(function (item) {
@@ -368,4 +491,73 @@ export function flatConfigToColumnState(flatConfig) {
368
491
  }
369
492
  return state;
370
493
  });
494
+
495
+ // 【新增】检测并插入代码中新增的列到原始位置
496
+ if (originalColumnDefs && originalColumnDefs.length > 0) {
497
+ // 收集 flatConfig 中所有已存在的 field
498
+ var existingFields = new Set(flatConfig.filter(function (item) {
499
+ return item.type === 'column' && item.field;
500
+ }).map(function (item) {
501
+ return item.field;
502
+ }));
503
+
504
+ // 收集原始列定义中所有的列(保留顺序索引)
505
+ var allOriginalColumns = collectAllColumns(originalColumnDefs);
506
+
507
+ // 找出新增的列及其在原始定义中的索引
508
+ var newColumnsWithIndex = [];
509
+ allOriginalColumns.forEach(function (col, index) {
510
+ if (col.field && !existingFields.has(col.field)) {
511
+ newColumnsWithIndex.push({
512
+ col: col,
513
+ originalIndex: index
514
+ });
515
+ }
516
+ });
517
+ if (newColumnsWithIndex.length > 0) {
518
+ // 将新增列插入到正确位置(基于其在原始定义中的相对位置)
519
+ var _iterator6 = _createForOfIteratorHelper(newColumnsWithIndex),
520
+ _step6;
521
+ try {
522
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
523
+ var _step6$value = _step6.value,
524
+ col = _step6$value.col,
525
+ originalIndex = _step6$value.originalIndex;
526
+ var insertIndex = 0; // 默认插入到开头
527
+
528
+ // 从该列之前的列开始查找,找到第一个在 result 中存在的列
529
+ var _loop2 = function _loop2() {
530
+ var prevCol = allOriginalColumns[i];
531
+ if (!prevCol.field) return 0; // continue
532
+
533
+ // 在 result 中找到这个前置列的位置
534
+ var prevIndexInResult = result.findIndex(function (r) {
535
+ return r.colId === prevCol.field;
536
+ });
537
+ if (prevIndexInResult !== -1) {
538
+ insertIndex = prevIndexInResult + 1;
539
+ return 1; // break
540
+ }
541
+ },
542
+ _ret2;
543
+ for (var i = originalIndex - 1; i >= 0; i--) {
544
+ _ret2 = _loop2();
545
+ if (_ret2 === 0) continue;
546
+ if (_ret2 === 1) break;
547
+ }
548
+
549
+ // 在 insertIndex 位置插入新列状态
550
+ result.splice(insertIndex, 0, {
551
+ colId: col.field
552
+ // 新增列使用默认状态,不设置 hide/width 等
553
+ });
554
+ }
555
+ } catch (err) {
556
+ _iterator6.e(err);
557
+ } finally {
558
+ _iterator6.f();
559
+ }
560
+ }
561
+ }
562
+ return result;
371
563
  }
@@ -1,5 +1,5 @@
1
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
- var _excluded = ["pinned", "width", "hide", "sort", "sortIndex"];
2
+ var _excluded = ["pinned", "hide", "sort", "sortIndex"];
3
3
  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; }
4
4
  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; }
5
5
  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; }
@@ -141,13 +141,15 @@ var useArrayTableColumns = function useArrayTableColumns(dataSource, field, sour
141
141
 
142
142
  // 【关键修复】移除可能干扰用户列状态的属性
143
143
  // 这些属性应该由用户通过列配置(applyColumnState)控制,而不是从 columnDefs 继承
144
+ // 但保留 width 作为列的初始宽度
144
145
  var pinned = columnProps.pinned,
145
- width = columnProps.width,
146
146
  hide = columnProps.hide,
147
147
  sort = columnProps.sort,
148
148
  sortIndex = columnProps.sortIndex,
149
149
  safeColumnProps = _objectWithoutProperties(columnProps, _excluded);
150
150
  return buf.concat(_objectSpread(_objectSpread({}, safeColumnProps), {}, {
151
+ // 保留 width 作为列的初始宽度
152
+ width: columnProps.width,
151
153
  //@ts-ignore
152
154
  headerName: columnProps.headerName || columnProps.title,
153
155
  field: name,
@@ -55,8 +55,10 @@ 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
- components[x.Behavior[0].name] = x;
58
+ var _x$Behavior;
59
+ if ((_x$Behavior = x.Behavior) !== null && _x$Behavior !== void 0 && (_x$Behavior = _x$Behavior[0]) !== null && _x$Behavior !== void 0 && _x$Behavior.name) {
60
+ components[x.Behavior[0].name] = x;
61
+ }
60
62
  });
61
63
  return components;
62
64
  };