@nocobase/client-v2 2.2.0-alpha.8 → 2.2.0-alpha.9

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 (41) hide show
  1. package/es/APIClient.d.ts +1 -3
  2. package/es/components/form/ScanInput/useCodeScanner.d.ts +2 -1
  3. package/es/flow/actions/index.d.ts +1 -1
  4. package/es/flow/actions/linkageRules.d.ts +2 -0
  5. package/es/flow/admin-shell/admin-layout/AdminLayoutMenuModels.d.ts +1 -0
  6. package/es/flow/components/filter/VariableFilterItem.d.ts +5 -1
  7. package/es/flow/models/base/PageModel/PageModel.d.ts +12 -0
  8. package/es/flow/models/base/PageModel/PageModelTabBar.d.ts +22 -0
  9. package/es/flow/models/base/PageModel/PageTabModel.d.ts +12 -0
  10. package/es/flow-compat/fieldValidationConstants.d.ts +1 -1
  11. package/es/flow-compat/routeTypes.d.ts +1 -0
  12. package/es/index.mjs +103 -102
  13. package/lib/index.js +117 -116
  14. package/lib/locale/languageCodes.js +2 -1
  15. package/package.json +7 -7
  16. package/src/APIClient.ts +1 -10
  17. package/src/Application.tsx +4 -0
  18. package/src/__tests__/app.test.tsx +18 -0
  19. package/src/__tests__/nocobase-buildin-plugin-auth.test.tsx +28 -0
  20. package/src/collection-manager/field-validation.ts +1 -1
  21. package/src/components/form/ScanInput/CodeScanner.tsx +23 -6
  22. package/src/components/form/ScanInput/__tests__/useCodeScanner.test.tsx +35 -1
  23. package/src/components/form/ScanInput/useCodeScanner.ts +16 -3
  24. package/src/flow/actions/__tests__/linkageRules.tab.test.ts +171 -0
  25. package/src/flow/actions/index.ts +2 -0
  26. package/src/flow/actions/linkageRules.tsx +86 -11
  27. package/src/flow/components/filter/VariableFilterItem.tsx +20 -5
  28. package/src/flow/components/filter/__tests__/VariableFilterItem.test.tsx +49 -1
  29. package/src/flow/models/base/PageModel/PageModel.tsx +387 -53
  30. package/src/flow/models/base/PageModel/PageModelTabBar.tsx +114 -0
  31. package/src/flow/models/base/PageModel/PageTabModel.tsx +184 -3
  32. package/src/flow/models/base/PageModel/__tests__/PageModel.test.ts +790 -10
  33. package/src/flow/models/base/PageModel/__tests__/PageModelTabBar.module-isolation.test.tsx +130 -0
  34. package/src/flow/models/base/PageModel/__tests__/PageModelTabBar.test.tsx +118 -0
  35. package/src/flow/models/base/PageModel/__tests__/PageTabModel.test.ts +572 -1
  36. package/src/flow/models/blocks/table/TableBlockModel.tsx +1 -1
  37. package/src/flow/models/fields/AssociationFieldModel/PopupSubTableFieldModel/PopupSubTableFieldModel.tsx +1 -1
  38. package/src/flow-compat/fieldValidationConstants.ts +1 -1
  39. package/src/flow-compat/routeTypes.ts +1 -0
  40. package/src/locale/languageCodes.ts +2 -1
  41. package/src/nocobase-buildin-plugin/index.tsx +12 -0
package/es/APIClient.d.ts CHANGED
@@ -6,10 +6,8 @@
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
10
  export declare class APIClient extends APIClientSDK {
11
- appName?: string;
12
- constructor(options?: APIClientOptions);
13
11
  getHostname(): string;
14
12
  getHeaders(): {};
15
13
  interceptors(): void;
@@ -19,13 +19,14 @@ type UseCodeScannerOptions = {
19
19
  onScannerSizeChanged?: (size: ScannerSize) => void;
20
20
  onScanSuccess: (text: string) => void;
21
21
  onScanFailure?: () => void;
22
+ onCameraStartFailure?: (error: unknown) => void;
22
23
  };
23
24
  export declare const DEFAULT_CODE_FORMATS: CodeFormatsToSupport;
24
25
  export declare function getCodeScanBoxSize(width: number, height: number): {
25
26
  width: number;
26
27
  height: number;
27
28
  };
28
- export declare function useCodeScanner({ enabled, elementId, formatsToSupport, scanBoxSize, onScannerSizeChanged, onScanSuccess, onScanFailure, }: UseCodeScannerOptions): {
29
+ export declare function useCodeScanner({ enabled, elementId, formatsToSupport, scanBoxSize, onScannerSizeChanged, onScanSuccess, onScanFailure, onCameraStartFailure, }: UseCodeScannerOptions): {
29
30
  startScanFile: (file: File) => Promise<void>;
30
31
  };
31
32
  export {};
@@ -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';
@@ -10,6 +10,7 @@ import { FlowContext, FlowModel } from '@nocobase/flow-engine';
10
10
  export declare const linkageSetBlockProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
11
11
  export declare const linkageSetActionProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
12
12
  export declare const linkageSetMenuItemProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
13
+ export declare const linkageSetTabProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
13
14
  export declare const linkageSetFieldProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
14
15
  export declare const subFormLinkageSetFieldProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
15
16
  export declare const linkageSetDetailsFieldProps: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
@@ -20,6 +21,7 @@ export declare const linkageRunjs: import("@nocobase/flow-engine").ActionDefinit
20
21
  export declare const blockLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
21
22
  export declare const actionLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
22
23
  export declare const menuLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
24
+ export declare const tabLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
23
25
  export declare const fieldLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
24
26
  export declare const subFormFieldLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
25
27
  export declare const detailsFieldLinkageRules: import("@nocobase/flow-engine").ActionDefinition<FlowModel<import("@nocobase/flow-engine").DefaultStructure>, FlowContext>;
@@ -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>;
@@ -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;
@@ -30,6 +30,10 @@ export interface VariableFilterItemProps {
30
30
  * 默认使用整棵 ctx 的 metaTree:model.context.getPropertyMetaTree()
31
31
  */
32
32
  rightMetaTree?: MetaTreeNode[] | (() => MetaTreeNode[] | Promise<MetaTreeNode[]>);
33
+ /**
34
+ * 右侧变量的领域转换器。常量和空值仍由 VariableFilterItem 处理,未匹配的值回退到 FlowEngine 默认转换器。
35
+ */
36
+ rightVariableConverters?: Pick<Converters, 'resolvePathFromValue' | 'resolveValueFromPath'>;
33
37
  ignoreFieldNames?: string[];
34
38
  maxAssociationFieldDepth?: number;
35
39
  }
@@ -26,11 +26,23 @@ export declare class PageModel extends FlowModel<PageModelStructure> {
26
26
  private dirtyRefreshScheduled;
27
27
  private unmounted;
28
28
  private documentTitleUpdateVersion;
29
+ private implicitActiveKey?;
30
+ private locallyCommittedTabTransition?;
29
31
  /**
30
32
  * 根页面标签页开关以路由表为准,避免 flow model 里的旧配置覆盖路由管理设置。
31
33
  */
32
34
  private getEnableTabs;
35
+ private getAllTabs;
36
+ private getUnhiddenTabs;
37
+ private getRequestedTabKey;
38
+ private resolveTabActiveState;
33
39
  private getActiveTabKey;
40
+ private getTabActiveKeySyncDependency;
41
+ private requestDocumentTitleUpdate;
42
+ private rememberImplicitActiveKey;
43
+ private commitTabActiveKey;
44
+ private consumeLocallyCommittedTabTransition;
45
+ private synchronizeTabActiveKey;
34
46
  private scheduleActiveLifecycleRefresh;
35
47
  activateCurrentTab(forceRefresh?: boolean): void;
36
48
  deactivateCurrentTab(): void;
@@ -0,0 +1,22 @@
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 { Tabs } from 'antd';
10
+ import type { TabsProps } from 'antd';
11
+ import React from 'react';
12
+ export declare const NO_ACTIVE_PAGE_TAB_KEY = "__no_active_page_tab__";
13
+ type RenderTabBar = NonNullable<React.ComponentProps<typeof Tabs>['renderTabBar']>;
14
+ type PageTabItem = NonNullable<TabsProps['items']>[number];
15
+ type FilteredPageTabBarProps = {
16
+ hiddenTabKeys: Set<string>;
17
+ hiddenActiveTabLabel?: React.ReactNode;
18
+ items: PageTabItem[];
19
+ tabBarProps: Parameters<RenderTabBar>[0];
20
+ };
21
+ export declare function FilteredPageTabBar({ hiddenTabKeys, hiddenActiveTabLabel, items, tabBarProps, }: FilteredPageTabBarProps): React.JSX.Element;
22
+ export {};
@@ -22,9 +22,21 @@ export declare class BasePageTabModel extends FlowModel<{
22
22
  render(): React.JSX.Element;
23
23
  }
24
24
  export declare class RootPageTabModel extends BasePageTabModel {
25
+ private persistedLinkageRulesHydrated;
26
+ private persistedLinkageRulesHydrating?;
27
+ onInit(options: any): void;
28
+ private hasExplicitLinkageRulesStep;
29
+ private shouldHydratePersistedLinkageRules;
30
+ private fetchPersistedAnchor;
31
+ private performPersistedLinkageRulesHydrate;
32
+ private hydratePersistedLinkageRules;
33
+ openFlowSettings(options?: Parameters<FlowModel['openFlowSettings']>[0]): Promise<boolean>;
25
34
  renderChildren(): React.JSX.Element;
26
35
  saveStepParams(): Promise<void>;
27
36
  save(): Promise<void>;
37
+ private buildAnchorPayload;
38
+ private persistLinkageRulesToAnchor;
39
+ private syncPersistedPageTabFlowModelMarker;
28
40
  destroy(): Promise<boolean>;
29
41
  }
30
42
  export declare class ChildPageTabModel extends BasePageTabModel {
@@ -277,7 +277,7 @@ export declare const FIELDS_VALIDATION_OPTIONS: {
277
277
  }];
278
278
  }, {
279
279
  readonly key: "multiple";
280
- readonly label: "Multiple";
280
+ readonly label: "Multiple of";
281
281
  readonly hasValue: true;
282
282
  readonly params: readonly [{
283
283
  readonly key: "base";
@@ -16,6 +16,7 @@ export declare enum NocoBaseDesktopRouteType {
16
16
  }
17
17
  export interface NocoBaseDesktopRouteOptions {
18
18
  hasPersistedMenuInstanceFlow?: boolean;
19
+ hasPersistedPageTabFlowModel?: boolean;
19
20
  [key: string]: any;
20
21
  }
21
22
  export interface NocoBaseDesktopRoute {