@nocobase/client-v2 2.2.0-beta.1 → 2.2.0-beta.11

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 (252) hide show
  1. package/es/BaseApplication.d.ts +3 -0
  2. package/es/PluginSettingsManager.d.ts +33 -0
  3. package/es/RouteRepository.d.ts +29 -6
  4. package/es/RouterManager.d.ts +15 -0
  5. package/es/authRedirect.d.ts +1 -0
  6. package/es/collection-field-interface/CollectionFieldInterface.d.ts +1 -0
  7. package/es/collection-field-interface/CollectionFieldInterfaceManager.d.ts +1 -0
  8. package/es/components/form/JsonTextArea.d.ts +2 -1
  9. package/es/components/form/VariableJsonTextArea.d.ts +19 -0
  10. package/es/components/form/index.d.ts +1 -0
  11. package/es/components/index.d.ts +1 -0
  12. package/es/entry-actions/EntryActionManager.d.ts +24 -0
  13. package/es/entry-actions/index.d.ts +9 -0
  14. package/es/flow/actions/afterSuccess.d.ts +8 -1
  15. package/es/flow/actions/index.d.ts +1 -1
  16. package/es/flow/admin-shell/BaseLayoutModel.d.ts +6 -0
  17. package/es/flow/admin-shell/BaseLayoutRouteCoordinator.d.ts +7 -0
  18. package/es/flow/admin-shell/admin-layout/AdminLayoutEntryGuard.d.ts +2 -0
  19. package/es/flow/admin-shell/admin-layout/AdminLayoutMenuFlowUtils.d.ts +2 -1
  20. package/es/flow/admin-shell/admin-layout/AdminLayoutMenuModels.d.ts +2 -0
  21. package/es/flow/admin-shell/admin-layout/AdminLayoutMenuUtils.d.ts +3 -2
  22. package/es/flow/admin-shell/admin-layout/AdminLayoutSlotModels.d.ts +5 -0
  23. package/es/flow/admin-shell/admin-layout/AppListRender.d.ts +2 -1
  24. package/es/flow/admin-shell/admin-layout/AppSwitcherActionPanelModel.d.ts +24 -0
  25. package/es/flow/admin-shell/admin-layout/index.d.ts +1 -0
  26. package/es/flow/admin-shell/admin-layout/resolveAdminRouteRuntimeTarget.d.ts +6 -0
  27. package/es/flow/admin-shell/admin-layout/useApplications.d.ts +7 -2
  28. package/es/flow/components/FieldAssignRulesEditor.d.ts +3 -1
  29. package/es/flow/models/base/ActionModelCore.d.ts +2 -0
  30. package/es/flow/models/base/GridModel.d.ts +1 -1
  31. package/es/flow/models/blocks/filter-form/FilterFormBlockModel.d.ts +5 -0
  32. package/es/flow/models/blocks/form/FormBlockModel.d.ts +4 -0
  33. package/es/flow/models/blocks/form/QuickEditFormModel.d.ts +17 -2
  34. package/es/flow/models/blocks/form/submitHandler.d.ts +1 -1
  35. package/es/flow/models/blocks/form/value-runtime/rules.d.ts +21 -0
  36. package/es/flow/models/blocks/form/value-runtime/runtime.d.ts +30 -0
  37. package/es/flow/models/blocks/form/value-runtime/types.d.ts +2 -2
  38. package/es/flow/models/blocks/js-block/JSBlock.d.ts +1 -0
  39. package/es/flow/models/blocks/table/TableActionsColumnModel.d.ts +1 -0
  40. package/es/flow/models/blocks/table/TableBlockModel.d.ts +1 -0
  41. package/es/flow/models/blocks/table/dragSort/dragSortHooks.d.ts +1 -1
  42. package/es/flow/models/blocks/table/dragSort/dragSortSettings.d.ts +2 -1
  43. package/es/flow/models/blocks/table/dragSort/dragSortUtils.d.ts +6 -4
  44. package/es/flow/models/fields/AssociationFieldModel/RecordSelectFieldModel.d.ts +2 -0
  45. package/es/flow/models/fields/AssociationFieldModel/SubTableFieldModel/SubTableColumnModel.d.ts +6 -0
  46. package/es/flow/resolveViewParamsToViewList.d.ts +1 -1
  47. package/es/flow/routeTransientInputArgs.d.ts +14 -0
  48. package/es/flow/utils/dataScopeRowSnapshot.d.ts +59 -0
  49. package/es/flow/utils/dateTimeDisplayProps.d.ts +49 -0
  50. package/es/flow/utils/formValueDeps.d.ts +32 -0
  51. package/es/flow-compat/FieldValidation.d.ts +2 -1
  52. package/es/index.d.ts +4 -1
  53. package/es/index.mjs +315 -167
  54. package/es/utils/markdownSanitize.d.ts +11 -0
  55. package/lib/index.js +315 -167
  56. package/package.json +8 -7
  57. package/src/BaseApplication.tsx +12 -5
  58. package/src/PluginSettingsManager.ts +53 -0
  59. package/src/RouteRepository.ts +151 -24
  60. package/src/RouterManager.tsx +142 -1
  61. package/src/__tests__/PluginSettingsManager.test.ts +13 -0
  62. package/src/__tests__/RouteRepository.test.ts +239 -0
  63. package/src/__tests__/RouterManager.test.ts +125 -0
  64. package/src/__tests__/app.test.tsx +55 -0
  65. package/src/__tests__/authRedirect.test.ts +17 -0
  66. package/src/__tests__/exports.test.ts +16 -0
  67. package/src/__tests__/nocobase-buildin-plugin-auth.test.tsx +199 -0
  68. package/src/__tests__/plugin-manager.test.tsx +44 -2
  69. package/src/__tests__/settings-center.test.tsx +40 -1
  70. package/src/authRedirect.ts +38 -0
  71. package/src/collection-field-interface/CollectionFieldInterface.ts +1 -0
  72. package/src/collection-field-interface/CollectionFieldInterfaceManager.ts +1 -0
  73. package/src/collection-manager/field-configure.ts +1 -1
  74. package/src/collection-manager/interfaces/id.ts +1 -1
  75. package/src/collection-manager/interfaces/m2m.tsx +2 -2
  76. package/src/collection-manager/interfaces/m2o.tsx +2 -2
  77. package/src/collection-manager/interfaces/nanoid.ts +1 -1
  78. package/src/collection-manager/interfaces/o2m.tsx +2 -2
  79. package/src/collection-manager/interfaces/obo.tsx +2 -2
  80. package/src/collection-manager/interfaces/oho.tsx +2 -2
  81. package/src/collection-manager/interfaces/properties/index.ts +2 -2
  82. package/src/collection-manager/interfaces/uuid.ts +1 -1
  83. package/src/components/AppComponents.tsx +19 -3
  84. package/src/components/form/JsonTextArea.tsx +21 -11
  85. package/src/components/form/ScanInput/__tests__/useCodeScanner.test.tsx +145 -2
  86. package/src/components/form/ScanInput/useCodeScanner.ts +154 -2
  87. package/src/components/form/VariableJsonTextArea.tsx +175 -0
  88. package/src/components/form/__tests__/JsonTextArea.test.tsx +43 -0
  89. package/src/components/form/__tests__/VariableJsonTextArea.test.tsx +86 -0
  90. package/src/components/form/index.tsx +1 -0
  91. package/src/components/index.ts +1 -0
  92. package/src/entry-actions/EntryActionManager.ts +76 -0
  93. package/src/entry-actions/index.ts +10 -0
  94. package/src/flow/FlowPage.tsx +38 -3
  95. package/src/flow/__tests__/FlowPage.test.tsx +201 -27
  96. package/src/flow/__tests__/FlowRoute.test.tsx +1088 -105
  97. package/src/flow/__tests__/getKey.test.ts +7 -0
  98. package/src/flow/__tests__/resolveViewParamsToViewList.test.ts +34 -0
  99. package/src/flow/actions/__tests__/afterSuccess.test.ts +73 -0
  100. package/src/flow/actions/__tests__/dataScopeFilter.test.ts +120 -0
  101. package/src/flow/actions/__tests__/dataScopeFormValueClear.test.ts +1022 -0
  102. package/src/flow/actions/__tests__/fieldLinkageRules.scopeDepth.test.ts +150 -1
  103. package/src/flow/actions/__tests__/linkageAssignField.legacy.test.ts +135 -0
  104. package/src/flow/actions/__tests__/linkageRules.hiddenSync.restore.test.ts +19 -5
  105. package/src/flow/actions/__tests__/linkageRules.subFormSetFieldProps.test.ts +92 -0
  106. package/src/flow/actions/__tests__/linkageRulesRefresh.test.ts +7 -3
  107. package/src/flow/actions/__tests__/openView.defineProps.route.test.tsx +164 -0
  108. package/src/flow/actions/__tests__/subFormFieldLinkageRules.inputArgs.test.ts +2 -2
  109. package/src/flow/actions/afterSuccess.tsx +142 -3
  110. package/src/flow/actions/customVariable.tsx +1 -2
  111. package/src/flow/actions/dataScopeFilter.ts +20 -1
  112. package/src/flow/actions/dateTimeFormat.tsx +42 -28
  113. package/src/flow/actions/index.ts +1 -1
  114. package/src/flow/actions/linkageRules.tsx +123 -35
  115. package/src/flow/actions/linkageRulesFormValueRefresh.ts +22 -130
  116. package/src/flow/actions/linkageRulesRefresh.tsx +2 -6
  117. package/src/flow/actions/openView.tsx +59 -5
  118. package/src/flow/actions/runjs.tsx +2 -14
  119. package/src/flow/actions/validation.tsx +62 -30
  120. package/src/flow/admin-shell/BaseLayoutModel.tsx +149 -3
  121. package/src/flow/admin-shell/BaseLayoutRouteCoordinator.ts +187 -42
  122. package/src/flow/admin-shell/__tests__/AdminLayoutRouteCoordinator.test.ts +1020 -110
  123. package/src/flow/admin-shell/admin-layout/AdminLayoutComponent.tsx +74 -13
  124. package/src/flow/admin-shell/admin-layout/AdminLayoutEntryGuard.test.tsx +486 -0
  125. package/src/flow/admin-shell/admin-layout/AdminLayoutEntryGuard.tsx +64 -8
  126. package/src/flow/admin-shell/admin-layout/AdminLayoutMenuFlowUtils.ts +5 -3
  127. package/src/flow/admin-shell/admin-layout/AdminLayoutMenuModels.tsx +61 -9
  128. package/src/flow/admin-shell/admin-layout/AdminLayoutMenuUtils.tsx +71 -8
  129. package/src/flow/admin-shell/admin-layout/AdminLayoutModel.tsx +1 -1
  130. package/src/flow/admin-shell/admin-layout/AdminLayoutSlotModels.tsx +23 -9
  131. package/src/flow/admin-shell/admin-layout/AppListRender.tsx +13 -2
  132. package/src/flow/admin-shell/admin-layout/AppSwitcherActionPanelModel.tsx +289 -0
  133. package/src/flow/admin-shell/admin-layout/HelpLite.tsx +1 -3
  134. package/src/flow/admin-shell/admin-layout/__tests__/AdminLayoutComponent.test.tsx +188 -0
  135. package/src/flow/admin-shell/admin-layout/__tests__/AdminLayoutMenuModels.test.ts +99 -0
  136. package/src/flow/admin-shell/admin-layout/__tests__/AdminLayoutModel.test.tsx +518 -2
  137. package/src/flow/admin-shell/admin-layout/__tests__/TopbarActionsBar.test.tsx +214 -2
  138. package/src/flow/admin-shell/admin-layout/index.ts +1 -0
  139. package/src/flow/admin-shell/admin-layout/resolveAdminRouteRuntimeTarget.test.ts +20 -0
  140. package/src/flow/admin-shell/admin-layout/resolveAdminRouteRuntimeTarget.ts +33 -5
  141. package/src/flow/admin-shell/admin-layout/useApplications.tsx +81 -12
  142. package/src/flow/common/Markdown/Display.tsx +14 -3
  143. package/src/flow/common/Markdown/Edit.tsx +19 -7
  144. package/src/flow/components/DefaultValue.tsx +1 -2
  145. package/src/flow/components/DynamicFlowsIcon.tsx +447 -126
  146. package/src/flow/components/FieldAssignRulesEditor.tsx +128 -21
  147. package/src/flow/components/FieldAssignValueInput.tsx +15 -11
  148. package/src/flow/components/FlowRoute.tsx +186 -25
  149. package/src/flow/components/__tests__/DynamicFlowsIcon.test.tsx +148 -2
  150. package/src/flow/components/__tests__/FieldAssignRulesEditor.test.tsx +508 -4
  151. package/src/flow/components/__tests__/FieldAssignValueInput.context.test.tsx +134 -0
  152. package/src/flow/components/__tests__/fieldAssignOptions.test.ts +151 -3
  153. package/src/flow/components/code-editor/__tests__/useCodeRunner.test.tsx +2 -17
  154. package/src/flow/components/code-editor/hooks/useCodeRunner.ts +2 -14
  155. package/src/flow/components/code-editor/runjsDiagnostics.ts +8 -45
  156. package/src/flow/components/fieldAssignOptions.ts +155 -27
  157. package/src/flow/flows/editMarkdownFlow.tsx +1 -1
  158. package/src/flow/getViewDiffAndUpdateHidden.tsx +1 -0
  159. package/src/flow/index.ts +1 -1
  160. package/src/flow/internal/components/Markdown/util.ts +2 -1
  161. package/src/flow/internal/utils/operatorSchemaHelper.ts +15 -1
  162. package/src/flow/models/actions/JSActionModel.tsx +2 -7
  163. package/src/flow/models/actions/JSCollectionActionModel.tsx +2 -7
  164. package/src/flow/models/actions/JSItemActionModel.tsx +2 -7
  165. package/src/flow/models/actions/JSRecordActionModel.tsx +2 -7
  166. package/src/flow/models/base/ActionModel.tsx +21 -8
  167. package/src/flow/models/base/ActionModelCore.tsx +11 -4
  168. package/src/flow/models/base/GridModel.tsx +38 -7
  169. package/src/flow/models/base/PageModel/PageModel.tsx +4 -1
  170. package/src/flow/models/base/PageModel/__tests__/PageModel.test.ts +28 -4
  171. package/src/flow/models/base/__tests__/ActionModel.test.ts +83 -0
  172. package/src/flow/models/base/__tests__/ActionModelCore.render.test.tsx +37 -0
  173. package/src/flow/models/base/__tests__/GridModel.dragSnapshotContainer.test.ts +239 -1
  174. package/src/flow/models/base/__tests__/transformRowsToSingleColumn.test.ts +48 -0
  175. package/src/flow/models/blocks/filter-form/FilterFormBlockModel.tsx +32 -3
  176. package/src/flow/models/blocks/filter-form/FilterFormItemModel.tsx +27 -12
  177. package/src/flow/models/blocks/filter-form/FilterFormJSActionModel.tsx +2 -7
  178. package/src/flow/models/blocks/filter-form/__tests__/FilterFormItemModel.defineChildren.test.ts +36 -0
  179. package/src/flow/models/blocks/filter-form/__tests__/defaultValues.wiring.test.ts +111 -0
  180. package/src/flow/models/blocks/filter-form/fields/FilterFormCustomFieldModel.tsx +1 -1
  181. package/src/flow/models/blocks/filter-manager/flow-actions/__tests__/customizeFilterRender.test.tsx +56 -1
  182. package/src/flow/models/blocks/form/EditFormModel.tsx +1 -0
  183. package/src/flow/models/blocks/form/FormActionModel.tsx +1 -1
  184. package/src/flow/models/blocks/form/FormBlockModel.tsx +7 -0
  185. package/src/flow/models/blocks/form/JSFormActionModel.tsx +2 -7
  186. package/src/flow/models/blocks/form/QuickEditFormModel.tsx +189 -36
  187. package/src/flow/models/blocks/form/__tests__/FormBlockModel.test.tsx +17 -0
  188. package/src/flow/models/blocks/form/__tests__/QuickEditFormModel.quickEdit.test.ts +350 -2
  189. package/src/flow/models/blocks/form/__tests__/submitHandler.test.ts +54 -1
  190. package/src/flow/models/blocks/form/submitHandler.ts +17 -3
  191. package/src/flow/models/blocks/form/value-runtime/__tests__/runtime.test.ts +940 -75
  192. package/src/flow/models/blocks/form/value-runtime/rules.ts +445 -13
  193. package/src/flow/models/blocks/form/value-runtime/runtime.ts +348 -13
  194. package/src/flow/models/blocks/form/value-runtime/types.ts +2 -2
  195. package/src/flow/models/blocks/js-block/JSBlock.tsx +225 -9
  196. package/src/flow/models/blocks/js-block/__tests__/JSBlockModel.test.tsx +150 -0
  197. package/src/flow/models/blocks/table/JSColumnModel.tsx +1 -9
  198. package/src/flow/models/blocks/table/TableActionsColumnModel.tsx +38 -14
  199. package/src/flow/models/blocks/table/TableBlockModel.tsx +38 -17
  200. package/src/flow/models/blocks/table/TableColumnModel.tsx +42 -5
  201. package/src/flow/models/blocks/table/__tests__/TableActionsColumnModel.test.tsx +111 -1
  202. package/src/flow/models/blocks/table/__tests__/TableBlockModel.dragSort.test.ts +127 -0
  203. package/src/flow/models/blocks/table/__tests__/TableBlockModel.mobileSettingsButtons.test.tsx +78 -0
  204. package/src/flow/models/blocks/table/__tests__/TableBlockModel.rowSelection.test.tsx +1 -0
  205. package/src/flow/models/blocks/table/__tests__/TableColumnModel.test.tsx +210 -1
  206. package/src/flow/models/blocks/table/dragSort/dragSortHooks.tsx +28 -17
  207. package/src/flow/models/blocks/table/dragSort/dragSortSettings.ts +13 -6
  208. package/src/flow/models/blocks/table/dragSort/dragSortUtils.ts +15 -2
  209. package/src/flow/models/fields/AssociationFieldModel/AssociationFieldModel.tsx +1 -1
  210. package/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/PopupSubTableFieldModel.tsx +30 -6
  211. package/src/flow/models/fields/AssociationFieldModel/RecordSelectFieldModel.tsx +61 -17
  212. package/src/flow/models/fields/AssociationFieldModel/SubTableFieldModel/SubTableColumnModel.tsx +141 -19
  213. package/src/flow/models/fields/AssociationFieldModel/SubTableFieldModel/SubTableField.tsx +13 -1
  214. package/src/flow/models/fields/AssociationFieldModel/SubTableFieldModel/__tests__/SubTableColumnModel.rowRecord.test.ts +197 -0
  215. package/src/flow/models/fields/AssociationFieldModel/SubTableFieldModel/__tests__/SubTableFieldModel.reset.test.ts +180 -0
  216. package/src/flow/models/fields/AssociationFieldModel/SubTableFieldModel/index.tsx +6 -4
  217. package/src/flow/models/fields/AssociationFieldModel/__tests__/AssociationFieldModel.updateAssociation.test.ts +72 -0
  218. package/src/flow/models/fields/AssociationFieldModel/__tests__/RecordPickerFieldModel.itemContext.test.ts +23 -0
  219. package/src/flow/models/fields/ClickableFieldModel.tsx +5 -0
  220. package/src/flow/models/fields/DisplayDateTimeFieldModel.tsx +29 -1
  221. package/src/flow/models/fields/InputFieldModel.tsx +40 -2
  222. package/src/flow/models/fields/JSEditableFieldModel.tsx +2 -11
  223. package/src/flow/models/fields/JSFieldModel.tsx +2 -7
  224. package/src/flow/models/fields/JSItemModel.tsx +2 -14
  225. package/src/flow/models/fields/SelectFieldModel.tsx +6 -4
  226. package/src/flow/models/fields/TextareaFieldModel.tsx +72 -3
  227. package/src/flow/models/fields/__tests__/DisplayDateTimeFieldModel.test.tsx +96 -0
  228. package/src/flow/models/fields/__tests__/InputFieldModel.test.tsx +117 -1
  229. package/src/flow/models/fields/__tests__/SelectFieldModel.test.tsx +43 -0
  230. package/src/flow/models/fields/__tests__/TextareaFieldModel.test.tsx +131 -0
  231. package/src/flow/models/fields/mobile-components/MobileLazySelect.tsx +20 -10
  232. package/src/flow/models/fields/mobile-components/MobileSelect.tsx +24 -12
  233. package/src/flow/models/topbar/TopbarActionModel.tsx +168 -10
  234. package/src/flow/resolveViewParamsToViewList.tsx +11 -3
  235. package/src/flow/routeTransientInputArgs.ts +27 -0
  236. package/src/flow/utils/__tests__/dateTimeFormat.test.ts +300 -0
  237. package/src/flow/utils/dataScopeFormValueClear.ts +218 -81
  238. package/src/flow/utils/dataScopeRowSnapshot.ts +616 -0
  239. package/src/flow/utils/dateTimeDisplayProps.ts +135 -0
  240. package/src/flow/utils/formValueDeps.ts +170 -0
  241. package/src/flow-compat/FieldValidation.tsx +122 -60
  242. package/src/flow-compat/Popover.tsx +43 -4
  243. package/src/flow-compat/__tests__/Popover.test.tsx +34 -0
  244. package/src/index.ts +10 -1
  245. package/src/layout-manager/__tests__/LayoutRoute.test.tsx +41 -1
  246. package/src/nocobase-buildin-plugin/index.tsx +51 -15
  247. package/src/settings-center/AdminSettingsLayout.tsx +10 -2
  248. package/src/settings-center/SystemSettingsPage.tsx +1 -2
  249. package/src/settings-center/plugin-manager/PluginCard.tsx +2 -2
  250. package/src/settings-center/plugin-manager/index.tsx +3 -0
  251. package/src/settings-center/utils.tsx +0 -6
  252. package/src/utils/markdownSanitize.ts +88 -0
@@ -11,6 +11,21 @@ import React from 'react';
11
11
  export declare const QUICK_EDIT_POPOVER_MAX_HEIGHT = "calc(100vh - 96px)";
12
12
  export declare const QUICK_EDIT_FORM_MAX_HEIGHT = "calc(100vh - 160px)";
13
13
  export declare const QUICK_EDIT_MARKDOWN_HEIGHT = "min(480px, calc(100vh - 320px))";
14
+ type QuickEditViewBeforeClosePayload = {
15
+ result?: unknown;
16
+ force?: boolean;
17
+ [key: string]: unknown;
18
+ };
19
+ type QuickEditViewBeforeCloseHandler = (payload: QuickEditViewBeforeClosePayload) => Promise<boolean | void> | boolean | void;
20
+ type QuickEditViewUpdateConfig = {
21
+ preventClose?: boolean;
22
+ [key: string]: unknown;
23
+ };
24
+ type QuickEditViewContainer = {
25
+ close: (result?: unknown, force?: boolean) => Promise<boolean | void> | boolean | void;
26
+ update?: (newConfig: QuickEditViewUpdateConfig) => unknown;
27
+ beforeClose?: QuickEditViewBeforeCloseHandler;
28
+ };
14
29
  export declare function getQuickEditFieldProps(collectionField: CollectionField, fieldProps?: Record<string, any>): {
15
30
  [x: string]: any;
16
31
  };
@@ -18,8 +33,7 @@ export declare class QuickEditFormModel extends FlowModel {
18
33
  fieldPath: string;
19
34
  resource: SingleRecordResource;
20
35
  collection: Collection;
21
- now: number;
22
- viewContainer: any;
36
+ viewContainer: QuickEditViewContainer;
23
37
  __onSubmitSuccess: any;
24
38
  _fieldProps: any;
25
39
  _onOk: any;
@@ -42,3 +56,4 @@ export declare class QuickEditFormModel extends FlowModel {
42
56
  addAppends(fieldPath: string, refresh?: boolean): void;
43
57
  render(): React.JSX.Element;
44
58
  }
59
+ export {};
@@ -6,4 +6,4 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
- export declare function submitHandler(ctx: any, params: any, cb?: (values?: any, filterByTk?: any) => void): Promise<void>;
9
+ export declare function submitHandler(ctx: any, params: any, cb?: (values?: any, filterByTk?: any) => void): Promise<unknown>;
@@ -32,6 +32,7 @@ export type RuleEngineOptions = {
32
32
  getFormValueAtPath: (namePath: NamePath) => any;
33
33
  setFormValues: (callerCtx: any, patch: Patch, options?: SetOptions) => Promise<void>;
34
34
  findExplicitHit: (pathKey: string) => string | null;
35
+ findUserEditedHit: (pathKey: string) => string | null;
35
36
  lastDefaultValueByPathKey: Map<string, any>;
36
37
  lastWriteMetaByPathKey: Map<string, FormValueWriteMeta>;
37
38
  observableBindings: Map<string, ObservableBinding>;
@@ -122,6 +123,18 @@ export declare class RuleEngine {
122
123
  private resolveRunJSValue;
123
124
  private resolveTemplateValue;
124
125
  private commitRuleDeps;
126
+ private isScalarValueTarget;
127
+ private shouldSkipEmptyArrayAggregateForScalarTarget;
128
+ private normalizeUnresolvedToManyAggregateForScalarTarget;
129
+ private isArrayValueCollectionField;
130
+ private stringifyAggregateItem;
131
+ private normalizeAggregateArrayForScalarTarget;
132
+ private shouldSkipMultiValueAggregateForScalarTarget;
133
+ private getClearedAggregateValueForScalarTarget;
134
+ private isUserClearedToManyAggregate;
135
+ private isTextScalarTarget;
136
+ private getLatestWriteMetaForPath;
137
+ private getToManyAggregateSourceInfo;
125
138
  /**
126
139
  * Check if default rule value can be applied.
127
140
  * Default value can overwrite when:
@@ -130,6 +143,14 @@ export declare class RuleEngine {
130
143
  */
131
144
  private checkDefaultRuleCanApply;
132
145
  private createRuleEvaluationContext;
146
+ private getLocalFormValuesSnapshot;
147
+ private resolveLocalFormValuesPath;
148
+ private recordLocalFormValuesDep;
149
+ private extractSingleLocalFormValuesPath;
150
+ private stringifyTemplateReplacement;
151
+ private createLocalTemplateTokenStore;
152
+ private restoreLocalTemplateTokens;
153
+ private resolveLocalFormValuesTemplates;
133
154
  private buildItemChainValue;
134
155
  private getFieldIndexSignature;
135
156
  private updateRuleDeps;
@@ -12,11 +12,16 @@ import type { FormAssignRuleItem, NamePath, Patch, SetOptions } from './types';
12
12
  type FormBlockModel = FlowModel & {
13
13
  getAclActionName?: () => string;
14
14
  };
15
+ export type FormValuePatch = {
16
+ path: NamePath;
17
+ value: unknown;
18
+ };
15
19
  export declare class FormValueRuntime {
16
20
  private readonly model;
17
21
  private readonly getForm;
18
22
  private readonly valuesMirror;
19
23
  private readonly explicitSet;
24
+ private readonly userEditedSet;
20
25
  private readonly lastDefaultValueByPathKey;
21
26
  private readonly lastWriteMetaByPathKey;
22
27
  private readonly observableBindings;
@@ -29,6 +34,8 @@ export declare class FormValueRuntime {
29
34
  private lastObservedSource;
30
35
  private lastObservedToken;
31
36
  private readonly formValuesProxy;
37
+ private readonly mountedFieldModelsByPathKey;
38
+ private readonly mountedFieldModelPathKeys;
32
39
  private mountedListener?;
33
40
  private unmountedListener?;
34
41
  private readonly formPatcher;
@@ -42,11 +49,16 @@ export declare class FormValueRuntime {
42
49
  *
43
50
  * - mode=default → source=default(遵循 explicit/空值覆盖语义)
44
51
  * - mode=assign → source=system(不受 explicit 影响,依赖变化时持续生效)
52
+ * - mode=override → source=override(首次覆盖已有值,用户修改后停止)
45
53
  */
46
54
  syncAssignRules(items: FormAssignRuleItem[]): void;
47
55
  get formValues(): any;
48
56
  getFormValuesSnapshot(): any;
57
+ getUserEditedValuePatches(): FormValuePatch[];
58
+ getUserEditedValuesSnapshot(): Record<string, unknown>;
59
+ private toMirrorSnapshot;
49
60
  canApplyDefaultValuePatch(namePath: NamePath, resolved: any): boolean;
61
+ canApplyOverrideValuePatch(namePath: NamePath): boolean;
50
62
  recordDefaultValuePatch(namePath: NamePath, value?: any): void;
51
63
  private getFormValueAtPath;
52
64
  mount(options?: {
@@ -54,6 +66,7 @@ export declare class FormValueRuntime {
54
66
  }): void;
55
67
  dispose(): void;
56
68
  resetAfterFormReset(): void;
69
+ resetUserEditedState(): void;
57
70
  isSuppressed(): boolean;
58
71
  handleFormFieldsChange(changedFields: Array<{
59
72
  name?: NamePath | string | number;
@@ -83,7 +96,19 @@ export declare class FormValueRuntime {
83
96
  private tryResolveNamePath;
84
97
  private bumpChangeTick;
85
98
  private emitFormValuesChange;
99
+ private syncMountedFieldModelValue;
100
+ private syncMountedFieldModelValueForModel;
101
+ private rebuildMountedFieldModelIndex;
102
+ private indexMountedFieldModelTree;
103
+ private unindexMountedFieldModelTree;
104
+ private visitModelAndForks;
105
+ private indexMountedFieldModel;
106
+ private unindexMountedFieldModel;
107
+ private isMountedModelInThisForm;
108
+ private getMountedModelNamePaths;
109
+ private normalizeNamePathValue;
86
110
  private markExplicit;
111
+ private markUserEdited;
87
112
  private normalizeObservedNamePath;
88
113
  private clearExplicitForDefaultPatch;
89
114
  private shouldPreserveDescendantDefaultsOnExplicit;
@@ -91,5 +116,10 @@ export declare class FormValueRuntime {
91
116
  private shouldKeepDefaultPathValueEnabled;
92
117
  private isExplicit;
93
118
  private findExplicitHit;
119
+ private findUserEditedHit;
120
+ private findLatestWriteMeta;
121
+ private isCurrentUserEditedPath;
122
+ private omitNonUserDescendantValues;
123
+ private isDescendantPathKey;
94
124
  }
95
125
  export {};
@@ -7,7 +7,7 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  export type NamePath = Array<string | number>;
10
- export type ValueSource = 'default' | 'linkage' | 'user' | 'system';
10
+ export type ValueSource = 'default' | 'linkage' | 'user' | 'system' | 'override';
11
11
  export type Patch = Record<string, any> | Array<{
12
12
  path: string | NamePath;
13
13
  value: any;
@@ -48,7 +48,7 @@ export interface FormValuesChangePayload {
48
48
  allValues?: any;
49
49
  allValuesSnapshot?: any;
50
50
  }
51
- export type AssignMode = 'default' | 'assign';
51
+ export type AssignMode = 'default' | 'assign' | 'override';
52
52
  export type FormAssignRuleItem = {
53
53
  key?: string;
54
54
  enable?: boolean;
@@ -10,6 +10,7 @@ import React from 'react';
10
10
  import { BlockModel } from '../../base';
11
11
  export declare class JSBlockModel extends BlockModel {
12
12
  private _mountedOnce;
13
+ get showBlockCard(): boolean;
13
14
  renderComponent(): React.ReactNode;
14
15
  render(): React.JSX.Element;
15
16
  protected onMount(): void;
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import React from 'react';
10
10
  import { TableCustomColumnModel } from './TableCustomColumnModel';
11
+ export declare const tableRowActionsClassName: string;
11
12
  export declare class TableActionsColumnModel extends TableCustomColumnModel {
12
13
  afterAddAsSubModel(): Promise<void>;
13
14
  getColumnProps(): {
@@ -64,6 +64,7 @@ export declare class TableBlockModel extends CollectionBlockModel<TableBlockMode
64
64
  isRowSelectionEnabled(): boolean;
65
65
  isShowIndexEnabled(): boolean;
66
66
  getRecordIndex(record: Record<string, unknown>, index: number): string | number;
67
+ getDragSortFieldName(): string | undefined;
67
68
  getLeftAuxiliaryColumn(): {
68
69
  key: string;
69
70
  width: number;
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import React from 'react';
10
10
  import type { TableBlockModel } from '../TableBlockModel';
11
- export declare function useDragSortBodyWrapper(model: TableBlockModel, dataSourceRef: React.MutableRefObject<any>, getRowKeyFunc: (record: any) => string | number): (props: any) => React.JSX.Element;
11
+ export declare function useDragSortBodyWrapper(model: TableBlockModel, dataSourceRef: React.MutableRefObject<any>, getRowKeyFunc: (record: any) => string | number, dragSortFieldName?: string): (props: any) => React.JSX.Element;
12
12
  export declare function useDragSortRowComponent(dragSort: boolean): React.FC<{
13
13
  [key: string]: any;
14
14
  rowIndex?: number;
@@ -15,7 +15,7 @@ export declare const dragSortSettings: {
15
15
  defaultParams: {
16
16
  dragSort: boolean;
17
17
  };
18
- handler(ctx: any, params: any): Promise<void>;
18
+ handler(ctx: any, params: any): void;
19
19
  };
20
20
  export declare const dragSortBySettings: {
21
21
  title: string;
@@ -29,6 +29,7 @@ export declare const dragSortBySettings: {
29
29
  value: any;
30
30
  disabled: any;
31
31
  }[];
32
+ allowClear: boolean;
32
33
  placeholder: any;
33
34
  };
34
35
  };
@@ -6,25 +6,27 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
- import type { Collection } from '@nocobase/flow-engine';
9
+ import type { Collection, CollectionField } from '@nocobase/flow-engine';
10
10
  /**
11
11
  * 从 collection 中获取所有 sort 类型的字段
12
12
  * @param collection - 集合对象
13
13
  * @returns 排序字段数组
14
14
  */
15
- export declare function getSortFields(collection: Collection | undefined): import("@nocobase/flow-engine").CollectionField[];
15
+ export declare function getSortFields(collection: Collection | undefined): CollectionField[];
16
+ export declare function getSortField(collection: Collection | undefined, fieldName?: string | null): CollectionField | undefined;
17
+ export declare function hasSortField(collection: Collection | undefined, fieldName?: string | null): boolean;
16
18
  /**
17
19
  * 获取 collection 中第一个可用的 sort 字段
18
20
  * @param collection - 集合对象
19
21
  * @returns 第一个排序字段,如果没有则返回 undefined
20
22
  */
21
- export declare function getFirstSortField(collection: Collection | undefined): import("@nocobase/flow-engine").CollectionField;
23
+ export declare function getFirstSortField(collection: Collection | undefined): CollectionField;
22
24
  /**
23
25
  * 将 sort 字段转换为选项格式
24
26
  * @param fields - 字段数组
25
27
  * @returns 选项数组
26
28
  */
27
- export declare function convertFieldsToOptions(fields: any[]): {
29
+ export declare function convertFieldsToOptions(fields: CollectionField[]): {
28
30
  label: any;
29
31
  value: any;
30
32
  disabled: any;
@@ -23,6 +23,8 @@ export declare function collectAssociationHydrationCandidates(options: {
23
23
  labelKey: string;
24
24
  statusMap: Map<string, HydrateStatus>;
25
25
  }): HydrationCandidate[];
26
+ export declare function getAssociationHydrationNamePath(model: any): any;
27
+ export declare function getAssociationHydrationSetterContext(model: any): any;
26
28
  export declare function CreateContent({ model, toOne }: {
27
29
  model: any;
28
30
  toOne?: boolean;
@@ -18,6 +18,7 @@ export declare function FieldWithoutPermissionPlaceholder({ targetModel }: {
18
18
  }): React.JSX.Element;
19
19
  export declare function buildRowPathFromFieldIndex(fieldIndex: unknown): Array<string | number> | null;
20
20
  export declare function getLatestSubTableRowRecord(form: any, fieldIndex: unknown, fallbackRecord: any): any;
21
+ export declare function buildSubTableColumnNamePath(fieldPath: Array<string | number>, rowIdx: number, namePath: string | number, rowFieldIndex: unknown): Array<string | number>;
21
22
  export declare function isSubTableColumnReadPretty(parent: any): boolean;
22
23
  export declare function isSubTableColumnConfiguredReadPretty(parent: any): boolean;
23
24
  export declare function getSubTableColumnTitleField(parent: any): any;
@@ -31,10 +32,15 @@ export interface SubTableColumnModelStructure {
31
32
  export declare class SubTableColumnModel<T extends SubTableColumnModelStructure = SubTableColumnModelStructure> extends EditableItemModel<T> {
32
33
  static renderMode: ModelRenderMode;
33
34
  static fieldComponentContext: string;
35
+ private getAssociationField;
36
+ private getParentFormValues;
37
+ private createParentItemAccessors;
38
+ private createRowItemContextPropertyOptions;
34
39
  renderHiddenInConfig(): React.JSX.Element;
35
40
  static defineChildren(ctx: FlowModelContext): any;
36
41
  get collection(): any;
37
42
  get hasFormulaColumn(): boolean;
43
+ get hasFormValueDrivenDataScopeColumn(): boolean;
38
44
  onInit(options: any): void;
39
45
  afterAddAsSubModel(): Promise<void>;
40
46
  getColumnProps(): TableColumnProps;
@@ -17,4 +17,4 @@ export interface ViewItem {
17
17
  index: number;
18
18
  }
19
19
  export declare function resolveViewParamsToViewList(flowEngine: FlowEngine, viewParams: ViewParam[], routeModel: FlowModel): ViewItem[];
20
- export declare function updateViewListHidden(viewItems: ViewItem[]): void;
20
+ export declare function updateViewListHidden(viewItems: ViewItem[], isMobileLayout?: boolean): void;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export declare const ROUTE_TRANSIENT_INPUT_ARGS_KEY = "__nocobaseOpenViewInputArgs";
10
+ export type RouteTransientInputArgsState = {
11
+ [ROUTE_TRANSIENT_INPUT_ARGS_KEY]?: Record<string, Record<string, unknown>>;
12
+ usr?: RouteTransientInputArgsState;
13
+ };
14
+ export declare const getRouteTransientInputArgs: (state: unknown, viewUid?: string) => Record<string, unknown>;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import type { FlowContext } from '@nocobase/flow-engine';
10
+ import { type FieldIndexEntry, type NamePath } from './formValueDeps';
11
+ export type FilterTargetKey = string | string[] | null | undefined;
12
+ export type RowIdentity = string;
13
+ export type RowScopedFieldIndexEntry = FieldIndexEntry & {
14
+ filterTargetKey?: FilterTargetKey;
15
+ };
16
+ export type RowScope = {
17
+ entries: RowScopedFieldIndexEntry[];
18
+ tailPath: NamePath;
19
+ identityTailPaths: NamePath[];
20
+ };
21
+ export type DataScopeValuePath = {
22
+ path: NamePath;
23
+ rowScope?: RowScope;
24
+ };
25
+ export type DataScopeStructuralPath = {
26
+ path: NamePath;
27
+ kind: 'index' | 'length';
28
+ rowScope?: RowScope;
29
+ };
30
+ export type DataScopeTriggerPath = {
31
+ path: NamePath;
32
+ includeChildren: boolean;
33
+ };
34
+ export type DataScopeClearDeps = {
35
+ wildcard: boolean;
36
+ valuePaths: DataScopeValuePath[];
37
+ structuralPaths: DataScopeStructuralPath[];
38
+ triggerPaths: DataScopeTriggerPath[];
39
+ };
40
+ export type DataScopeSnapshotValue = {
41
+ value: unknown;
42
+ rowIdentities?: Array<RowIdentity | null>;
43
+ rowDetached?: boolean;
44
+ };
45
+ export type DataScopeClearSnapshot = {
46
+ complete: boolean;
47
+ rowDetached: boolean;
48
+ rowMissing: boolean;
49
+ values: Map<string, DataScopeSnapshotValue>;
50
+ structures: Map<string, DataScopeSnapshotValue>;
51
+ };
52
+ export type DataScopeClearChangeStatus = {
53
+ status: 'changed' | 'unchanged' | 'unknown';
54
+ snapshot: DataScopeClearSnapshot | null;
55
+ };
56
+ export declare function applyDataScopeFieldIndexTargetKeys(ctx: FlowContext, entries: FieldIndexEntry[]): RowScopedFieldIndexEntry[];
57
+ export declare function createDataScopeRowScope(entries: RowScopedFieldIndexEntry[], parentDepth: number, tailPath: NamePath): RowScope | undefined;
58
+ export declare function buildDepsSnapshot(deps: DataScopeClearDeps, formBlock: any, payload?: unknown): DataScopeClearSnapshot | null;
59
+ export declare function getDepsChangeStatus(deps: DataScopeClearDeps, formBlock: any, payload: unknown, snapshot: DataScopeClearSnapshot | null): DataScopeClearChangeStatus;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import type { FlowModelContext } from '@nocobase/flow-engine';
10
+ type DateTimeDisplayProps = {
11
+ dateOnly?: boolean;
12
+ dateFormat?: string;
13
+ format?: string;
14
+ picker?: string;
15
+ showTime?: boolean;
16
+ timeFormat?: string;
17
+ };
18
+ type DateTimeCollectionField = {
19
+ type?: string;
20
+ interface?: string;
21
+ getComponentProps?: () => DateTimeDisplayProps;
22
+ targetCollection?: {
23
+ getField?: (name?: string) => DateTimeCollectionField | undefined;
24
+ };
25
+ };
26
+ type DateTimeModelContext = FlowModelContext & {
27
+ collectionField?: DateTimeCollectionField;
28
+ };
29
+ type DateTimeModel = {
30
+ props?: DateTimeDisplayProps & {
31
+ titleField?: string;
32
+ };
33
+ context?: DateTimeModelContext;
34
+ getStepParams?: (flowKey: string, stepKey: string) => DateTimeDisplayProps | undefined;
35
+ };
36
+ type ResolveDateTimeDisplayPropsOptions = {
37
+ model?: DateTimeModel;
38
+ collectionField?: DateTimeCollectionField;
39
+ titleField?: string;
40
+ currentProps?: DateTimeDisplayProps;
41
+ params?: DateTimeDisplayProps;
42
+ withDefaults?: boolean;
43
+ };
44
+ export declare const getDateTimeFormatCollectionField: (options: ResolveDateTimeDisplayPropsOptions) => DateTimeCollectionField;
45
+ export declare const isTimeCollectionField: (collectionField?: DateTimeCollectionField) => boolean;
46
+ export declare const isDateOnlyCollectionField: (collectionField?: DateTimeCollectionField) => boolean;
47
+ export declare const getSavedDateTimeFormatParams: (model?: DateTimeModel) => DateTimeDisplayProps;
48
+ export declare const resolveDateTimeDisplayProps: (options: ResolveDateTimeDisplayPropsOptions) => DateTimeDisplayProps;
49
+ export {};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ import type { FlowContext } from '@nocobase/flow-engine';
10
+ export type NamePath = Array<string | number>;
11
+ export type FieldIndexEntry = {
12
+ name: string;
13
+ index: number;
14
+ };
15
+ export declare function isSameNamePath(a: NamePath, b: NamePath): boolean;
16
+ export declare function isNamePathPrefix(prefix: NamePath, path: NamePath): boolean;
17
+ export declare function dedupeNamePaths(paths: NamePath[]): NamePath[];
18
+ export declare function minimizeNamePaths(paths: NamePath[]): NamePath[];
19
+ export declare function parseFieldIndexEntries(fieldIndex: unknown): FieldIndexEntry[];
20
+ export declare function getFieldIndexEntriesFromContext(ctx: FlowContext | {
21
+ model?: unknown;
22
+ fieldIndex?: unknown;
23
+ }): FieldIndexEntry[];
24
+ export declare function buildItemRowPath(entries: FieldIndexEntry[], parentDepth: number): NamePath | null;
25
+ export declare function buildItemListRootPath(entries: FieldIndexEntry[], parentDepth: number): NamePath | null;
26
+ export declare function parseDependencyPath(subPath: string): NamePath;
27
+ export declare function parsePathKey(pathKey: string): NamePath;
28
+ export declare function getChangedPathsFromPayload(payload: unknown, options?: {
29
+ includeArrayChangedValues?: boolean;
30
+ }): NamePath[];
31
+ export declare function isFormValueChangeSource(model: unknown): boolean;
32
+ export declare function findFormValueChangeSource(ctx: FlowContext): unknown | null;
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import React from 'react';
10
10
  interface ValidationRule {
11
- key: string;
11
+ key?: string;
12
12
  name: string;
13
13
  args?: {
14
14
  [key: string]: any;
@@ -22,6 +22,7 @@ interface ValidationData {
22
22
  interface FieldValidationProps {
23
23
  value?: ValidationData;
24
24
  onChange?: (value: ValidationData) => void;
25
+ inheritedValue?: ValidationData;
25
26
  type?: string;
26
27
  availableValidationOptions?: string[];
27
28
  excludeValidationOptions?: string[];
package/es/index.d.ts CHANGED
@@ -36,6 +36,9 @@ export * from './collection-manager/filter-operators';
36
36
  export * from './collection-manager/interfaces';
37
37
  export * from './collection-manager/template-fields';
38
38
  export * from './data-source';
39
+ export * from './entry-actions';
39
40
  export * from './flow';
40
- export { DEFAULT_DATA_SOURCE_KEY, isTitleField, isTitleFieldInterface } from './flow-compat';
41
+ export { DEFAULT_DATA_SOURCE_KEY, IconPicker, isTitleField, isTitleFieldInterface, NocoBaseDesktopRouteType, } from './flow-compat';
42
+ export type { NocoBaseDesktopRoute } from './flow-compat';
43
+ export * from './utils/markdownSanitize';
41
44
  export { default as AntdAppProvider } from './theme/AntdAppProvider';