@nocobase/client-v2 2.2.0-beta.9 → 2.2.0

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 (224) hide show
  1. package/es/APIClient.d.ts +13 -3
  2. package/es/BaseApplication.d.ts +1 -0
  3. package/es/collection-field-interface/CollectionFieldInterface.d.ts +1 -0
  4. package/es/collection-field-interface/CollectionFieldInterfaceManager.d.ts +1 -0
  5. package/es/components/category-tabs/SortableCategoryTabs.d.ts +55 -0
  6. package/es/components/category-tabs/index.d.ts +9 -0
  7. package/es/components/form/ScanInput/useCodeScanner.d.ts +3 -2
  8. package/es/components/form/TypedVariableInput.d.ts +31 -5
  9. package/es/components/form/filter/CollectionFilter.d.ts +2 -0
  10. package/es/components/form/filter/CollectionFilterItem.d.ts +11 -1
  11. package/es/components/form/filter/CollectionFilterPanel.d.ts +2 -0
  12. package/es/components/form/filter/index.d.ts +2 -0
  13. package/es/components/form/filter/useFilterActionProps.d.ts +2 -0
  14. package/es/components/index.d.ts +1 -0
  15. package/es/flow/actions/index.d.ts +1 -1
  16. package/es/flow/actions/linkageRules.d.ts +27 -0
  17. package/es/flow/admin-shell/admin-layout/AdminLayoutMenuModels.d.ts +1 -0
  18. package/es/flow/components/FieldAssignExactDatePicker.d.ts +1 -0
  19. package/es/flow/components/FieldAssignValueInput.d.ts +7 -24
  20. package/es/flow/components/FlowRoute.d.ts +2 -2
  21. package/es/flow/components/RunJSValueEditor.d.ts +1 -0
  22. package/es/flow/components/field-value-variable/DateVariableEditor.d.ts +24 -0
  23. package/es/flow/components/field-value-variable/FieldValueVariableInput.d.ts +31 -0
  24. package/es/flow/components/field-value-variable/dateValue.d.ts +36 -0
  25. package/es/flow/components/field-value-variable/index.d.ts +11 -0
  26. package/es/flow/components/filter/FilterGroup.d.ts +1 -0
  27. package/es/flow/components/filter/VariableFilterItem.d.ts +6 -1
  28. package/es/flow/components/placeholders/BlockPlaceholder.d.ts +1 -0
  29. package/es/flow/index.d.ts +1 -0
  30. package/es/flow/internal/registerDeviceTypeContext.d.ts +10 -0
  31. package/es/flow/internal/utils/operatorSchemaHelper.d.ts +2 -2
  32. package/es/flow/models/actions/UpdateRecordActionUtils.d.ts +8 -2
  33. package/es/flow/models/base/ActionModelCore.d.ts +4 -2
  34. package/es/flow/models/base/BlockGridModel.d.ts +3 -0
  35. package/es/flow/models/base/CollectionBlockModel.d.ts +3 -0
  36. package/es/flow/models/base/PageModel/PageModel.d.ts +12 -0
  37. package/es/flow/models/base/PageModel/PageModelTabBar.d.ts +22 -0
  38. package/es/flow/models/base/PageModel/PageTabModel.d.ts +12 -0
  39. package/es/flow/models/blocks/details/DetailsBlockModel.d.ts +3 -0
  40. package/es/flow/models/blocks/filter-form/FilterFormGridModel.d.ts +1 -0
  41. package/es/flow/models/blocks/filter-form/FilterFormSubmitActionModel.d.ts +3 -1
  42. package/es/flow/models/blocks/form/FormBlockModel.d.ts +7 -0
  43. package/es/flow/models/blocks/form/FormGridModel.d.ts +6 -0
  44. package/es/flow/models/blocks/form/QuickEditFormModel.d.ts +17 -2
  45. package/es/flow/models/blocks/form/value-runtime/rules.d.ts +1 -0
  46. package/es/flow/models/blocks/table/JSColumnModel.d.ts +2 -0
  47. package/es/flow/models/blocks/table/TableBlockModel.d.ts +1 -0
  48. package/es/flow/models/blocks/table/TableColumnModel.d.ts +12 -0
  49. package/es/flow/models/blocks/table/utils.d.ts +1 -0
  50. package/es/flow/models/fields/AssociationFieldModel/RecordPickerFieldModel.d.ts +2 -1
  51. package/es/flow/models/fields/AssociationFieldModel/RecordSelectFieldModel.d.ts +0 -17
  52. package/es/flow/models/fields/AssociationFieldModel/recordSelectShared.d.ts +41 -0
  53. package/es/flow/models/fields/DateTimeFieldModel/dateLimit.d.ts +15 -7
  54. package/es/flow-compat/fieldValidationConstants.d.ts +1 -1
  55. package/es/flow-compat/passwordUtils.d.ts +1 -1
  56. package/es/flow-compat/routeTypes.d.ts +1 -0
  57. package/es/index.d.ts +5 -0
  58. package/es/index.mjs +199 -161
  59. package/es/ui-operation/index.d.ts +15 -0
  60. package/es/ui-operation/ui-operation-codec.d.ts +10 -0
  61. package/es/utils/getRouteRuntimeVersion.d.ts +23 -0
  62. package/es/utils/index.d.ts +1 -0
  63. package/lib/index.js +215 -177
  64. package/lib/locale/languageCodes.js +3 -1
  65. package/package.json +9 -7
  66. package/src/APIClient.ts +90 -7
  67. package/src/Application.tsx +7 -1
  68. package/src/BaseApplication.tsx +11 -6
  69. package/src/__tests__/APIClient.test.tsx +58 -0
  70. package/src/__tests__/app.test.tsx +73 -0
  71. package/src/__tests__/browserChecker.test.ts +61 -0
  72. package/src/__tests__/getRouteRuntimeVersion.test.ts +68 -0
  73. package/src/__tests__/nocobase-buildin-plugin-auth.test.tsx +35 -2
  74. package/src/__tests__/settings-center.test.tsx +270 -6
  75. package/src/acl/ACLProvider.tsx +2 -0
  76. package/src/acl/__tests__/ACLProvider.test.tsx +92 -0
  77. package/src/collection-field-interface/CollectionFieldInterface.ts +1 -0
  78. package/src/collection-field-interface/CollectionFieldInterfaceManager.ts +1 -0
  79. package/src/collection-manager/field-validation.ts +1 -1
  80. package/src/components/README.md +7 -1
  81. package/src/components/README.zh-CN.md +6 -1
  82. package/src/components/category-tabs/SortableCategoryTabs.tsx +210 -0
  83. package/src/components/category-tabs/index.ts +10 -0
  84. package/src/components/form/JsonTextArea.tsx +4 -0
  85. package/src/components/form/ScanInput/CodeScanner.tsx +79 -35
  86. package/src/components/form/ScanInput/__tests__/CodeScanner.test.tsx +101 -0
  87. package/src/components/form/ScanInput/__tests__/useCodeScanner.test.tsx +284 -11
  88. package/src/components/form/ScanInput/useCodeScanner.ts +332 -24
  89. package/src/components/form/TypedVariableInput.tsx +452 -101
  90. package/src/components/form/__tests__/TypedVariableInput.test.tsx +364 -12
  91. package/src/components/form/filter/CollectionFilter.tsx +4 -0
  92. package/src/components/form/filter/CollectionFilterItem.tsx +36 -9
  93. package/src/components/form/filter/CollectionFilterPanel.tsx +4 -0
  94. package/src/components/form/filter/__tests__/CollectionFilterItem.test.tsx +55 -0
  95. package/src/components/form/filter/__tests__/useFilterActionProps.test.tsx +95 -0
  96. package/src/components/form/filter/index.ts +2 -0
  97. package/src/components/form/filter/useFilterActionProps.ts +37 -6
  98. package/src/components/form/table/Table.tsx +81 -6
  99. package/src/components/form/table/__tests__/Table.columnWidth.test.tsx +433 -0
  100. package/src/components/index.ts +1 -0
  101. package/src/flow/FlowPage.tsx +9 -1
  102. package/src/flow/__tests__/FlowPage.test.tsx +50 -3
  103. package/src/flow/__tests__/FlowRoute.test.tsx +128 -10
  104. package/src/flow/__tests__/PluginFlowEngine.test.ts +58 -0
  105. package/src/flow/actions/__tests__/actionLinkageRules.forkProps.test.ts +314 -0
  106. package/src/flow/actions/__tests__/dataScopeFormValueClear.test.ts +102 -0
  107. package/src/flow/actions/__tests__/linkageRules.actionStates.test.ts +33 -0
  108. package/src/flow/actions/__tests__/linkageRules.subFormSetFieldProps.test.ts +72 -0
  109. package/src/flow/actions/__tests__/linkageRules.tab.test.ts +171 -0
  110. package/src/flow/actions/__tests__/linkageRulesRefresh.test.ts +7 -3
  111. package/src/flow/actions/index.ts +2 -0
  112. package/src/flow/actions/linkageRules.tsx +144 -26
  113. package/src/flow/actions/linkageRulesRefresh.tsx +2 -6
  114. package/src/flow/admin-shell/admin-layout/AdminLayoutComponent.tsx +0 -1
  115. package/src/flow/admin-shell/admin-layout/AdminLayoutMenuUtils.tsx +78 -59
  116. package/src/flow/admin-shell/admin-layout/__tests__/AdminLayoutComponent.test.tsx +253 -6
  117. package/src/flow/admin-shell/admin-layout/__tests__/AdminLayoutMenuModels.test.ts +228 -0
  118. package/src/flow/common/Markdown/style.ts +4 -0
  119. package/src/flow/components/BlockItemCard.tsx +2 -2
  120. package/src/flow/components/FieldAssignExactDatePicker.tsx +25 -11
  121. package/src/flow/components/FieldAssignValueInput.tsx +72 -584
  122. package/src/flow/components/FlowRoute.tsx +78 -32
  123. package/src/flow/components/RunJSValueEditor.tsx +9 -1
  124. package/src/flow/components/__tests__/FieldAssignValueInput.context.test.tsx +216 -0
  125. package/src/flow/components/field-value-variable/DateVariableEditor.tsx +181 -0
  126. package/src/flow/components/field-value-variable/FieldValueVariableInput.tsx +326 -0
  127. package/src/flow/components/field-value-variable/__tests__/FieldValueVariableInput.test.tsx +380 -0
  128. package/src/flow/components/field-value-variable/dateValue.ts +223 -0
  129. package/src/flow/components/field-value-variable/index.ts +12 -0
  130. package/src/flow/components/filter/FilterGroup.tsx +33 -5
  131. package/src/flow/components/filter/VariableFilterItem.tsx +170 -13
  132. package/src/flow/components/filter/__tests__/FilterGroup.test.tsx +45 -0
  133. package/src/flow/components/filter/__tests__/VariableFilterItem.leftMetaTree.test.tsx +9 -0
  134. package/src/flow/components/filter/__tests__/VariableFilterItem.test.tsx +195 -1
  135. package/src/flow/components/placeholders/BlockPlaceholder.tsx +70 -23
  136. package/src/flow/components/placeholders/__tests__/BlockPlaceholder.test.tsx +57 -7
  137. package/src/flow/index.ts +3 -0
  138. package/src/flow/internal/registerDeviceTypeContext.ts +39 -0
  139. package/src/flow/internal/utils/operatorSchemaHelper.ts +3 -2
  140. package/src/flow/models/actions/UpdateRecordActionModel.tsx +18 -1
  141. package/src/flow/models/actions/UpdateRecordActionUtils.ts +18 -6
  142. package/src/flow/models/actions/__tests__/UpdateRecordActionModel.test.ts +76 -4
  143. package/src/flow/models/base/ActionModelCore.tsx +11 -2
  144. package/src/flow/models/base/BlockGridModel.tsx +26 -0
  145. package/src/flow/models/base/CollectionBlockModel.tsx +38 -3
  146. package/src/flow/models/base/PageModel/PageModel.tsx +387 -53
  147. package/src/flow/models/base/PageModel/PageModelTabBar.tsx +114 -0
  148. package/src/flow/models/base/PageModel/PageTabModel.tsx +249 -18
  149. package/src/flow/models/base/PageModel/__tests__/PageModel.test.ts +790 -10
  150. package/src/flow/models/base/PageModel/__tests__/PageModelTabBar.module-isolation.test.tsx +130 -0
  151. package/src/flow/models/base/PageModel/__tests__/PageModelTabBar.test.tsx +118 -0
  152. package/src/flow/models/base/PageModel/__tests__/PageTabModel.test.ts +1075 -7
  153. package/src/flow/models/base/__tests__/ActionModelCore.render.test.tsx +49 -0
  154. package/src/flow/models/base/__tests__/BlockGridModel.selectSceneActivation.test.ts +124 -0
  155. package/src/flow/models/base/__tests__/CollectionBlockModel.addAppends.test.ts +41 -0
  156. package/src/flow/models/base/__tests__/CollectionBlockModel.initialBeforeRenderRefresh.test.ts +125 -9
  157. package/src/flow/models/blocks/assign-form/AssignFormItemModel.tsx +28 -53
  158. package/src/flow/models/blocks/details/DetailsBlockModel.tsx +8 -3
  159. package/src/flow/models/blocks/details/__tests__/DetailsBlockModel.initialPaginationChangeRefresh.test.ts +32 -1
  160. package/src/flow/models/blocks/filter-form/FilterFormBlockModel.tsx +28 -3
  161. package/src/flow/models/blocks/filter-form/FilterFormGridModel.tsx +36 -5
  162. package/src/flow/models/blocks/filter-form/FilterFormItemModel.tsx +155 -25
  163. package/src/flow/models/blocks/filter-form/FilterFormSubmitActionModel.tsx +57 -4
  164. package/src/flow/models/blocks/filter-form/__tests__/FilterFormGridModel.onModelCreated.test.ts +174 -1
  165. package/src/flow/models/blocks/filter-form/__tests__/FilterFormItemModel.defineChildren.test.ts +395 -1
  166. package/src/flow/models/blocks/filter-form/__tests__/FilterFormItemModel.getFilterValue.test.ts +72 -0
  167. package/src/flow/models/blocks/filter-form/__tests__/FilterFormSubmitActionModel.lifecycle.test.ts +90 -0
  168. package/src/flow/models/blocks/filter-form/__tests__/defaultValues.wiring.test.ts +66 -4
  169. package/src/flow/models/blocks/filter-manager/FilterManager.ts +5 -0
  170. package/src/flow/models/blocks/filter-manager/__tests__/FilterManager.test.ts +40 -0
  171. package/src/flow/models/blocks/form/FormBlockModel.tsx +47 -0
  172. package/src/flow/models/blocks/form/FormGridModel.tsx +4 -0
  173. package/src/flow/models/blocks/form/QuickEditFormModel.tsx +189 -36
  174. package/src/flow/models/blocks/form/__tests__/FormBlockModel.test.tsx +8 -2
  175. package/src/flow/models/blocks/form/__tests__/QuickEditFormModel.quickEdit.test.ts +350 -2
  176. package/src/flow/models/blocks/form/__tests__/runJsFormSubmit.test.ts +131 -0
  177. package/src/flow/models/blocks/form/value-runtime/__tests__/runtime.test.ts +435 -0
  178. package/src/flow/models/blocks/form/value-runtime/rules.ts +67 -14
  179. package/src/flow/models/blocks/form/value-runtime/runtime.ts +43 -19
  180. package/src/flow/models/blocks/js-block/JSBlock.tsx +1 -1
  181. package/src/flow/models/blocks/table/JSColumnModel.tsx +10 -1
  182. package/src/flow/models/blocks/table/TableActionsColumnModel.tsx +2 -1
  183. package/src/flow/models/blocks/table/TableBlockModel.tsx +29 -3
  184. package/src/flow/models/blocks/table/TableColumnModel.tsx +48 -9
  185. package/src/flow/models/blocks/table/__tests__/JSColumnModel.test.tsx +52 -5
  186. package/src/flow/models/blocks/table/__tests__/TableBlockModel.filterReset.test.ts +78 -0
  187. package/src/flow/models/blocks/table/__tests__/TableBlockModel.quickEditRefresh.test.ts +12 -0
  188. package/src/flow/models/blocks/table/__tests__/TableColumnModel.test.tsx +33 -0
  189. package/src/flow/models/blocks/table/utils.ts +7 -0
  190. package/src/flow/models/fields/AssociationFieldModel/CascadeSelectFieldModel.tsx +33 -1
  191. package/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/PopupSubTableFieldModel.tsx +10 -1
  192. package/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/__tests__/popupContext.test.ts +120 -0
  193. package/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/actions/PopupSubTableEditActionModel.tsx +10 -2
  194. package/src/flow/models/fields/AssociationFieldModel/RecordPickerFieldModel.tsx +24 -1
  195. package/src/flow/models/fields/AssociationFieldModel/RecordSelectFieldModel.tsx +9 -136
  196. package/src/flow/models/fields/AssociationFieldModel/__tests__/RecordPickerFieldModel.itemContext.test.ts +167 -3
  197. package/src/flow/models/fields/AssociationFieldModel/recordSelectShared.tsx +156 -0
  198. package/src/flow/models/fields/DateTimeFieldModel/__tests__/DateTimeNoTzFieldModel.dateLimit.test.tsx +149 -0
  199. package/src/flow/models/fields/DateTimeFieldModel/dateLimit.ts +149 -113
  200. package/src/flow/models/fields/DisplayNumberFieldModel.tsx +1 -1
  201. package/src/flow/models/fields/JsonFieldModel.tsx +31 -8
  202. package/src/flow/models/fields/NumberFieldModel.tsx +1 -1
  203. package/src/flow/models/fields/VariableFieldFormModel.tsx +3 -3
  204. package/src/flow/models/fields/__tests__/DisplayNumberFieldModel.test.ts +33 -0
  205. package/src/flow/models/fields/__tests__/JsonFieldModel.test.ts +82 -0
  206. package/src/flow/models/fields/__tests__/NumberFieldModel.test.tsx +47 -0
  207. package/src/flow/models/fields/__tests__/VariableFieldFormModel.test.tsx +51 -0
  208. package/src/flow/models/fields/mobile-components/MobileLazySelect.tsx +26 -10
  209. package/src/flow/models/fields/mobile-components/MobileSelect.tsx +51 -14
  210. package/src/flow/models/fields/mobile-components/__tests__/MobileSelect.test.tsx +139 -13
  211. package/src/flow/utils/dataScopeFormValueClear.ts +4 -3
  212. package/src/flow-compat/fieldValidationConstants.ts +1 -1
  213. package/src/flow-compat/routeTypes.ts +1 -0
  214. package/src/index.ts +5 -0
  215. package/src/layout-manager/LayoutContentRoute.tsx +2 -1
  216. package/src/layout-manager/LayoutRoute.tsx +2 -1
  217. package/src/layout-manager/__tests__/LayoutRoute.test.tsx +87 -1
  218. package/src/locale/languageCodes.ts +3 -1
  219. package/src/nocobase-buildin-plugin/index.tsx +12 -0
  220. package/src/settings-center/AdminSettingsLayout.tsx +23 -2
  221. package/src/ui-operation/index.ts +33 -0
  222. package/src/ui-operation/ui-operation-codec.ts +54 -0
  223. package/src/utils/getRouteRuntimeVersion.ts +185 -0
  224. package/src/utils/index.tsx +1 -0
package/es/APIClient.d.ts CHANGED
@@ -6,11 +6,21 @@
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 { APIClient as APIClientSDK, type APIClientOptions } from '@nocobase/sdk';
9
+ import { APIClient as APIClientSDK } from '@nocobase/sdk';
10
+ import type { NotificationInstance } from 'antd/es/notification/interface';
11
+ interface APIClientApplication {
12
+ getName?: () => string | undefined;
13
+ context?: {
14
+ notification?: NotificationInstance;
15
+ };
16
+ }
10
17
  export declare class APIClient extends APIClientSDK {
11
- appName?: string;
12
- constructor(options?: APIClientOptions);
18
+ app?: APIClientApplication;
19
+ get notification(): NotificationInstance;
13
20
  getHostname(): string;
14
21
  getHeaders(): {};
15
22
  interceptors(): void;
23
+ handleNotificationError(error: unknown): void;
24
+ useNotificationMiddleware(): void;
16
25
  }
26
+ export {};
@@ -143,6 +143,7 @@ export declare abstract class BaseApplication<TOptions extends BaseApplicationOp
143
143
  setMaintaining(maintaining: boolean): void;
144
144
  getOptions(): TOptions;
145
145
  getName(): string;
146
+ getCdnUrl(): string;
146
147
  getPublicPath(): string;
147
148
  getApiUrl(pathname?: string): string;
148
149
  getRouteUrl(pathname: string): string;
@@ -98,6 +98,7 @@ export declare abstract class CollectionFieldInterface {
98
98
  titleUsable?: boolean;
99
99
  usePathOptions?(field: any): any;
100
100
  hidden?: boolean;
101
+ creatable?: boolean;
101
102
  addComponentOption(componentOption: CollectionFieldInterfaceComponentOption): void;
102
103
  getConfigureFormProperties(collectionInfo?: any): Record<string, ISchema>;
103
104
  getDefaultValueProperty(): {
@@ -15,6 +15,7 @@ interface FieldInterfaceLike {
15
15
  title?: ReactNode;
16
16
  group?: string;
17
17
  order?: number;
18
+ creatable?: boolean;
18
19
  isAssociation?: boolean;
19
20
  supportDataSourceType?: string[];
20
21
  notSupportDataSourceType?: string[];
@@ -0,0 +1,55 @@
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 React from 'react';
10
+ /**
11
+ * A category descriptor for {@link SortableCategoryTabs}. The component is
12
+ * i18n-agnostic: `label` is rendered verbatim, so consumers pass an
13
+ * already-compiled/translated node. `color` is an antd preset color name or a
14
+ * hex string; `'default'` / `undefined` renders no badge color.
15
+ */
16
+ export type SortableCategoryTabItem = {
17
+ id: string | number;
18
+ label: React.ReactNode;
19
+ color?: string;
20
+ };
21
+ export type SortableCategoryTabsProps = {
22
+ activeKey: string;
23
+ onChange: (key: string) => void;
24
+ /** Draggable category tabs (the fixed leading tab is configured via `allTab`). */
25
+ categories: SortableCategoryTabItem[];
26
+ /** The fixed, non-draggable leading tab, e.g. "All". */
27
+ allTab: {
28
+ key: string;
29
+ label: React.ReactNode;
30
+ };
31
+ /** Show the "+" add button and handle its click. */
32
+ onAdd?: () => void;
33
+ /** Per-category edit menu item handler; menu is hidden when omitted. */
34
+ onEdit?: (id: string | number) => void;
35
+ /** Per-category delete menu item handler; menu is hidden when omitted. */
36
+ onDelete?: (id: string | number) => void;
37
+ /** Reorder handler. Receives the dragged and dropped category ids. */
38
+ onSort?: (sourceId: string | number, targetId: string | number) => void | Promise<void>;
39
+ /** Consumer-translated labels for the per-category dropdown menu. */
40
+ menuLabels?: {
41
+ edit?: string;
42
+ delete?: string;
43
+ };
44
+ className?: string;
45
+ };
46
+ /**
47
+ * A draggable, editable category tab bar. Renders only the tab bar (no content
48
+ * panes) — the page renders its content below and reacts to `activeKey`.
49
+ *
50
+ * Shared by settings pages that group records under reorderable categories
51
+ * (data-source collections, workflows, …). Drag-to-reorder is powered by
52
+ * `@dnd-kit`; the "+" / per-tab edit-delete affordances are optional.
53
+ */
54
+ export declare function SortableCategoryTabs(props: SortableCategoryTabsProps): React.JSX.Element;
55
+ export default SortableCategoryTabs;
@@ -0,0 +1,9 @@
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 * from './SortableCategoryTabs';
@@ -15,17 +15,18 @@ type UseCodeScannerOptions = {
15
15
  enabled: boolean;
16
16
  elementId: string;
17
17
  formatsToSupport?: CodeFormatsToSupport;
18
- scanBoxSize?: ScannerSize;
19
18
  onScannerSizeChanged?: (size: ScannerSize) => void;
20
19
  onScanSuccess: (text: string) => void;
21
20
  onScanFailure?: () => void;
21
+ onCameraStartFailure?: (error: unknown) => void;
22
22
  };
23
23
  export declare const DEFAULT_CODE_FORMATS: CodeFormatsToSupport;
24
24
  export declare function getCodeScanBoxSize(width: number, height: number): {
25
25
  width: number;
26
26
  height: number;
27
27
  };
28
- export declare function useCodeScanner({ enabled, elementId, formatsToSupport, scanBoxSize, onScannerSizeChanged, onScanSuccess, onScanFailure, }: UseCodeScannerOptions): {
28
+ export declare function scanQrVideoFrame(video: HTMLVideoElement, canvas: HTMLCanvasElement): string;
29
+ export declare function useCodeScanner({ enabled, elementId, formatsToSupport, onScannerSizeChanged, onScanSuccess, onScanFailure, onCameraStartFailure, }: UseCodeScannerOptions): {
29
30
  startScanFile: (file: File) => Promise<void>;
30
31
  };
31
32
  export {};
@@ -10,11 +10,11 @@ import { type MetaTreeNode } from '@nocobase/flow-engine';
10
10
  import React from 'react';
11
11
  import { type VariableDelimiters } from './VariableInput';
12
12
  /**
13
- * Constant types this input can edit. Subset of v1 `Variable.Input`
14
- * `useTypedConstant` drops `'object'` (no v2 JSON editor yet) and `'null'`
15
- * (handled by the dedicated `nullable` prop).
13
+ * Constant types this input can edit. Matches v1 `Variable.Input`
14
+ * `useTypedConstant` minus `'null'` (handled by the dedicated `nullable` prop).
15
+ * `'object'` renders an inline JSON editor (textarea).
16
16
  */
17
- export type TypedConstantType = 'string' | 'number' | 'boolean' | 'date';
17
+ export type TypedConstantType = 'string' | 'number' | 'boolean' | 'date' | 'object';
18
18
  /**
19
19
  * One allowed constant type. Either a bare type name (`'number'`) or a
20
20
  * `[type, editorProps]` pair (`['number', { min: 1, max: 65535 }]`) where
@@ -33,25 +33,51 @@ export interface TypedVariableInputProps {
33
33
  * Allowed constant types. The `Constant` switcher entry always exposes a
34
34
  * typed submenu (matching v1 `Variable.Input`) so users can see what type
35
35
  * the constant is, even when only one type is permitted. Default: all four
36
- * supported types.
36
+ * supported types. Passing `[]` switches the component into a variable-only
37
+ * mode: constants/null are hidden, the empty state becomes a readonly
38
+ * placeholder, and clearing a selected variable resets to `null`.
37
39
  */
38
40
  types?: TypedConstantSpec[];
39
41
  /**
40
42
  * Restrict the variable picker to specific top-level meta-tree namespaces
41
43
  * (e.g. `['$env']`). When omitted, every registered top-level property is
42
44
  * exposed — matching `VariableInput`'s default behaviour.
45
+ *
46
+ * Ignored when `metaTree` is supplied (an explicit tree wins).
43
47
  */
44
48
  namespaces?: string[];
45
49
  /** Additional leaves appended to the picker after the namespace-filtered nodes. */
46
50
  extraNodes?: MetaTreeNode[];
51
+ /**
52
+ * Provide the variable tree explicitly instead of reading the global
53
+ * FlowContext meta tree. When set, `namespaces`/`extraNodes` are ignored and
54
+ * this tree is used verbatim — use for context-scoped variable sources that
55
+ * are not part of the global registry (e.g. a workflow node's upstream
56
+ * outputs). Lazy `children` thunks are resolved on demand as the user
57
+ * expands the cascader.
58
+ */
59
+ metaTree?: MetaTreeNode[];
47
60
  /**
48
61
  * When true (default), the switcher exposes a `Null` option that resets the
49
62
  * value to `null`. When false, the value is constrained to one of the
50
63
  * allowed types or a variable reference.
51
64
  */
52
65
  nullable?: boolean;
66
+ /**
67
+ * Opt-in: when the incoming `value` is `undefined`, initialize the editor to
68
+ * the first allowed constant type instead of rendering the null-mode
69
+ * placeholder. `null` still keeps its explicit null semantics; only
70
+ * `undefined` triggers this path.
71
+ */
72
+ defaultToFirstConstantTypeWhenUndefined?: boolean;
53
73
  /** Variable-token delimiters. Default `['{{', '}}']` — see `VariableInput`. */
54
74
  delimiters?: VariableDelimiters;
75
+ /**
76
+ * Hide variable choices from the switcher. In variable-only mode this hides
77
+ * the selector button entirely; in mixed constant/variable mode it keeps the
78
+ * null/constant choices but removes variable entries.
79
+ */
80
+ hideVariable?: boolean;
55
81
  disabled?: boolean;
56
82
  placeholder?: string;
57
83
  style?: React.CSSProperties;
@@ -15,6 +15,8 @@ export interface CollectionFilterProps {
15
15
  collection: Collection | undefined;
16
16
  /** Previously compiled filter param used to seed the editable filter group. */
17
17
  initialValue?: CompiledFilter;
18
+ /** Default compiled filter used both for initial empty state and Reset. */
19
+ defaultValue?: CompiledFilter;
18
20
  /** Called on Submit or Reset with the compiled NocoBase filter param (`undefined` when cleared). */
19
21
  onChange: (filter: CompiledFilter) => void;
20
22
  /** Translator. Defaults to identity. */
@@ -37,6 +37,16 @@ export interface CollectionFilterItemProps {
37
37
  app?: {
38
38
  getComponent?: (name: string) => React.ComponentType<any> | undefined;
39
39
  };
40
+ /** Optional override for the left field picker placeholder. */
41
+ fieldPlaceholder?: string;
42
+ /** Optional override for the operator picker placeholder. */
43
+ operatorPlaceholder?: string;
44
+ /** Optional override for the value input placeholder. Pass `null` to suppress it. */
45
+ valuePlaceholder?: string | null;
46
+ /** Optional override for the left field picker width. Defaults to v2's original 200px. */
47
+ fieldWidth?: number;
48
+ /** Optional override for the operator picker min-width. Defaults to v2's original 120px. */
49
+ operatorMinWidth?: number;
40
50
  }
41
51
  /**
42
52
  * Filter row bound directly to a `Collection`, with no `FlowModel` dependency. Use this from settings pages or other surfaces that need a filter UI but don't have (and shouldn't synthesise) a block model just to satisfy `FilterItem`. Pair with `FilterContainer` via either an inline wrapper or `createCollectionFilterItem(collection)`.
@@ -47,7 +57,7 @@ export declare const CollectionFilterItem: FC<CollectionFilterItemProps>;
47
57
  /**
48
58
  * Convenience factory returning a `FilterContainer`-compatible `FilterItem` component bound to a specific collection. Avoids creating an inline closure on every parent render, which would otherwise reset any focused inner antd control.
49
59
  */
50
- export declare function createCollectionFilterItem(collection: Collection, bound?: Pick<CollectionFilterItemProps, 'filterableFieldNames' | 'nonfilterableFieldNames' | 'noIgnore' | 't' | 'app'>): React.FC<{
60
+ export declare function createCollectionFilterItem(collection: Collection, bound?: Pick<CollectionFilterItemProps, 'filterableFieldNames' | 'nonfilterableFieldNames' | 'noIgnore' | 't' | 'app' | 'fieldPlaceholder' | 'operatorPlaceholder' | 'valuePlaceholder' | 'fieldWidth' | 'operatorMinWidth'>): React.FC<{
51
61
  value: CollectionFilterItemValue;
52
62
  }>;
53
63
  export default CollectionFilterItem;
@@ -18,6 +18,8 @@ export interface CollectionFilterPanelProps {
18
18
  collection: Collection | undefined;
19
19
  /** Previously compiled filter param used to seed the editable filter group. */
20
20
  initialValue?: CompiledFilter;
21
+ /** Default compiled filter used both for initial empty state and Reset. */
22
+ defaultValue?: CompiledFilter;
21
23
  /** Called when the condition group structure changes or `reset()` is invoked. */
22
24
  onChange?: (filter: CompiledFilter) => void;
23
25
  /** Translator. Defaults to identity. */
@@ -9,5 +9,7 @@
9
9
  export { CollectionFilter } from './CollectionFilter';
10
10
  export type { CollectionFilterProps } from './CollectionFilter';
11
11
  export { CollectionFilterPanel } from './CollectionFilterPanel';
12
+ export { CollectionFilterItem } from './CollectionFilterItem';
13
+ export type { CollectionFilterItemValue } from './CollectionFilterItem';
12
14
  export type { CollectionFilterPanelProps, CollectionFilterPanelRef } from './CollectionFilterPanel';
13
15
  export type { CompiledFilter } from './useFilterActionProps';
@@ -46,6 +46,8 @@ export interface UseFilterActionPropsArgs extends UseFilterOptionsArgs {
46
46
  collection: Collection | undefined;
47
47
  /** Previously compiled filter param used to seed the editable filter group. */
48
48
  initialValue?: CompiledFilter;
49
+ /** Default compiled filter used both for initial empty state and Reset. */
50
+ defaultValue?: CompiledFilter;
49
51
  /**
50
52
  * Called when the user submits or resets the filter popover. Receives the compiled filter param (`undefined` when cleared) and which footer button triggered the call. Typical implementation: `(filter, action) => { listRequest.run(filter); if (action === 'submit') closePopover(); }`.
51
53
  */
@@ -8,6 +8,7 @@
8
8
  */
9
9
  export * from './AppComponents';
10
10
  export * from './BlankComponent';
11
+ export * from './category-tabs';
11
12
  export * from './form/table/dnd';
12
13
  export * from './form';
13
14
  export * from './Icon';
@@ -35,7 +35,7 @@ export * from './formAssignRules';
35
35
  export * from './filterFormDefaultValues';
36
36
  export * from './linkageRulesRefresh';
37
37
  export * from './blockHeight';
38
- export { fieldLinkageRules, subFormFieldLinkageRules, detailsFieldLinkageRules, linkageSetDetailsFieldProps, actionLinkageRules, menuLinkageRules, blockLinkageRules, linkageSetBlockProps, linkageSetActionProps, linkageSetMenuItemProps, linkageSetFieldProps, subFormLinkageSetFieldProps, linkageAssignField, linkageRunjs, subFormLinkageAssignField, } from './linkageRules';
38
+ export { fieldLinkageRules, subFormFieldLinkageRules, detailsFieldLinkageRules, linkageSetDetailsFieldProps, actionLinkageRules, menuLinkageRules, tabLinkageRules, blockLinkageRules, linkageSetBlockProps, linkageSetActionProps, linkageSetMenuItemProps, linkageSetTabProps, linkageSetFieldProps, subFormLinkageSetFieldProps, linkageAssignField, linkageRunjs, subFormLinkageAssignField, } from './linkageRules';
39
39
  export { displayFieldComponent } from './displayFieldComponent';
40
40
  export * from './overflowMode';
41
41
  export * from './numberFormat';
@@ -7,9 +7,34 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  import { FlowContext, FlowModel } from '@nocobase/flow-engine';
10
+ export declare function updateLinkageRules<T>(rules: T[], updater: (nextRules: T[]) => void): T[];
10
11
  export declare const linkageSetBlockProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
12
+ declare const ACTION_LINKAGE_STATE_OPTIONS: readonly [{
13
+ readonly label: "Visible";
14
+ readonly value: "visible";
15
+ }, {
16
+ readonly label: "Hidden";
17
+ readonly value: "hidden";
18
+ }, {
19
+ readonly label: "Hidden text";
20
+ readonly value: "hiddenText";
21
+ }, {
22
+ readonly label: "Enabled";
23
+ readonly value: "enabled";
24
+ }, {
25
+ readonly label: "Disabled";
26
+ readonly value: "disabled";
27
+ }];
28
+ type ActionLinkageState = (typeof ACTION_LINKAGE_STATE_OPTIONS)[number]['value'];
29
+ export declare function getActionLinkageStateOptions(model: {
30
+ supportedActionLinkageStates?: readonly ActionLinkageState[];
31
+ }, t: (key: string) => string): {
32
+ label: string;
33
+ value: "hidden" | "visible" | "disabled" | "enabled" | "hiddenText";
34
+ }[];
11
35
  export declare const linkageSetActionProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
12
36
  export declare const linkageSetMenuItemProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
37
+ export declare const linkageSetTabProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
13
38
  export declare const linkageSetFieldProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
14
39
  export declare const subFormLinkageSetFieldProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
15
40
  export declare const linkageSetDetailsFieldProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
@@ -20,6 +45,8 @@ export declare const linkageRunjs: import("@nocobase/flow-engine").ActionDefinit
20
45
  export declare const blockLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
21
46
  export declare const actionLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
22
47
  export declare const menuLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
48
+ export declare const tabLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
23
49
  export declare const fieldLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
24
50
  export declare const subFormFieldLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
25
51
  export declare const detailsFieldLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
52
+ export {};
@@ -32,6 +32,7 @@ export declare class AdminLayoutMenuItemModel extends FlowModel<AdminLayoutMenuI
32
32
  buildRouteOptionsWithPersistedFlowFlag(hasPersistedMenuInstanceFlow: boolean): {
33
33
  [x: string]: any;
34
34
  hasPersistedMenuInstanceFlow?: boolean;
35
+ hasPersistedPageTabFlowModel?: boolean;
35
36
  };
36
37
  syncPersistedFlowRouteFlag(): Promise<void>;
37
38
  destroyPersistedState(): Promise<void>;
@@ -19,5 +19,6 @@ export interface FieldAssignExactDatePickerProps {
19
19
  isRange?: boolean;
20
20
  onChange?: (value: ExactDatePickerValue) => void;
21
21
  style?: React.CSSProperties;
22
+ disabled?: boolean;
22
23
  }
23
24
  export declare const FieldAssignExactDatePicker: React.FC<FieldAssignExactDatePickerProps>;
@@ -7,27 +7,8 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  import React from 'react';
10
- import { dayjs } from '@nocobase/utils/client';
11
- import { type CollectionField, type MetaTreeNode } from '@nocobase/flow-engine';
12
- import { type ExactDatePickerMode } from './FieldAssignExactDatePicker';
13
- export type DateVariableExactNormalizeMode = 'none' | 'date' | 'datetimeNoTz' | 'iso';
14
- export declare function toExactPickerDisplayValue(rawValue: unknown, options: {
15
- format: string;
16
- isRange: boolean;
17
- }): dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs] | null;
18
- export declare function normalizeDateVariableExactValue(rawValue: any, options: {
19
- exactNormalizeMode: DateVariableExactNormalizeMode;
20
- format: string;
21
- showTime: boolean;
22
- }): any;
23
- type DateVariableComponentProps = {
24
- picker: ExactDatePickerMode;
25
- showTime: boolean;
26
- timeFormat: string;
27
- format: string;
28
- exactNormalizeMode: DateVariableExactNormalizeMode;
29
- };
30
- export declare function normalizeDateVariableOutput(rawValue: any, options: DateVariableComponentProps): any;
10
+ import { type CollectionField, type MetaTreeNode, type VariableInputProps } from '@nocobase/flow-engine';
11
+ export { normalizeDateVariableExactValue, normalizeDateVariableOutput, toExactPickerDisplayValue, type DateVariableExactNormalizeMode, } from './field-value-variable';
31
12
  interface Props {
32
13
  /** 赋值目标路径,例如 `title` / `users.nickname` / `user.name` */
33
14
  targetPath: string;
@@ -48,11 +29,14 @@ interface Props {
48
29
  value?: string;
49
30
  };
50
31
  /**
51
- * 在日期字段场景下,用日期变量编辑器替换 Constant 位。
52
- * 默认 false,保持历史行为。
32
+ * @deprecated Date 已作为独立一级变量提供,此参数仅为调用兼容保留。
53
33
  */
54
34
  enableDateVariableAsConstant?: boolean;
35
+ /** 是否允许在变量选择器中使用 RunJS。默认 true,保持历史行为。 */
36
+ allowRunJS?: boolean;
55
37
  maxAssociationFieldDepth?: number;
38
+ disabled?: boolean;
39
+ variableConverters?: VariableInputProps['converters'];
56
40
  }
57
41
  export declare function mergeItemMetaTreeForAssignValue(baseTree: MetaTreeNode[], extraTree: MetaTreeNode[]): MetaTreeNode[];
58
42
  export declare function resolveAssignValueFieldPath(itemModel: any): string | undefined;
@@ -86,4 +70,3 @@ export declare function resolveAssignValueFieldModelConfig(options: {
86
70
  * - 支持变量引用,并提供 Constant / Null 两种快捷项
87
71
  */
88
72
  export declare const FieldAssignValueInput: React.FC<Props>;
89
- export {};
@@ -19,8 +19,8 @@ export type FlowRouteProps = {
19
19
  /**
20
20
  * 管理后台动态页面路由组件。
21
21
  *
22
- * 负责读取当前路由页面 UID,补充运行时设备变量,
23
- * 并把页面生命周期桥接到 AdminLayout host model。
22
+ * 负责读取当前路由页面 UID,并把页面生命周期桥接到 AdminLayout host model。
23
+ * 设备变量通常由 PluginFlowEngine 共享初始化提供;独立渲染时会在挂载后补充注册。
24
24
  *
25
25
  * @example
26
26
  * ```tsx
@@ -12,6 +12,7 @@ export interface RunJSValueEditorProps {
12
12
  t?: (key: string) => string;
13
13
  value?: unknown;
14
14
  onChange?: (value: RunJSValue) => void;
15
+ disabled?: boolean;
15
16
  height?: string;
16
17
  scene?: string;
17
18
  containerStyle?: React.CSSProperties;
@@ -0,0 +1,24 @@
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 CtxDateExpressionConfig } from '@nocobase/flow-engine';
10
+ import React from 'react';
11
+ import { type ExactDatePickerValue } from '../FieldAssignExactDatePicker';
12
+ import { type DateVariableComponentProps } from './dateValue';
13
+ export declare function getDefaultDateVariableFormat(config: CtxDateExpressionConfig): string;
14
+ export declare function serializeExactDatePickerValue(value: ExactDatePickerValue, showTime: boolean): string | [string, string];
15
+ type DateVariableEditorProps = {
16
+ value?: CtxDateExpressionConfig;
17
+ onChange?: (value: CtxDateExpressionConfig) => void;
18
+ isDateLikeField: boolean;
19
+ dateComponentProps: DateVariableComponentProps;
20
+ style?: React.CSSProperties;
21
+ disabled?: boolean;
22
+ };
23
+ export declare const DateVariableEditor: React.FC<DateVariableEditorProps>;
24
+ export {};
@@ -0,0 +1,31 @@
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 MetaTreeNode, type VariableInputProps } from '@nocobase/flow-engine';
10
+ import React from 'react';
11
+ import { type DateVariableComponentProps } from './dateValue';
12
+ type ValueEditorComponent = React.ComponentType<{
13
+ value?: unknown;
14
+ onChange?: (value: unknown) => void;
15
+ style?: React.CSSProperties;
16
+ disabled?: boolean;
17
+ }>;
18
+ export type FieldValueVariableInputProps = Omit<VariableInputProps, 'value' | 'onChange' | 'metaTree' | 'converters'> & {
19
+ value?: unknown;
20
+ onChange: (value: unknown) => void;
21
+ baseMetaTree: MetaTreeNode[] | (() => MetaTreeNode[] | Promise<MetaTreeNode[]>);
22
+ constantComponent: ValueEditorComponent;
23
+ nullComponent: ValueEditorComponent;
24
+ runJSComponent: ValueEditorComponent;
25
+ isDateLikeField: boolean;
26
+ dateComponentProps: DateVariableComponentProps;
27
+ allowRunJS?: boolean;
28
+ converters?: VariableInputProps['converters'];
29
+ };
30
+ export declare const FieldValueVariableInput: React.FC<FieldValueVariableInputProps>;
31
+ export {};
@@ -0,0 +1,36 @@
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 { dayjs } from '@nocobase/utils/client';
10
+ import type { ExactDatePickerMode } from '../FieldAssignExactDatePicker';
11
+ type DateFieldLike = {
12
+ interface?: unknown;
13
+ type?: unknown;
14
+ getComponentProps?: () => unknown;
15
+ uiSchema?: Record<string, unknown>;
16
+ };
17
+ export type DateVariableExactNormalizeMode = 'none' | 'date' | 'datetimeNoTz' | 'iso';
18
+ export type DateVariableComponentProps = {
19
+ picker: ExactDatePickerMode;
20
+ showTime: boolean;
21
+ timeFormat: string;
22
+ format: string;
23
+ exactNormalizeMode: DateVariableExactNormalizeMode;
24
+ };
25
+ export declare const DEFAULT_DATE_VARIABLE_COMPONENT_PROPS: DateVariableComponentProps;
26
+ export declare function getFieldInterface(field: DateFieldLike | null | undefined): string;
27
+ export declare function isDateLikeField(field: DateFieldLike | null | undefined, fallbackFieldName?: string, fallbackFieldInterface?: string): boolean;
28
+ export declare function resolveDateVariableComponentProps(field: DateFieldLike | null | undefined, fieldInterface?: string): DateVariableComponentProps;
29
+ export declare function normalizeDateVariableExactValue(rawValue: unknown, options: Pick<DateVariableComponentProps, 'format' | 'showTime' | 'exactNormalizeMode'>): unknown;
30
+ export declare function toExactPickerDisplayValue(rawValue: unknown, options: {
31
+ format: string;
32
+ isRange: boolean;
33
+ }): dayjs.Dayjs | [dayjs.Dayjs, dayjs.Dayjs] | null;
34
+ /** Compatibility helper retained for existing callers and tests. */
35
+ export declare function normalizeDateVariableOutput(rawValue: unknown, options: DateVariableComponentProps): unknown;
36
+ export {};
@@ -0,0 +1,11 @@
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 * from './dateValue';
10
+ export * from './DateVariableEditor';
11
+ export * from './FieldValueVariableInput';
@@ -25,6 +25,7 @@ interface FilterGroupProps {
25
25
  value: Record<string, any>;
26
26
  /** 自定义筛选项组件 */
27
27
  FilterItem?: React.FC<FilterItemProps>;
28
+ disabled?: boolean;
28
29
  closeIcon?: ReactNode;
29
30
  /** 是否显示边框 */
30
31
  showBorder?: boolean;
@@ -7,7 +7,7 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  import React from 'react';
10
- import { type MetaTreeNode, FlowModel } from '@nocobase/flow-engine';
10
+ import { type MetaTreeNode, type Converters, FlowModel } from '@nocobase/flow-engine';
11
11
  export interface VariableFilterItemValue {
12
12
  path: string;
13
13
  operator: string;
@@ -19,6 +19,7 @@ export interface VariableFilterItemProps {
19
19
  /** 筛选条件值对象 */
20
20
  value: VariableFilterItemValue;
21
21
  model: FlowModel;
22
+ disabled?: boolean;
22
23
  /**
23
24
  * 是否启用右侧 VariableInput(变量或静态值二合一)。
24
25
  * 默认 false:保持原有行为,右侧仅静态输入组件。
@@ -29,6 +30,10 @@ export interface VariableFilterItemProps {
29
30
  * 默认使用整棵 ctx 的 metaTree:model.context.getPropertyMetaTree()
30
31
  */
31
32
  rightMetaTree?: MetaTreeNode[] | (() => MetaTreeNode[] | Promise<MetaTreeNode[]>);
33
+ /**
34
+ * 右侧变量的领域转换器。常量和空值仍由 VariableFilterItem 处理,未匹配的值回退到 FlowEngine 默认转换器。
35
+ */
36
+ rightVariableConverters?: Pick<Converters, 'resolvePathFromValue' | 'resolveValueFromPath'>;
32
37
  ignoreFieldNames?: string[];
33
38
  maxAssociationFieldDepth?: number;
34
39
  }
@@ -9,3 +9,4 @@
9
9
  import React from 'react';
10
10
  export declare const BlockPlaceholder: () => React.JSX.Element;
11
11
  export declare function BlockDeletePlaceholder(): React.JSX.Element;
12
+ export declare function BlockResourceErrorPlaceholder(): React.JSX.Element;
@@ -21,6 +21,7 @@ export * from './FlowPage';
21
21
  export * from './models';
22
22
  export * from './utils';
23
23
  export * from './actions';
24
+ export { FieldAssignValueInput } from './components/FieldAssignValueInput';
24
25
  export * from './system-settings';
25
26
  export * from './admin-shell/admin-layout';
26
27
  export * from './admin-shell/BaseLayoutModel';
@@ -0,0 +1,10 @@
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 { FlowEngine } from '@nocobase/flow-engine';
10
+ export declare const registerDeviceTypeContext: (flowEngine: FlowEngine) => void;
@@ -15,7 +15,7 @@ type OperatorMeta = {
15
15
  };
16
16
  };
17
17
  type ComponentRegistry = {
18
- getComponent?: (name: string) => ComponentType<Record<string, unknown>> | undefined;
18
+ getComponent?: (name: string, isShowError?: boolean) => ComponentType<Record<string, unknown>> | undefined;
19
19
  };
20
20
  type OperatorComponentRenderOptions = {
21
21
  app?: ComponentRegistry;
@@ -29,7 +29,7 @@ export declare function pickOperatorStyle(value: unknown): CSSProperties | undef
29
29
  /**
30
30
  * 根据操作符的 schema 定位组件及其 props。
31
31
  */
32
- export declare function resolveOperatorComponent(app: ComponentRegistry | undefined, operator: string, operators?: OperatorMeta[]): {
32
+ export declare function resolveOperatorComponent(app: ComponentRegistry | undefined, operator: string, operators?: OperatorMeta[], isShowError?: boolean): {
33
33
  Comp: React.ComponentType<Record<string, unknown>>;
34
34
  props: Record<string, unknown>;
35
35
  };