@nokecy/qc-ui 1.1.18 → 1.1.19

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 (27) hide show
  1. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +23 -0
  2. package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +5 -0
  3. package/dist/cjs/ag-grid-plus/index.less +13 -0
  4. package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +79 -76
  5. package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.d.ts +22 -0
  6. package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +211 -0
  7. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +80 -25
  8. package/dist/cjs/ag-grid-plus/setting/DebounceInputs.d.ts +1 -0
  9. package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +2 -0
  10. package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +3 -1
  11. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -1
  12. package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +49 -9
  13. package/dist/esm/ag-grid-plus/ag-gridPlus.js +23 -0
  14. package/dist/esm/ag-grid-plus/context/gridContext.d.ts +5 -0
  15. package/dist/esm/ag-grid-plus/index.less +13 -0
  16. package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +81 -78
  17. package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.d.ts +22 -0
  18. package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +204 -0
  19. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +80 -25
  20. package/dist/esm/ag-grid-plus/setting/DebounceInputs.d.ts +1 -0
  21. package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +2 -0
  22. package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +3 -1
  23. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -1
  24. package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +49 -9
  25. package/dist/umd/qc-ui.min.css +1 -1
  26. package/dist/umd/qc-ui.min.js +1 -1
  27. package/package.json +1 -1
@@ -23,7 +23,6 @@ var _excluded = ["createdAt", "updatedAt"],
23
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
24
  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); }
25
25
  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; }
26
- 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; } } }; }
27
26
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
28
27
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
28
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
@@ -34,6 +33,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
34
33
  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; }
35
34
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
36
35
  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); }
36
+ 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; } } }; }
37
37
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
38
38
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
39
39
  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); }
@@ -57,6 +57,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
57
57
  columnSchemes = _useGridSchemes.columnSchemes,
58
58
  currentSchemes = _useGridSchemes.currentSchemes,
59
59
  allColDefs = _useGridSchemes.allColDefs,
60
+ initialColumnDefs = _useGridSchemes.initialColumnDefs,
60
61
  saveColumnScheme = _useGridSchemes.saveColumnScheme,
61
62
  deleteColumnScheme = _useGridSchemes.deleteColumnScheme,
62
63
  setCurrentColumnScheme = _useGridSchemes.setCurrentColumnScheme;
@@ -104,8 +105,10 @@ var ColumnSetting = function ColumnSetting(_ref) {
104
105
  searchText = _useState16[0],
105
106
  setSearchText = _useState16[1];
106
107
 
107
- // 【修复】从 Context 获取原始完整的列定义
108
- var originalColumnDefs = allColDefs || undefined;
108
+ // 【修复】从 Context 获取初始列定义(用于获取原始 headerName)
109
+ // initialColumnDefs 来自组件初始化时的 props,不会被列方案修改
110
+ // allColDefs 包含自定义属性(cellRenderer 等),用于方案应用时保留这些属性
111
+ var originalColumnDefs = initialColumnDefs || allColDefs || undefined;
109
112
 
110
113
  // 【修复】保存快照用于取消时恢复(改名避免与Context的originalColumnDefs冲突)
111
114
  var _useState17 = (0, _react.useState)(null),
@@ -113,6 +116,57 @@ var ColumnSetting = function ColumnSetting(_ref) {
113
116
  snapshotColumnDefs = _useState18[0],
114
117
  setSnapshotColumnDefs = _useState18[1];
115
118
 
119
+ /**
120
+ * 修正列配置中的 originalHeaderName
121
+ * 确保 originalHeaderName 始终从 initialColumnDefs 中获取,而不是使用方案中保存的值
122
+ */
123
+ var fixOriginalHeaderName = (0, _react.useCallback)(function (items) {
124
+ if (!originalColumnDefs || originalColumnDefs.length === 0) {
125
+ return items;
126
+ }
127
+
128
+ // 递归查找 originalColumnDefs 中指定 field 的 headerName
129
+ var findOriginalHeaderName = function findOriginalHeaderName(field) {
130
+ var _iterator = _createForOfIteratorHelper(originalColumnDefs),
131
+ _step;
132
+ try {
133
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
134
+ var def = _step.value;
135
+ // 检查分组
136
+ if ('children' in def && def.children) {
137
+ for (var _i = 0, _arr = def.children; _i < _arr.length; _i++) {
138
+ var child = _arr[_i];
139
+ if (child.field === field) {
140
+ return child.headerName;
141
+ }
142
+ }
143
+ } else {
144
+ // 检查普通列
145
+ if (def.field === field) {
146
+ return def.headerName;
147
+ }
148
+ }
149
+ }
150
+ } catch (err) {
151
+ _iterator.e(err);
152
+ } finally {
153
+ _iterator.f();
154
+ }
155
+ return undefined;
156
+ };
157
+ return items.map(function (item) {
158
+ if (item.type === 'column' && item.field) {
159
+ var originalHeaderName = findOriginalHeaderName(item.field);
160
+ if (originalHeaderName) {
161
+ return _objectSpread(_objectSpread({}, item), {}, {
162
+ originalHeaderName: originalHeaderName
163
+ });
164
+ }
165
+ }
166
+ return item;
167
+ });
168
+ }, [originalColumnDefs]);
169
+
116
170
  /**
117
171
  * 获取列数据 - 将 Grid 的列定义转换为扁平化配置
118
172
  * 新版本使用树形结构,兼容旧版本的 groupName 结构
@@ -120,15 +174,16 @@ var ColumnSetting = function ColumnSetting(_ref) {
120
174
  var getColumnData = (0, _react.useCallback)(function () {
121
175
  // 优先使用当前方案中保存的完整列配置(包含分组结构)
122
176
  if (currentScheme !== null && currentScheme !== void 0 && currentScheme.columnConfig) {
123
- return currentScheme.columnConfig;
177
+ // 【修复】修正 originalHeaderName,确保使用 initialColumnDefs 中的原始值
178
+ return fixOriginalHeaderName(currentScheme.columnConfig);
124
179
  }
125
180
 
126
181
  // 如果方案中没有 columnConfig,则从 Grid 读取
127
182
  var columnDefs = gridApi.getColumnDefs() || [];
128
183
  var columnStates = gridApi.getColumnState();
129
184
 
130
- // 将 Grid 状态转换为扁平化配置
131
- var flatConfig = (0, _columnGroupUtils.gridStateToFlatConfig)(columnDefs);
185
+ // 将 Grid 状态转换为扁平化配置,传入原始列定义以获取 originalHeaderName
186
+ var flatConfig = (0, _columnGroupUtils.gridStateToFlatConfig)(columnDefs, originalColumnDefs);
132
187
 
133
188
  // 同步列状态(宽度、隐藏等)
134
189
  flatConfig = flatConfig.map(function (item) {
@@ -160,7 +215,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
160
215
  return item;
161
216
  });
162
217
  return flatConfig;
163
- }, [gridApi, currentScheme]);
218
+ }, [gridApi, currentScheme, fixOriginalHeaderName, originalColumnDefs]);
164
219
 
165
220
  // 创建 Formily Form 实例
166
221
  var form = (0, _react.useMemo)(function () {
@@ -201,8 +256,8 @@ var ColumnSetting = function ColumnSetting(_ref) {
201
256
  items: newItems
202
257
  });
203
258
 
204
- // 2. 【修复】转换为 AG-Grid 列定义,传入原始列定义以保留自定义属性
205
- var gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(newItems, originalColumnDefs);
259
+ // 2. 【修复】转换为 AG-Grid 列定义,传入 allColDefs 以保留自定义属性(cellRenderer 等)
260
+ var gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(newItems, allColDefs);
206
261
 
207
262
  // 3. 立即应用到 Grid(实时预览,不保存到方案)
208
263
  // 【修复】同时应用列顺序和状态,确保拖拽排序能够生效
@@ -211,7 +266,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
211
266
  state: columnState,
212
267
  applyOrder: true // 强制应用列顺序
213
268
  });
214
- }, [form, gridApi, originalColumnDefs]);
269
+ }, [form, gridApi, allColDefs]);
215
270
 
216
271
  /**
217
272
  * 关闭弹窗处理 - 取消时恢复原始状态
@@ -247,8 +302,8 @@ var ColumnSetting = function ColumnSetting(_ref) {
247
302
  _context.next = 12;
248
303
  break;
249
304
  }
250
- // 【关键修复】先更新 columnDefs(处理分组结构)
251
- gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(scheme.columnConfig, originalColumnDefs);
305
+ // 【关键修复】先更新 columnDefs(处理分组结构),使用 allColDefs 保留自定义属性
306
+ gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(scheme.columnConfig, allColDefs);
252
307
  gridApi.setGridOption('columnDefs', gridColumnDefs);
253
308
 
254
309
  // 等待 columnDefs 更新完成
@@ -298,7 +353,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
298
353
  return function (_x) {
299
354
  return _ref2.apply(this, arguments);
300
355
  };
301
- }(), [setCurrentColumnScheme, gridKey, schemes, gridApi, originalColumnDefs, form, getColumnData, onClose]);
356
+ }(), [setCurrentColumnScheme, gridKey, schemes, gridApi, allColDefs, form, getColumnData, onClose]);
302
357
 
303
358
  /**
304
359
  * 保存列配置
@@ -405,7 +460,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
405
460
  _context2.next = 39;
406
461
  break;
407
462
  }
408
- gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(savedScheme.columnConfig, originalColumnDefs);
463
+ gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(savedScheme.columnConfig, allColDefs);
409
464
  gridApi.setGridOption('columnDefs', gridColumnDefs);
410
465
 
411
466
  // 等待 columnDefs 更新完成
@@ -452,7 +507,7 @@ var ColumnSetting = function ColumnSetting(_ref) {
452
507
  return _context2.stop();
453
508
  }
454
509
  }, _callee2, null, [[8, 50]]);
455
- })), [form, gridApi, saveColumnScheme, setCurrentColumnScheme, currentScheme, schemes, gridKey, originalColumnDefs, onClose]);
510
+ })), [form, gridApi, saveColumnScheme, setCurrentColumnScheme, currentScheme, schemes, gridKey, allColDefs, onClose]);
456
511
 
457
512
  // 保存为新方案
458
513
  var handleSaveScheme = (0, _react.useCallback)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
@@ -474,8 +529,8 @@ var ColumnSetting = function ColumnSetting(_ref) {
474
529
  }
475
530
  values = form.values;
476
531
  columnConfigToSave = values.items; // 直接使用 FlatColumnItem[] 数据
477
- // 【修复】传入原始列定义以保留自定义属性
478
- gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(values.items, originalColumnDefs); // 【关键修复】先更新 columnDefs(处理分组结构变化)
532
+ // 【修复】传入 allColDefs 以保留自定义属性(cellRenderer 等)
533
+ gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(values.items, allColDefs); // 【关键修复】先更新 columnDefs(处理分组结构变化)
479
534
  gridApi.setGridOption('columnDefs', gridColumnDefs);
480
535
 
481
536
  // 等待 columnDefs 更新完成
@@ -537,12 +592,12 @@ var ColumnSetting = function ColumnSetting(_ref) {
537
592
  return _context3.stop();
538
593
  }
539
594
  }, _callee3, null, [[3, 30]]);
540
- })), [gridApi, saveColumnScheme, gridKey, schemeName, schemeDescription, activeTab, form, originalColumnDefs]);
595
+ })), [gridApi, saveColumnScheme, gridKey, schemeName, schemeDescription, activeTab, form, allColDefs]);
541
596
 
542
597
  // 设置默认方案
543
598
  var handleSetDefault = (0, _react.useCallback)( /*#__PURE__*/function () {
544
599
  var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(schemeId) {
545
- var scheme, _iterator, _step, s;
600
+ var scheme, _iterator2, _step2, s;
546
601
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
547
602
  while (1) switch (_context4.prev = _context4.next) {
548
603
  case 0:
@@ -555,15 +610,15 @@ var ColumnSetting = function ColumnSetting(_ref) {
555
610
  break;
556
611
  }
557
612
  // 将其他方案设为非默认
558
- _iterator = _createForOfIteratorHelper(schemes);
613
+ _iterator2 = _createForOfIteratorHelper(schemes);
559
614
  _context4.prev = 4;
560
- _iterator.s();
615
+ _iterator2.s();
561
616
  case 6:
562
- if ((_step = _iterator.n()).done) {
617
+ if ((_step2 = _iterator2.n()).done) {
563
618
  _context4.next = 13;
564
619
  break;
565
620
  }
566
- s = _step.value;
621
+ s = _step2.value;
567
622
  if (!(s.isDefault && s.id !== schemeId)) {
568
623
  _context4.next = 11;
569
624
  break;
@@ -581,10 +636,10 @@ var ColumnSetting = function ColumnSetting(_ref) {
581
636
  case 15:
582
637
  _context4.prev = 15;
583
638
  _context4.t0 = _context4["catch"](4);
584
- _iterator.e(_context4.t0);
639
+ _iterator2.e(_context4.t0);
585
640
  case 18:
586
641
  _context4.prev = 18;
587
- _iterator.f();
642
+ _iterator2.f();
588
643
  return _context4.finish(18);
589
644
  case 21:
590
645
  _context4.next = 23;
@@ -10,6 +10,7 @@ export declare const DebounceNumberInput: React.FC<{
10
10
  min?: number;
11
11
  max?: number;
12
12
  step?: number;
13
+ size?: 'large' | 'middle' | 'small';
13
14
  style?: React.CSSProperties;
14
15
  }>;
15
16
  /**
@@ -26,6 +26,7 @@ var DebounceNumberInput = exports.DebounceNumberInput = function DebounceNumberI
26
26
  min = _ref.min,
27
27
  max = _ref.max,
28
28
  step = _ref.step,
29
+ size = _ref.size,
29
30
  style = _ref.style;
30
31
  var _useState = (0, _react.useState)(value),
31
32
  _useState2 = _slicedToArray(_useState, 2),
@@ -61,6 +62,7 @@ var DebounceNumberInput = exports.DebounceNumberInput = function DebounceNumberI
61
62
  min: min,
62
63
  max: max,
63
64
  step: step,
65
+ size: size,
64
66
  style: style || {
65
67
  width: '100%'
66
68
  }
@@ -17,8 +17,10 @@ export interface FlatColumnItem {
17
17
  level: number;
18
18
  /** 排序序号,用于维护节点顺序 */
19
19
  order: number;
20
- /** 显示名称 */
20
+ /** 显示名称 (当前值,可被用户修改) */
21
21
  headerName: string;
22
+ /** 原始显示名称 (用于对比和重置) */
23
+ originalHeaderName?: string;
22
24
  /** AG-Grid 分组标识(仅分组类型) */
23
25
  groupId?: string;
24
26
  /** 子列是否必须保持一起(仅分组类型) */
@@ -13,9 +13,10 @@ export declare const generateId: () => string;
13
13
  * 将 AG-Grid 的树形结构转换为扁平化数组,用于 UI 展示和编辑
14
14
  *
15
15
  * @param columnDefs AG-Grid 列定义数组
16
+ * @param originalColumnDefs 原始列定义数组(可选),用于获取 originalHeaderName
16
17
  * @returns 扁平化配置数组
17
18
  */
18
- export declare function gridStateToFlatConfig(columnDefs: (ColDef | ColGroupDef)[]): FlatColumnItem[];
19
+ export declare function gridStateToFlatConfig(columnDefs: (ColDef | ColGroupDef)[], originalColumnDefs?: (ColDef | ColGroupDef)[]): FlatColumnItem[];
19
20
  /**
20
21
  * 扁平化配置 → Grid State
21
22
  * 将扁平化数组重建为 AG-Grid 的树形结构
@@ -40,12 +40,44 @@ var generateId = exports.generateId = function generateId() {
40
40
  * 将 AG-Grid 的树形结构转换为扁平化数组,用于 UI 展示和编辑
41
41
  *
42
42
  * @param columnDefs AG-Grid 列定义数组
43
+ * @param originalColumnDefs 原始列定义数组(可选),用于获取 originalHeaderName
43
44
  * @returns 扁平化配置数组
44
45
  */
45
- function gridStateToFlatConfig(columnDefs) {
46
+ function gridStateToFlatConfig(columnDefs, originalColumnDefs) {
46
47
  var result = [];
47
48
  var order = 0;
48
49
 
50
+ /**
51
+ * 从原始列定义中查找指定字段的原始 headerName
52
+ */
53
+ function findOriginalHeaderName(field, defs) {
54
+ if (!defs || !field) return undefined;
55
+ var _iterator = _createForOfIteratorHelper(defs),
56
+ _step;
57
+ try {
58
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
59
+ var def = _step.value;
60
+ // 检查是否是分组
61
+ if ('children' in def && def.children) {
62
+ // 递归查找分组内的列
63
+ var found = findOriginalHeaderName(field, def.children);
64
+ if (found) return found;
65
+ } else {
66
+ // 检查是否是目标列
67
+ var colDef = def;
68
+ if (colDef.field === field) {
69
+ return colDef.headerName;
70
+ }
71
+ }
72
+ }
73
+ } catch (err) {
74
+ _iterator.e(err);
75
+ } finally {
76
+ _iterator.f();
77
+ }
78
+ return undefined;
79
+ }
80
+
49
81
  /**
50
82
  * 递归遍历列定义树
51
83
  */
@@ -54,13 +86,16 @@ function gridStateToFlatConfig(columnDefs) {
54
86
  if (item.children && item.children.length > 0) {
55
87
  // 这是一个分组节点
56
88
  var groupId = generateId();
89
+ var headerName = item.headerName || '未命名分组';
57
90
  result.push({
58
91
  id: groupId,
59
92
  type: 'group',
60
93
  parentId: parentId,
61
94
  level: level,
62
95
  order: order++,
63
- headerName: item.headerName || '未命名分组',
96
+ headerName: headerName,
97
+ originalHeaderName: headerName,
98
+ // 保存原始 headerName
64
99
  groupId: item.groupId || item.field || generateId(),
65
100
  marryChildren: item.marryChildren
66
101
  });
@@ -68,6 +103,9 @@ function gridStateToFlatConfig(columnDefs) {
68
103
  traverse(item.children, level + 1, groupId);
69
104
  } else {
70
105
  // 这是一个列节点
106
+ var _headerName = item.headerName || item.field || '未命名列';
107
+ // 从原始列定义中获取 originalHeaderName,如果没有则使用当前 headerName
108
+ var originalHeaderName = item.field ? findOriginalHeaderName(item.field, originalColumnDefs) || _headerName : _headerName;
71
109
  result.push({
72
110
  id: generateId(),
73
111
  type: 'column',
@@ -75,7 +113,9 @@ function gridStateToFlatConfig(columnDefs) {
75
113
  level: level,
76
114
  order: order++,
77
115
  field: item.field,
78
- headerName: item.headerName || item.field || '未命名列',
116
+ headerName: _headerName,
117
+ originalHeaderName: originalHeaderName,
118
+ // 从原始定义获取,或使用当前值
79
119
  width: item.width,
80
120
  hide: item.hide,
81
121
  pinned: item.pinned === null ? 'notPinned' : item.pinned,
@@ -107,11 +147,11 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
107
147
  */
108
148
  function findOriginalColDef(field, defs) {
109
149
  if (!defs) return undefined;
110
- var _iterator = _createForOfIteratorHelper(defs),
111
- _step;
150
+ var _iterator2 = _createForOfIteratorHelper(defs),
151
+ _step2;
112
152
  try {
113
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
114
- var def = _step.value;
153
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
154
+ var def = _step2.value;
115
155
  // 检查是否是分组
116
156
  if ('children' in def && def.children) {
117
157
  // 递归查找分组内的列
@@ -126,9 +166,9 @@ function flatConfigToGridState(flatConfig, originalColumnDefs) {
126
166
  }
127
167
  }
128
168
  } catch (err) {
129
- _iterator.e(err);
169
+ _iterator2.e(err);
130
170
  } finally {
131
- _iterator.f();
171
+ _iterator2.f();
132
172
  }
133
173
  return undefined;
134
174
  }
@@ -93,6 +93,10 @@ function AgGridPlus(props) {
93
93
  var apiRef = useRef();
94
94
  var allColDefsRef = useRef([]);
95
95
 
96
+ // 【新增】缓存初始的 columnDefs,用于保留原始 headerName
97
+ // 这个值在组件生命周期中保持不变,不会被列方案修改
98
+ var initialColumnDefsRef = useRef([]);
99
+
96
100
  // 【新增】用于缓存每个数据对象的唯一 ID(降级方案)
97
101
  var rowIdCacheRef = useRef(new WeakMap());
98
102
  var rowIdCounterRef = useRef(0);
@@ -582,6 +586,21 @@ function AgGridPlus(props) {
582
586
  var cols = getTableColumns([dataForTypeInference]);
583
587
  allColDefsRef.current = cols; // 同步更新 ref
584
588
 
589
+ // 【新增】首次初始化时缓存初始列定义(浅拷贝即可,只需要保留 headerName)
590
+ if (initialColumnDefsRef.current.length === 0) {
591
+ initialColumnDefsRef.current = cols.map(function (col) {
592
+ // 递归处理分组的 children
593
+ if ('children' in col && col.children) {
594
+ return _objectSpread(_objectSpread({}, col), {}, {
595
+ children: col.children.map(function (child) {
596
+ return _objectSpread({}, child);
597
+ })
598
+ });
599
+ }
600
+ // 普通列只需要浅拷贝
601
+ return _objectSpread({}, col);
602
+ });
603
+ }
585
604
  return cols;
586
605
  }, [React.Children.count(children), props.columnDefs, extensibleColumns, gridKey]);
587
606
 
@@ -1109,6 +1128,8 @@ function AgGridPlus(props) {
1109
1128
  columnState: gridPlusColumnState,
1110
1129
  allColDefs: allColDefsRef.current,
1111
1130
  // 【修复】传入原始完整的列定义
1131
+ initialColumnDefs: initialColumnDefsRef.current,
1132
+ // 【新增】传入初始列定义(用于获取原始 headerName)
1112
1133
  onSaveColumnState: onSaveColumnState,
1113
1134
  applyToGlobal: applyToGlobal,
1114
1135
  resetCurrent: resetCurrent,
@@ -1135,6 +1156,8 @@ function AgGridPlus(props) {
1135
1156
  };
1136
1157
  }, [extensibleColumns, gridPlusColumnState, allColDefsRef.current,
1137
1158
  // 【修复】添加到依赖数组
1159
+ initialColumnDefsRef.current,
1160
+ // 【新增】添加初始列定义到依赖数组
1138
1161
  onSaveColumnState, applyToGlobal, resetCurrent, resetAll, currentQueryScheme, queryItemsOrder, queryFormItems,
1139
1162
  // 方案管理依赖
1140
1163
  columnSchemes, querySchemes, currentSchemes, schemesLoading, lastSyncTime, saveColumnScheme, deleteColumnScheme, saveQueryScheme, deleteQueryScheme, setCurrentColumnScheme, setCurrentQueryScheme, refreshSchemes, getColumnSchemes, getQuerySchemes, getCurrentScheme]);
@@ -100,6 +100,11 @@ export interface GridPlusContextValue extends SchemeManagementAPI {
100
100
  * 用于列方案应用时保留这些属性
101
101
  */
102
102
  allColDefs?: import('../types').ExtendedColDef[];
103
+ /**
104
+ * 初始列定义(从 props 传入的原始值,不会被列方案修改)
105
+ * 用于获取原始 headerName,以便显示修改状态
106
+ */
107
+ initialColumnDefs?: import('../types').ExtendedColDef[];
103
108
  /**
104
109
  * 保存当前表格的列状态到服务器(仅保存当前表格)
105
110
  * @param gridKey 表格唯一标识
@@ -35,3 +35,16 @@
35
35
  width: 18px !important;
36
36
  height: 18px !important;
37
37
  }
38
+
39
+ // 列内容对齐方式样式
40
+ .custom-cell-left {
41
+ text-align: left !important;
42
+ }
43
+
44
+ .custom-cell-centered {
45
+ text-align: center !important;
46
+ }
47
+
48
+ .custom-cell-right {
49
+ text-align: right !important;
50
+ }