@nokecy/qc-ui 1.0.96 → 1.0.98

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.
@@ -1,10 +1,20 @@
1
1
  import React from "react";
2
2
  import type { ColumnScheme, QueryScheme, CurrentSchemeDto } from "../shared/storage/schemeStorageAdapter";
3
- import type { BackendApiAdapterConfig } from "../shared/storage/backendApiAdapter";
4
3
  /**
5
4
  * 方案管理 API 接口
6
5
  *
7
- * 这些 API 由 useGridSchemes Hook 自动提供,不需要在 Provider 中手动配置
6
+ * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
11
+ * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
12
+ *
13
+ * <GridPlusContext.Provider value={{
14
+ * ...otherValues,
15
+ * ...schemeManager // 展开方案管理状态
16
+ * }}>
17
+ * ```
8
18
  */
9
19
  export interface SchemeManagementAPI {
10
20
  /**
@@ -74,7 +84,7 @@ export interface SchemeManagementAPI {
74
84
  /**
75
85
  * GridPlus Context 值接口
76
86
  *
77
- * 注意:方案管理 API 不需要在 Provider 中配置,它们由 useGridSchemes Hook 自动提供
87
+ * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
78
88
  */
79
89
  export interface GridPlusContextValue extends SchemeManagementAPI {
80
90
  /**
@@ -123,32 +133,10 @@ export interface GridPlusContextValue extends SchemeManagementAPI {
123
133
  */
124
134
  updateQueryOrder?: (order: string[]) => void;
125
135
  /**
126
- * 后端 API 配置(可选)
127
- *
128
- * 如果提供此配置,useGridSchemes Hook 将自动使用 BackendApiSchemeAdapter
129
- * 否则将使用 LocalStorageSchemeAdapter
130
- *
131
- * @example
132
- * ```tsx
133
- * backendApiConfig: {
134
- * apiBaseUrl: 'https://api.example.com',
135
- * getToken: () => localStorage.getItem('token'),
136
- * getUserId: () => localStorage.getItem('userId'),
137
- * timeout: 10000
138
- * }
139
- * ```
140
- */
141
- backendApiConfig?: Omit<BackendApiAdapterConfig, 'enableDebugLog'>;
142
- /**
143
- * 当前用户ID(可选)
144
- *
145
- * 用于监听用户切换,自动重新加载方案数据
146
- * 当此值变化时,系统会自动调用 refreshSchemes() 重新加载所有方案
136
+ * 当前用户ID(内部使用)
147
137
  *
148
- * @example
149
- * ```tsx
150
- * currentUserId: currentUser?.id
151
- * ```
138
+ * 用于 SchemeManager 监听用户切换,自动重新加载方案数据
139
+ * 此字段由 useSchemeManager 自动管理,无需手动设置
152
140
  */
153
141
  currentUserId?: string | null;
154
142
  }
@@ -9,13 +9,24 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
9
9
  /**
10
10
  * 方案管理 API 接口
11
11
  *
12
- * 这些 API 由 useGridSchemes Hook 自动提供,不需要在 Provider 中手动配置
12
+ * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
17
+ * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
18
+ *
19
+ * <GridPlusContext.Provider value={{
20
+ * ...otherValues,
21
+ * ...schemeManager // 展开方案管理状态
22
+ * }}>
23
+ * ```
13
24
  */
14
25
 
15
26
  /**
16
27
  * GridPlus Context 值接口
17
28
  *
18
- * 注意:方案管理 API 不需要在 Provider 中配置,它们由 useGridSchemes Hook 自动提供
29
+ * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
19
30
  */
20
31
 
21
32
  var GridPlusContext = exports.GridPlusContext = /*#__PURE__*/_react.default.createContext({
@@ -55,43 +55,46 @@ export declare function useSchemeManager(config: UseSchemeManagerConfig): {
55
55
  /**
56
56
  * 在组件中使用集中式方案管理
57
57
  *
58
- * 支持两种模式(根据 Context 配置自动选择):
59
- * 1. Backend API 模式: Context 提供 backendApiConfig,使用后端适配器
60
- * 2. LocalStorage 模式: 不提供配置,使用本地存储适配器
58
+ * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
61
59
  *
62
60
  * @example
63
61
  * ```tsx
64
- * // 模式1:提供后端 API 配置
65
- * <GridPlusContext.Provider value={{
66
- * extensibleColumns: [],
67
- * columnState: undefined,
68
- * onSaveColumnState: () => {},
69
- * applyToGlobal: () => {},
70
- * resetCurrent: () => {},
71
- * resetAll: () => {},
72
- * queryFormItems: [],
73
- * backendApiConfig: {
74
- * apiBaseUrl: 'https://api.example.com',
75
- * getToken: () => localStorage.getItem('token'),
76
- * getUserId: () => localStorage.getItem('userId')
77
- * }
78
- * }}>
79
- * <MyGrid />
80
- * </GridPlusContext.Provider>
62
+ * // 1. 创建适配器和方案管理器
63
+ * function App() {
64
+ * const adapter = useMemo(
65
+ * () => new BackendApiSchemeAdapter({
66
+ * apiBaseUrl: 'https://api.example.com',
67
+ * getToken: () => localStorage.getItem('token'),
68
+ * getUserId: () => localStorage.getItem('userId')
69
+ * }),
70
+ * []
71
+ * );
72
+ *
73
+ * const schemeManager = useSchemeManager({
74
+ * adapter,
75
+ * autoLoad: true,
76
+ * showErrorMessage: true,
77
+ * currentUserId: currentUser?.id
78
+ * });
81
79
  *
82
- * // 模式2:无配置,自动使用 LocalStorage
83
- * <GridPlusContext.Provider value={{
84
- * extensibleColumns: [],
85
- * columnState: undefined,
86
- * onSaveColumnState: () => {},
87
- * applyToGlobal: () => {},
88
- * resetCurrent: () => {},
89
- * resetAll: () => {},
90
- * queryFormItems: []
91
- * }}>
92
- * <MyGrid />
93
- * </GridPlusContext.Provider>
80
+ * // 2. 传入 Provider
81
+ * return (
82
+ * <GridPlusContext.Provider value={{
83
+ * extensibleColumns: [],
84
+ * columnState: undefined,
85
+ * onSaveColumnState: () => {},
86
+ * applyToGlobal: () => {},
87
+ * resetCurrent: () => {},
88
+ * resetAll: () => {},
89
+ * queryFormItems: [],
90
+ * ...schemeManager // 展开方案管理状态
91
+ * }}>
92
+ * <MyGrid />
93
+ * </GridPlusContext.Provider>
94
+ * );
95
+ * }
94
96
  *
97
+ * // 3. 在子组件中使用
95
98
  * function MyGrid() {
96
99
  * const {
97
100
  * columnSchemes,
@@ -481,93 +481,49 @@ function useSchemeManager(config) {
481
481
  };
482
482
  }
483
483
 
484
- /**
485
- * Fallback 模式:根据后端 API 配置自动选择适配器
486
- */
487
- function useFallbackSchemeManager(backendApiConfig, currentUserId) {
488
- // 根据配置选择适配器
489
- var adapter = (0, _react.useRef)(function () {
490
- if (backendApiConfig) {
491
- // 如果提供了后端 API 配置,使用后端适配器
492
- var _require = require("../shared/storage/backendApiAdapter"),
493
- BackendApiSchemeAdapter = _require.BackendApiSchemeAdapter;
494
- console.log('[useFallbackSchemeManager] 使用后端 API 适配器');
495
- return new BackendApiSchemeAdapter(_objectSpread(_objectSpread({}, backendApiConfig), {}, {
496
- enableDebugLog: false
497
- }));
498
- } else {
499
- // 否则使用本地存储适配器
500
- var _require2 = require("../shared/storage/localStorageAdapter"),
501
- LocalStorageSchemeAdapter = _require2.LocalStorageSchemeAdapter;
502
- console.log('[useFallbackSchemeManager] 使用本地存储适配器');
503
- return new LocalStorageSchemeAdapter({
504
- storageKey: 'ag-grid-plus-schemes',
505
- enableDebugLog: false
506
- });
507
- }
508
- }).current();
509
-
510
- // 使用选定的适配器进行状态管理
511
- var manager = useSchemeManager({
512
- adapter: adapter,
513
- autoLoad: true,
514
- showErrorMessage: true,
515
- currentUserId: currentUserId
516
- });
517
-
518
- // 返回与 Context 相同的接口
519
- return _objectSpread({
520
- // 保留必需的默认值
521
- extensibleColumns: [],
522
- columnState: undefined,
523
- onSaveColumnState: function onSaveColumnState() {},
524
- applyToGlobal: function applyToGlobal() {},
525
- resetCurrent: function resetCurrent() {},
526
- resetAll: function resetAll() {},
527
- queryFormItems: []
528
- }, manager);
529
- }
530
-
531
484
  /**
532
485
  * 在组件中使用集中式方案管理
533
486
  *
534
- * 支持两种模式(根据 Context 配置自动选择):
535
- * 1. Backend API 模式: Context 提供 backendApiConfig,使用后端适配器
536
- * 2. LocalStorage 模式: 不提供配置,使用本地存储适配器
487
+ * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
537
488
  *
538
489
  * @example
539
490
  * ```tsx
540
- * // 模式1:提供后端 API 配置
541
- * <GridPlusContext.Provider value={{
542
- * extensibleColumns: [],
543
- * columnState: undefined,
544
- * onSaveColumnState: () => {},
545
- * applyToGlobal: () => {},
546
- * resetCurrent: () => {},
547
- * resetAll: () => {},
548
- * queryFormItems: [],
549
- * backendApiConfig: {
550
- * apiBaseUrl: 'https://api.example.com',
551
- * getToken: () => localStorage.getItem('token'),
552
- * getUserId: () => localStorage.getItem('userId')
553
- * }
554
- * }}>
555
- * <MyGrid />
556
- * </GridPlusContext.Provider>
491
+ * // 1. 创建适配器和方案管理器
492
+ * function App() {
493
+ * const adapter = useMemo(
494
+ * () => new BackendApiSchemeAdapter({
495
+ * apiBaseUrl: 'https://api.example.com',
496
+ * getToken: () => localStorage.getItem('token'),
497
+ * getUserId: () => localStorage.getItem('userId')
498
+ * }),
499
+ * []
500
+ * );
557
501
  *
558
- * // 模式2:无配置,自动使用 LocalStorage
559
- * <GridPlusContext.Provider value={{
560
- * extensibleColumns: [],
561
- * columnState: undefined,
562
- * onSaveColumnState: () => {},
563
- * applyToGlobal: () => {},
564
- * resetCurrent: () => {},
565
- * resetAll: () => {},
566
- * queryFormItems: []
567
- * }}>
568
- * <MyGrid />
569
- * </GridPlusContext.Provider>
502
+ * const schemeManager = useSchemeManager({
503
+ * adapter,
504
+ * autoLoad: true,
505
+ * showErrorMessage: true,
506
+ * currentUserId: currentUser?.id
507
+ * });
570
508
  *
509
+ * // 2. 传入 Provider
510
+ * return (
511
+ * <GridPlusContext.Provider value={{
512
+ * extensibleColumns: [],
513
+ * columnState: undefined,
514
+ * onSaveColumnState: () => {},
515
+ * applyToGlobal: () => {},
516
+ * resetCurrent: () => {},
517
+ * resetAll: () => {},
518
+ * queryFormItems: [],
519
+ * ...schemeManager // 展开方案管理状态
520
+ * }}>
521
+ * <MyGrid />
522
+ * </GridPlusContext.Provider>
523
+ * );
524
+ * }
525
+ *
526
+ * // 3. 在子组件中使用
571
527
  * function MyGrid() {
572
528
  * const {
573
529
  * columnSchemes,
@@ -587,10 +543,11 @@ function useFallbackSchemeManager(backendApiConfig, currentUserId) {
587
543
  function useGridSchemes() {
588
544
  var context = (0, _react.useContext)(_gridContext.GridPlusContext);
589
545
 
590
- // 根据后端 API 配置自动选择适配器
591
- var adapterType = context !== null && context !== void 0 && context.backendApiConfig ? '后端 API' : 'LocalStorage';
592
- console.log("[useGridSchemes] \u4F7F\u7528 ".concat(adapterType, " \u9002\u914D\u5668"));
593
-
594
- // eslint-disable-next-line react-hooks/rules-of-hooks
595
- return useFallbackSchemeManager(context === null || context === void 0 ? void 0 : context.backendApiConfig, context === null || context === void 0 ? void 0 : context.currentUserId);
546
+ // 检查是否传入了方案管理状态
547
+ var hasSchemeManagement = !!((context === null || context === void 0 ? void 0 : context.columnSchemes) !== undefined || context !== null && context !== void 0 && context.saveColumnScheme || context !== null && context !== void 0 && context.deleteColumnScheme);
548
+ if (!hasSchemeManagement) {
549
+ throw new Error('[useGridSchemes] 必须在 GridPlusContext.Provider 中传入 SchemeManager 状态。\n' + '请使用 useSchemeManager hook 创建方案管理器,然后通过 Provider 传递:\n' + ' const schemeManager = useSchemeManager({ adapter, ... });\n' + ' <GridPlusContext.Provider value={{ ...otherValues, ...schemeManager }}>');
550
+ }
551
+ console.log('[useGridSchemes] 使用 Context 中的方案管理状态');
552
+ return context;
596
553
  }
@@ -24,7 +24,16 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
24
24
  * 内部配置类型(所有字段必填)
25
25
  */
26
26
  /**
27
- * 后端 API 响应格式
27
+ * 后端 API 响应格式 - 基础响应
28
+ */
29
+ /**
30
+ * 保存方案结果
31
+ */
32
+ /**
33
+ * 删除方案结果
34
+ */
35
+ /**
36
+ * 设置当前方案结果
28
37
  */
29
38
  /**
30
39
  * 后端 API 方案存储适配器
@@ -184,7 +193,7 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
184
193
  case 0:
185
194
  _context2.prev = 0;
186
195
  this.log('加载所有方案数据');
187
- url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/user-schemes");
196
+ url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/schemes");
188
197
  _context2.next = 5;
189
198
  return this.request(url);
190
199
  case 5:
@@ -216,13 +225,13 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
216
225
  key: "saveColumnScheme",
217
226
  value: function () {
218
227
  var _saveColumnScheme = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(gridId, scheme) {
219
- var _response$data, url, response;
228
+ var url, response;
220
229
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
221
230
  while (1) switch (_context3.prev = _context3.next) {
222
231
  case 0:
223
232
  _context3.prev = 0;
224
233
  this.log("\u4FDD\u5B58\u5217\u65B9\u6848: ".concat(gridId, " - ").concat(scheme.name));
225
- url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/column-scheme");
234
+ url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/save-column-scheme");
226
235
  _context3.next = 5;
227
236
  return this.request(url, {
228
237
  method: 'POST',
@@ -239,8 +248,8 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
239
248
  }
240
249
  throw new Error(response.message || '保存失败');
241
250
  case 8:
242
- this.log('保存成功', (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.scheme.id);
243
- return _context3.abrupt("return", response.data.scheme);
251
+ this.log('保存成功', response.scheme);
252
+ return _context3.abrupt("return", response.scheme);
244
253
  case 12:
245
254
  _context3.prev = 12;
246
255
  _context3.t0 = _context3["catch"](0);
@@ -268,10 +277,10 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
268
277
  case 0:
269
278
  _context4.prev = 0;
270
279
  this.log("\u5220\u9664\u5217\u65B9\u6848: ".concat(gridId, " - ").concat(schemeId));
271
- url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/column-scheme/").concat(schemeId, "?gridId=").concat(gridId);
280
+ url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/delete-column-scheme?schemeId=").concat(schemeId, "&gridId=").concat(gridId);
272
281
  _context4.next = 5;
273
282
  return this.request(url, {
274
- method: 'DELETE'
283
+ method: 'POST'
275
284
  });
276
285
  case 5:
277
286
  response = _context4.sent;
@@ -305,13 +314,13 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
305
314
  key: "saveQueryScheme",
306
315
  value: function () {
307
316
  var _saveQueryScheme = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(gridId, scheme) {
308
- var _response$data2, url, response;
317
+ var url, response;
309
318
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
310
319
  while (1) switch (_context5.prev = _context5.next) {
311
320
  case 0:
312
321
  _context5.prev = 0;
313
322
  this.log("\u4FDD\u5B58\u67E5\u8BE2\u65B9\u6848: ".concat(gridId, " - ").concat(scheme.name));
314
- url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/query-scheme");
323
+ url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/save-query-scheme");
315
324
  _context5.next = 5;
316
325
  return this.request(url, {
317
326
  method: 'POST',
@@ -328,8 +337,8 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
328
337
  }
329
338
  throw new Error(response.message || '保存失败');
330
339
  case 8:
331
- this.log('保存成功', (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.scheme.id);
332
- return _context5.abrupt("return", response.data.scheme);
340
+ this.log('保存成功', response.scheme);
341
+ return _context5.abrupt("return", response.scheme);
333
342
  case 12:
334
343
  _context5.prev = 12;
335
344
  _context5.t0 = _context5["catch"](0);
@@ -357,10 +366,10 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
357
366
  case 0:
358
367
  _context6.prev = 0;
359
368
  this.log("\u5220\u9664\u67E5\u8BE2\u65B9\u6848: ".concat(gridId, " - ").concat(schemeId));
360
- url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/query-scheme/").concat(schemeId, "?gridId=").concat(gridId);
369
+ url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/delete-query-scheme?schemeId=").concat(schemeId, "&gridId=").concat(gridId);
361
370
  _context6.next = 5;
362
371
  return this.request(url, {
363
- method: 'DELETE'
372
+ method: 'POST'
364
373
  });
365
374
  case 5:
366
375
  response = _context6.sent;
@@ -403,10 +412,10 @@ var BackendApiSchemeAdapter = exports.BackendApiSchemeAdapter = /*#__PURE__*/fun
403
412
  columnSchemeId: columnSchemeId,
404
413
  querySchemeId: querySchemeId
405
414
  });
406
- url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/current-scheme");
415
+ url = "".concat(this.config.apiBaseUrl, "/api/extra-object/table-scheme/set-current-scheme");
407
416
  _context7.next = 5;
408
417
  return this.request(url, {
409
- method: 'PUT',
418
+ method: 'POST',
410
419
  body: JSON.stringify({
411
420
  gridId: gridId,
412
421
  columnSchemeId: columnSchemeId,
@@ -1,10 +1,20 @@
1
1
  import React from "react";
2
2
  import type { ColumnScheme, QueryScheme, CurrentSchemeDto } from "../shared/storage/schemeStorageAdapter";
3
- import type { BackendApiAdapterConfig } from "../shared/storage/backendApiAdapter";
4
3
  /**
5
4
  * 方案管理 API 接口
6
5
  *
7
- * 这些 API 由 useGridSchemes Hook 自动提供,不需要在 Provider 中手动配置
6
+ * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
11
+ * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
12
+ *
13
+ * <GridPlusContext.Provider value={{
14
+ * ...otherValues,
15
+ * ...schemeManager // 展开方案管理状态
16
+ * }}>
17
+ * ```
8
18
  */
9
19
  export interface SchemeManagementAPI {
10
20
  /**
@@ -74,7 +84,7 @@ export interface SchemeManagementAPI {
74
84
  /**
75
85
  * GridPlus Context 值接口
76
86
  *
77
- * 注意:方案管理 API 不需要在 Provider 中配置,它们由 useGridSchemes Hook 自动提供
87
+ * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
78
88
  */
79
89
  export interface GridPlusContextValue extends SchemeManagementAPI {
80
90
  /**
@@ -123,32 +133,10 @@ export interface GridPlusContextValue extends SchemeManagementAPI {
123
133
  */
124
134
  updateQueryOrder?: (order: string[]) => void;
125
135
  /**
126
- * 后端 API 配置(可选)
127
- *
128
- * 如果提供此配置,useGridSchemes Hook 将自动使用 BackendApiSchemeAdapter
129
- * 否则将使用 LocalStorageSchemeAdapter
130
- *
131
- * @example
132
- * ```tsx
133
- * backendApiConfig: {
134
- * apiBaseUrl: 'https://api.example.com',
135
- * getToken: () => localStorage.getItem('token'),
136
- * getUserId: () => localStorage.getItem('userId'),
137
- * timeout: 10000
138
- * }
139
- * ```
140
- */
141
- backendApiConfig?: Omit<BackendApiAdapterConfig, 'enableDebugLog'>;
142
- /**
143
- * 当前用户ID(可选)
144
- *
145
- * 用于监听用户切换,自动重新加载方案数据
146
- * 当此值变化时,系统会自动调用 refreshSchemes() 重新加载所有方案
136
+ * 当前用户ID(内部使用)
147
137
  *
148
- * @example
149
- * ```tsx
150
- * currentUserId: currentUser?.id
151
- * ```
138
+ * 用于 SchemeManager 监听用户切换,自动重新加载方案数据
139
+ * 此字段由 useSchemeManager 自动管理,无需手动设置
152
140
  */
153
141
  currentUserId?: string | null;
154
142
  }
@@ -3,13 +3,24 @@ import React from "react";
3
3
  /**
4
4
  * 方案管理 API 接口
5
5
  *
6
- * 这些 API 由 useGridSchemes Hook 自动提供,不需要在 Provider 中手动配置
6
+ * ⚠️ 必须通过 useSchemeManager Hook 创建,然后传入 Provider
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const adapter = useMemo(() => new BackendApiSchemeAdapter({ ... }), []);
11
+ * const schemeManager = useSchemeManager({ adapter, autoLoad: true });
12
+ *
13
+ * <GridPlusContext.Provider value={{
14
+ * ...otherValues,
15
+ * ...schemeManager // 展开方案管理状态
16
+ * }}>
17
+ * ```
7
18
  */
8
19
 
9
20
  /**
10
21
  * GridPlus Context 值接口
11
22
  *
12
- * 注意:方案管理 API 不需要在 Provider 中配置,它们由 useGridSchemes Hook 自动提供
23
+ * ⚠️ 必须包含方案管理 API,通过 useSchemeManager Hook 创建后传入
13
24
  */
14
25
 
15
26
  export var GridPlusContext = /*#__PURE__*/React.createContext({
@@ -55,43 +55,46 @@ export declare function useSchemeManager(config: UseSchemeManagerConfig): {
55
55
  /**
56
56
  * 在组件中使用集中式方案管理
57
57
  *
58
- * 支持两种模式(根据 Context 配置自动选择):
59
- * 1. Backend API 模式: Context 提供 backendApiConfig,使用后端适配器
60
- * 2. LocalStorage 模式: 不提供配置,使用本地存储适配器
58
+ * ⚠️ 必须在 Provider 中传入 SchemeManager 状态,否则抛出错误
61
59
  *
62
60
  * @example
63
61
  * ```tsx
64
- * // 模式1:提供后端 API 配置
65
- * <GridPlusContext.Provider value={{
66
- * extensibleColumns: [],
67
- * columnState: undefined,
68
- * onSaveColumnState: () => {},
69
- * applyToGlobal: () => {},
70
- * resetCurrent: () => {},
71
- * resetAll: () => {},
72
- * queryFormItems: [],
73
- * backendApiConfig: {
74
- * apiBaseUrl: 'https://api.example.com',
75
- * getToken: () => localStorage.getItem('token'),
76
- * getUserId: () => localStorage.getItem('userId')
77
- * }
78
- * }}>
79
- * <MyGrid />
80
- * </GridPlusContext.Provider>
62
+ * // 1. 创建适配器和方案管理器
63
+ * function App() {
64
+ * const adapter = useMemo(
65
+ * () => new BackendApiSchemeAdapter({
66
+ * apiBaseUrl: 'https://api.example.com',
67
+ * getToken: () => localStorage.getItem('token'),
68
+ * getUserId: () => localStorage.getItem('userId')
69
+ * }),
70
+ * []
71
+ * );
72
+ *
73
+ * const schemeManager = useSchemeManager({
74
+ * adapter,
75
+ * autoLoad: true,
76
+ * showErrorMessage: true,
77
+ * currentUserId: currentUser?.id
78
+ * });
81
79
  *
82
- * // 模式2:无配置,自动使用 LocalStorage
83
- * <GridPlusContext.Provider value={{
84
- * extensibleColumns: [],
85
- * columnState: undefined,
86
- * onSaveColumnState: () => {},
87
- * applyToGlobal: () => {},
88
- * resetCurrent: () => {},
89
- * resetAll: () => {},
90
- * queryFormItems: []
91
- * }}>
92
- * <MyGrid />
93
- * </GridPlusContext.Provider>
80
+ * // 2. 传入 Provider
81
+ * return (
82
+ * <GridPlusContext.Provider value={{
83
+ * extensibleColumns: [],
84
+ * columnState: undefined,
85
+ * onSaveColumnState: () => {},
86
+ * applyToGlobal: () => {},
87
+ * resetCurrent: () => {},
88
+ * resetAll: () => {},
89
+ * queryFormItems: [],
90
+ * ...schemeManager // 展开方案管理状态
91
+ * }}>
92
+ * <MyGrid />
93
+ * </GridPlusContext.Provider>
94
+ * );
95
+ * }
94
96
  *
97
+ * // 3. 在子组件中使用
95
98
  * function MyGrid() {
96
99
  * const {
97
100
  * columnSchemes,