@nokecy/qc-ui 1.1.18 → 1.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +23 -0
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +5 -0
- package/dist/cjs/ag-grid-plus/index.less +13 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +79 -76
- package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.d.ts +22 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +211 -0
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +80 -25
- package/dist/cjs/ag-grid-plus/setting/DebounceInputs.d.ts +1 -0
- package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +2 -0
- package/dist/cjs/ag-grid-plus/setting/columnGroupTypes.d.ts +3 -1
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -1
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +49 -9
- package/dist/cjs/draggableModal/index.js +2 -1
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +23 -0
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +5 -0
- package/dist/esm/ag-grid-plus/index.less +13 -0
- package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +81 -78
- package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.d.ts +22 -0
- package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +204 -0
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +80 -25
- package/dist/esm/ag-grid-plus/setting/DebounceInputs.d.ts +1 -0
- package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +2 -0
- package/dist/esm/ag-grid-plus/setting/columnGroupTypes.d.ts +3 -1
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +2 -1
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +49 -9
- package/dist/esm/draggableModal/index.js +2 -1
- package/dist/umd/qc-ui.min.css +1 -1
- package/dist/umd/qc-ui.min.js +1 -1
- 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
|
-
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
613
|
+
_iterator2 = _createForOfIteratorHelper(schemes);
|
|
559
614
|
_context4.prev = 4;
|
|
560
|
-
|
|
615
|
+
_iterator2.s();
|
|
561
616
|
case 6:
|
|
562
|
-
if ((
|
|
617
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
563
618
|
_context4.next = 13;
|
|
564
619
|
break;
|
|
565
620
|
}
|
|
566
|
-
s =
|
|
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
|
-
|
|
639
|
+
_iterator2.e(_context4.t0);
|
|
585
640
|
case 18:
|
|
586
641
|
_context4.prev = 18;
|
|
587
|
-
|
|
642
|
+
_iterator2.f();
|
|
588
643
|
return _context4.finish(18);
|
|
589
644
|
case 21:
|
|
590
645
|
_context4.next = 23;
|
|
@@ -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:
|
|
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:
|
|
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
|
|
111
|
-
|
|
150
|
+
var _iterator2 = _createForOfIteratorHelper(defs),
|
|
151
|
+
_step2;
|
|
112
152
|
try {
|
|
113
|
-
for (
|
|
114
|
-
var def =
|
|
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
|
-
|
|
169
|
+
_iterator2.e(err);
|
|
130
170
|
} finally {
|
|
131
|
-
|
|
171
|
+
_iterator2.f();
|
|
132
172
|
}
|
|
133
173
|
return undefined;
|
|
134
174
|
}
|
|
@@ -206,7 +206,8 @@ var DraggableModal = function DraggableModal(props) {
|
|
|
206
206
|
return /*#__PURE__*/_react.default.createElement(_antd.Modal, _extends({
|
|
207
207
|
maskClosable: false,
|
|
208
208
|
width: width,
|
|
209
|
-
open: open
|
|
209
|
+
open: open,
|
|
210
|
+
destroyOnClose: true
|
|
210
211
|
}, restProps, {
|
|
211
212
|
wrapClassName: mergedWrapClassName,
|
|
212
213
|
title: /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -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
|
+
}
|