@nokecy/qc-ui 1.0.71 → 1.0.72

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.
@@ -27,10 +27,11 @@ var _locale = require("./locale");
27
27
  var _gridContext = require("./context/gridContext");
28
28
  var _querySchemes = require("./querySchemes");
29
29
  var _schemes = require("./schemes");
30
+ var _globalSyncManager = require("./storage/globalSyncManager");
30
31
  var _sanitize = require("./utils/sanitize");
31
32
  var _errors = require("./errors");
32
33
  var _logger = require("./utils/logger");
33
- var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "enableColumnSchemes", "columnSchemeStorageAdapter"];
34
+ var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager"];
34
35
  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
36
  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; }
36
37
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -76,11 +77,13 @@ function AgGridPlus(props) {
76
77
  queryDefaultRows = props.queryDefaultRows,
77
78
  onSelectedRowsChange = props.onSelectedRowsChange,
78
79
  _props$enableQuerySch = props.enableQuerySchemes,
79
- enableQuerySchemes = _props$enableQuerySch === void 0 ? false : _props$enableQuerySch,
80
+ enableQuerySchemes = _props$enableQuerySch === void 0 ? true : _props$enableQuerySch,
80
81
  querySchemeStorageAdapter = props.querySchemeStorageAdapter,
82
+ propsQuerySchemeManager = props.querySchemeManager,
81
83
  _props$enableColumnSc = props.enableColumnSchemes,
82
84
  enableColumnSchemes = _props$enableColumnSc === void 0 ? true : _props$enableColumnSc,
83
85
  columnSchemeStorageAdapter = props.columnSchemeStorageAdapter,
86
+ propsColumnSchemeManager = props.columnSchemeManager,
84
87
  rest = _objectWithoutProperties(props, _excluded);
85
88
  var _useGridPlusColumnSta = (0, _.useGridPlusColumnState)(),
86
89
  onSaveColumnState = _useGridPlusColumnSta.onSaveColumnState,
@@ -139,10 +142,15 @@ function AgGridPlus(props) {
139
142
  queryItemsOrder = _useState20[0],
140
143
  setQueryItemsOrder = _useState20[1];
141
144
 
142
- // 初始化查询方案管理器
143
- var querySchemeManager = enableQuerySchemes && gridKey ? (0, _querySchemes.useQuerySchemes)({
145
+ // 尝试获取全局适配器(如果已初始化)
146
+ var globalQueryAdapter = (0, _globalSyncManager.isGlobalSyncInitialized)() ? (0, _globalSyncManager.useGlobalQueryAdapter)() : undefined;
147
+ var globalColumnAdapter = (0, _globalSyncManager.isGlobalSyncInitialized)() ? (0, _globalSyncManager.useGlobalColumnAdapter)() : undefined;
148
+
149
+ // 自动创建查询方案管理器(如果未通过 props 提供)
150
+ var autoQuerySchemeManager = enableQuerySchemes && gridKey && !propsQuerySchemeManager ? (0, _querySchemes.useQuerySchemes)({
144
151
  gridId: gridKey,
145
- storageAdapter: querySchemeStorageAdapter,
152
+ // 优先使用全局适配器,否则使用 props 传入的适配器
153
+ storageAdapter: globalQueryAdapter || querySchemeStorageAdapter,
146
154
  onSchemeChange: function onSchemeChange(scheme) {
147
155
  if (scheme) {
148
156
  setQueryItemsOrder(scheme.itemsOrder);
@@ -150,11 +158,15 @@ function AgGridPlus(props) {
150
158
  }
151
159
  }) : undefined;
152
160
 
161
+ // 优先使用 props 提供的管理器,否则使用自动创建的
162
+ var querySchemeManager = propsQuerySchemeManager || autoQuerySchemeManager;
163
+
153
164
  // ============ 列配置方案管理 ============
154
- // 初始化列配置方案管理器
155
- var columnSchemeManager = enableColumnSchemes && gridKey ? (0, _schemes.useColumnSchemes)({
165
+ // 自动创建列配置方案管理器(如果未通过 props 提供)
166
+ var autoColumnSchemeManager = enableColumnSchemes && gridKey && !propsColumnSchemeManager ? (0, _schemes.useColumnSchemes)({
156
167
  gridId: gridKey,
157
- storageAdapter: columnSchemeStorageAdapter,
168
+ // 优先使用全局适配器,否则使用 props 传入的适配器
169
+ storageAdapter: globalColumnAdapter || columnSchemeStorageAdapter,
158
170
  enableAutoSave: true,
159
171
  onSchemeChange: function onSchemeChange(scheme) {
160
172
  if (scheme && apiRef.current) {
@@ -165,6 +177,9 @@ function AgGridPlus(props) {
165
177
  }
166
178
  }
167
179
  }) : undefined;
180
+
181
+ // 优先使用 props 提供的管理器,否则使用自动创建的
182
+ var columnSchemeManager = propsColumnSchemeManager || autoColumnSchemeManager;
168
183
  (0, _react.useImperativeHandle)(propsGridRef, function () {
169
184
  return gridRef.current;
170
185
  });
@@ -8,3 +8,5 @@ export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convert
8
8
  export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
9
9
  export type { ColumnScheme, SchemeManagerConfig, StorageAdapter, SchemeValidationResult, UseColumnSchemesReturn, SchemeSelectorProps, SchemeManagerProps } from "./schemes";
10
10
  export type { GridPlusContextValue } from "./context/gridContext";
11
+ export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
12
+ export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";
@@ -99,6 +99,12 @@ Object.defineProperty(exports, "defaultStorageAdapter", {
99
99
  return _schemes.defaultStorageAdapter;
100
100
  }
101
101
  });
102
+ Object.defineProperty(exports, "destroyGlobalSchemeSync", {
103
+ enumerable: true,
104
+ get: function get() {
105
+ return _storage.destroyGlobalSchemeSync;
106
+ }
107
+ });
102
108
  Object.defineProperty(exports, "flatten", {
103
109
  enumerable: true,
104
110
  get: function get() {
@@ -117,6 +123,54 @@ Object.defineProperty(exports, "generateUniqueName", {
117
123
  return _schemes.generateUniqueName;
118
124
  }
119
125
  });
126
+ Object.defineProperty(exports, "getGlobalAdapterFactory", {
127
+ enumerable: true,
128
+ get: function get() {
129
+ return _storage.getGlobalAdapterFactory;
130
+ }
131
+ });
132
+ Object.defineProperty(exports, "getGlobalSyncManager", {
133
+ enumerable: true,
134
+ get: function get() {
135
+ return _storage.getGlobalSyncManager;
136
+ }
137
+ });
138
+ Object.defineProperty(exports, "getGlobalSyncStatus", {
139
+ enumerable: true,
140
+ get: function get() {
141
+ return _storage.getGlobalSyncStatus;
142
+ }
143
+ });
144
+ Object.defineProperty(exports, "getUnsyncedGrids", {
145
+ enumerable: true,
146
+ get: function get() {
147
+ return _storage.getUnsyncedGrids;
148
+ }
149
+ });
150
+ Object.defineProperty(exports, "hasUnsyncedData", {
151
+ enumerable: true,
152
+ get: function get() {
153
+ return _storage.hasUnsyncedData;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, "initializeGlobalSchemeSync", {
157
+ enumerable: true,
158
+ get: function get() {
159
+ return _storage.initializeGlobalSchemeSync;
160
+ }
161
+ });
162
+ Object.defineProperty(exports, "isGlobalSyncInitialized", {
163
+ enumerable: true,
164
+ get: function get() {
165
+ return _storage.isGlobalSyncInitialized;
166
+ }
167
+ });
168
+ Object.defineProperty(exports, "syncAllSchemes", {
169
+ enumerable: true,
170
+ get: function get() {
171
+ return _storage.syncAllSchemes;
172
+ }
173
+ });
120
174
  Object.defineProperty(exports, "toTree", {
121
175
  enumerable: true,
122
176
  get: function get() {
@@ -129,6 +183,30 @@ Object.defineProperty(exports, "useColumnSchemes", {
129
183
  return _schemes.useColumnSchemes;
130
184
  }
131
185
  });
186
+ Object.defineProperty(exports, "useGlobalColumnAdapter", {
187
+ enumerable: true,
188
+ get: function get() {
189
+ return _storage.useGlobalColumnAdapter;
190
+ }
191
+ });
192
+ Object.defineProperty(exports, "useGlobalColumnSchemeManager", {
193
+ enumerable: true,
194
+ get: function get() {
195
+ return _storage.useGlobalColumnSchemeManager;
196
+ }
197
+ });
198
+ Object.defineProperty(exports, "useGlobalQueryAdapter", {
199
+ enumerable: true,
200
+ get: function get() {
201
+ return _storage.useGlobalQueryAdapter;
202
+ }
203
+ });
204
+ Object.defineProperty(exports, "useGlobalQuerySchemeManager", {
205
+ enumerable: true,
206
+ get: function get() {
207
+ return _storage.useGlobalQuerySchemeManager;
208
+ }
209
+ });
132
210
  Object.defineProperty(exports, "useGridPlusColumnState", {
133
211
  enumerable: true,
134
212
  get: function get() {
@@ -160,4 +238,5 @@ var _useGridPlusColumnState = require("./hooks/useGridPlusColumnState");
160
238
  require("./ag-grid-theme-builder.css");
161
239
  var _utils = require("./utils");
162
240
  var _schemes = require("./schemes");
241
+ var _storage = require("./storage");
163
242
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -65,6 +65,11 @@ interface GridProps extends AgGridReactProps {
65
65
  * 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
66
66
  */
67
67
  querySchemeStorageAdapter?: QueryStorageAdapter;
68
+ /**
69
+ * 查询方案管理器(可选)
70
+ * 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
71
+ */
72
+ querySchemeManager?: any;
68
73
  /**
69
74
  * 是否启用列配置方案功能
70
75
  * 默认值: true (自动启用)
@@ -75,6 +80,11 @@ interface GridProps extends AgGridReactProps {
75
80
  * 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
76
81
  */
77
82
  columnSchemeStorageAdapter?: ColumnStorageAdapter;
83
+ /**
84
+ * 列配置方案管理器(可选)
85
+ * 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
86
+ */
87
+ columnSchemeManager?: any;
78
88
  /**
79
89
  * 错误处理回调函数
80
90
  * 当组件发生错误时调用,可用于自定义错误处理逻辑
@@ -19,6 +19,16 @@ export declare class SchemeSyncManager {
19
19
  private autoSaveTimer?;
20
20
  private backgroundSyncTimer?;
21
21
  constructor(config: SyncConfig, events?: SyncManagerEvents);
22
+ /**
23
+ * 获取方案的完整 API URL (GET请求)
24
+ * @private
25
+ */
26
+ private getGetApiUrl;
27
+ /**
28
+ * 同步方案的完整 API URL (PUT请求)
29
+ * @private
30
+ */
31
+ private getSyncApiUrl;
22
32
  /**
23
33
  * 初始化:从服务器加载所有数据
24
34
  */
@@ -25,6 +25,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
25
25
  * 默认配置
26
26
  */
27
27
  var DEFAULT_CONFIG = {
28
+ getApiPath: '/api/v1/ag-grid-plus/schemes',
29
+ syncApiPath: '/api/v1/ag-grid-plus/schemes',
28
30
  autoSaveDelay: 3000,
29
31
  backgroundSyncInterval: 300000,
30
32
  // 5分钟
@@ -72,7 +74,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
72
74
  type: 'application/json'
73
75
  });
74
76
  if (navigator.sendBeacon) {
75
- navigator.sendBeacon("".concat(_this.config.apiBaseUrl, "/api/v1/ag-grid-plus/schemes"), blob);
77
+ navigator.sendBeacon(_this.getSyncApiUrl(), blob);
76
78
  }
77
79
  }
78
80
  });
@@ -95,9 +97,29 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
95
97
  }
96
98
 
97
99
  /**
98
- * 初始化:从服务器加载所有数据
100
+ * 获取方案的完整 API URL (GET请求)
101
+ * @private
99
102
  */
100
103
  _createClass(SchemeSyncManager, [{
104
+ key: "getGetApiUrl",
105
+ value: function getGetApiUrl() {
106
+ return "".concat(this.config.apiBaseUrl).concat(this.config.getApiPath);
107
+ }
108
+
109
+ /**
110
+ * 同步方案的完整 API URL (PUT请求)
111
+ * @private
112
+ */
113
+ }, {
114
+ key: "getSyncApiUrl",
115
+ value: function getSyncApiUrl() {
116
+ return "".concat(this.config.apiBaseUrl).concat(this.config.syncApiPath);
117
+ }
118
+
119
+ /**
120
+ * 初始化:从服务器加载所有数据
121
+ */
122
+ }, {
101
123
  key: "initialize",
102
124
  value: (function () {
103
125
  var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -114,7 +136,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
114
136
  case 3:
115
137
  _context.prev = 3;
116
138
  _context.next = 6;
117
- return this.fetchWithRetry("".concat(this.config.apiBaseUrl, "/api/v1/ag-grid-plus/schemes"), {
139
+ return this.fetchWithRetry(this.getGetApiUrl(), {
118
140
  method: 'GET',
119
141
  headers: {
120
142
  'Content-Type': 'application/json'
@@ -394,7 +416,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
394
416
 
395
417
  // 发送同步请求
396
418
  _context2.next = 19;
397
- return this.fetchWithRetry("".concat(this.config.apiBaseUrl, "/api/v1/ag-grid-plus/schemes"), {
419
+ return this.fetchWithRetry(this.getSyncApiUrl(), {
398
420
  method: 'PUT',
399
421
  headers: {
400
422
  'Content-Type': 'application/json'
@@ -72,3 +72,29 @@ export declare function useGlobalColumnAdapter(): import("./MemoryStorageAdapter
72
72
  * 简化组件中的使用
73
73
  */
74
74
  export declare function useGlobalQueryAdapter(): import("./MemoryStorageAdapter").QueryMemoryStorageAdapter;
75
+ /**
76
+ * React Hook: 使用全局列方案管理器
77
+ * 自动创建并管理指定 gridId 的列方案管理器
78
+ *
79
+ * @param gridId 表格唯一标识
80
+ * @param options 可选配置
81
+ * @returns 列方案管理器实例
82
+ */
83
+ export declare function useGlobalColumnSchemeManager(gridId: string, options?: {
84
+ enableAutoSave?: boolean;
85
+ onSchemeChange?: (scheme: any) => void;
86
+ onSchemeSave?: (scheme: any) => void;
87
+ }): any;
88
+ /**
89
+ * React Hook: 使用全局查询方案管理器
90
+ * 自动创建并管理指定 gridId 的查询方案管理器
91
+ *
92
+ * @param gridId 表格唯一标识
93
+ * @param options 可选配置
94
+ * @returns 查询方案管理器实例
95
+ */
96
+ export declare function useGlobalQuerySchemeManager(gridId: string, options?: {
97
+ enableAutoSave?: boolean;
98
+ onSchemeChange?: (scheme: any) => void;
99
+ onSchemeSave?: (scheme: any) => void;
100
+ }): any;
@@ -13,7 +13,9 @@ exports.initializeGlobalSchemeSync = initializeGlobalSchemeSync;
13
13
  exports.isGlobalSyncInitialized = isGlobalSyncInitialized;
14
14
  exports.syncAllSchemes = syncAllSchemes;
15
15
  exports.useGlobalColumnAdapter = useGlobalColumnAdapter;
16
+ exports.useGlobalColumnSchemeManager = useGlobalColumnSchemeManager;
16
17
  exports.useGlobalQueryAdapter = useGlobalQueryAdapter;
18
+ exports.useGlobalQuerySchemeManager = useGlobalQuerySchemeManager;
17
19
  var _SchemeSyncManager = require("./SchemeSyncManager");
18
20
  var _MemoryStorageAdapter = require("./MemoryStorageAdapter");
19
21
  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); }
@@ -284,4 +286,50 @@ function useGlobalColumnAdapter() {
284
286
  function useGlobalQueryAdapter() {
285
287
  var factory = getGlobalAdapterFactory();
286
288
  return factory.getQueryAdapter();
289
+ }
290
+
291
+ /**
292
+ * React Hook: 使用全局列方案管理器
293
+ * 自动创建并管理指定 gridId 的列方案管理器
294
+ *
295
+ * @param gridId 表格唯一标识
296
+ * @param options 可选配置
297
+ * @returns 列方案管理器实例
298
+ */
299
+ function useGlobalColumnSchemeManager(gridId, options) {
300
+ var _options$enableAutoSa;
301
+ // 动态导入 useSchemeManager Hook
302
+ var _require = require("../shared/hooks/useSchemeManager"),
303
+ useSchemeManager = _require.useSchemeManager;
304
+ var columnAdapter = useGlobalColumnAdapter();
305
+ return useSchemeManager({
306
+ gridId: gridId,
307
+ storageAdapter: columnAdapter,
308
+ enableAutoSave: (_options$enableAutoSa = options === null || options === void 0 ? void 0 : options.enableAutoSave) !== null && _options$enableAutoSa !== void 0 ? _options$enableAutoSa : true,
309
+ onSchemeChange: options === null || options === void 0 ? void 0 : options.onSchemeChange,
310
+ onSchemeSave: options === null || options === void 0 ? void 0 : options.onSchemeSave
311
+ });
312
+ }
313
+
314
+ /**
315
+ * React Hook: 使用全局查询方案管理器
316
+ * 自动创建并管理指定 gridId 的查询方案管理器
317
+ *
318
+ * @param gridId 表格唯一标识
319
+ * @param options 可选配置
320
+ * @returns 查询方案管理器实例
321
+ */
322
+ function useGlobalQuerySchemeManager(gridId, options) {
323
+ var _options$enableAutoSa2;
324
+ // 动态导入 useSchemeManager Hook
325
+ var _require2 = require("../shared/hooks/useSchemeManager"),
326
+ useSchemeManager = _require2.useSchemeManager;
327
+ var queryAdapter = useGlobalQueryAdapter();
328
+ return useSchemeManager({
329
+ gridId: gridId,
330
+ storageAdapter: queryAdapter,
331
+ enableAutoSave: (_options$enableAutoSa2 = options === null || options === void 0 ? void 0 : options.enableAutoSave) !== null && _options$enableAutoSa2 !== void 0 ? _options$enableAutoSa2 : true,
332
+ onSchemeChange: options === null || options === void 0 ? void 0 : options.onSchemeChange,
333
+ onSchemeSave: options === null || options === void 0 ? void 0 : options.onSchemeSave
334
+ });
287
335
  }
@@ -71,6 +71,25 @@ export interface ConflictData {
71
71
  /** 冲突原因 */
72
72
  reason: string;
73
73
  }
74
+ /**
75
+ * 方案冲突(别名)
76
+ */
77
+ export type SchemeConflict = ConflictData;
78
+ /**
79
+ * 同步状态信息
80
+ */
81
+ export interface SyncStatus {
82
+ /** 是否已初始化 */
83
+ initialized: boolean;
84
+ /** 是否正在同步 */
85
+ syncing: boolean;
86
+ /** 最后同步时间 */
87
+ lastSyncTime: number;
88
+ /** 是否有未同步数据 */
89
+ hasDirtyData: boolean;
90
+ /** 有未同步数据的表格ID列表 */
91
+ dirtyGrids: string[];
92
+ }
74
93
  /**
75
94
  * 脏数据标记类型
76
95
  */
@@ -81,6 +100,18 @@ export type DirtyType = 'column' | 'query' | 'current';
81
100
  export interface SyncConfig {
82
101
  /** API 基础路径 */
83
102
  apiBaseUrl: string;
103
+ /**
104
+ * 获取方案API路径(可选)
105
+ * 默认值: '/api/v1/ag-grid-plus/schemes'
106
+ * 用于GET请求,获取所有方案数据
107
+ */
108
+ getApiPath?: string;
109
+ /**
110
+ * 同步方案API路径(可选)
111
+ * 默认值: '/api/v1/ag-grid-plus/schemes'
112
+ * 用于PUT请求,同步保存方案数据
113
+ */
114
+ syncApiPath?: string;
84
115
  /** 自动保存延迟(毫秒),默认 3000 */
85
116
  autoSaveDelay?: number;
86
117
  /** 后台同步间隔(毫秒),默认 300000 (5分钟) */
@@ -1,7 +1,7 @@
1
1
  import _sumBy from "lodash/sumBy";
2
2
  import _uniqueId from "lodash/uniqueId";
3
3
  import _isArray from "lodash/isArray";
4
- var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "enableColumnSchemes", "columnSchemeStorageAdapter"];
4
+ var _excluded = ["style", "loading", "params", "request", "dataSource", "treeKeyName", "treeParentName", "rowData", "gridRef", "headerTitle", "toolBarRender", "search", "hideTool", "onGridReady", "gridKey", "children", "defaultSearchExpand", "overlayNoRowsTemplateText", "queryDefaultRows", "onSelectedRowsChange", "enableQuerySchemes", "querySchemeStorageAdapter", "querySchemeManager", "enableColumnSchemes", "columnSchemeStorageAdapter", "columnSchemeManager"];
5
5
  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); }
6
6
  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); }
7
7
  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; }
@@ -37,6 +37,7 @@ import { localeText } from "./locale";
37
37
  import { GridPlusContext } from "./context/gridContext";
38
38
  import { useQuerySchemes, useQueryOrderManager } from "./querySchemes";
39
39
  import { useColumnSchemes } from "./schemes";
40
+ import { useGlobalColumnAdapter, useGlobalQueryAdapter, isGlobalSyncInitialized } from "./storage/globalSyncManager";
40
41
  import { createSafeHtmlTemplate } from "./utils/sanitize";
41
42
  import { GridPlusError, ErrorType, ErrorSeverity } from "./errors";
42
43
  import { logger } from "./utils/logger";
@@ -68,11 +69,13 @@ function AgGridPlus(props) {
68
69
  queryDefaultRows = props.queryDefaultRows,
69
70
  onSelectedRowsChange = props.onSelectedRowsChange,
70
71
  _props$enableQuerySch = props.enableQuerySchemes,
71
- enableQuerySchemes = _props$enableQuerySch === void 0 ? false : _props$enableQuerySch,
72
+ enableQuerySchemes = _props$enableQuerySch === void 0 ? true : _props$enableQuerySch,
72
73
  querySchemeStorageAdapter = props.querySchemeStorageAdapter,
74
+ propsQuerySchemeManager = props.querySchemeManager,
73
75
  _props$enableColumnSc = props.enableColumnSchemes,
74
76
  enableColumnSchemes = _props$enableColumnSc === void 0 ? true : _props$enableColumnSc,
75
77
  columnSchemeStorageAdapter = props.columnSchemeStorageAdapter,
78
+ propsColumnSchemeManager = props.columnSchemeManager,
76
79
  rest = _objectWithoutProperties(props, _excluded);
77
80
  var _useGridPlusColumnSta = useGridPlusColumnState(),
78
81
  onSaveColumnState = _useGridPlusColumnSta.onSaveColumnState,
@@ -131,10 +134,15 @@ function AgGridPlus(props) {
131
134
  queryItemsOrder = _useState20[0],
132
135
  setQueryItemsOrder = _useState20[1];
133
136
 
134
- // 初始化查询方案管理器
135
- var querySchemeManager = enableQuerySchemes && gridKey ? useQuerySchemes({
137
+ // 尝试获取全局适配器(如果已初始化)
138
+ var globalQueryAdapter = isGlobalSyncInitialized() ? useGlobalQueryAdapter() : undefined;
139
+ var globalColumnAdapter = isGlobalSyncInitialized() ? useGlobalColumnAdapter() : undefined;
140
+
141
+ // 自动创建查询方案管理器(如果未通过 props 提供)
142
+ var autoQuerySchemeManager = enableQuerySchemes && gridKey && !propsQuerySchemeManager ? useQuerySchemes({
136
143
  gridId: gridKey,
137
- storageAdapter: querySchemeStorageAdapter,
144
+ // 优先使用全局适配器,否则使用 props 传入的适配器
145
+ storageAdapter: globalQueryAdapter || querySchemeStorageAdapter,
138
146
  onSchemeChange: function onSchemeChange(scheme) {
139
147
  if (scheme) {
140
148
  setQueryItemsOrder(scheme.itemsOrder);
@@ -142,11 +150,15 @@ function AgGridPlus(props) {
142
150
  }
143
151
  }) : undefined;
144
152
 
153
+ // 优先使用 props 提供的管理器,否则使用自动创建的
154
+ var querySchemeManager = propsQuerySchemeManager || autoQuerySchemeManager;
155
+
145
156
  // ============ 列配置方案管理 ============
146
- // 初始化列配置方案管理器
147
- var columnSchemeManager = enableColumnSchemes && gridKey ? useColumnSchemes({
157
+ // 自动创建列配置方案管理器(如果未通过 props 提供)
158
+ var autoColumnSchemeManager = enableColumnSchemes && gridKey && !propsColumnSchemeManager ? useColumnSchemes({
148
159
  gridId: gridKey,
149
- storageAdapter: columnSchemeStorageAdapter,
160
+ // 优先使用全局适配器,否则使用 props 传入的适配器
161
+ storageAdapter: globalColumnAdapter || columnSchemeStorageAdapter,
150
162
  enableAutoSave: true,
151
163
  onSchemeChange: function onSchemeChange(scheme) {
152
164
  if (scheme && apiRef.current) {
@@ -157,6 +169,9 @@ function AgGridPlus(props) {
157
169
  }
158
170
  }
159
171
  }) : undefined;
172
+
173
+ // 优先使用 props 提供的管理器,否则使用自动创建的
174
+ var columnSchemeManager = propsColumnSchemeManager || autoColumnSchemeManager;
160
175
  useImperativeHandle(propsGridRef, function () {
161
176
  return gridRef.current;
162
177
  });
@@ -8,3 +8,5 @@ export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convert
8
8
  export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
9
9
  export type { ColumnScheme, SchemeManagerConfig, StorageAdapter, SchemeValidationResult, UseColumnSchemesReturn, SchemeSelectorProps, SchemeManagerProps } from "./schemes";
10
10
  export type { GridPlusContextValue } from "./context/gridContext";
11
+ export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
12
+ export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";
@@ -7,4 +7,6 @@ export { AgGridPlus, AgGridColumn, GridPlusContext, useGridPlusColumnState };
7
7
  export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convertSortModel, flattenTreeDeep, toTree, flatten } from "./utils";
8
8
 
9
9
  // 导出列配置方案管理功能
10
- export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
10
+ export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
11
+ // 导出全局方案同步管理功能
12
+ export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
@@ -65,6 +65,11 @@ interface GridProps extends AgGridReactProps {
65
65
  * 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
66
66
  */
67
67
  querySchemeStorageAdapter?: QueryStorageAdapter;
68
+ /**
69
+ * 查询方案管理器(可选)
70
+ * 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
71
+ */
72
+ querySchemeManager?: any;
68
73
  /**
69
74
  * 是否启用列配置方案功能
70
75
  * 默认值: true (自动启用)
@@ -75,6 +80,11 @@ interface GridProps extends AgGridReactProps {
75
80
  * 默认使用 LocalStorage,可传入自定义适配器实现服务端存储
76
81
  */
77
82
  columnSchemeStorageAdapter?: ColumnStorageAdapter;
83
+ /**
84
+ * 列配置方案管理器(可选)
85
+ * 如果不提供,组件会根据 gridKey 自动从全局方案管理器创建
86
+ */
87
+ columnSchemeManager?: any;
78
88
  /**
79
89
  * 错误处理回调函数
80
90
  * 当组件发生错误时调用,可用于自定义错误处理逻辑
@@ -19,6 +19,16 @@ export declare class SchemeSyncManager {
19
19
  private autoSaveTimer?;
20
20
  private backgroundSyncTimer?;
21
21
  constructor(config: SyncConfig, events?: SyncManagerEvents);
22
+ /**
23
+ * 获取方案的完整 API URL (GET请求)
24
+ * @private
25
+ */
26
+ private getGetApiUrl;
27
+ /**
28
+ * 同步方案的完整 API URL (PUT请求)
29
+ * @private
30
+ */
31
+ private getSyncApiUrl;
22
32
  /**
23
33
  * 初始化:从服务器加载所有数据
24
34
  */
@@ -19,6 +19,8 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
19
19
  * 默认配置
20
20
  */
21
21
  var DEFAULT_CONFIG = {
22
+ getApiPath: '/api/v1/ag-grid-plus/schemes',
23
+ syncApiPath: '/api/v1/ag-grid-plus/schemes',
22
24
  autoSaveDelay: 3000,
23
25
  backgroundSyncInterval: 300000,
24
26
  // 5分钟
@@ -66,7 +68,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
66
68
  type: 'application/json'
67
69
  });
68
70
  if (navigator.sendBeacon) {
69
- navigator.sendBeacon("".concat(_this.config.apiBaseUrl, "/api/v1/ag-grid-plus/schemes"), blob);
71
+ navigator.sendBeacon(_this.getSyncApiUrl(), blob);
70
72
  }
71
73
  }
72
74
  });
@@ -89,9 +91,29 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
89
91
  }
90
92
 
91
93
  /**
92
- * 初始化:从服务器加载所有数据
94
+ * 获取方案的完整 API URL (GET请求)
95
+ * @private
93
96
  */
94
97
  _createClass(SchemeSyncManager, [{
98
+ key: "getGetApiUrl",
99
+ value: function getGetApiUrl() {
100
+ return "".concat(this.config.apiBaseUrl).concat(this.config.getApiPath);
101
+ }
102
+
103
+ /**
104
+ * 同步方案的完整 API URL (PUT请求)
105
+ * @private
106
+ */
107
+ }, {
108
+ key: "getSyncApiUrl",
109
+ value: function getSyncApiUrl() {
110
+ return "".concat(this.config.apiBaseUrl).concat(this.config.syncApiPath);
111
+ }
112
+
113
+ /**
114
+ * 初始化:从服务器加载所有数据
115
+ */
116
+ }, {
95
117
  key: "initialize",
96
118
  value: (function () {
97
119
  var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -108,7 +130,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
108
130
  case 3:
109
131
  _context.prev = 3;
110
132
  _context.next = 6;
111
- return this.fetchWithRetry("".concat(this.config.apiBaseUrl, "/api/v1/ag-grid-plus/schemes"), {
133
+ return this.fetchWithRetry(this.getGetApiUrl(), {
112
134
  method: 'GET',
113
135
  headers: {
114
136
  'Content-Type': 'application/json'
@@ -388,7 +410,7 @@ export var SchemeSyncManager = /*#__PURE__*/function () {
388
410
 
389
411
  // 发送同步请求
390
412
  _context2.next = 19;
391
- return this.fetchWithRetry("".concat(this.config.apiBaseUrl, "/api/v1/ag-grid-plus/schemes"), {
413
+ return this.fetchWithRetry(this.getSyncApiUrl(), {
392
414
  method: 'PUT',
393
415
  headers: {
394
416
  'Content-Type': 'application/json'