@nokecy/qc-ui 1.0.94 → 1.0.95

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 (150) hide show
  1. package/dist/cjs/ag-grid-plus/ag-gridPlus.js +252 -173
  2. package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +77 -19
  3. package/dist/cjs/ag-grid-plus/context/gridContext.js +0 -4
  4. package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.d.ts +88 -0
  5. package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +173 -0
  6. package/dist/cjs/ag-grid-plus/context/useSchemeManager.d.ts +78 -0
  7. package/dist/cjs/ag-grid-plus/{querySchemes/hooks/useQuerySchemes.js → context/useSchemeManager.js} +421 -449
  8. package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.d.ts +1 -1
  9. package/dist/cjs/ag-grid-plus/hooks/useAgGridData.d.ts +2 -2
  10. package/dist/cjs/ag-grid-plus/index.d.ts +7 -2
  11. package/dist/cjs/ag-grid-plus/index.js +11 -93
  12. package/dist/cjs/ag-grid-plus/interface.d.ts +0 -31
  13. package/dist/cjs/ag-grid-plus/interface.js +3 -0
  14. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.d.ts +0 -3
  15. package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +279 -145
  16. package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.d.ts +11 -0
  17. package/dist/cjs/ag-grid-plus/{querySchemes/components/QuerySchemesManager.js → setting/QuerySchemeManager.js} +193 -108
  18. package/dist/cjs/ag-grid-plus/setting/index.d.ts +2 -2
  19. package/dist/cjs/ag-grid-plus/setting/index.js +33 -48
  20. package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.d.ts +58 -0
  21. package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +446 -0
  22. package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.d.ts +57 -0
  23. package/dist/cjs/ag-grid-plus/{schemes → shared}/storage/localStorageAdapter.js +253 -271
  24. package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +132 -0
  25. package/dist/cjs/array-table/index.js +167 -45
  26. package/dist/cjs/index.d.ts +3 -3
  27. package/dist/cjs/index.js +14 -86
  28. package/dist/esm/ag-grid-plus/ag-gridPlus.js +252 -173
  29. package/dist/esm/ag-grid-plus/context/gridContext.d.ts +77 -19
  30. package/dist/esm/ag-grid-plus/context/gridContext.js +0 -4
  31. package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.d.ts +88 -0
  32. package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +165 -0
  33. package/dist/esm/ag-grid-plus/context/useSchemeManager.d.ts +78 -0
  34. package/dist/esm/ag-grid-plus/{querySchemes/hooks/useQuerySchemes.js → context/useSchemeManager.js} +420 -449
  35. package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.d.ts +1 -1
  36. package/dist/esm/ag-grid-plus/hooks/useAgGridData.d.ts +2 -2
  37. package/dist/esm/ag-grid-plus/index.d.ts +7 -2
  38. package/dist/esm/ag-grid-plus/index.js +9 -5
  39. package/dist/esm/ag-grid-plus/interface.d.ts +0 -31
  40. package/dist/esm/ag-grid-plus/interface.js +2 -0
  41. package/dist/esm/ag-grid-plus/setting/ColumnSetting.d.ts +0 -3
  42. package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +281 -147
  43. package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.d.ts +11 -0
  44. package/dist/esm/ag-grid-plus/{querySchemes/components/QuerySchemesManager.js → setting/QuerySchemeManager.js} +192 -107
  45. package/dist/esm/ag-grid-plus/setting/index.d.ts +2 -2
  46. package/dist/esm/ag-grid-plus/setting/index.js +33 -48
  47. package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.d.ts +58 -0
  48. package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +444 -0
  49. package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.d.ts +57 -0
  50. package/dist/esm/ag-grid-plus/{schemes → shared}/storage/localStorageAdapter.js +252 -271
  51. package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +132 -0
  52. package/dist/esm/array-table/index.js +168 -46
  53. package/dist/esm/index.d.ts +3 -3
  54. package/dist/esm/index.js +11 -11
  55. package/dist/esm/standardFormDialog/useStandardFormSchema.d.ts +1 -1
  56. package/dist/umd/qc-ui.min.css +1 -1
  57. package/dist/umd/qc-ui.min.js +1 -1
  58. package/package.json +1 -1
  59. package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.d.ts +0 -21
  60. package/dist/cjs/ag-grid-plus/querySchemes/components/QuerySchemesManager.less +0 -86
  61. package/dist/cjs/ag-grid-plus/querySchemes/components/index.d.ts +0 -5
  62. package/dist/cjs/ag-grid-plus/querySchemes/components/index.js +0 -12
  63. package/dist/cjs/ag-grid-plus/querySchemes/constants.d.ts +0 -17
  64. package/dist/cjs/ag-grid-plus/querySchemes/constants.js +0 -30
  65. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.d.ts +0 -10
  66. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.js +0 -65
  67. package/dist/cjs/ag-grid-plus/querySchemes/hooks/useQuerySchemes.d.ts +0 -6
  68. package/dist/cjs/ag-grid-plus/querySchemes/index.d.ts +0 -11
  69. package/dist/cjs/ag-grid-plus/querySchemes/index.js +0 -113
  70. package/dist/cjs/ag-grid-plus/querySchemes/storage/localStorageAdapter.d.ts +0 -44
  71. package/dist/cjs/ag-grid-plus/querySchemes/storage/localStorageAdapter.js +0 -261
  72. package/dist/cjs/ag-grid-plus/querySchemes/types.d.ts +0 -145
  73. package/dist/cjs/ag-grid-plus/querySchemes/utils/validator.d.ts +0 -36
  74. package/dist/cjs/ag-grid-plus/querySchemes/utils/validator.js +0 -155
  75. package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.d.ts +0 -16
  76. package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.js +0 -342
  77. package/dist/cjs/ag-grid-plus/schemes/components/SchemeManager.less +0 -35
  78. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.d.ts +0 -20
  79. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.js +0 -289
  80. package/dist/cjs/ag-grid-plus/schemes/components/SchemeSelector.less +0 -39
  81. package/dist/cjs/ag-grid-plus/schemes/components/index.d.ts +0 -4
  82. package/dist/cjs/ag-grid-plus/schemes/components/index.js +0 -19
  83. package/dist/cjs/ag-grid-plus/schemes/constants.d.ts +0 -23
  84. package/dist/cjs/ag-grid-plus/schemes/constants.js +0 -39
  85. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.d.ts +0 -6
  86. package/dist/cjs/ag-grid-plus/schemes/hooks/useColumnSchemes.js +0 -617
  87. package/dist/cjs/ag-grid-plus/schemes/index.d.ts +0 -23
  88. package/dist/cjs/ag-grid-plus/schemes/index.js +0 -164
  89. package/dist/cjs/ag-grid-plus/schemes/storage/configMerger.d.ts +0 -10
  90. package/dist/cjs/ag-grid-plus/schemes/storage/configMerger.js +0 -34
  91. package/dist/cjs/ag-grid-plus/schemes/storage/localStorageAdapter.d.ts +0 -79
  92. package/dist/cjs/ag-grid-plus/schemes/storage/priorityStorageAdapter.d.ts +0 -122
  93. package/dist/cjs/ag-grid-plus/schemes/storage/priorityStorageAdapter.js +0 -476
  94. package/dist/cjs/ag-grid-plus/schemes/storage/remoteStorageAdapter.d.ts +0 -139
  95. package/dist/cjs/ag-grid-plus/schemes/storage/remoteStorageAdapter.js +0 -746
  96. package/dist/cjs/ag-grid-plus/schemes/storage/useRemoteStorage.d.ts +0 -29
  97. package/dist/cjs/ag-grid-plus/schemes/storage/useRemoteStorage.js +0 -45
  98. package/dist/cjs/ag-grid-plus/schemes/types.d.ts +0 -131
  99. package/dist/cjs/ag-grid-plus/schemes/types.js +0 -5
  100. package/dist/cjs/ag-grid-plus/schemes/utils/validator.d.ts +0 -27
  101. package/dist/cjs/ag-grid-plus/schemes/utils/validator.js +0 -109
  102. package/dist/cjs/ag-grid-plus/storage/index.d.ts +0 -13
  103. package/dist/cjs/ag-grid-plus/storage/index.js +0 -5
  104. package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.d.ts +0 -21
  105. package/dist/esm/ag-grid-plus/querySchemes/components/QuerySchemesManager.less +0 -86
  106. package/dist/esm/ag-grid-plus/querySchemes/components/index.d.ts +0 -5
  107. package/dist/esm/ag-grid-plus/querySchemes/components/index.js +0 -5
  108. package/dist/esm/ag-grid-plus/querySchemes/constants.d.ts +0 -17
  109. package/dist/esm/ag-grid-plus/querySchemes/constants.js +0 -24
  110. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.d.ts +0 -10
  111. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQueryOrderManager.js +0 -60
  112. package/dist/esm/ag-grid-plus/querySchemes/hooks/useQuerySchemes.d.ts +0 -6
  113. package/dist/esm/ag-grid-plus/querySchemes/index.d.ts +0 -11
  114. package/dist/esm/ag-grid-plus/querySchemes/index.js +0 -20
  115. package/dist/esm/ag-grid-plus/querySchemes/storage/localStorageAdapter.d.ts +0 -44
  116. package/dist/esm/ag-grid-plus/querySchemes/storage/localStorageAdapter.js +0 -256
  117. package/dist/esm/ag-grid-plus/querySchemes/types.d.ts +0 -145
  118. package/dist/esm/ag-grid-plus/querySchemes/utils/validator.d.ts +0 -36
  119. package/dist/esm/ag-grid-plus/querySchemes/utils/validator.js +0 -144
  120. package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.d.ts +0 -16
  121. package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.js +0 -334
  122. package/dist/esm/ag-grid-plus/schemes/components/SchemeManager.less +0 -35
  123. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.d.ts +0 -20
  124. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.js +0 -281
  125. package/dist/esm/ag-grid-plus/schemes/components/SchemeSelector.less +0 -39
  126. package/dist/esm/ag-grid-plus/schemes/components/index.d.ts +0 -4
  127. package/dist/esm/ag-grid-plus/schemes/components/index.js +0 -2
  128. package/dist/esm/ag-grid-plus/schemes/constants.d.ts +0 -23
  129. package/dist/esm/ag-grid-plus/schemes/constants.js +0 -33
  130. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.d.ts +0 -6
  131. package/dist/esm/ag-grid-plus/schemes/hooks/useColumnSchemes.js +0 -612
  132. package/dist/esm/ag-grid-plus/schemes/index.d.ts +0 -23
  133. package/dist/esm/ag-grid-plus/schemes/index.js +0 -30
  134. package/dist/esm/ag-grid-plus/schemes/storage/configMerger.d.ts +0 -10
  135. package/dist/esm/ag-grid-plus/schemes/storage/configMerger.js +0 -28
  136. package/dist/esm/ag-grid-plus/schemes/storage/localStorageAdapter.d.ts +0 -79
  137. package/dist/esm/ag-grid-plus/schemes/storage/priorityStorageAdapter.d.ts +0 -122
  138. package/dist/esm/ag-grid-plus/schemes/storage/priorityStorageAdapter.js +0 -471
  139. package/dist/esm/ag-grid-plus/schemes/storage/remoteStorageAdapter.d.ts +0 -139
  140. package/dist/esm/ag-grid-plus/schemes/storage/remoteStorageAdapter.js +0 -746
  141. package/dist/esm/ag-grid-plus/schemes/storage/useRemoteStorage.d.ts +0 -29
  142. package/dist/esm/ag-grid-plus/schemes/storage/useRemoteStorage.js +0 -40
  143. package/dist/esm/ag-grid-plus/schemes/types.d.ts +0 -131
  144. package/dist/esm/ag-grid-plus/schemes/types.js +0 -1
  145. package/dist/esm/ag-grid-plus/schemes/utils/validator.d.ts +0 -27
  146. package/dist/esm/ag-grid-plus/schemes/utils/validator.js +0 -100
  147. package/dist/esm/ag-grid-plus/storage/index.d.ts +0 -13
  148. package/dist/esm/ag-grid-plus/storage/index.js +0 -17
  149. /package/dist/cjs/ag-grid-plus/{querySchemes/types.js → shared/storage/schemeStorageAdapter.js} +0 -0
  150. /package/dist/esm/ag-grid-plus/{querySchemes/types.js → shared/storage/schemeStorageAdapter.js} +0 -0
@@ -0,0 +1,132 @@
1
+ import type { FlatColumnItem } from '../../setting/columnGroupTypes';
2
+ /**
3
+ * 查询方案
4
+ */
5
+ export interface QueryScheme {
6
+ /** 方案唯一标识 */
7
+ id: string;
8
+ /** 方案名称 */
9
+ name: string;
10
+ /** 方案描述 */
11
+ description?: string;
12
+ /** 查询表单字段排序 */
13
+ itemsOrder?: string[];
14
+ /** 隐藏的字段列表 */
15
+ hiddenFields?: string[];
16
+ /** 查询表单值 */
17
+ formValues?: Record<string, any>;
18
+ /** 是否为默认方案 */
19
+ isDefault: boolean;
20
+ /** 是否为系统方案(不可删除) */
21
+ isSystem: boolean;
22
+ /** 创建时间戳 */
23
+ createdAt: number;
24
+ /** 最后更新时间戳 */
25
+ updatedAt: number;
26
+ /** 创建用户ID(可选) */
27
+ createdBy?: string;
28
+ }
29
+ /**
30
+ * 列方案(集中式 API 使用)
31
+ * 使用扩展的列配置格式,包含分组层级结构
32
+ */
33
+ export interface ColumnScheme {
34
+ /** 方案唯一标识 */
35
+ id: string;
36
+ /** 方案名称 */
37
+ name: string;
38
+ /** 方案描述 */
39
+ description?: string;
40
+ /** 完整的列配置数据(包含分组层级结构) */
41
+ columnConfig: FlatColumnItem[];
42
+ /** AG-Grid 过滤器模型数据(可选) */
43
+ filterModel?: any;
44
+ /** 是否为默认方案 */
45
+ isDefault: boolean;
46
+ /** 是否为系统方案(不可删除) */
47
+ isSystem: boolean;
48
+ /** 创建时间戳 */
49
+ createdAt: number;
50
+ /** 最后更新时间戳 */
51
+ updatedAt: number;
52
+ /** 创建用户ID(可选) */
53
+ createdBy?: string;
54
+ }
55
+ /**
56
+ * 方案同步数据结构
57
+ */
58
+ export interface SchemeSyncDataDto {
59
+ /** 列方案,按 GridId 分组 */
60
+ columnSchemes: Record<string, ColumnScheme[]>;
61
+ /** 查询方案,按 GridId 分组 */
62
+ querySchemes: Record<string, QueryScheme[]>;
63
+ /** 当前激活方案,Key 为 GridId */
64
+ currentSchemes: Record<string, CurrentSchemeDto>;
65
+ /** 服务器当前时间戳(毫秒) */
66
+ syncTime: number;
67
+ /** 数据版本号 */
68
+ version: number;
69
+ }
70
+ /**
71
+ * 当前方案 DTO
72
+ */
73
+ export interface CurrentSchemeDto {
74
+ /** 列方案ID */
75
+ columnSchemeId?: string | null;
76
+ /** 查询方案ID */
77
+ querySchemeId?: string | null;
78
+ }
79
+ /**
80
+ * 方案存储适配器接口
81
+ *
82
+ * 支持两种实现:
83
+ * - LocalStorageAdapter: 本地存储
84
+ * - BackendApiAdapter: 远程 API
85
+ */
86
+ export interface SchemeStorageAdapter {
87
+ /**
88
+ * 获取用户所有方案数据 (初始化时调用一次)
89
+ * @returns 所有表格的方案数据
90
+ */
91
+ loadAllSchemes(): Promise<SchemeSyncDataDto>;
92
+ /**
93
+ * 保存/更新列方案
94
+ * @param gridId 表格ID
95
+ * @param scheme 方案对象 (id 存在表示更新,不存在表示新增)
96
+ * @returns 保存后的方案对象
97
+ */
98
+ saveColumnScheme(gridId: string, scheme: ColumnScheme): Promise<ColumnScheme>;
99
+ /**
100
+ * 删除列方案
101
+ * @param gridId 表格ID
102
+ * @param schemeId 方案ID
103
+ */
104
+ deleteColumnScheme(gridId: string, schemeId: string): Promise<void>;
105
+ /**
106
+ * 保存/更新查询方案
107
+ * @param gridId 表格ID
108
+ * @param scheme 方案对象
109
+ * @returns 保存后的方案对象
110
+ */
111
+ saveQueryScheme(gridId: string, scheme: QueryScheme): Promise<QueryScheme>;
112
+ /**
113
+ * 删除查询方案
114
+ * @param gridId 表格ID
115
+ * @param schemeId 方案ID
116
+ */
117
+ deleteQueryScheme(gridId: string, schemeId: string): Promise<void>;
118
+ /**
119
+ * 设置当前方案
120
+ * @param gridId 表格ID
121
+ * @param columnSchemeId 列方案ID (null 表示清除)
122
+ * @param querySchemeId 查询方案ID (null 表示清除)
123
+ */
124
+ setCurrentScheme(gridId: string, columnSchemeId: string | null, querySchemeId: string | null): Promise<void>;
125
+ }
126
+ /**
127
+ * 适配器配置基类
128
+ */
129
+ export interface SchemeStorageConfig {
130
+ /** 是否启用调试日志 */
131
+ enableDebugLog?: boolean;
132
+ }
@@ -16,8 +16,10 @@ var _arrayAddBtn = _interopRequireDefault(require("./arrayAddBtn"));
16
16
  var _preview = _interopRequireDefault(require("./preview"));
17
17
  var _antd = require("antd");
18
18
  var _setting = _interopRequireDefault(require("../ag-grid-plus/setting"));
19
- var _useGridPlusColumnState = require("../ag-grid-plus/hooks/useGridPlusColumnState");
20
- var _useColumnSchemes = require("../ag-grid-plus/schemes/hooks/useColumnSchemes");
19
+ var _gridContext = require("../ag-grid-plus/context/gridContext");
20
+ var _useSchemeManager = require("../ag-grid-plus/context/useSchemeManager");
21
+ var _localStorageAdapter = require("../ag-grid-plus/shared/storage/localStorageAdapter");
22
+ var _columnGroupUtils = require("../ag-grid-plus/setting/columnGroupUtils");
21
23
  var _theme = require("../ag-grid-plus/theme");
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
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); }
@@ -35,7 +37,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
35
37
  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; } }
36
38
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // 导入 AG-Grid v33 主题
37
39
  //@ts-ignore
38
- var ArrayTable = (0, _react2.observer)(function (props) {
40
+ var ArrayTableInner = (0, _react2.observer)(function (props) {
39
41
  var height = props.height;
40
42
  var _useState = (0, _react.useState)(false),
41
43
  _useState2 = _slicedToArray(_useState, 2),
@@ -61,18 +63,6 @@ var ArrayTable = (0, _react2.observer)(function (props) {
61
63
  onMoveUp = props.onMoveUp;
62
64
  var addition = (0, _utils.useAddition)();
63
65
 
64
- // 尝试从 Context 获取列状态管理(如果被 Provider 包裹)
65
- var contextColumnState = (0, _useGridPlusColumnState.useGridPlusColumnState)();
66
-
67
- // ArrayTable 内部集成列方案管理(统一使用 AgGridPlus 的方案系统)
68
- var internalSchemeManager = (0, _useColumnSchemes.useColumnSchemes)({
69
- gridId: props.gridKey || 'array-table-default',
70
- enableAutoSave: false // 手动控制保存时机
71
- });
72
-
73
- // 使用 Context 的 schemeManager 或内部的 schemeManager
74
- var schemeManager = (contextColumnState === null || contextColumnState === void 0 ? void 0 : contextColumnState.schemeManager) || internalSchemeManager;
75
-
76
66
  // 使用自定义 hooks
77
67
  var _useCellFocus = (0, _hooks.useCellFocus)(),
78
68
  focusInputInCell = _useCellFocus.focusInputInCell;
@@ -81,46 +71,138 @@ var ArrayTable = (0, _react2.observer)(function (props) {
81
71
  var _useRowDrag = (0, _hooks.useRowDrag)(field),
82
72
  handleRowDragMove = _useRowDrag.handleRowDragMove;
83
73
 
84
- // 恢复列状态(从方案系统)
74
+ // 从 Context 获取方案管理相关的状态和方法
75
+ var _useContext = (0, _react.useContext)(_gridContext.GridPlusContext),
76
+ currentSchemes = _useContext.currentSchemes,
77
+ columnSchemes = _useContext.columnSchemes;
78
+
79
+ // 获取当前表格的激活方案
80
+ var currentScheme = (0, _react.useMemo)(function () {
81
+ var _currentSchemes$props;
82
+ if (!props.gridKey || !currentSchemes || !columnSchemes) return null;
83
+ var currentSchemeId = (_currentSchemes$props = currentSchemes[props.gridKey]) === null || _currentSchemes$props === void 0 ? void 0 : _currentSchemes$props.columnSchemeId;
84
+ if (!currentSchemeId) return null;
85
+ var schemes = columnSchemes[props.gridKey] || [];
86
+ return schemes.find(function (s) {
87
+ return s.id === currentSchemeId;
88
+ });
89
+ }, [props.gridKey, currentSchemes, columnSchemes]);
90
+
91
+ // 使用 ref 记录上次应用的方案 ID 和配置哈希,避免重复应用
92
+ var lastAppliedRef = (0, _react.useRef)({
93
+ schemeId: null,
94
+ configHash: null
95
+ });
96
+
97
+ /**
98
+ * 【关键修复】在页面刷新或切换方案时自动恢复列方案
99
+ *
100
+ * 监听 currentScheme 和 gridApiState 的变化,当方案和 Grid API 都准备好时,
101
+ * 自动应用方案中保存的列状态(列顺序、宽度、隐藏等)
102
+ *
103
+ * 关键优化:使用 ref 记录上次应用的配置哈希,避免保存配置后重复应用旧数据
104
+ */
85
105
  (0, _react.useEffect)(function () {
86
- if (!props.gridKey || !gridApiState || !schemeManager) {
106
+ var _currentScheme$column;
107
+ // 检查必要条件
108
+ if (!props.gridKey || !gridApiState || !currentScheme) return;
109
+ if (!currentScheme.columnConfig || currentScheme.columnConfig.length === 0) return;
110
+
111
+ // 计算当前配置的简单哈希(用于检测配置是否真正变化)
112
+ var configHash = JSON.stringify({
113
+ id: currentScheme.id,
114
+ columnCount: currentScheme.columnConfig.length,
115
+ firstCol: (_currentScheme$column = currentScheme.columnConfig[0]) === null || _currentScheme$column === void 0 ? void 0 : _currentScheme$column.field,
116
+ updatedAt: currentScheme.updatedAt
117
+ });
118
+ console.log('[ArrayTable] 方案恢复检查:', {
119
+ schemeId: currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id,
120
+ schemeName: currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.name,
121
+ configHash: configHash,
122
+ lastHash: lastAppliedRef.current.configHash,
123
+ shouldApply: configHash !== lastAppliedRef.current.configHash
124
+ });
125
+
126
+ // 【关键】检查配置是否真正变化,避免重复应用
127
+ if (configHash === lastAppliedRef.current.configHash) {
128
+ console.log('[ArrayTable] 配置未变化,跳过应用');
87
129
  return;
88
130
  }
89
131
 
90
- // 使用方案系统恢复列状态
91
- // schemeManager 会自动加载默认方案或最后使用的方案
92
- var currentScheme = schemeManager.currentScheme;
93
- if (currentScheme && currentScheme.columnConfig) {
94
- // 从 columnConfig (FlatColumnItem[]) 提取列状态
95
- var columnState = currentScheme.columnConfig.filter(function (item) {
96
- return item.type === 'column' && item.field;
97
- }).map(function (item) {
98
- return {
99
- colId: item.field,
100
- width: item.width,
101
- hide: item.hide,
102
- pinned: item.pinned === 'notPinned' ? null : item.pinned,
103
- flex: item.flex
104
- };
132
+ // 【提取函数】应用列状态和过滤器
133
+ var applyColumnStateAndFilter = function applyColumnStateAndFilter() {
134
+ if (!currentScheme || !gridApiState) return;
135
+
136
+ // 将扁平化的列配置转换为 AG-Grid 列状态
137
+ var columnState = (0, _columnGroupUtils.flatConfigToColumnState)(currentScheme.columnConfig);
138
+
139
+ // 应用列状态(包括列顺序、宽度、隐藏等)
140
+ gridApiState.applyColumnState({
141
+ state: columnState,
142
+ applyOrder: true // 强制应用列顺序
105
143
  });
106
- setTimeout(function () {
107
- gridApiState.applyColumnState({
108
- state: columnState,
109
- applyOrder: true
144
+ console.log('[ArrayTable] 方案已成功应用');
145
+
146
+ // 如果方案中包含过滤器配置,也一并应用
147
+ if (currentScheme.filterModel) {
148
+ gridApiState.setFilterModel(currentScheme.filterModel);
149
+ console.log('[ArrayTable] 过滤器已应用');
150
+ }
151
+
152
+ // 记录本次应用的配置哈希
153
+ lastAppliedRef.current = {
154
+ schemeId: currentScheme.id,
155
+ configHash: configHash
156
+ };
157
+ };
158
+
159
+ // 使用 requestAnimationFrame 延迟应用
160
+ var rafId = requestAnimationFrame(function () {
161
+ try {
162
+ console.log('[ArrayTable] 正在应用方案:', currentScheme.name);
163
+
164
+ // 【关键检测】检查是否包含分组配置
165
+ var hasGroups = currentScheme.columnConfig.some(function (item) {
166
+ return item.type === 'group';
110
167
  });
111
- }, 100);
112
- }
113
- }, [props.gridKey, gridApiState, schemeManager === null || schemeManager === void 0 ? void 0 : schemeManager.currentScheme]);
168
+ console.log('[ArrayTable] 是否包含分组:', hasGroups);
169
+
170
+ // 【条件更新】只有在包含分组时才更新 columnDefs
171
+ // 原因:array-table 的列是动态生成的,无分组时不应该覆盖动态列定义
172
+ if (hasGroups) {
173
+ var gridColumnDefs = (0, _columnGroupUtils.flatConfigToGridState)(currentScheme.columnConfig);
174
+ console.log('[ArrayTable] 检测到分组,更新 columnDefs');
175
+ gridApiState.setGridOption('columnDefs', gridColumnDefs);
176
+
177
+ // 等待 columnDefs 更新完成后再应用列状态
178
+ setTimeout(function () {
179
+ try {
180
+ applyColumnStateAndFilter();
181
+ } catch (error) {
182
+ console.error('[ArrayTable] 应用列状态失败:', error);
183
+ }
184
+ }, 100);
185
+ } else {
186
+ // 无分组时,直接应用列状态即可
187
+ console.log('[ArrayTable] 无分组,仅应用列状态');
188
+ applyColumnStateAndFilter();
189
+ }
190
+ } catch (error) {
191
+ console.error('[ArrayTable] 应用方案失败:', error);
192
+ }
193
+ });
194
+
195
+ // 清理函数:取消待执行的 RAF
196
+ return function () {
197
+ cancelAnimationFrame(rafId);
198
+ };
199
+ }, [props.gridKey, gridApiState, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.id, currentScheme === null || currentScheme === void 0 ? void 0 : currentScheme.updatedAt]);
114
200
 
115
201
  //@ts-ignore
116
202
  if (columns.length > 0) {
117
203
  //@ts-ignore
118
204
  columns[0].rowDrag = props.onRowDrag ? true : false;
119
205
  }
120
-
121
- // 不再需要 onColumnStateChanged 回调
122
- // 保存逻辑统一由 ColumnSetting 通过 schemeManager 处理
123
-
124
206
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
125
207
  ref: ref,
126
208
  style: {
@@ -167,8 +249,8 @@ var ArrayTable = (0, _react2.observer)(function (props) {
167
249
  gridKey: props.gridKey,
168
250
  gridApi: apiRef.current,
169
251
  gridApiState: gridApiState,
170
- type: 'formArrayTable',
171
- schemeManager: schemeManager
252
+ allColDefs: columns,
253
+ showQueryScheme: false
172
254
  })), /*#__PURE__*/_react.default.createElement("div", {
173
255
  style: {
174
256
  flex: 1,
@@ -261,6 +343,46 @@ var ArrayTable = (0, _react2.observer)(function (props) {
261
343
  });
262
344
  }))));
263
345
  });
346
+ ArrayTableInner.displayName = "ArrayTableInner";
347
+
348
+ /**
349
+ * ArrayTable 组件 - 带 GridPlusContext Provider 包装
350
+ *
351
+ * 提供完整的列方案管理功能支持
352
+ */
353
+ //@ts-ignore
354
+ var ArrayTable = (0, _react2.observer)(function (props) {
355
+ // 创建 LocalStorage 适配器实例 (使用 useMemo 避免重复创建)
356
+ var adapter = (0, _react.useMemo)(function () {
357
+ return new _localStorageAdapter.LocalStorageSchemeAdapter({
358
+ storageKey: "array-table-schemes-".concat(props.gridKey || 'default'),
359
+ enableDebugLog: false
360
+ });
361
+ }, [props.gridKey]);
362
+
363
+ // 初始化方案管理器
364
+ var schemeManager = (0, _useSchemeManager.useSchemeManager)({
365
+ adapter: adapter,
366
+ autoLoad: true,
367
+ showErrorMessage: true
368
+ });
369
+
370
+ // 构建 Context Value
371
+ var contextValue = (0, _react.useMemo)(function () {
372
+ return _objectSpread({
373
+ extensibleColumns: [],
374
+ columnState: undefined,
375
+ onSaveColumnState: function onSaveColumnState() {},
376
+ applyToGlobal: function applyToGlobal() {},
377
+ resetCurrent: function resetCurrent() {},
378
+ resetAll: function resetAll() {},
379
+ queryFormItems: []
380
+ }, schemeManager);
381
+ }, [schemeManager]);
382
+ return /*#__PURE__*/_react.default.createElement(_gridContext.GridPlusContext.Provider, {
383
+ value: contextValue
384
+ }, /*#__PURE__*/_react.default.createElement(ArrayTableInner, props));
385
+ });
264
386
  ArrayTable.displayName = "ArrayTable";
265
387
  ArrayTable.Column = function () {
266
388
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null);
@@ -1,4 +1,4 @@
1
- import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, useRemoteStorage, mergeRemoteStorageConfig, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH } from "./ag-grid-plus";
1
+ import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState, useSchemeManager, useGridSchemes, LocalStorageSchemeAdapter, BackendApiSchemeAdapter } from "./ag-grid-plus";
2
2
  import ArrayTable from "./array-table";
3
3
  import ArrayTableIndex from "./array-table-index";
4
4
  import { ColumnPresets } from "./array-table/columnHelper";
@@ -21,7 +21,7 @@ import { StandardFormDialog, withStandardForm, FieldCreators, createSelectField,
21
21
  import DeleteConfirm from "./deleteConfirm";
22
22
  import { RuleBuilder } from "./RuleBuilder";
23
23
  import { RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram } from "./components/RegexEditor";
24
- export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, useGridPlusColumnState, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, useRemoteStorage, mergeRemoteStorageConfig, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, };
24
+ export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, useGridPlusColumnState, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram, useSchemeManager, useGridSchemes, LocalStorageSchemeAdapter, BackendApiSchemeAdapter, };
25
25
  export type * from "./generatedListPage";
26
26
  export type * from "./standardFormDialog";
27
27
  export type * from "./deleteConfirm";
@@ -29,5 +29,5 @@ export type * from "./importModal";
29
29
  export type * from "./fullScreenAlert";
30
30
  export type * from "./RuleBuilder";
31
31
  export type { ColumnConfig } from "./array-table/columnHelper";
32
- export type { ColumnScheme, SchemeManagerConfig, StorageAdapter, SchemeValidationResult, UseColumnSchemesReturn, SchemeSelectorProps, SchemeManagerProps, GridPlusContextValue, } from "./ag-grid-plus";
32
+ export type { CentralizedColumnScheme, QueryScheme, SchemeStorageAdapter, SchemeSyncDataDto, CurrentSchemeDto, SchemeStorageConfig, LocalStorageAdapterConfig, BackendApiAdapterConfig, UseSchemeManagerConfig, GridPlusContextValue, } from "./ag-grid-plus";
33
33
  export type { ParseResult as RegexParseResult, ValidationResult as RegexValidationResult, RegexError, ComplexityMetrics, ASTNode, AstRegExp, RegexTemplate, TestResult as RegexTestResult, CodeMirrorWrapperProps, RegexEditorProps, RegexFlags, MatchResult, RegexTesterProps, FlagsSelectorProps, MatchItemProps, RegexRailroadDiagramProps, } from "./components/RegexEditor";
package/dist/cjs/index.js CHANGED
@@ -27,6 +27,12 @@ Object.defineProperty(exports, "ArrayTableIndex", {
27
27
  return _arrayTableIndex.default;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "BackendApiSchemeAdapter", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _agGridPlus.BackendApiSchemeAdapter;
34
+ }
35
+ });
30
36
  Object.defineProperty(exports, "Card", {
31
37
  enumerable: true,
32
38
  get: function get() {
@@ -45,12 +51,6 @@ Object.defineProperty(exports, "ConfirmPro", {
45
51
  return _ConfirmPro.default;
46
52
  }
47
53
  });
48
- Object.defineProperty(exports, "DEFAULT_SCHEME_NAME", {
49
- enumerable: true,
50
- get: function get() {
51
- return _agGridPlus.DEFAULT_SCHEME_NAME;
52
- }
53
- });
54
54
  Object.defineProperty(exports, "Dashboard", {
55
55
  enumerable: true,
56
56
  get: function get() {
@@ -141,22 +141,10 @@ Object.defineProperty(exports, "ImportModal", {
141
141
  return _importModal.default;
142
142
  }
143
143
  });
144
- Object.defineProperty(exports, "LocalStorageAdapter", {
145
- enumerable: true,
146
- get: function get() {
147
- return _agGridPlus.LocalStorageAdapter;
148
- }
149
- });
150
- Object.defineProperty(exports, "MAX_SCHEMES_PER_GRID", {
151
- enumerable: true,
152
- get: function get() {
153
- return _agGridPlus.MAX_SCHEMES_PER_GRID;
154
- }
155
- });
156
- Object.defineProperty(exports, "MAX_SCHEME_NAME_LENGTH", {
144
+ Object.defineProperty(exports, "LocalStorageSchemeAdapter", {
157
145
  enumerable: true,
158
146
  get: function get() {
159
- return _agGridPlus.MAX_SCHEME_NAME_LENGTH;
147
+ return _agGridPlus.LocalStorageSchemeAdapter;
160
148
  }
161
149
  });
162
150
  Object.defineProperty(exports, "MatchItem", {
@@ -195,24 +183,6 @@ Object.defineProperty(exports, "RuleBuilder", {
195
183
  return _RuleBuilder.RuleBuilder;
196
184
  }
197
185
  });
198
- Object.defineProperty(exports, "STORAGE_PREFIX", {
199
- enumerable: true,
200
- get: function get() {
201
- return _agGridPlus.STORAGE_PREFIX;
202
- }
203
- });
204
- Object.defineProperty(exports, "SchemeManager", {
205
- enumerable: true,
206
- get: function get() {
207
- return _agGridPlus.SchemeManager;
208
- }
209
- });
210
- Object.defineProperty(exports, "SchemeSelector", {
211
- enumerable: true,
212
- get: function get() {
213
- return _agGridPlus.SchemeSelector;
214
- }
215
- });
216
186
  Object.defineProperty(exports, "StandardFormDialog", {
217
187
  enumerable: true,
218
188
  get: function get() {
@@ -237,12 +207,6 @@ Object.defineProperty(exports, "ToolBar", {
237
207
  return _toolBar.default;
238
208
  }
239
209
  });
240
- Object.defineProperty(exports, "checkDuplicateName", {
241
- enumerable: true,
242
- get: function get() {
243
- return _agGridPlus.checkDuplicateName;
244
- }
245
- });
246
210
  Object.defineProperty(exports, "createCascaderField", {
247
211
  enumerable: true,
248
212
  get: function get() {
@@ -255,40 +219,22 @@ Object.defineProperty(exports, "createSelectField", {
255
219
  return _standardFormDialog.createSelectField;
256
220
  }
257
221
  });
258
- Object.defineProperty(exports, "defaultStorageAdapter", {
259
- enumerable: true,
260
- get: function get() {
261
- return _agGridPlus.defaultStorageAdapter;
262
- }
263
- });
264
222
  Object.defineProperty(exports, "flattenTreeDeep", {
265
223
  enumerable: true,
266
224
  get: function get() {
267
225
  return _agGridPlus.flattenTreeDeep;
268
226
  }
269
227
  });
270
- Object.defineProperty(exports, "generateUniqueName", {
271
- enumerable: true,
272
- get: function get() {
273
- return _agGridPlus.generateUniqueName;
274
- }
275
- });
276
- Object.defineProperty(exports, "mergeRemoteStorageConfig", {
277
- enumerable: true,
278
- get: function get() {
279
- return _agGridPlus.mergeRemoteStorageConfig;
280
- }
281
- });
282
- Object.defineProperty(exports, "useColumnSchemes", {
228
+ Object.defineProperty(exports, "useGridPlusColumnState", {
283
229
  enumerable: true,
284
230
  get: function get() {
285
- return _agGridPlus.useColumnSchemes;
231
+ return _agGridPlus.useGridPlusColumnState;
286
232
  }
287
233
  });
288
- Object.defineProperty(exports, "useGridPlusColumnState", {
234
+ Object.defineProperty(exports, "useGridSchemes", {
289
235
  enumerable: true,
290
236
  get: function get() {
291
- return _agGridPlus.useGridPlusColumnState;
237
+ return _agGridPlus.useGridSchemes;
292
238
  }
293
239
  });
294
240
  Object.defineProperty(exports, "useRegexValidation", {
@@ -297,10 +243,10 @@ Object.defineProperty(exports, "useRegexValidation", {
297
243
  return _RegexEditor.useRegexValidation;
298
244
  }
299
245
  });
300
- Object.defineProperty(exports, "useRemoteStorage", {
246
+ Object.defineProperty(exports, "useSchemeManager", {
301
247
  enumerable: true,
302
248
  get: function get() {
303
- return _agGridPlus.useRemoteStorage;
249
+ return _agGridPlus.useSchemeManager;
304
250
  }
305
251
  });
306
252
  Object.defineProperty(exports, "useTemplateManager", {
@@ -309,24 +255,6 @@ Object.defineProperty(exports, "useTemplateManager", {
309
255
  return _RegexEditor.useTemplateManager;
310
256
  }
311
257
  });
312
- Object.defineProperty(exports, "validateScheme", {
313
- enumerable: true,
314
- get: function get() {
315
- return _agGridPlus.validateScheme;
316
- }
317
- });
318
- Object.defineProperty(exports, "validateSchemeDescription", {
319
- enumerable: true,
320
- get: function get() {
321
- return _agGridPlus.validateSchemeDescription;
322
- }
323
- });
324
- Object.defineProperty(exports, "validateSchemeName", {
325
- enumerable: true,
326
- get: function get() {
327
- return _agGridPlus.validateSchemeName;
328
- }
329
- });
330
258
  Object.defineProperty(exports, "withStandardForm", {
331
259
  enumerable: true,
332
260
  get: function get() {