@nokecy/qc-ui 1.1.76 → 1.1.78

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 (49) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.js +12 -0
  3. package/dist/cjs/standardList/StandardAgGridPlus.d.ts +58 -0
  4. package/dist/cjs/standardList/StandardAgGridPlus.js +698 -0
  5. package/dist/cjs/standardList/dateFormat.d.ts +16 -0
  6. package/dist/cjs/standardList/dateFormat.js +56 -0
  7. package/dist/cjs/standardList/emptyState.d.ts +36 -0
  8. package/dist/cjs/standardList/emptyState.js +89 -0
  9. package/dist/cjs/standardList/enumColumns.d.ts +31 -0
  10. package/dist/cjs/standardList/enumColumns.js +87 -0
  11. package/dist/cjs/standardList/gridColumnDefs.d.ts +33 -0
  12. package/dist/cjs/standardList/gridColumnDefs.js +61 -0
  13. package/dist/cjs/standardList/groupedHeaders.d.ts +28 -0
  14. package/dist/cjs/standardList/groupedHeaders.js +84 -0
  15. package/dist/cjs/standardList/groupedHeaders.less +29 -0
  16. package/dist/cjs/standardList/index.d.ts +20 -0
  17. package/dist/cjs/standardList/index.js +176 -0
  18. package/dist/cjs/standardList/listDateDisplay.d.ts +9 -0
  19. package/dist/cjs/standardList/listDateDisplay.js +64 -0
  20. package/dist/cjs/standardList/listDefaultSort.d.ts +38 -0
  21. package/dist/cjs/standardList/listDefaultSort.js +139 -0
  22. package/dist/cjs/standardList/listRefresh.d.ts +25 -0
  23. package/dist/cjs/standardList/listRefresh.js +53 -0
  24. package/dist/esm/index.d.ts +1 -0
  25. package/dist/esm/index.js +1 -0
  26. package/dist/esm/standardList/StandardAgGridPlus.d.ts +58 -0
  27. package/dist/esm/standardList/StandardAgGridPlus.js +691 -0
  28. package/dist/esm/standardList/dateFormat.d.ts +16 -0
  29. package/dist/esm/standardList/dateFormat.js +50 -0
  30. package/dist/esm/standardList/emptyState.d.ts +36 -0
  31. package/dist/esm/standardList/emptyState.js +83 -0
  32. package/dist/esm/standardList/enumColumns.d.ts +31 -0
  33. package/dist/esm/standardList/enumColumns.js +82 -0
  34. package/dist/esm/standardList/gridColumnDefs.d.ts +33 -0
  35. package/dist/esm/standardList/gridColumnDefs.js +55 -0
  36. package/dist/esm/standardList/groupedHeaders.d.ts +28 -0
  37. package/dist/esm/standardList/groupedHeaders.js +78 -0
  38. package/dist/esm/standardList/groupedHeaders.less +29 -0
  39. package/dist/esm/standardList/index.d.ts +20 -0
  40. package/dist/esm/standardList/index.js +15 -0
  41. package/dist/esm/standardList/listDateDisplay.d.ts +9 -0
  42. package/dist/esm/standardList/listDateDisplay.js +58 -0
  43. package/dist/esm/standardList/listDefaultSort.d.ts +38 -0
  44. package/dist/esm/standardList/listDefaultSort.js +133 -0
  45. package/dist/esm/standardList/listRefresh.d.ts +25 -0
  46. package/dist/esm/standardList/listRefresh.js +47 -0
  47. package/dist/umd/qc-ui.min.css +1 -1
  48. package/dist/umd/qc-ui.min.js +1 -1
  49. package/package.json +1 -1
@@ -0,0 +1,698 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StandardAgGridPlus = exports.StandardAgGridColumn = void 0;
7
+ var _antd = require("antd");
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _agGridPlus = require("../ag-grid-plus");
10
+ var _valueEnumColor = require("../ag-grid-plus/utils/valueEnumColor");
11
+ var _businessDecimal = require("../utils/businessDecimal");
12
+ var _emptyState = require("./emptyState");
13
+ var _enumColumns = require("./enumColumns");
14
+ var _gridColumnDefs = require("./gridColumnDefs");
15
+ var _groupedHeaders = require("./groupedHeaders");
16
+ require("./groupedHeaders.less");
17
+ var _listDateDisplay = require("./listDateDisplay");
18
+ var _listDefaultSort = require("./listDefaultSort");
19
+ var _listRefresh = require("./listRefresh");
20
+ var _excluded = ["businessKey"],
21
+ _excluded2 = ["children"],
22
+ _excluded3 = ["listPolicy", "children"],
23
+ _excluded4 = ["sort", "initialSort"],
24
+ _excluded5 = ["emptyActions", "filterActive", "clearFilterAction", "defaultSort", "listPolicy", "refreshToken", "isActive"];
25
+ 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); }
26
+ 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; }
27
+ 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); }
28
+ 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; } } }; }
29
+ 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; }
30
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
31
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
32
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33
+ 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."); }
34
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
35
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
36
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
37
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
38
+ 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."); }
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); }
40
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
41
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
42
+ 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; }
43
+ 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; }
44
+ 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; }
45
+ 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; }
46
+ 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; }
47
+ 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; }
48
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
49
+ 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); }
50
+ /**
51
+ * 标准列表的宿主口径。
52
+ * - `enumFallbackRenderer`:枚举列未命中时的显示(如「未知(原码)」);不传则显示原码。
53
+ * - `sortPolicy`:默认排序识别的状态字段与记录时间字段。
54
+ */
55
+
56
+ /**
57
+ * 标准列表列定义:在表格列定义上补 businessKey。
58
+ * businessKey 为 true 表示该列是业务单号(如 mrpID、mpsID),不按「ID 结尾」当内部键隐藏。
59
+ * @author nokecy
60
+ */
61
+
62
+ // 序号列的字段名会随列方案保存在用户的列设置里,改名会让已保存的方案失效,所以沿用最初的字面量。
63
+ var SYSTEM_SEQUENCE_FIELD = '__smartErpDisplaySequence';
64
+ var GENERATED_SEQUENCE_FIELD = '序号';
65
+ var SELECTION_COLUMN_ID = 'ag-Grid-SelectionColumn';
66
+
67
+ /** 前端生成的显示序号:默认固定在左侧,排在复选列之后,用户仍可调整列方案。@author nokecy */
68
+ var makeSequenceColumn = function makeSequenceColumn() {
69
+ return {
70
+ field: SYSTEM_SEQUENCE_FIELD,
71
+ headerName: GENERATED_SEQUENCE_FIELD,
72
+ width: 76,
73
+ pinned: 'left',
74
+ lockVisible: true,
75
+ suppressColumnsToolPanel: true,
76
+ sortable: false,
77
+ filter: false,
78
+ hideInSearch: true,
79
+ valueGetter: function valueGetter(params) {
80
+ var _params$node, _params$node2;
81
+ // 合计等固定行不是数据行,不编序号。@author nokecy
82
+ if ((_params$node = params.node) !== null && _params$node !== void 0 && _params$node.rowPinned) return '';
83
+ var rowIndex = (_params$node2 = params.node) === null || _params$node2 === void 0 ? void 0 : _params$node2.rowIndex;
84
+ return rowIndex == null ? '' : rowIndex + 1;
85
+ }
86
+ };
87
+ };
88
+ var isInternalField = function isInternalField(field, headerName) {
89
+ return headerName.trim() === GENERATED_SEQUENCE_FIELD || /^(?:id|.*(?:lineNo|lineNumber))$/i.test(field) || /^(?:.*Id|tenantId|creatorId|lastModifierId|deleterId|extraProperties|concurrencyStamp|isDeleted|deletionTime)$/i.test(field);
90
+ };
91
+ var normalizeColumn = function normalizeColumn(column) {
92
+ var _next$field, _next$headerName;
93
+ if ('children' in column && Array.isArray(column.children)) {
94
+ return (0, _groupedHeaders.withCompositeGroupHeader)(_objectSpread(_objectSpread({}, column), {}, {
95
+ children: column.children.map(normalizeColumn)
96
+ }));
97
+ }
98
+ // businessKey:页面显式声明该列是业务单号(如 mrpID、mpsID),不是数据库内部键,不按「ID 结尾」隐藏。@author nokecy
99
+ var _ref = column,
100
+ businessKey = _ref.businessKey,
101
+ columnProps = _objectWithoutProperties(_ref, _excluded);
102
+ var next = (0, _listDateDisplay.normalizeListDateColumn)(_objectSpread({}, columnProps));
103
+ var field = String((_next$field = next.field) !== null && _next$field !== void 0 ? _next$field : '');
104
+ var headerName = String((_next$headerName = next.headerName) !== null && _next$headerName !== void 0 ? _next$headerName : '');
105
+ // 业务排序值留在数据中;显示序号统一由前端生成,避免重复列。@author nokecy
106
+ if (!businessKey && field && isInternalField(field, headerName) && field !== SYSTEM_SEQUENCE_FIELD) {
107
+ // 行标识与数据库关联键用于取数和操作,不向终端用户开放列显示或筛选。
108
+ next.hide = true;
109
+ next.hideInTable = true;
110
+ next.hideInSearch = true;
111
+ next.lockVisible = true;
112
+ next.suppressColumnsToolPanel = true;
113
+ }
114
+ // 业务列默认显示;只有页面显式设置 hide / initialHide 时才隐藏。@author nokecy
115
+ var types = Array.isArray(next.type) ? next.type : [next.type];
116
+ if (types.some(function (type) {
117
+ return type === 'numericColumn' || type === 'numberColumn';
118
+ }) && !next.comparator) {
119
+ // 数值字符串按精确值排序,避免文本顺序或 number 转换丢位。@author nokecy
120
+ next.comparator = function (a, b) {
121
+ return a == null ? b == null ? 0 : -1 : b == null ? 1 : (0, _businessDecimal.decimal)(a).cmp((0, _businessDecimal.decimal)(b));
122
+ };
123
+ }
124
+ return (0, _groupedHeaders.withCompositeLeafHeader)(next);
125
+ };
126
+ var isVisibleColumn = function isVisibleColumn(column) {
127
+ var parentHidden = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
128
+ return !parentHidden && column.hide !== true && column.initialHide !== true && column.hideInTable !== true;
129
+ };
130
+ var applyListDefaultSort = function applyListDefaultSort(column, sorting, policy) {
131
+ var _column$field;
132
+ if (!sorting.length) return column;
133
+ var field = String((_column$field = column.field) !== null && _column$field !== void 0 ? _column$field : '').toLowerCase();
134
+ var current = sorting.find(function (item) {
135
+ return item.field.toLowerCase() === field;
136
+ });
137
+ if (current) return _objectSpread(_objectSpread({}, column), {}, {
138
+ sort: undefined,
139
+ initialSort: current.sort,
140
+ sortIndex: current.sortIndex
141
+ });
142
+ // 单据有状态时,移除旧的“仅按创建时间”初始值,避免旧排序与新规则叠加。
143
+ if (sorting.exclusive || sorting.some(function (item) {
144
+ return policy.statusFieldSet.has(item.field.toLowerCase());
145
+ })) {
146
+ return _objectSpread(_objectSpread({}, column), {}, {
147
+ sort: undefined,
148
+ initialSort: undefined,
149
+ sortIndex: undefined
150
+ });
151
+ }
152
+ return column;
153
+ };
154
+ var applyListDefaultSortToDefs = function applyListDefaultSortToDefs(columns, sorting, policy) {
155
+ return columns.map(function (column) {
156
+ return Array.isArray(column === null || column === void 0 ? void 0 : column.children) && column.children.length ? _objectSpread(_objectSpread({}, column), {}, {
157
+ children: applyListDefaultSortToDefs(column.children, sorting, policy)
158
+ }) : applyListDefaultSort(column !== null && column !== void 0 ? column : {}, sorting, policy);
159
+ });
160
+ };
161
+ var normalizeColumnElement = function normalizeColumnElement(child, sorting, policy) {
162
+ return _react.default.Children.map(child, function (element) {
163
+ if (! /*#__PURE__*/_react.default.isValidElement(element)) return element;
164
+ var props = element.props;
165
+ var sortedProps = applyListDefaultSort(props, sorting, policy);
166
+ var children = sortedProps.children,
167
+ definition = _objectWithoutProperties(sortedProps, _excluded2);
168
+ var normalized = _react.default.Children.count(children) > 0 ? (0, _groupedHeaders.withCompositeGroupHeader)(definition) : normalizeColumn(definition);
169
+ return /*#__PURE__*/_react.default.cloneElement(element, _objectSpread(_objectSpread({}, normalized), {}, {
170
+ children: normalizeColumnElement(children, sorting, policy)
171
+ }));
172
+ });
173
+ };
174
+ var collectColumnElements = function collectColumnElements(children) {
175
+ var result = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
176
+ _react.default.Children.forEach(children, function (child) {
177
+ if (! /*#__PURE__*/_react.default.isValidElement(child)) return;
178
+ var column = child.props;
179
+ if (_react.default.Children.count(column.children) > 0) collectColumnElements(column.children, result);else result.push(column);
180
+ });
181
+ return result;
182
+ };
183
+ var isOperationColumn = function isOperationColumn(column) {
184
+ var _ref2, _column$field2, _column$headerName;
185
+ var field = String((_ref2 = (_column$field2 = column.field) !== null && _column$field2 !== void 0 ? _column$field2 : column.colId) !== null && _ref2 !== void 0 ? _ref2 : '').trim();
186
+ var headerName = String((_column$headerName = column.headerName) !== null && _column$headerName !== void 0 ? _column$headerName : '').trim();
187
+ return /^(?:action|actions|operation|operations|option|options)$/i.test(field) || /^(?:操作|操作列|actions?|operations?)$/i.test(headerName);
188
+ };
189
+ var getPinnedGapFillColumn = function getPinnedGapFillColumn(leaves) {
190
+ if (!leaves.some(function (_ref3) {
191
+ var pinned = _ref3.pinned,
192
+ hidden = _ref3.hidden;
193
+ return !hidden && pinned === 'right';
194
+ })) return undefined;
195
+ // 已有弹性列时,AG Grid 会自行填满中间区域;保留页面显式配置。
196
+ if (leaves.some(function (_ref4) {
197
+ var column = _ref4.column,
198
+ pinned = _ref4.pinned,
199
+ hidden = _ref4.hidden;
200
+ return !hidden && !pinned && Number(column.flex) > 0;
201
+ })) return undefined;
202
+ return _toConsumableArray(leaves).reverse().find(function (_ref5) {
203
+ var column = _ref5.column,
204
+ pinned = _ref5.pinned,
205
+ hidden = _ref5.hidden;
206
+ return !hidden && !pinned && column.flex == null && !isOperationColumn(column);
207
+ });
208
+ };
209
+ var withFillFlex = function withFillFlex(column) {
210
+ var _ref6, _column$minWidth;
211
+ return _objectSpread(_objectSpread({}, column), {}, {
212
+ flex: 1,
213
+ minWidth: (_ref6 = (_column$minWidth = column.minWidth) !== null && _column$minWidth !== void 0 ? _column$minWidth : column.width) !== null && _ref6 !== void 0 ? _ref6 : 100
214
+ });
215
+ };
216
+
217
+ /** 右固定列前的剩余空白由最后一个普通业务列填充,避免列表出现空白列。@author nokecy */
218
+ var fillPinnedColumnGap = function fillPinnedColumnGap(columns) {
219
+ if (!columns) return columns;
220
+ var leaves = [];
221
+ var collect = function collect(items, parentPinned) {
222
+ var parentHidden = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
223
+ items.forEach(function (column) {
224
+ var _column$pinned;
225
+ var pinned = (_column$pinned = column.pinned) !== null && _column$pinned !== void 0 ? _column$pinned : parentPinned;
226
+ var hidden = !isVisibleColumn(column, parentHidden);
227
+ if (Array.isArray(column.children) && column.children.length) collect(column.children, pinned, hidden);else leaves.push({
228
+ column: column,
229
+ pinned: pinned,
230
+ hidden: hidden
231
+ });
232
+ });
233
+ };
234
+ collect(columns);
235
+ var target = getPinnedGapFillColumn(leaves);
236
+ if (!target) return columns;
237
+ var replace = function replace(items) {
238
+ return items.map(function (column) {
239
+ if (column === target.column) return withFillFlex(column);
240
+ if (Array.isArray(column.children)) return _objectSpread(_objectSpread({}, column), {}, {
241
+ children: replace(column.children)
242
+ });
243
+ return column;
244
+ });
245
+ };
246
+ return replace(columns);
247
+ };
248
+ var fillPinnedColumnGapInElements = function fillPinnedColumnGapInElements(children) {
249
+ var leaves = [];
250
+ var collect = function collect(nodes, parentPinned) {
251
+ var parentHidden = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
252
+ _react.default.Children.forEach(nodes, function (element) {
253
+ var _column$pinned2;
254
+ if (! /*#__PURE__*/_react.default.isValidElement(element)) return;
255
+ var column = element.props;
256
+ var pinned = (_column$pinned2 = column.pinned) !== null && _column$pinned2 !== void 0 ? _column$pinned2 : parentPinned;
257
+ var hidden = !isVisibleColumn(column, parentHidden);
258
+ if (_react.default.Children.count(column.children) > 0) collect(column.children, pinned, hidden);else leaves.push({
259
+ element: element,
260
+ column: column,
261
+ pinned: pinned,
262
+ hidden: hidden
263
+ });
264
+ });
265
+ };
266
+ collect(children);
267
+ var target = getPinnedGapFillColumn(leaves);
268
+ if (!target) return children;
269
+ var replace = function replace(nodes) {
270
+ return _react.default.Children.map(nodes, function (element) {
271
+ if (! /*#__PURE__*/_react.default.isValidElement(element)) return element;
272
+ if (element === target.element) return /*#__PURE__*/_react.default.cloneElement(element, withFillFlex(target.column));
273
+ var column = element.props;
274
+ if (_react.default.Children.count(column.children) > 0) {
275
+ return /*#__PURE__*/_react.default.cloneElement(element, {
276
+ children: replace(column.children)
277
+ });
278
+ }
279
+ return element;
280
+ });
281
+ };
282
+ return replace(children);
283
+ };
284
+ var normalizeColumnDefs = function normalizeColumnDefs(columns, sequenceColumn, policy, defaultSort) {
285
+ if (!columns) return columns;
286
+ var sorting = (0, _listDefaultSort.inferListDefaultSort)((0, _listDefaultSort.flattenColumnDefs)(columns), defaultSort, policy);
287
+ var normalized = applyListDefaultSortToDefs(columns, sorting, policy).map(normalizeColumn);
288
+ var withSequence = normalized.some(function (column) {
289
+ return 'field' in column && column.field === SYSTEM_SEQUENCE_FIELD;
290
+ }) ? normalized : [sequenceColumn].concat(_toConsumableArray(normalized));
291
+ return fillPinnedColumnGap(withSequence);
292
+ };
293
+ var addInferredSequence = function addInferredSequence(rows) {
294
+ return rows === null || rows === void 0 ? void 0 : rows.map(function (row, index) {
295
+ var sequencedRow = _objectSpread({}, row);
296
+ // 让自动推断列读取序号,同时避免这个纯显示字段进入选择行后的提交 JSON。
297
+ Object.defineProperty(sequencedRow, GENERATED_SEQUENCE_FIELD, {
298
+ configurable: true,
299
+ enumerable: false,
300
+ writable: true,
301
+ value: index + 1
302
+ });
303
+ return sequencedRow;
304
+ });
305
+ };
306
+ var addSequenceToResponse = function addSequenceToResponse(response) {
307
+ if (Array.isArray(response)) return addInferredSequence(response);
308
+ if (Array.isArray(response === null || response === void 0 ? void 0 : response.data)) return _objectSpread(_objectSpread({}, response), {}, {
309
+ data: addInferredSequence(response.data)
310
+ });
311
+ if (Array.isArray(response === null || response === void 0 ? void 0 : response.items)) return _objectSpread(_objectSpread({}, response), {}, {
312
+ items: addInferredSequence(response.items)
313
+ });
314
+ return response;
315
+ };
316
+
317
+ /**
318
+ * 标准列表基座:在 AgGridPlus 外面包一层公司列表规范(序号、内部字段隐藏、日期显示、分组表头、空态四分支、
319
+ * 默认排序、枚举回退等)。宿主的页面一律经宿主自己的薄封装导入它,这里加一次,等于所有列表页都有了。
320
+ * 与路由相关的刷新令牌和宿主口径(未知值文案、排序字段)由宿主通过属性传入。
321
+ *
322
+ * 这层目前做三件事:
323
+ *
324
+ * 1. **从表单页保存返回时,把列表刷新一遍**。
325
+ * 起因是 `pubGoBack()` 只 push 回父路径再关掉表单页标签,而列表页在 KeepAlive 缓存里,
326
+ * push 回去是直接复原缓存的那棵树,不会重新请求——用户刚保存的记录不在列表里,
327
+ * 于是以为没存上,再存一遍。全仓 196 处返回都是这个行为。
328
+ * 为什么不直接 `dropByCacheKey(列表路径)` 把缓存丢掉:那样确实会重新加载,
329
+ * 但连筛选条件、滚动位置、分页和列宽一起丢了。用户进表单前设的筛选,回来就没了。
330
+ * 走 URL 上的 refresh 标记只重新取数,页面状态原样保留。
331
+ *
332
+ * 2. **空态四分支(U2)**:无数据 / 筛选无结果 / 无权限(403) / 加载失败。
333
+ * qc-ui 只支持一句空数据文字(overlayNoRowsTemplateText),分不出四种情况。
334
+ * 这里用 AG-Grid 原生的 `noRowsOverlayComponent`(优先级高于 overlayNoRowsTemplate)
335
+ * 挂 `GridEmptyState`,请求成败与是否带筛选经 context 传给 overlay 组件。
336
+ * 业务页可通过 `emptyActions` 注入「无数据」分支的操作(通常是 Access 包裹的新建按钮),
337
+ * 或用自己的 `noRowsOverlayComponent` 整体覆盖。
338
+ *
339
+ * 3. **valueEnum 文字对比度**:qc-ui 把 `valueEnum.color` 当 CSS 文字色,缺 color 时写成
340
+ * `#ffffff`(销售跟踪「类型」列「普通订单」白底白字就是这条)。封装层给 columnDefs
341
+ * 和 AgGridColumn 统一套 `gridValueEnum()`:缺色用 inherit,浅色 / 预设名收成白底 ≥4.5:1。
342
+ *
343
+ * 4. **列定义上的 live `sort`**:AG Grid 把 `ColDef.sort` 当受控属性,每次 columnDefs 引用变化
344
+ * 都会强制写回。送货单点「送货日期」降序后再点单元格,选中态 setState 重建列定义,
345
+ * 默认「单号升序」被重新套上,排序就自己变了。封装层把 `sort` 收成只用于建列的 `initialSort`。
346
+ *
347
+ * @author nokecy
348
+ */
349
+
350
+ var StandardAgGridColumn = exports.StandardAgGridColumn = function StandardAgGridColumn(props) {
351
+ var _normalized$enumFallb;
352
+ var _theme$useToken = _antd.theme.useToken(),
353
+ token = _theme$useToken.token;
354
+ var listPolicy = props.listPolicy,
355
+ childColumns = props.children,
356
+ definition = _objectWithoutProperties(props, _excluded3);
357
+ var sortPolicy = (0, _react.useMemo)(function () {
358
+ return (0, _listDefaultSort.resolveListSortPolicy)(listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.sortPolicy);
359
+ }, [listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.sortPolicy]);
360
+ var normalized = _react.default.Children.count(childColumns) > 0 ? (0, _groupedHeaders.withCompositeGroupHeader)(definition) : normalizeColumn(definition);
361
+ var valueEnum = Array.isArray(normalized.valueEnum) ? (0, _valueEnumColor.gridValueEnum)(normalized.valueEnum, token.colorBgContainer) : normalized.valueEnum;
362
+ var sort = normalized.sort,
363
+ initialSort = normalized.initialSort,
364
+ rest = _objectWithoutProperties(normalized, _excluded4);
365
+ // JSX 枚举列与 columnDefs 使用同一默认回退。@author nokecy
366
+ var enumFallbackRenderer = Array.isArray(valueEnum) ? (0, _enumColumns.createNormalizedEnumFallbackRenderer)(valueEnum, (_normalized$enumFallb = normalized.enumFallbackRenderer) !== null && _normalized$enumFallb !== void 0 ? _normalized$enumFallb : listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.enumFallbackRenderer) : normalized.enumFallbackRenderer;
367
+ var BaseAgGridColumnAny = _agGridPlus.AgGridColumn;
368
+ return /*#__PURE__*/_react.default.createElement(BaseAgGridColumnAny, _extends({}, rest, {
369
+ valueEnum: valueEnum,
370
+ enumFallbackRenderer: enumFallbackRenderer,
371
+ initialSort: initialSort !== null && initialSort !== void 0 ? initialSort : sort
372
+ }), normalizeColumnElement(childColumns, [], sortPolicy));
373
+ };
374
+ var StandardAgGridPlus = exports.StandardAgGridPlus = function StandardAgGridPlus(props) {
375
+ var _props$noRowsOverlayC;
376
+ var _theme$useToken2 = _antd.theme.useToken(),
377
+ token = _theme$useToken2.token;
378
+ var emptyActions = props.emptyActions,
379
+ filterActive = props.filterActive,
380
+ clearFilterAction = props.clearFilterAction,
381
+ _defaultSort = props.defaultSort,
382
+ listPolicy = props.listPolicy,
383
+ refreshToken = props.refreshToken,
384
+ _props$isActive = props.isActive,
385
+ isActive = _props$isActive === void 0 ? true : _props$isActive,
386
+ restProps = _objectWithoutProperties(props, _excluded5);
387
+ var sortPolicy = (0, _react.useMemo)(function () {
388
+ return (0, _listDefaultSort.resolveListSortPolicy)(listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.sortPolicy);
389
+ }, [listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.sortPolicy]);
390
+ var innerRef = (0, _react.useRef)(undefined);
391
+
392
+ // 空态状态:最近一次请求是否带筛选、最近一次加载是否失败
393
+ var _useState = (0, _react.useState)(false),
394
+ _useState2 = _slicedToArray(_useState, 2),
395
+ hasFilter = _useState2[0],
396
+ setHasFilter = _useState2[1];
397
+ var _useState3 = (0, _react.useState)(undefined),
398
+ _useState4 = _slicedToArray(_useState3, 2),
399
+ lastError = _useState4[0],
400
+ setLastError = _useState4[1];
401
+ var selectionColumnOrderSyncPending = (0, _react.useRef)(false);
402
+ var sequenceColumn = (0, _react.useMemo)(function () {
403
+ return makeSequenceColumn();
404
+ }, []);
405
+ var defaultColGroupDef = (0, _react.useMemo)(function () {
406
+ var _props$defaultColGrou;
407
+ return (0, _groupedHeaders.withCompositeGroupHeader)((_props$defaultColGrou = props.defaultColGroupDef) !== null && _props$defaultColGrou !== void 0 ? _props$defaultColGrou : {});
408
+ }, [props.defaultColGroupDef]);
409
+ var hasChildColumns = _react.default.Children.count(props.children) > 0;
410
+ var hasSequenceChild = _react.default.Children.toArray(props.children).some(function (child) {
411
+ return /*#__PURE__*/_react.default.isValidElement(child) && child.props.field === SYSTEM_SEQUENCE_FIELD;
412
+ });
413
+ var hasColumnDefinitions = Array.isArray(props.columnDefs) || hasChildColumns;
414
+ var hasColumnDefinitionsRef = (0, _react.useRef)(hasColumnDefinitions);
415
+ hasColumnDefinitionsRef.current = hasColumnDefinitions;
416
+ var normalizedColumnDefs = (0, _react.useMemo)(function () {
417
+ return normalizeColumnDefs(props.columnDefs, sequenceColumn, sortPolicy, props.defaultSort);
418
+ }, [props.columnDefs, sequenceColumn, sortPolicy, props.defaultSort]);
419
+ var requestDefaultSorting = (0, _react.useMemo)(function () {
420
+ var columns = Array.isArray(props.columnDefs) ? (0, _listDefaultSort.flattenColumnDefs)(props.columnDefs) : collectColumnElements(props.children);
421
+ var sorting = (0, _listDefaultSort.inferListDefaultSort)(columns, props.defaultSort, sortPolicy);
422
+ var defaultPrimary = sorting[0];
423
+ var hasDocumentStatus = sorting.some(function (item) {
424
+ return sortPolicy.statusFieldSet.has(item.field.toLowerCase());
425
+ });
426
+ var previousPrimarySort = hasDocumentStatus ? columns.filter(function (column) {
427
+ return column.field && (column.initialSort === 'asc' || column.initialSort === 'desc' || column.sort === 'asc' || column.sort === 'desc');
428
+ }).sort(function (left, right) {
429
+ var _left$sortIndex, _right$sortIndex;
430
+ return Number((_left$sortIndex = left.sortIndex) !== null && _left$sortIndex !== void 0 ? _left$sortIndex : 0) - Number((_right$sortIndex = right.sortIndex) !== null && _right$sortIndex !== void 0 ? _right$sortIndex : 0);
431
+ }).map(function (column) {
432
+ var _column$initialSort;
433
+ return {
434
+ field: String(column.field),
435
+ sort: (_column$initialSort = column.initialSort) !== null && _column$initialSort !== void 0 ? _column$initialSort : column.sort
436
+ };
437
+ })[0] : undefined;
438
+ var legacyPrimary = previousPrimarySort && (previousPrimarySort.field.toLowerCase() !== (defaultPrimary === null || defaultPrimary === void 0 ? void 0 : defaultPrimary.field.toLowerCase()) || previousPrimarySort.sort !== (defaultPrimary === null || defaultPrimary === void 0 ? void 0 : defaultPrimary.sort)) ? "".concat(previousPrimarySort.field, " ").concat(previousPrimarySort.sort).toLowerCase() : undefined;
439
+ return {
440
+ sorting: sorting,
441
+ value: (0, _listDefaultSort.sortingText)(sorting),
442
+ legacyPrimary: legacyPrimary,
443
+ exclusive: !!sorting.exclusive
444
+ };
445
+ }, [props.columnDefs, props.children, props.defaultSort, sortPolicy]);
446
+ var normalizedChildren = (0, _react.useMemo)(function () {
447
+ if (!hasChildColumns) return props.children;
448
+ var sorting = (0, _listDefaultSort.inferListDefaultSort)(collectColumnElements(props.children), props.defaultSort, sortPolicy);
449
+ var columns = normalizeColumnElement(props.children, sorting, sortPolicy);
450
+ var withSequence = Array.isArray(props.columnDefs) || hasSequenceChild ? columns : [/*#__PURE__*/_react.default.createElement(StandardAgGridColumn, _extends({
451
+ key: SYSTEM_SEQUENCE_FIELD
452
+ }, sequenceColumn, {
453
+ listPolicy: listPolicy
454
+ })), columns];
455
+ return fillPinnedColumnGapInElements(withSequence);
456
+ }, [props.children, props.columnDefs, props.defaultSort, hasChildColumns, hasSequenceChild, sequenceColumn, sortPolicy, listPolicy]);
457
+ var dataSource = (0, _react.useMemo)(function () {
458
+ return hasColumnDefinitions ? props.dataSource : addInferredSequence(props.dataSource);
459
+ }, [props.dataSource, hasColumnDefinitions]);
460
+ var rowData = (0, _react.useMemo)(function () {
461
+ return hasColumnDefinitions ? props.rowData : addInferredSequence(props.rowData);
462
+ }, [props.rowData, hasColumnDefinitions]);
463
+ var rowSelectionSpecified = Object.prototype.hasOwnProperty.call(props, 'rowSelection');
464
+ var rowSelection = rowSelectionSpecified ? props.rowSelection : props.headerTitle ? 'multiple' : undefined;
465
+
466
+ // 刷新令牌由宿主给出(例如 URL 上的 refresh 参数),isActive 表示本页是否是当前活跃页(KeepAlive 缓存页不能刷)。
467
+ var refresh = refreshToken !== null && refreshToken !== void 0 ? refreshToken : null;
468
+
469
+ // 挂载那一刻已有的令牌不算数:那是别人触发的,自己刚加载完,再刷一次纯属浪费。
470
+ var lastHandledRef = (0, _react.useRef)(null);
471
+ var initializedRef = (0, _react.useRef)(false);
472
+ if (!initializedRef.current) {
473
+ initializedRef.current = true;
474
+ lastHandledRef.current = refresh;
475
+ }
476
+ var setGridRef = (0, _react.useCallback)(function (instance) {
477
+ innerRef.current = instance;
478
+ var outer = props.gridRef;
479
+ if (typeof outer === 'function') outer(instance);else if (outer) outer.current = instance;
480
+ }, [props.gridRef]);
481
+ (0, _react.useEffect)(function () {
482
+ var _innerRef$current, _innerRef$current$onR;
483
+ if (!(0, _listRefresh.shouldRefresh)({
484
+ isActive: isActive,
485
+ refresh: refresh,
486
+ lastHandled: lastHandledRef.current
487
+ })) return;
488
+ lastHandledRef.current = refresh;
489
+ (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 || (_innerRef$current$onR = _innerRef$current.onRefresh) === null || _innerRef$current$onR === void 0 || _innerRef$current$onR.call(_innerRef$current);
490
+ }, [isActive, refresh]);
491
+
492
+ // 包装 request:记录是否带筛选(区分「无数据」与「筛选无结果」);成功后清掉失败状态。
493
+ // ref 跟随业务最新的 request,包装函数本身保持稳定,避免 qc-ui 因引用变化重复请求。
494
+ var requestRef = (0, _react.useRef)(props.request);
495
+ requestRef.current = props.request;
496
+ var requestDefaultSortingRef = (0, _react.useRef)(requestDefaultSorting);
497
+ requestDefaultSortingRef.current = requestDefaultSorting;
498
+ var initialSortRequestHandledRef = (0, _react.useRef)(false);
499
+ var filterActiveRef = (0, _react.useRef)(!!filterActive);
500
+ filterActiveRef.current = !!filterActive;
501
+ var wrappedRequest = (0, _react.useCallback)( /*#__PURE__*/function () {
502
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(params, sort, filter) {
503
+ var _defaultSorting$split, _requestRef$current;
504
+ var defaultSort, defaultSorting, defaultPrimary, currentSorter, isOldInitialSort, isInitialDefaultKey, requestParams, result;
505
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
506
+ while (1) switch (_context.prev = _context.next) {
507
+ case 0:
508
+ setHasFilter((0, _emptyState.hasActiveFilter)(filter) || filterActiveRef.current);
509
+ defaultSort = requestDefaultSortingRef.current;
510
+ defaultSorting = defaultSort.value;
511
+ defaultPrimary = (_defaultSorting$split = defaultSorting.split(',')[0]) === null || _defaultSorting$split === void 0 ? void 0 : _defaultSorting$split.trim().toLowerCase();
512
+ currentSorter = typeof (params === null || params === void 0 ? void 0 : params.sorter) === 'string' ? params.sorter.trim().toLowerCase() : ''; // 首次加载时把按旧列默认值保存的排序升级到新规则;之后保留用户手动选择的排序。@author nokecy
513
+ isOldInitialSort = !initialSortRequestHandledRef.current && !!currentSorter && currentSorter === defaultSort.legacyPrimary; // 页面显式指定多键默认排序时,网格首屏只会下发其中一列的单键,首次请求按完整默认串发送。@author nokecy
514
+ isInitialDefaultKey = !initialSortRequestHandledRef.current && defaultSort.exclusive && defaultSorting.split(',').some(function (part) {
515
+ return part.trim().toLowerCase() === currentSorter;
516
+ });
517
+ initialSortRequestHandledRef.current = true;
518
+ requestParams = defaultSorting && (!currentSorter || currentSorter === defaultPrimary || isOldInitialSort || isInitialDefaultKey) ? _objectSpread(_objectSpread({}, params !== null && params !== void 0 ? params : {}), {}, {
519
+ sorter: defaultSorting
520
+ }) : params;
521
+ _context.next = 11;
522
+ return (_requestRef$current = requestRef.current) === null || _requestRef$current === void 0 ? void 0 : _requestRef$current.call(requestRef, requestParams, sort, filter);
523
+ case 11:
524
+ result = _context.sent;
525
+ setLastError(undefined);
526
+ return _context.abrupt("return", hasColumnDefinitions ? result : addSequenceToResponse(result));
527
+ case 14:
528
+ case "end":
529
+ return _context.stop();
530
+ }
531
+ }, _callee);
532
+ }));
533
+ return function (_x, _x2, _x3) {
534
+ return _ref7.apply(this, arguments);
535
+ };
536
+ }(), [hasColumnDefinitions]);
537
+
538
+ // 包装 onError:记录失败(空态显示「加载失败/无权限」分支),再透传给业务自己的 onError。
539
+ var onErrorRef = (0, _react.useRef)(props.onError);
540
+ onErrorRef.current = props.onError;
541
+ var wrappedOnError = (0, _react.useCallback)(function (error) {
542
+ var _onErrorRef$current;
543
+ setLastError(error);
544
+ (_onErrorRef$current = onErrorRef.current) === null || _onErrorRef$current === void 0 || _onErrorRef$current.call(onErrorRef, error);
545
+ }, []);
546
+ var onRetry = (0, _react.useCallback)(function () {
547
+ var _innerRef$current2, _innerRef$current2$on;
548
+ (_innerRef$current2 = innerRef.current) === null || _innerRef$current2 === void 0 || (_innerRef$current2$on = _innerRef$current2.onRefresh) === null || _innerRef$current2$on === void 0 || _innerRef$current2$on.call(_innerRef$current2);
549
+ }, []);
550
+ var emptyContextValue = (0, _react.useMemo)(function () {
551
+ return {
552
+ error: lastError,
553
+ hasFilter: hasFilter || !!filterActive,
554
+ actions: emptyActions,
555
+ clearFilterAction: clearFilterAction,
556
+ onRetry: onRetry
557
+ };
558
+ }, [lastError, hasFilter, filterActive, emptyActions, clearFilterAction, onRetry]);
559
+ var onGridReady = (0, _react.useCallback)(function (event) {
560
+ var _restProps$onGridRead;
561
+ var api = event.api;
562
+ var defaultSorting = requestDefaultSortingRef.current.sorting;
563
+ if (defaultSorting.length) {
564
+ // 与首次请求的默认排序保持一致;排序列方案不会保存,重建网格时应恢复到页面定义值。@author nokecy
565
+ api.applyColumnState({
566
+ state: defaultSorting.map(function (_ref8) {
567
+ var field = _ref8.field,
568
+ sort = _ref8.sort,
569
+ sortIndex = _ref8.sortIndex;
570
+ return {
571
+ colId: field,
572
+ sort: sort,
573
+ sortIndex: sortIndex
574
+ };
575
+ }),
576
+ defaultState: {
577
+ sort: null
578
+ }
579
+ });
580
+ }
581
+ var refreshSequence = function refreshSequence() {
582
+ Promise.resolve().then(function () {
583
+ if (api.isDestroyed()) return;
584
+ var hasExplicitColumns = hasColumnDefinitionsRef.current;
585
+ if (!hasExplicitColumns) {
586
+ api.forEachNodeAfterFilterAndSort(function (node) {
587
+ if (!node.data || node.rowIndex == null) return;
588
+ Object.defineProperty(node.data, GENERATED_SEQUENCE_FIELD, {
589
+ configurable: true,
590
+ enumerable: false,
591
+ writable: true,
592
+ value: node.rowIndex + 1
593
+ });
594
+ });
595
+ }
596
+ api.refreshCells({
597
+ columns: hasExplicitColumns ? [SYSTEM_SEQUENCE_FIELD] : [GENERATED_SEQUENCE_FIELD],
598
+ force: true
599
+ });
600
+ });
601
+ };
602
+ var keepSelectionColumnFirst = function keepSelectionColumnFirst() {
603
+ if (selectionColumnOrderSyncPending.current) return;
604
+ selectionColumnOrderSyncPending.current = true;
605
+ Promise.resolve().then(function () {
606
+ selectionColumnOrderSyncPending.current = false;
607
+ if (api.isDestroyed()) return;
608
+ var columnState = api.getColumnState();
609
+ var selectionIndex = columnState.findIndex(function (column) {
610
+ return column.colId === SELECTION_COLUMN_ID;
611
+ });
612
+ if (selectionIndex < 0) return;
613
+ var selectionColumn = columnState[selectionIndex];
614
+ if (selectionIndex === 0 && selectionColumn.pinned === 'left') return;
615
+ columnState.splice(selectionIndex, 1);
616
+ api.applyColumnState({
617
+ state: [_objectSpread(_objectSpread({}, selectionColumn), {}, {
618
+ pinned: 'left'
619
+ })].concat(_toConsumableArray(columnState)),
620
+ applyOrder: true
621
+ });
622
+ });
623
+ };
624
+ // 复选列固定在最左侧;序号列默认排在其后,用户仍可拖动或通过列方案调整。
625
+ api.addEventListener('columnEverythingChanged', keepSelectionColumnFirst);
626
+ api.addEventListener('columnPinned', keepSelectionColumnFirst);
627
+ api.addEventListener('columnMoved', keepSelectionColumnFirst);
628
+ // 列方案、显隐、拖动、固定或折叠分组后,按当前显示分组更新边框。@author nokecy
629
+ var compositeRefreshPending = false;
630
+ var styledRuntimeColumns = new WeakSet();
631
+ var refreshCompositeHeaders = function refreshCompositeHeaders() {
632
+ if (compositeRefreshPending) return;
633
+ compositeRefreshPending = true;
634
+ Promise.resolve().then(function () {
635
+ var _api$getColumns;
636
+ compositeRefreshPending = false;
637
+ if (api.isDestroyed()) return;
638
+ // qc-ui 的推断列、实体扩展列及列方案分组在组件内生成,统一补齐它们的显示样式。@author nokecy
639
+ var _iterator = _createForOfIteratorHelper((_api$getColumns = api.getColumns()) !== null && _api$getColumns !== void 0 ? _api$getColumns : []),
640
+ _step;
641
+ try {
642
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
643
+ var column = _step.value;
644
+ var definition = column.getColDef();
645
+ if (styledRuntimeColumns.has(definition)) continue;
646
+ Object.assign(definition, (0, _groupedHeaders.withCompositeLeafHeader)(definition));
647
+ styledRuntimeColumns.add(definition);
648
+ }
649
+ } catch (err) {
650
+ _iterator.e(err);
651
+ } finally {
652
+ _iterator.f();
653
+ }
654
+ api.refreshHeader();
655
+ api.refreshCells({
656
+ force: true
657
+ });
658
+ });
659
+ };
660
+ api.addEventListener('displayedColumnsChanged', refreshCompositeHeaders);
661
+ refreshCompositeHeaders();
662
+ // 排序、筛选、换页或数据更新后,按网格当前行位置重新计算显示序号。
663
+ api.addEventListener('modelUpdated', refreshSequence);
664
+ api.addEventListener('rowDataUpdated', refreshSequence);
665
+ api.addEventListener('paginationChanged', refreshSequence);
666
+ api.addEventListener('sortChanged', refreshSequence);
667
+ api.addEventListener('filterChanged', refreshSequence);
668
+ keepSelectionColumnFirst();
669
+ (_restProps$onGridRead = restProps.onGridReady) === null || _restProps$onGridRead === void 0 || _restProps$onGridRead.call(restProps, event);
670
+ }, [restProps.onGridReady]);
671
+ var columnDefs = (0, _react.useMemo)(function () {
672
+ var _applyGridValueEnumTo, _applyNormalizedEnumF, _detachLiveSortFromCo;
673
+ // 这两个纯列定义变换器接受的是递归列结构;qc-ui 的 ColGroupDef 子项类型声明较窄,运行时结构仍兼容。
674
+ var withEnum = (_applyGridValueEnumTo = (0, _enumColumns.applyGridValueEnumToColumns)(normalizedColumnDefs, token.colorBgContainer, listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.enumFallbackRenderer)) !== null && _applyGridValueEnumTo !== void 0 ? _applyGridValueEnumTo : normalizedColumnDefs;
675
+ var withNormalizedEnumFallbacks = (_applyNormalizedEnumF = (0, _enumColumns.applyNormalizedEnumFallbacksToColumns)(withEnum, listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.enumFallbackRenderer)) !== null && _applyNormalizedEnumF !== void 0 ? _applyNormalizedEnumF : withEnum;
676
+ return (_detachLiveSortFromCo = (0, _gridColumnDefs.detachLiveSortFromColumnDefs)(withNormalizedEnumFallbacks)) !== null && _detachLiveSortFromCo !== void 0 ? _detachLiveSortFromCo : withNormalizedEnumFallbacks;
677
+ }, [normalizedColumnDefs, token.colorBgContainer, listPolicy === null || listPolicy === void 0 ? void 0 : listPolicy.enumFallbackRenderer]);
678
+ return /*#__PURE__*/_react.default.createElement(_emptyState.GridEmptyContext.Provider, {
679
+ value: emptyContextValue
680
+ }, /*#__PURE__*/_react.default.createElement(_agGridPlus.AgGridPlus
681
+ // 枚举列颜色按主题底色保证可读(qc-ui 1.1.74);页面显式传入可覆盖。@author nokecy
682
+ , _extends({
683
+ valueEnumContrast: true
684
+ }, restProps, {
685
+ columnDefs: columnDefs,
686
+ defaultColGroupDef: defaultColGroupDef,
687
+ dataSource: dataSource,
688
+ rowData: rowData,
689
+ rowSelection: rowSelection,
690
+ gridRef: setGridRef,
691
+ request: props.request ? wrappedRequest : undefined,
692
+ onError: wrappedOnError,
693
+ onGridReady: onGridReady,
694
+ noRowsOverlayComponent: (_props$noRowsOverlayC = props.noRowsOverlayComponent) !== null && _props$noRowsOverlayC !== void 0 ? _props$noRowsOverlayC : _emptyState.GridEmptyState
695
+ }), normalizedChildren));
696
+ };
697
+
698
+ // 页面持有表格实例(刷新、取选中行)时的类型 @author nokecy