@nocobase/client-v2 2.1.0-beta.23 → 2.1.0-beta.25

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 (42) hide show
  1. package/es/BaseApplication.d.ts +1 -0
  2. package/es/flow/actions/dataScopeFilter.d.ts +9 -0
  3. package/es/flow/components/Grid/index.d.ts +5 -3
  4. package/es/flow/internal/utils/rebuildFieldSubModel.d.ts +2 -1
  5. package/es/flow/models/base/GridModel.d.ts +19 -2
  6. package/es/flow/models/blocks/filter-form/FilterFormGridModel.d.ts +1 -0
  7. package/es/flow/models/fields/JSFieldModel.d.ts +5 -0
  8. package/es/index.mjs +100 -100
  9. package/lib/index.js +100 -100
  10. package/package.json +6 -5
  11. package/src/BaseApplication.tsx +4 -0
  12. package/src/__tests__/globalDeps.test.ts +1 -0
  13. package/src/__tests__/remotePlugins.test.ts +27 -0
  14. package/src/flow/actions/__tests__/dataScopeFilter.test.ts +158 -0
  15. package/src/flow/actions/dataScope.tsx +6 -4
  16. package/src/flow/actions/dataScopeFilter.ts +70 -0
  17. package/src/flow/actions/setTargetDataScope.tsx +6 -5
  18. package/src/flow/components/Grid/index.tsx +66 -20
  19. package/src/flow/internal/utils/__tests__/rebuildFieldSubModel.test.ts +77 -2
  20. package/src/flow/internal/utils/rebuildFieldSubModel.ts +21 -5
  21. package/src/flow/models/base/BlockGridModel.tsx +2 -2
  22. package/src/flow/models/base/GridModel.tsx +428 -195
  23. package/src/flow/models/base/__tests__/BlockGridModel.dragOverlayConfig.test.ts +44 -0
  24. package/src/flow/models/base/__tests__/GridModel.computeOverlayRect.test.ts +29 -0
  25. package/src/flow/models/base/__tests__/GridModel.dragSnapshotContainer.test.ts +181 -2
  26. package/src/flow/models/base/__tests__/GridModel.resizeLayout.test.ts +124 -0
  27. package/src/flow/models/base/__tests__/GridModel.visibleLayout.test.ts +55 -15
  28. package/src/flow/models/blocks/details/DetailsGridModel.tsx +6 -6
  29. package/src/flow/models/blocks/filter-form/FilterFormBlockModel.tsx +9 -5
  30. package/src/flow/models/blocks/filter-form/FilterFormGridModel.tsx +54 -14
  31. package/src/flow/models/blocks/filter-form/__tests__/FilterFormBlockModel.cleanup.test.ts +138 -0
  32. package/src/flow/models/blocks/filter-form/__tests__/FilterFormGridModel.toggleFormFieldsCollapse.test.ts +45 -0
  33. package/src/flow/models/blocks/form/FormGridModel.tsx +6 -6
  34. package/src/flow/models/blocks/form/__tests__/FormBlockModel.test.tsx +22 -0
  35. package/src/flow/models/blocks/table/JSColumnModel.tsx +30 -2
  36. package/src/flow/models/blocks/table/TableBlockModel.tsx +8 -1
  37. package/src/flow/models/blocks/table/TableColumnModel.tsx +1 -0
  38. package/src/flow/models/blocks/table/__tests__/JSColumnModel.test.tsx +51 -0
  39. package/src/flow/models/blocks/table/__tests__/TableBlockModel.quickEditRefresh.test.ts +49 -0
  40. package/src/flow/models/fields/JSFieldModel.tsx +54 -14
  41. package/src/utils/globalDeps.ts +4 -0
  42. package/src/utils/requirejs.ts +1 -1
@@ -10,8 +10,9 @@
10
10
  /**
11
11
  * 通用的字段子模型重建工具:
12
12
  * - 保留原有 uid
13
- * - 通过 FieldModel 入口 + fieldBinding.use 动态选择目标字段类
13
+ * - 直接重建为目标字段类,保持与 defineChildren 初始创建逻辑一致
14
14
  * - 支持同步父项模式(pattern)
15
+ * - 同一字段模型类型下保留已有字段设置;切换到其他字段模型类型时丢弃不兼容设置
15
16
  * - 重建后触发 beforeRender(useCache: false)
16
17
  */
17
18
  import { FieldModel } from '../../models/base/FieldModel';
@@ -39,6 +40,16 @@ type RebuildOptions = {
39
40
  fieldSettingsInit?: unknown;
40
41
  };
41
42
 
43
+ function normalizeModelUse(value: unknown): string | undefined {
44
+ if (typeof value === 'string') {
45
+ return value;
46
+ }
47
+ if (typeof value === 'function' && value.name) {
48
+ return value.name;
49
+ }
50
+ return undefined;
51
+ }
52
+
42
53
  export function getFieldBindingUse(fieldModel?: FieldModel): string | undefined {
43
54
  const bindingUse = (fieldModel?.stepParams as FieldStepParams | undefined)?.fieldBinding?.use;
44
55
  return typeof bindingUse === 'string' ? bindingUse : undefined;
@@ -61,13 +72,18 @@ export async function rebuildFieldSubModel({
61
72
  delete prevSubModels[key];
62
73
  }
63
74
  }
64
- const prevStepParams: FieldStepParams = (fieldModel?.stepParams as FieldStepParams) || {};
75
+ const currentUse = normalizeModelUse(getFieldBindingUse(fieldModel) || fieldModel?.use);
76
+ const shouldPreserveStepParams = currentUse === targetUse;
77
+ const prevStepParams: FieldStepParams = shouldPreserveStepParams
78
+ ? (fieldModel?.stepParams as FieldStepParams) || {}
79
+ : {};
65
80
  const nextFieldSettingsInit = fieldSettingsInit ?? parentModel.getFieldSettingsInitParams?.();
81
+ const { fieldBinding: _fieldBinding, ...restStepParams } = prevStepParams;
66
82
 
67
83
  const nextStepParams: FieldStepParams = {
68
- ...prevStepParams,
69
- fieldBinding: { ...prevStepParams.fieldBinding, use: targetUse },
84
+ ...restStepParams,
70
85
  fieldSettings: {
86
+ ...(restStepParams.fieldSettings || {}),
71
87
  init: nextFieldSettingsInit,
72
88
  },
73
89
  };
@@ -81,7 +97,7 @@ export async function rebuildFieldSubModel({
81
97
 
82
98
  const subModel = parentModel.setSubModel('field', {
83
99
  uid: fieldUid,
84
- use: FieldModel,
100
+ use: targetUse,
85
101
  props: { ...(defaultProps || {}), ...(pattern ? { pattern } : {}) },
86
102
  stepParams: nextStepParams as StepParams,
87
103
  // Preserve existing subModels (e.g. SubTable columns) so switching field component back and forth
@@ -27,8 +27,8 @@ export class BlockGridModel extends GridModel {
27
27
  dragOverlayConfig: DragOverlayConfig = {
28
28
  // 列内插入
29
29
  columnInsert: {
30
- before: { offsetTop: -24 },
31
- after: { offsetTop: 24 },
30
+ before: { offsetTop: -12 },
31
+ after: { offsetTop: 12 },
32
32
  },
33
33
  // 列边缘
34
34
  columnEdge: {