@nocobase/client-v2 2.2.0-alpha.4 → 2.2.0-alpha.5
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.
- package/es/BaseApplication.d.ts +2 -0
- package/es/RouterManager.d.ts +15 -0
- package/es/entry-actions/EntryActionManager.d.ts +24 -0
- package/es/entry-actions/index.d.ts +9 -0
- package/es/flow/admin-shell/BaseLayoutModel.d.ts +6 -0
- package/es/flow/admin-shell/BaseLayoutRouteCoordinator.d.ts +7 -0
- package/es/flow/admin-shell/admin-layout/AppListRender.d.ts +2 -1
- package/es/flow/admin-shell/admin-layout/AppSwitcherActionPanelModel.d.ts +24 -0
- package/es/flow/admin-shell/admin-layout/index.d.ts +1 -0
- package/es/flow/admin-shell/admin-layout/useApplications.d.ts +7 -2
- package/es/flow/models/base/ActionModelCore.d.ts +2 -0
- package/es/flow/routeTransientInputArgs.d.ts +14 -0
- package/es/index.d.ts +4 -0
- package/es/index.mjs +178 -124
- package/es/utils/markdownSanitize.d.ts +11 -0
- package/lib/index.js +164 -110
- package/package.json +7 -7
- package/src/BaseApplication.tsx +2 -0
- package/src/RouterManager.tsx +142 -1
- package/src/__tests__/RouterManager.test.ts +125 -0
- package/src/entry-actions/EntryActionManager.ts +76 -0
- package/src/entry-actions/index.ts +10 -0
- package/src/flow/FlowPage.tsx +29 -2
- package/src/flow/__tests__/FlowPage.test.tsx +152 -25
- package/src/flow/__tests__/FlowRoute.test.tsx +547 -2
- package/src/flow/actions/__tests__/dataScopeFilter.test.ts +62 -0
- package/src/flow/actions/__tests__/openView.defineProps.route.test.tsx +80 -20
- package/src/flow/actions/dataScopeFilter.ts +10 -1
- package/src/flow/actions/openView.tsx +21 -1
- package/src/flow/admin-shell/BaseLayoutModel.tsx +111 -0
- package/src/flow/admin-shell/BaseLayoutRouteCoordinator.ts +184 -42
- package/src/flow/admin-shell/__tests__/AdminLayoutRouteCoordinator.test.ts +1016 -119
- package/src/flow/admin-shell/admin-layout/AdminLayoutComponent.tsx +41 -4
- package/src/flow/admin-shell/admin-layout/AppListRender.tsx +13 -2
- package/src/flow/admin-shell/admin-layout/AppSwitcherActionPanelModel.tsx +289 -0
- package/src/flow/admin-shell/admin-layout/__tests__/AdminLayoutModel.test.tsx +359 -2
- package/src/flow/admin-shell/admin-layout/__tests__/TopbarActionsBar.test.tsx +48 -0
- package/src/flow/admin-shell/admin-layout/index.ts +1 -0
- package/src/flow/admin-shell/admin-layout/useApplications.tsx +81 -12
- package/src/flow/common/Markdown/Display.tsx +14 -3
- package/src/flow/common/Markdown/Edit.tsx +19 -7
- package/src/flow/components/FlowRoute.tsx +128 -16
- package/src/flow/internal/components/Markdown/util.ts +2 -1
- package/src/flow/models/base/ActionModel.tsx +10 -8
- package/src/flow/models/base/ActionModelCore.tsx +5 -0
- package/src/flow/models/fields/TextareaFieldModel.tsx +42 -19
- package/src/flow/models/fields/__tests__/TextareaFieldModel.test.tsx +32 -1
- package/src/flow/models/topbar/TopbarActionModel.tsx +78 -3
- package/src/flow/routeTransientInputArgs.ts +27 -0
- package/src/index.ts +4 -0
- package/src/nocobase-buildin-plugin/index.tsx +7 -1
- package/src/utils/markdownSanitize.ts +88 -0
package/es/BaseApplication.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type { i18n as i18next } from 'i18next';
|
|
|
12
12
|
import React, { ReactElement, ReactNode } from 'react';
|
|
13
13
|
import type { AppListProps } from '@ant-design/pro-layout/es/components/AppsLogoComponents/types';
|
|
14
14
|
import { AIManager } from './ai';
|
|
15
|
+
import { EntryActionManager } from './entry-actions';
|
|
15
16
|
import { SystemSettingsSource } from './flow/system-settings';
|
|
16
17
|
import { LayoutManager } from './layout-manager/LayoutManager';
|
|
17
18
|
import type { PluginClass, PluginManager, PluginType } from './PluginManager';
|
|
@@ -75,6 +76,7 @@ export declare abstract class BaseApplication<TOptions extends BaseApplicationOp
|
|
|
75
76
|
pluginManager: TPluginManager;
|
|
76
77
|
pluginSettingsManager: TPluginSettingsManager;
|
|
77
78
|
layoutManager: LayoutManager<this>;
|
|
79
|
+
entryActionManager: EntryActionManager;
|
|
78
80
|
aiManager: AIManager;
|
|
79
81
|
devDynamicImport?: DevDynamicImport;
|
|
80
82
|
requirejs: RequireJS;
|
package/es/RouterManager.d.ts
CHANGED
|
@@ -40,9 +40,18 @@ export type RenderComponentType = (Component: ComponentTypeAndString, props?: an
|
|
|
40
40
|
export type RouterComponentType = React.FC<{
|
|
41
41
|
BaseLayout?: ComponentType;
|
|
42
42
|
}>;
|
|
43
|
+
type AdminRouteNavigationTarget = {
|
|
44
|
+
currentPathname?: string;
|
|
45
|
+
targetPathname: unknown;
|
|
46
|
+
basePath?: string;
|
|
47
|
+
adminRoutePath?: string;
|
|
48
|
+
replace?: boolean;
|
|
49
|
+
};
|
|
50
|
+
export declare function shouldOpenAdminRouteInNewWindow(options: AdminRouteNavigationTarget): boolean;
|
|
43
51
|
export declare class RouterManager<TApp extends BaseApplication<any> = BaseApplication<any>> {
|
|
44
52
|
protected routes: Record<string, RouteType>;
|
|
45
53
|
protected options: RouterOptions;
|
|
54
|
+
private routerNavigate?;
|
|
46
55
|
app: TApp;
|
|
47
56
|
router: Router;
|
|
48
57
|
get basename(): string;
|
|
@@ -52,6 +61,11 @@ export declare class RouterManager<TApp extends BaseApplication<any> = BaseAppli
|
|
|
52
61
|
(to: import("react-router").To, opts?: import("@remix-run/router").RouterNavigateOptions): Promise<void>;
|
|
53
62
|
};
|
|
54
63
|
constructor(options: RouterOptions, app: TApp);
|
|
64
|
+
private navigateWithPortalPolicy;
|
|
65
|
+
private shouldOpenAdminRouteInNewWindow;
|
|
66
|
+
private getRuntimeBasePath;
|
|
67
|
+
private getAdminRoutePath;
|
|
68
|
+
private getAdminRouteNavigationHref;
|
|
55
69
|
protected resolveLoadedComponent(moduleOrComponent: ComponentLoaderResult): ComponentTypeAndString | undefined;
|
|
56
70
|
protected createRouteLazyComponent(componentLoader: ComponentLoader): ComponentType;
|
|
57
71
|
/**
|
|
@@ -73,3 +87,4 @@ export declare class RouterManager<TApp extends BaseApplication<any> = BaseAppli
|
|
|
73
87
|
has(name: string): boolean;
|
|
74
88
|
remove(name: string): void;
|
|
75
89
|
}
|
|
90
|
+
export {};
|
|
@@ -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 FlowModelContext, type SubModelItem, type SubModelItemsType } from '@nocobase/flow-engine';
|
|
10
|
+
export type EntryActionScope = 'action-panel' | 'app-switcher' | string;
|
|
11
|
+
export type EntryActionProvider = (ctx: FlowModelContext) => SubModelItem[] | Promise<SubModelItem[]>;
|
|
12
|
+
export declare class EntryActionManager {
|
|
13
|
+
private readonly providers;
|
|
14
|
+
revision: number;
|
|
15
|
+
constructor();
|
|
16
|
+
register(name: string, options: {
|
|
17
|
+
scope: EntryActionScope;
|
|
18
|
+
provider: EntryActionProvider;
|
|
19
|
+
sort?: number;
|
|
20
|
+
}): void;
|
|
21
|
+
unregister(name: string): void;
|
|
22
|
+
invalidate(): void;
|
|
23
|
+
getItems(scope: EntryActionScope): SubModelItemsType;
|
|
24
|
+
}
|
|
@@ -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 './EntryActionManager';
|
|
@@ -41,6 +41,7 @@ export interface LayoutRouteLike {
|
|
|
41
41
|
id?: string;
|
|
42
42
|
name?: string;
|
|
43
43
|
pathname?: string;
|
|
44
|
+
state?: unknown;
|
|
44
45
|
params?: Record<string, string | undefined>;
|
|
45
46
|
layoutRouteName?: string;
|
|
46
47
|
layoutBasePathname?: string;
|
|
@@ -56,6 +57,7 @@ export declare class BaseLayoutModel<TStructure extends BaseLayoutStructure = Ba
|
|
|
56
57
|
currentLayoutRoute: LayoutRouteMatch | null;
|
|
57
58
|
protected routeCoordinator?: BaseLayoutRouteCoordinator;
|
|
58
59
|
private activePageUid;
|
|
60
|
+
private currentRouteState?;
|
|
59
61
|
private layoutContentElement;
|
|
60
62
|
private readonly routePageMetaMap;
|
|
61
63
|
private contextBindingsActive;
|
|
@@ -82,6 +84,10 @@ export declare class BaseLayoutModel<TStructure extends BaseLayoutStructure = Ba
|
|
|
82
84
|
private teardownRuntime;
|
|
83
85
|
private getCurrentRouteByActivePage;
|
|
84
86
|
private getCurrentCoordinatorRouteLike;
|
|
87
|
+
private restoreCurrentLayoutRouteFromRouterContext;
|
|
88
|
+
private shouldIgnoreStaleLayoutRouteCleanup;
|
|
89
|
+
private getRouterContextRouteLike;
|
|
90
|
+
private isRouteLikeOwnedByCurrentLayout;
|
|
85
91
|
}
|
|
86
92
|
/**
|
|
87
93
|
* 按固定 UID 获取或创建 Layout host model。
|
|
@@ -25,6 +25,7 @@ interface RouteLike {
|
|
|
25
25
|
name?: string;
|
|
26
26
|
};
|
|
27
27
|
pathname?: string;
|
|
28
|
+
state?: unknown;
|
|
28
29
|
pageUid?: string;
|
|
29
30
|
layoutBasePathname?: string;
|
|
30
31
|
layoutRoute?: {
|
|
@@ -46,6 +47,7 @@ export declare class BaseLayoutRouteCoordinator {
|
|
|
46
47
|
private basePathname;
|
|
47
48
|
private readonly runtimes;
|
|
48
49
|
private layoutContentElement;
|
|
50
|
+
private lastNonNullLayoutContentElement;
|
|
49
51
|
constructor(flowEngine: FlowEngine, options?: BaseLayoutRouteCoordinatorOptions);
|
|
50
52
|
setLayoutContentElement(element: HTMLElement | null): void;
|
|
51
53
|
registerPage(pageUid: string, meta: RoutePageMeta): RouteModel<import("@nocobase/flow-engine").DefaultStructure>;
|
|
@@ -62,6 +64,11 @@ export declare class BaseLayoutRouteCoordinator {
|
|
|
62
64
|
private shouldStepNavigate;
|
|
63
65
|
private scheduleInitialDeepLinkReplay;
|
|
64
66
|
private stepNavigate;
|
|
67
|
+
private replayActiveRuntimeViewsAfterLayoutContentElementChange;
|
|
68
|
+
private invalidatePendingRuntimeViewOpens;
|
|
69
|
+
private resetRuntimeViewStateForLayoutContentElementChange;
|
|
70
|
+
private markPendingOpenViews;
|
|
71
|
+
private clearPendingOpenViews;
|
|
65
72
|
private handleOpenViews;
|
|
66
73
|
private openViews;
|
|
67
74
|
private ensureRouteModelContext;
|
|
@@ -8,4 +8,5 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { AppListProps } from '@ant-design/pro-layout/es/components/AppsLogoComponents/types';
|
|
10
10
|
import React from 'react';
|
|
11
|
-
|
|
11
|
+
import type { AppSwitcherActionPanelModel } from './AppSwitcherActionPanelModel';
|
|
12
|
+
export declare function useAppListRender(appSwitcherModel?: AppSwitcherActionPanelModel): (appList: AppListProps) => React.JSX.Element;
|
|
@@ -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 { ActionModel } from '../../models/base';
|
|
10
|
+
import { FlowModel, type SubModelItemsType } from '@nocobase/flow-engine';
|
|
11
|
+
import React from 'react';
|
|
12
|
+
type AppSwitcherActionPanelStructure = {
|
|
13
|
+
subModels: {
|
|
14
|
+
actions?: ActionModel[];
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export declare class AppSwitcherActionPanelModel extends FlowModel<AppSwitcherActionPanelStructure> {
|
|
18
|
+
getConfigureActionsItems(): SubModelItemsType;
|
|
19
|
+
renderConfigureActions(): React.JSX.Element;
|
|
20
|
+
private getRenderableActions;
|
|
21
|
+
hasActions(): boolean;
|
|
22
|
+
renderContent(): React.JSX.Element;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export * from './AdminLayoutComponent';
|
|
10
10
|
export * from './AdminLayoutModel';
|
|
11
|
+
export * from './AppSwitcherActionPanelModel';
|
|
11
12
|
export * from '../BaseLayoutModel';
|
|
12
13
|
export * from '../BaseLayoutRouteCoordinator';
|
|
13
14
|
export * from './AdminLayoutSlotModels';
|
|
@@ -6,8 +6,13 @@
|
|
|
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 { AppListProps } from '@ant-design/pro-layout/es/components/AppsLogoComponents/types';
|
|
9
10
|
import React from 'react';
|
|
10
|
-
|
|
11
|
+
import type { AdminLayoutModel } from './AdminLayoutModel';
|
|
12
|
+
import type { AppSwitcherActionPanelModel } from './AppSwitcherActionPanelModel';
|
|
13
|
+
export declare const APP_SWITCHER_ACTION_PANEL_MODEL_UID: string;
|
|
14
|
+
export declare const useApplications: (adminLayoutModel?: AdminLayoutModel) => {
|
|
11
15
|
Component: React.JSXElementConstructor<any> | React.ExoticComponent<any>;
|
|
12
|
-
appList:
|
|
16
|
+
appList: AppListProps;
|
|
17
|
+
appSwitcherModel: AppSwitcherActionPanelModel;
|
|
13
18
|
};
|
|
@@ -30,6 +30,7 @@ export declare class ActionModel<T extends DefaultStructure = DefaultStructure>
|
|
|
30
30
|
enableEditTooltip: boolean;
|
|
31
31
|
enableEditTitle: boolean;
|
|
32
32
|
enableEditIcon: boolean;
|
|
33
|
+
enableEditIconOnly: boolean;
|
|
33
34
|
enableEditType: boolean;
|
|
34
35
|
enableEditDanger: boolean;
|
|
35
36
|
enableEditColor: boolean;
|
|
@@ -44,6 +45,7 @@ export declare class ActionModel<T extends DefaultStructure = DefaultStructure>
|
|
|
44
45
|
getInputArgs(): Record<string, any>;
|
|
45
46
|
onClick(event: any): void;
|
|
46
47
|
getTitle(): string;
|
|
48
|
+
getTitleFieldDescription(): any;
|
|
47
49
|
getIcon(): React.ReactNode;
|
|
48
50
|
renderButton(): React.JSX.Element;
|
|
49
51
|
render(): React.JSX.Element;
|
|
@@ -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>;
|
package/es/index.d.ts
CHANGED
|
@@ -38,7 +38,11 @@ export * from './collection-manager/filter-operators';
|
|
|
38
38
|
export * from './collection-manager/interfaces';
|
|
39
39
|
export * from './collection-manager/template-fields';
|
|
40
40
|
export * from './data-source';
|
|
41
|
+
export * from './entry-actions';
|
|
41
42
|
export * from './flow';
|
|
43
|
+
export { CodeEditorExtension } from './flow/components/code-editor/extension';
|
|
44
|
+
export type { CodeEditorExtra, CodeEditorExtraRegistry, EditorRef } from './flow/components/code-editor/types';
|
|
42
45
|
export { DEFAULT_DATA_SOURCE_KEY, IconPicker, isTitleField, isTitleFieldInterface, NocoBaseDesktopRouteType, } from './flow-compat';
|
|
43
46
|
export type { NocoBaseDesktopRoute } from './flow-compat';
|
|
47
|
+
export * from './utils/markdownSanitize';
|
|
44
48
|
export { default as AntdAppProvider } from './theme/AntdAppProvider';
|