@ximatai/muyun-web-app 0.26.10 → 0.26.12
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/dist/ModuleActionManagementView-BHEooZ5L.js +672 -0
- package/dist/ModuleGovernanceView-DB3TWlMy.js +28521 -0
- package/dist/RoleDetailWorkspaceView-D6X7pAj5.js +1379 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1929 -351
- package/dist/moduleGovernanceWorkspaceView-C5pqJOEJ.js +40 -0
- package/dist/platform-workbench-DJj42YQP.js +22911 -0
- package/dist/rolldown-runtime-DPVXH0ON.js +17 -0
- package/dist/types/app/CurrentUserProfileDialog.vue.d.ts +0 -2
- package/dist/types/app/LoginView.vue.d.ts +1 -1
- package/dist/types/app/workbenchRouteSync.d.ts +10 -1
- package/dist/types/app/workbenchSessionTabs.d.ts +22 -0
- package/dist/types/app/workbenchStartup.d.ts +7 -0
- package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +4 -1
- package/dist/types/consumer/index.d.ts +2 -1
- package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +1 -1
- package/dist/types/dynamic-page-runtime/ModulePageHost.vue.d.ts +12 -1
- package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +17 -0
- package/dist/types/dynamic-page-runtime/NavigatorPanelActions.vue.d.ts +22 -0
- package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +11 -11
- package/dist/types/dynamic-page-runtime/childAggregateContext.d.ts +11 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageDetailExtensionRuntime.d.ts +3 -1
- package/dist/types/dynamic-page-runtime/composables/useModulePageFormContributionRuntime.d.ts +5 -3
- package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +82 -28
- package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +1 -1
- package/dist/types/dynamic-page-runtime/formActionResult.d.ts +5 -0
- package/dist/types/dynamic-page-runtime/formComputeCoordinator.d.ts +7 -4
- package/dist/types/dynamic-page-runtime/formValidationCoordinator.d.ts +17 -0
- package/dist/types/dynamic-page-runtime/index.d.ts +1 -2
- package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +75 -1
- package/dist/types/dynamic-page-runtime/pageActionInvocation.d.ts +7 -0
- package/dist/types/dynamic-page-runtime/pageActionPlacement.d.ts +14 -0
- package/dist/types/dynamic-page-runtime/recordMutationPayload.d.ts +3 -0
- package/dist/types/formula/FormulaRuntime.d.ts +9 -0
- package/dist/types/{dynamic-page-runtime/DynamicModuleHost.vue.d.ts → platform-admin-runtime/module-menu/ModuleMenuDrawer.vue.d.ts} +2 -2
- package/dist/types/platform-admin-runtime/module-menu/ModuleMenuEntriesSection.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/module-menu/moduleMenuClient.d.ts +16 -0
- package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +2 -0
- package/dist/types/platform-admin-runtime/role/RoleAccountGrantDrawerSurface.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/role/RoleAuthorizationDrawerSurface.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/role/RoleEmploymentGrantDrawerSurface.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/role/RoleEnumTitleCell.vue.d.ts +8 -0
- package/dist/types/platform-admin-runtime/role/RoleGroupMemberFormField.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/role/RoleScopeTree.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/roleModulePageEnhancement.d.ts +7 -0
- package/dist/types/platform-components/AdaptiveHeaderActionBar.vue.d.ts +24 -0
- package/dist/types/platform-components/BusinessNotificationPanel.vue.d.ts +15 -1
- package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +9 -4
- package/dist/types/platform-components/DetailRelationListPanel.vue.d.ts +1 -1
- package/dist/types/platform-components/DrawerOperationBar.vue.d.ts +4 -2
- package/dist/types/platform-components/FormulaExpressionEditor.vue.d.ts +54 -0
- package/dist/types/platform-components/ManagementExplorerColumn.vue.d.ts +15 -3
- package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +5 -3
- package/dist/types/platform-components/ManagementWorkspace.vue.d.ts +11 -0
- package/dist/types/platform-components/ModuleActionButton.vue.d.ts +3 -3
- package/dist/types/platform-components/QueryGroupedSummary.vue.d.ts +21 -0
- package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +1 -0
- package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +2 -0
- package/dist/types/platform-components/RecordDetailFields.vue.d.ts +41 -2
- package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +8 -3
- package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +2 -0
- package/dist/types/platform-components/RecordExplorerCreateButton.vue.d.ts +16 -0
- package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +16 -5
- package/dist/types/platform-components/RecordFieldLabel.vue.d.ts +16 -0
- package/dist/types/platform-components/RecordFormFields.vue.d.ts +21 -2
- package/dist/types/platform-components/RecordFormGrid.vue.d.ts +24 -0
- package/dist/types/platform-components/RecordListExplorer.vue.d.ts +23 -1
- package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +2 -2
- package/dist/types/platform-components/RecordPanelButton.vue.d.ts +9 -3
- package/dist/types/platform-components/RecordPermissionDialog.vue.d.ts +15 -0
- package/dist/types/platform-components/RecordPicker.vue.d.ts +2 -2
- package/dist/types/platform-components/RecordQueryEnumFilter.vue.d.ts +17 -0
- package/dist/types/platform-components/RecordQueryListCell.vue.d.ts +12 -0
- package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +110 -64
- package/dist/types/platform-components/RecordQueryListSurface.vue.d.ts +124 -0
- package/dist/types/platform-components/RecordRelationTable.vue.d.ts +62 -0
- package/dist/types/platform-components/RecordRelationValue.vue.d.ts +9 -0
- package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +3 -3
- package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +2 -0
- package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +15 -4
- package/dist/types/platform-components/adaptiveHeaderActionLayout.d.ts +22 -0
- package/dist/types/platform-components/formulaExpressionTokens.d.ts +18 -0
- package/dist/types/platform-components/index.d.ts +20 -1
- package/dist/types/platform-components/managementExplorerContext.d.ts +11 -0
- package/dist/types/platform-components/managementWorkspaceContext.d.ts +20 -0
- package/dist/types/platform-components/managementWorkspaceLayout.d.ts +14 -0
- package/dist/types/platform-components/optionFieldOptionCache.d.ts +1 -1
- package/dist/types/platform-components/recordActionBarModel.d.ts +3 -0
- package/dist/types/platform-components/recordQueryListColumnModel.d.ts +42 -0
- package/dist/types/platform-components/scopedTreeModuleContext.d.ts +2 -2
- package/dist/types/platform-components/selectionRefresh.d.ts +9 -0
- package/dist/types/platform-components/sortPartitionKey.d.ts +5 -0
- package/dist/types/platform-components/staticTreeResourceModuleContext.d.ts +3 -3
- package/dist/types/platform-workbench/index.d.ts +2 -0
- package/dist/types/platform-workbench/useWorkspaceViewUnsavedState.d.ts +5 -0
- package/dist/types/platform-workbench/workbenchNavigation.d.ts +5 -1
- package/dist/types/platform-workbench/workspaceViewContract.d.ts +5 -0
- package/dist/types/platform-workbench/workspaceViewHost.d.ts +5 -0
- package/dist/types/platform-workbench/workspaceViewNavigation.d.ts +9 -0
- package/dist/types/platform-workbench/workspaceViewUnsavedState.d.ts +3 -0
- package/dist/types/views/BusinessRuleGovernanceSurface.vue.d.ts +10 -0
- package/dist/types/views/EmployeeEmploymentTable.vue.d.ts +5 -0
- package/dist/types/views/{UserDetailRouteView.vue.d.ts → MetadataGovernanceSurface.vue.d.ts} +3 -3
- package/dist/types/views/MetadataSourceTree.vue.d.ts +44 -0
- package/dist/types/views/ModuleBusinessPreview.vue.d.ts +7 -0
- package/dist/types/views/ModuleExperienceProfileOverview.vue.d.ts +7 -0
- package/dist/types/views/ModuleGovernanceView.vue.d.ts +9 -0
- package/dist/types/views/PageCompositionDescriptorPreview.vue.d.ts +54 -0
- package/dist/types/views/PageCompositionTree.vue.d.ts +103 -0
- package/dist/types/views/PageCompositionWorkspace.vue.d.ts +7 -0
- package/dist/types/views/PageQuerySummaryEditor.vue.d.ts +48 -0
- package/dist/types/views/RoleAccountGrantDrawer.vue.d.ts +6 -2
- package/dist/types/views/RoleAuthorizationView.vue.d.ts +7 -0
- package/dist/types/views/RoleEmploymentGrantDrawer.vue.d.ts +5 -1
- package/dist/types/views/businessRuleGovernance.d.ts +201 -0
- package/dist/types/views/metadataModelEditSession.d.ts +75 -0
- package/dist/types/views/metadataModelTree.d.ts +40 -0
- package/dist/types/views/metadataNaming.d.ts +7 -0
- package/dist/types/views/metadataOrchestrationState.d.ts +161 -6
- package/dist/types/views/metadataSourceTree.d.ts +10 -0
- package/dist/types/views/moduleGovernanceWorkspaceView.d.ts +9 -0
- package/dist/types/views/pageCompositionDraftState.d.ts +375 -0
- package/dist/types/views/pageCompositionDragPayload.d.ts +26 -0
- package/dist/types/views/pageCompositionMode.d.ts +86 -0
- package/dist/types/views/pageCompositionPlacement.d.ts +48 -0
- package/dist/types/views/pageCompositionTransport.d.ts +9 -0
- package/dist/types/views/roleGrantClient.d.ts +8 -5
- package/dist/types/views/usePageCompositionActionPreviewDrag.d.ts +41 -0
- package/dist/types/views/usePageCompositionPreviewDrag.d.ts +48 -0
- package/dist/types/vue-ui-antdv/components/UiActionButton.vue.d.ts +2 -2
- package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +6 -3
- package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +5 -2
- package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiPopover.vue.d.ts +22 -0
- package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +5 -1
- package/dist/types/vue-ui-antdv/components/UiSwitch.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiTable.vue.d.ts +1 -0
- package/dist/types/vue-ui-antdv/components/UiTextArea.vue.d.ts +38 -1
- package/dist/types/vue-ui-antdv/components/UiTokenInput.vue.d.ts +62 -0
- package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +76 -3
- package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/index.d.ts +6 -1
- package/dist/types/vue-ui-antdv/treeStructure.d.ts +18 -0
- package/dist/types/vue-ui-antdv/types.d.ts +70 -0
- package/dist/types/vue-ui-antdv/useTreeLoader.d.ts +21 -0
- package/dist/types/vue-ui-antdv/useTreeMotion.d.ts +9 -0
- package/dist/types/vue-ui-antdv/useUiTreeDrag.d.ts +32 -0
- package/dist/types/web-contracts/index.d.ts +75 -8
- package/dist/types/web-core/module/index.d.ts +1 -0
- package/dist/types/web-core/module/moduleContext.d.ts +15 -0
- package/dist/types/web-core/module/pageActionEntries.d.ts +21 -0
- package/dist/types/web-core/module/runtimeContext.d.ts +7 -3
- package/dist/types/web-core/module/staticModuleClient.d.ts +29 -6
- package/dist/workspaceViews-DI_1vYX9.js +3518 -0
- package/package.json +1 -1
- package/dist/MetadataOrchestrationView-BhtVwJII.js +0 -661
- package/dist/ModuleActionManagementView-DpZS-xAD.js +0 -597
- package/dist/RoleAuthorizationView-8lilhtMB.js +0 -646
- package/dist/RoleDetailWorkspaceView-CFha6JHn.js +0 -26
- package/dist/RoleManagementView-0_KDrzgh.js +0 -1948
- package/dist/platform-components-oRIsIoxu.js +0 -12371
- package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +0 -39
- package/dist/types/dynamic-page-runtime/dynamicModuleDetailStateModel.d.ts +0 -5
- package/dist/types/views/UserDetailContent.vue.d.ts +0 -32
- package/dist/types/views/UserManagementListView.vue.d.ts +0 -3
- package/dist/types/views/UserManagementView.vue.d.ts +0 -3
- package/dist/types/views/metadataOrchestrationWorkspaceView.d.ts +0 -6
- package/dist/types/views/useUserSessionRows.d.ts +0 -28
- package/dist/types/views/userDetailStateModel.d.ts +0 -9
- package/dist/types/views/userManagementRouteState.d.ts +0 -11
- package/dist/workspaceViews-D-RiJ64o.js +0 -9078
|
@@ -15,6 +15,7 @@ export type { UiRadioOption } from './components/UiRadioGroup.vue';
|
|
|
15
15
|
export { default as UiTreeSelect } from './components/UiTreeSelect.vue';
|
|
16
16
|
export type { UiTreeSelectNode } from './components/UiTreeSelect.vue';
|
|
17
17
|
export { default as UiTooltip } from './components/UiTooltip.vue';
|
|
18
|
+
export { default as UiPopover } from './components/UiPopover.vue';
|
|
18
19
|
export { default as UiThemeProvider } from './components/UiThemeProvider.vue';
|
|
19
20
|
export { default as UiSwitch } from './components/UiSwitch.vue';
|
|
20
21
|
export { default as UiMenu } from './components/UiMenu.vue';
|
|
@@ -42,4 +43,8 @@ export type { UiSidePanelScope } from './components/sidePanelHost';
|
|
|
42
43
|
export type { UiTagListItem } from './components/UiTagList.vue';
|
|
43
44
|
export { antDesignThemeOf, cssVariablesOf, defaultUiTheme, defaultUiThemeSkinId, uiThemeSkinById, uiThemeSkins, } from './theme';
|
|
44
45
|
export type { UiSupportTheme, UiTheme, UiThemeSkin, UiThemeSkinId, UiThemeTone } from './theme';
|
|
45
|
-
export type { UiConfirmOptions, UiDataTableColumn, UiDataTableKey, UiDataTablePagination, UiDataTableRecord, UiDataTableSelection, UiDropdownItem, UiMenuItem, UiRecordInlineAction, UiTabItem, UiTreeNode, UiTreeNodeAction, } from './types';
|
|
46
|
+
export type { UiConfirmOptions, UiDataTableColumn, UiDataTableKey, UiDataTablePagination, UiDataTableRecord, UiDataTableSelection, UiDropdownItem, UiMenuItem, UiRecordInlineAction, UiTabItem, UiTreeCheckEvent, UiTreeDisplayMode, UiTreeNodeEvent, UiDragSource, UiDropTarget, UiDropPosition, UiDropOperation, UiTreeBranchState, UiTreeLoadIntent, UiTreeChangeReason, UiTreeLoadReason, UiTreeLoadRequest, UiTreeLoadResult, UiTreeLoadStrategy, UiTreeNode, UiTreeNodeAction, UiTreeDropEvent, } from './types';
|
|
47
|
+
export { useUiDropTarget, useUiDragSource } from './useUiTreeDrag';
|
|
48
|
+
export { useTreeLoader as useTreeData } from './useTreeLoader';
|
|
49
|
+
export { default as UiTokenInput } from './components/UiTokenInput.vue';
|
|
50
|
+
export type { UiTokenInputToken } from './components/UiTokenInput.vue';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { UiTreeNode } from './types';
|
|
2
|
+
export interface TreeEntry {
|
|
3
|
+
node: UiTreeNode;
|
|
4
|
+
parent?: string;
|
|
5
|
+
index: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function indexTree(nodes: readonly UiTreeNode[], flat?: boolean): Map<string, TreeEntry>;
|
|
8
|
+
export declare function mergeTreePage(existing: UiTreeNode[], incoming: UiTreeNode[]): UiTreeNode[];
|
|
9
|
+
export type TreeChange = {
|
|
10
|
+
key: string;
|
|
11
|
+
kind: 'enter' | 'leave' | 'move' | 'reparent' | 'update';
|
|
12
|
+
};
|
|
13
|
+
export declare function treeSnapshot(nodes: UiTreeNode[], flat?: boolean): Map<string, {
|
|
14
|
+
parent: string | undefined;
|
|
15
|
+
index: number;
|
|
16
|
+
content: string;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function treeChanges(before: ReturnType<typeof treeSnapshot>, after: ReturnType<typeof treeSnapshot>): TreeChange[];
|
|
@@ -11,7 +11,11 @@ export interface UiDataTableColumn {
|
|
|
11
11
|
}
|
|
12
12
|
export interface UiDataTablePagination {
|
|
13
13
|
pageSize: number;
|
|
14
|
+
current?: number;
|
|
15
|
+
total?: number;
|
|
14
16
|
showSizeChanger?: boolean;
|
|
17
|
+
showQuickJumper?: boolean;
|
|
18
|
+
onChange?: (page: number, pageSize: number) => void;
|
|
15
19
|
}
|
|
16
20
|
export interface UiDataTableSelection {
|
|
17
21
|
selectedRowKeys: UiDataTableKey[];
|
|
@@ -43,6 +47,8 @@ export type UiTreeNodeAction = UiRecordInlineAction;
|
|
|
43
47
|
export interface UiTreeNode {
|
|
44
48
|
key: string;
|
|
45
49
|
title: string;
|
|
50
|
+
/** False keeps the node expandable before its children are loaded. */
|
|
51
|
+
isLeaf?: boolean;
|
|
46
52
|
disabled?: boolean;
|
|
47
53
|
secondary?: string;
|
|
48
54
|
tag?: string;
|
|
@@ -50,6 +56,70 @@ export interface UiTreeNode {
|
|
|
50
56
|
actions?: UiRecordInlineAction[];
|
|
51
57
|
children?: UiTreeNode[];
|
|
52
58
|
}
|
|
59
|
+
/** Adapter-neutral node activation event. The node remains a UI contract, not an Ant Tree node. */
|
|
60
|
+
export interface UiTreeNodeEvent {
|
|
61
|
+
node: UiTreeNode;
|
|
62
|
+
nativeEvent?: Event;
|
|
63
|
+
}
|
|
64
|
+
export type UiTreeDisplayMode = 'tree' | 'flat';
|
|
65
|
+
export interface UiTreeCheckEvent {
|
|
66
|
+
node: UiTreeNode;
|
|
67
|
+
checked: boolean;
|
|
68
|
+
checkedKeys: string[];
|
|
69
|
+
halfCheckedKeys: string[];
|
|
70
|
+
nativeEvent?: Event;
|
|
71
|
+
}
|
|
72
|
+
export type UiTreeLoadStrategy = 'managed' | 'controlled';
|
|
73
|
+
export type UiTreeLoadReason = 'expand' | 'refresh' | 'load-more';
|
|
74
|
+
export interface UiTreeLoadIntent {
|
|
75
|
+
node: UiTreeNode;
|
|
76
|
+
reason: UiTreeLoadReason;
|
|
77
|
+
cursor?: string;
|
|
78
|
+
}
|
|
79
|
+
/** Only the owner of the request creates and releases its cancellation signal. */
|
|
80
|
+
export interface UiTreeLoadRequest extends UiTreeLoadIntent {
|
|
81
|
+
requestId: string;
|
|
82
|
+
signal: AbortSignal;
|
|
83
|
+
}
|
|
84
|
+
export interface UiTreeLoadResult {
|
|
85
|
+
mode: 'replace' | 'append';
|
|
86
|
+
nodes: UiTreeNode[];
|
|
87
|
+
nextCursor?: string;
|
|
88
|
+
hasMore: boolean;
|
|
89
|
+
}
|
|
90
|
+
export interface UiTreeBranchState {
|
|
91
|
+
status: 'idle' | 'loading' | 'loaded' | 'error';
|
|
92
|
+
hasMore?: boolean;
|
|
93
|
+
cursor?: string;
|
|
94
|
+
error?: string;
|
|
95
|
+
failedRequest?: UiTreeLoadIntent;
|
|
96
|
+
}
|
|
97
|
+
export type UiDropPosition = 'before' | 'after' | 'inside';
|
|
98
|
+
export type UiDropOperation = 'copy' | 'move';
|
|
99
|
+
export interface UiDragSource {
|
|
100
|
+
instanceId: string;
|
|
101
|
+
node: UiTreeNode;
|
|
102
|
+
operations: readonly UiDropOperation[];
|
|
103
|
+
payload?: unknown;
|
|
104
|
+
payloadType?: string;
|
|
105
|
+
}
|
|
106
|
+
export type UiDropTarget = {
|
|
107
|
+
instanceId: string;
|
|
108
|
+
} & ({
|
|
109
|
+
kind: 'node';
|
|
110
|
+
node: UiTreeNode;
|
|
111
|
+
position: UiDropPosition;
|
|
112
|
+
} | {
|
|
113
|
+
kind: 'root';
|
|
114
|
+
position: 'inside';
|
|
115
|
+
});
|
|
116
|
+
export interface UiTreeDropEvent {
|
|
117
|
+
source: UiDragSource;
|
|
118
|
+
target: UiDropTarget;
|
|
119
|
+
operation: UiDropOperation;
|
|
120
|
+
nativeEvent?: Event;
|
|
121
|
+
}
|
|
122
|
+
export type UiTreeChangeReason = 'interaction' | 'filter' | 'reset';
|
|
53
123
|
export interface UiConfirmOptions {
|
|
54
124
|
title: string;
|
|
55
125
|
content?: string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { UiTreeNode, UiTreeLoadRequest, UiTreeLoadResult, UiTreeBranchState, UiTreeLoadIntent, UiTreeLoadReason } from './types';
|
|
2
|
+
interface Options {
|
|
3
|
+
nodes: () => UiTreeNode[];
|
|
4
|
+
controlled: () => boolean;
|
|
5
|
+
states: () => Readonly<Record<string, UiTreeBranchState>>;
|
|
6
|
+
loader: () => ((node: UiTreeNode, request: UiTreeLoadRequest) => Promise<UiTreeLoadResult>) | undefined;
|
|
7
|
+
version: () => unknown;
|
|
8
|
+
minimumDuration: () => number;
|
|
9
|
+
emit: (request: UiTreeLoadIntent) => void;
|
|
10
|
+
}
|
|
11
|
+
/** Managed requests and controlled intents never share cancellation or loaded bookkeeping. */
|
|
12
|
+
export declare function useTreeLoader(input: Pick<Options, 'nodes'> & Partial<Omit<Options, 'nodes'>>): {
|
|
13
|
+
nodes: import("vue").ComputedRef<UiTreeNode[]>;
|
|
14
|
+
states: import("vue").ComputedRef<Record<string, UiTreeBranchState>>;
|
|
15
|
+
stateOf: (key: string) => UiTreeBranchState;
|
|
16
|
+
request: (key: string, reason: UiTreeLoadReason, retry?: boolean) => Promise<void>;
|
|
17
|
+
release: (key: string) => void;
|
|
18
|
+
reset: () => void;
|
|
19
|
+
retry: (key: string) => Promise<void>;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
import type { UiTreeNode, UiTreeChangeReason } from './types';
|
|
3
|
+
export declare function useTreeMotion(root: Ref<HTMLElement | undefined>, options: {
|
|
4
|
+
nodes: () => UiTreeNode[];
|
|
5
|
+
flat: () => boolean;
|
|
6
|
+
enabled: () => boolean;
|
|
7
|
+
duration: () => number;
|
|
8
|
+
reason: () => UiTreeChangeReason;
|
|
9
|
+
}): Ref<boolean, boolean>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
import type { UiDragSource, UiDropPosition, UiDropTarget, UiTreeDropEvent, UiDropOperation } from './types';
|
|
3
|
+
interface Surface {
|
|
4
|
+
root: HTMLElement;
|
|
5
|
+
resolve: (origin: Element, y: number, position?: UiDropPosition, source?: UiDragSource, x?: number) => UiDropTarget | undefined;
|
|
6
|
+
allow: (event: UiTreeDropEvent) => boolean;
|
|
7
|
+
operation?: (source: UiDragSource) => UiDropOperation;
|
|
8
|
+
drop: (event: UiTreeDropEvent) => void;
|
|
9
|
+
feedback: (target?: UiDropTarget, rejected?: boolean) => void;
|
|
10
|
+
/**
|
|
11
|
+
* A canvas-like editor can opt into an intentional drag boundary: after the pointer has entered
|
|
12
|
+
* this surface, leaving it abandons the transient placement instead of carrying a stale drop
|
|
13
|
+
* candidate across unrelated controls.
|
|
14
|
+
*/
|
|
15
|
+
cancelWhenPointerLeaves?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const createUiTreeInstanceId: () => string;
|
|
18
|
+
/** Shared by trees, flat lists and non-tree drop surfaces. No browser payload leaks to consumers. */
|
|
19
|
+
export declare function useUiDropTarget(root: Ref<HTMLElement | undefined>, options: Omit<Surface, 'root' | 'feedback'>): {
|
|
20
|
+
hovered: import("vue").ShallowRef<UiDropTarget | undefined, UiDropTarget | undefined>;
|
|
21
|
+
rejected: Ref<boolean, boolean>;
|
|
22
|
+
draggingSource: import("vue").ComputedRef<UiDragSource | undefined>;
|
|
23
|
+
clear: () => void;
|
|
24
|
+
};
|
|
25
|
+
export declare function useUiDragSource(root: Ref<HTMLElement | undefined>, instanceId: string, source: (key: string) => UiDragSource | undefined, callbacks: {
|
|
26
|
+
start: (source: UiDragSource) => void;
|
|
27
|
+
end: (cancelled: boolean) => void;
|
|
28
|
+
}): {
|
|
29
|
+
begin: (key: string, event: MouseEvent | KeyboardEvent) => void;
|
|
30
|
+
draggingKey: import("vue").ComputedRef<string | undefined>;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
@@ -84,7 +84,12 @@ export interface WebBusinessNotification {
|
|
|
84
84
|
content: string;
|
|
85
85
|
dismissible: boolean;
|
|
86
86
|
actions: WebBusinessNotificationAction[];
|
|
87
|
+
/** Optional standard card accent. Omit it to use the neutral platform presentation. */
|
|
88
|
+
tone?: WebBusinessNotificationTone;
|
|
89
|
+
/** The business fact's occurrence time, displayed in the workbench time zone when supplied. */
|
|
90
|
+
occurredAt?: string;
|
|
87
91
|
}
|
|
92
|
+
export type WebBusinessNotificationTone = 'default' | 'success' | 'danger';
|
|
88
93
|
export type WebBusinessNotificationAction = WebBusinessNotificationNavigateAction | WebBusinessNotificationRecordAction;
|
|
89
94
|
export interface WebBusinessNotificationNavigateAction {
|
|
90
95
|
kind: 'navigate';
|
|
@@ -129,6 +134,8 @@ export interface WebTreeNode<T> {
|
|
|
129
134
|
* them to their own icon implementations.
|
|
130
135
|
*/
|
|
131
136
|
export interface RecordInlineAction {
|
|
137
|
+
/** Optional single-level menu, rendered in the same stable inline action slot. */
|
|
138
|
+
items?: Array<Pick<RecordInlineAction, 'key' | 'title' | 'disabled' | 'danger'>>;
|
|
132
139
|
key: string;
|
|
133
140
|
/** Standard record action whose availability is resolved for the rendered record. */
|
|
134
141
|
actionCode?: string;
|
|
@@ -140,7 +147,7 @@ export interface RecordInlineAction {
|
|
|
140
147
|
disabledReason?: string;
|
|
141
148
|
danger?: boolean;
|
|
142
149
|
}
|
|
143
|
-
export type RecordInlineActionIconName = 'app' | 'check' | 'close' | 'delete' | 'down' | 'edit' | 'export' | 'filter' | 'help' | 'lock' | 'notification' | 'plus' | 'power' | 'reload' | 'save' | 'search' | 'settings';
|
|
150
|
+
export type RecordInlineActionIconName = 'app' | 'check' | 'close' | 'delete' | 'down' | 'edit' | 'export' | 'eye' | 'eye-off' | 'filter' | 'help' | 'lock' | 'notification' | 'plus' | 'power' | 'reload' | 'save' | 'search' | 'settings';
|
|
144
151
|
export interface CurrentUser {
|
|
145
152
|
userId: string;
|
|
146
153
|
username?: string;
|
|
@@ -258,6 +265,8 @@ export interface PageBootstrapActionBlock {
|
|
|
258
265
|
key?: string;
|
|
259
266
|
actionCode: string;
|
|
260
267
|
title?: string;
|
|
268
|
+
/** Business importance only; card shells decide direct display or “更多”. */
|
|
269
|
+
importance?: 'PRIMARY' | 'STANDARD' | 'SECONDARY';
|
|
261
270
|
position?: string;
|
|
262
271
|
targetUiConfigId?: string;
|
|
263
272
|
submitPath?: string;
|
|
@@ -382,6 +391,8 @@ export interface ResolvedDetailRelationListField {
|
|
|
382
391
|
title?: string;
|
|
383
392
|
fieldForm?: string;
|
|
384
393
|
fieldUiControlAlias?: string;
|
|
394
|
+
/** Source-neutral scalar value fact used by relation previews and portable list renderers. */
|
|
395
|
+
valueType?: ViewFieldValueType | string;
|
|
385
396
|
width?: number;
|
|
386
397
|
align?: 'left' | 'center' | 'right' | string;
|
|
387
398
|
maxDisplayLines?: number;
|
|
@@ -626,6 +637,8 @@ export interface QuerySchemaField {
|
|
|
626
637
|
defaultOperator?: QueryOperator;
|
|
627
638
|
quickSearch?: boolean;
|
|
628
639
|
sortable?: boolean;
|
|
640
|
+
/** Explicit field-domain binding; distinguishes options from reference title companions. */
|
|
641
|
+
optionBinding?: OptionBindingDescriptor;
|
|
629
642
|
optionTitleField?: string;
|
|
630
643
|
}
|
|
631
644
|
export interface QuerySchemaQuickSearch {
|
|
@@ -665,7 +678,7 @@ export interface UiFormula {
|
|
|
665
678
|
/** Versioned program compiled by FormulaEngine. The browser executes it locally and never parses expression. */
|
|
666
679
|
export interface FormulaProgram {
|
|
667
680
|
schemaVersion: number;
|
|
668
|
-
profile: 'WEB_UI' | 'FORM_COMPUTE';
|
|
681
|
+
profile: 'WEB_UI' | 'PAGE_TEXT' | 'FORM_COMPUTE' | 'FORM_VALIDATION';
|
|
669
682
|
root: FormulaNode;
|
|
670
683
|
referencedFields: string[];
|
|
671
684
|
}
|
|
@@ -777,6 +790,8 @@ export interface ResolvedReferenceFieldDescriptor {
|
|
|
777
790
|
candidateDependencies?: ReferenceCandidateDependency[];
|
|
778
791
|
/** Read-side title projection for this scalar reference, when supplied by the server. */
|
|
779
792
|
titleField?: string;
|
|
793
|
+
/** Target fields mapped by metadata to read-only source-record display projections. */
|
|
794
|
+
displayProjections?: ResolvedReferenceDisplayProjectionDescriptor[];
|
|
780
795
|
/**
|
|
781
796
|
* Explicitly authorized target-field paths available after choosing this ONE reference.
|
|
782
797
|
* Paths are relative to this reference field; the form runtime prefixes them with the
|
|
@@ -791,6 +806,10 @@ export interface ResolvedReferenceFieldDescriptor {
|
|
|
791
806
|
export interface ResolvedReferenceSelectionProjectionDescriptor {
|
|
792
807
|
path: string[];
|
|
793
808
|
}
|
|
809
|
+
export interface ResolvedReferenceDisplayProjectionDescriptor {
|
|
810
|
+
targetField: string;
|
|
811
|
+
outputField: string;
|
|
812
|
+
}
|
|
794
813
|
export interface ReferenceCandidateDependency {
|
|
795
814
|
sourceField: string;
|
|
796
815
|
targetField: string;
|
|
@@ -832,6 +851,14 @@ export interface ResolvedFormComputeRuleDescriptor {
|
|
|
832
851
|
triggerFields: string[];
|
|
833
852
|
writePolicy: 'ALWAYS';
|
|
834
853
|
}
|
|
854
|
+
/** Server-issued browser pre-save validation; the server enforces the same rule on mutation. */
|
|
855
|
+
export interface ResolvedFormValidationRuleDescriptor {
|
|
856
|
+
code: string;
|
|
857
|
+
program: FormulaProgram;
|
|
858
|
+
inputFields: string[];
|
|
859
|
+
targetField?: string;
|
|
860
|
+
message: string;
|
|
861
|
+
}
|
|
835
862
|
export interface ResolvedViewDescriptor {
|
|
836
863
|
viewCode: string;
|
|
837
864
|
viewKind: ModuleViewKind;
|
|
@@ -842,6 +869,7 @@ export interface ResolvedViewDescriptor {
|
|
|
842
869
|
sourceUiConfigId?: string;
|
|
843
870
|
formGroups?: FormGroupDescriptor[];
|
|
844
871
|
formComputeRules?: ResolvedFormComputeRuleDescriptor[];
|
|
872
|
+
formValidationRules?: ResolvedFormValidationRuleDescriptor[];
|
|
845
873
|
}
|
|
846
874
|
export type ModulePageTemplate = 'FLAT_MANAGEMENT' | 'LIST_DETAIL_CARD' | 'TREE_MANAGEMENT';
|
|
847
875
|
export interface ResolvedPageExplorerDescriptor {
|
|
@@ -877,10 +905,10 @@ export interface ResolvedPageNavigatorLevelDescriptor {
|
|
|
877
905
|
*/
|
|
878
906
|
sourceScope?: 'NONE' | 'CURRENT_TENANT';
|
|
879
907
|
/** When present, the navigator source exposes its own standard CRUD affordances in place. */
|
|
880
|
-
management?: ResolvedPageNavigatorManagementDescriptor;
|
|
908
|
+
management?: ResolvedPageNavigatorManagementDescriptor | null;
|
|
881
909
|
}
|
|
882
910
|
export interface ResolvedPageContextBindingDescriptor {
|
|
883
|
-
source: 'SESSION' | 'NAVIGATOR';
|
|
911
|
+
source: 'SESSION' | 'NAVIGATOR' | 'RESOLVED_SELECTION';
|
|
884
912
|
sourceKey: string;
|
|
885
913
|
target: 'LIST_QUERY' | 'NAVIGATOR_QUERY' | 'FORM_DEFAULT' | 'PICKER_QUERY' | 'MUTATION_CONSTRAINT';
|
|
886
914
|
targetKey: string;
|
|
@@ -900,18 +928,29 @@ export interface ResolvedPageNavigatorManagementDescriptor {
|
|
|
900
928
|
export interface ResolvedPageListDescriptor {
|
|
901
929
|
searchPlaceholder: string;
|
|
902
930
|
fields: ResolvedViewDescriptor;
|
|
931
|
+
/** Main-content header copy; PAGE_TEXT programs run only against the host display context. */
|
|
932
|
+
title?: ResolvedPageTextDescriptor;
|
|
933
|
+
subtitle?: ResolvedPageTextDescriptor;
|
|
903
934
|
/** Read-only placements of declared aggregate relations beneath an expanded list row. */
|
|
904
935
|
relationExpansions?: ResolvedPageListRelationExpansionDescriptor[];
|
|
905
936
|
persistentQueryControls?: ResolvedPageListPersistentQueryControlDescriptor[];
|
|
906
937
|
querySummaries?: ResolvedPageListQuerySummaryDescriptor[];
|
|
907
938
|
}
|
|
939
|
+
export interface ResolvedPageTextDescriptor {
|
|
940
|
+
text?: string;
|
|
941
|
+
program?: FormulaProgram;
|
|
942
|
+
}
|
|
908
943
|
export interface ResolvedPageListQuerySummaryDescriptor {
|
|
909
944
|
key: string;
|
|
910
945
|
title: string;
|
|
911
|
-
source: 'MATCHED_COUNT' | 'CONTRIBUTOR';
|
|
946
|
+
source: 'MATCHED_COUNT' | 'SUM' | 'CONTRIBUTOR' | 'GROUPED';
|
|
947
|
+
fieldName?: string;
|
|
912
948
|
contributorKey?: string;
|
|
949
|
+
groupByField?: string;
|
|
950
|
+
groupByTitle?: string;
|
|
951
|
+
sumFieldTitle?: string;
|
|
913
952
|
}
|
|
914
|
-
/** A persistent boolean query control rendered
|
|
953
|
+
/** A persistent boolean query control rendered before search; advanced filtering follows search. */
|
|
915
954
|
export interface ResolvedPageListPersistentQueryControlDescriptor {
|
|
916
955
|
externalCriteriaKey: string;
|
|
917
956
|
title: string;
|
|
@@ -937,6 +976,8 @@ export interface ResolvedPageDetailWorkspaceViewDescriptor {
|
|
|
937
976
|
type: string;
|
|
938
977
|
}
|
|
939
978
|
export interface ResolvedModulePageDescriptor {
|
|
979
|
+
/** Omitted uses the module default; empty disables page quick search. */
|
|
980
|
+
quickSearchFields?: string[];
|
|
940
981
|
template: ModulePageTemplate;
|
|
941
982
|
explorer?: ResolvedPageExplorerDescriptor;
|
|
942
983
|
navigator?: ResolvedPageNavigatorDescriptor;
|
|
@@ -944,8 +985,24 @@ export interface ResolvedModulePageDescriptor {
|
|
|
944
985
|
/** Declared action-contribution tree rendered as the main TREE_MANAGEMENT resource. */
|
|
945
986
|
treeResource?: ResolvedPageTreeResourceDescriptor;
|
|
946
987
|
detail: ResolvedPageDetailDescriptor;
|
|
988
|
+
/** Actions placed only into platform-owned page regions. */
|
|
989
|
+
actions?: ResolvedPageActionDescriptor[];
|
|
990
|
+
managedActions?: boolean;
|
|
947
991
|
traits: ('STANDARD_CRUD' | 'ENABLED_STATUS' | 'RECYCLE_BIN' | 'RESPONSIVE_DETAIL_SURFACE')[];
|
|
948
992
|
}
|
|
993
|
+
/** Compiled transport for an action that explicitly supports a standard page surface. */
|
|
994
|
+
export interface PageActionInvocation {
|
|
995
|
+
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
996
|
+
path: string;
|
|
997
|
+
input: 'NONE' | 'FORM_RECORD';
|
|
998
|
+
}
|
|
999
|
+
export interface ResolvedPageActionDescriptor {
|
|
1000
|
+
title?: string;
|
|
1001
|
+
operation?: string;
|
|
1002
|
+
actionCode: string;
|
|
1003
|
+
anchor: 'PAGE' | 'DETAIL' | 'FORM';
|
|
1004
|
+
invocation?: PageActionInvocation;
|
|
1005
|
+
}
|
|
949
1006
|
export interface ResolvedPageTreeResourceDescriptor {
|
|
950
1007
|
resource: string;
|
|
951
1008
|
scopeNavigatorKey: string;
|
|
@@ -956,6 +1013,8 @@ export interface ResolvedPageTreeResourceDescriptor {
|
|
|
956
1013
|
title: string;
|
|
957
1014
|
emptyDescription: string;
|
|
958
1015
|
createTitle: string;
|
|
1016
|
+
/** Persisted fields that define the resource's own server-authoritative sort partition. */
|
|
1017
|
+
sortPartitionFields: string[];
|
|
959
1018
|
}
|
|
960
1019
|
export interface ResolvedUiActionConfirmationDescriptor {
|
|
961
1020
|
mode: 'typedText';
|
|
@@ -1261,6 +1320,8 @@ export interface PlatformModule extends StandardEnabledTreeEntity {
|
|
|
1261
1320
|
}
|
|
1262
1321
|
/** A governed operation exposed by one platform module. */
|
|
1263
1322
|
export interface PlatformModuleAction extends StandardEnabledSortableEntity {
|
|
1323
|
+
bindingPending?: boolean;
|
|
1324
|
+
formSupported?: boolean;
|
|
1264
1325
|
moduleAlias?: string;
|
|
1265
1326
|
actionCode?: string;
|
|
1266
1327
|
entityAlias?: string;
|
|
@@ -1316,7 +1377,8 @@ export interface ModuleMetadataRelation extends StandardSortableEntity {
|
|
|
1316
1377
|
moduleAlias?: string;
|
|
1317
1378
|
metadataId?: string;
|
|
1318
1379
|
relationAlias?: string;
|
|
1319
|
-
|
|
1380
|
+
/** Runtime APIs serialize Java code enums using their lower-case code; upper-case remains accepted for fixtures. */
|
|
1381
|
+
relationRole?: 'main' | 'child' | 'MAIN' | 'CHILD';
|
|
1320
1382
|
parentMetadataId?: string;
|
|
1321
1383
|
foreignKey?: string;
|
|
1322
1384
|
autoPopulate?: boolean;
|
|
@@ -1339,6 +1401,7 @@ export interface FieldSpec extends StandardEnabledSortableEntity {
|
|
|
1339
1401
|
queryOperators?: string[];
|
|
1340
1402
|
defaultUiControlAlias?: string;
|
|
1341
1403
|
uiControlAliases?: string[];
|
|
1404
|
+
safeTargetFieldSpecAliases?: string[];
|
|
1342
1405
|
}
|
|
1343
1406
|
export interface FieldUiControl extends StandardEnabledSortableEntity {
|
|
1344
1407
|
alias?: string;
|
|
@@ -1384,9 +1447,13 @@ export interface DictionaryItem extends StandardEnabledTreeEntity {
|
|
|
1384
1447
|
categoryAlias?: string;
|
|
1385
1448
|
code?: string;
|
|
1386
1449
|
}
|
|
1387
|
-
|
|
1450
|
+
/** Relative placement for a sortable flat record collection. */
|
|
1451
|
+
export interface SortRequest {
|
|
1388
1452
|
previousId?: string | null;
|
|
1389
1453
|
nextId?: string | null;
|
|
1454
|
+
}
|
|
1455
|
+
/** Relative placement for a sortable tree record collection. */
|
|
1456
|
+
export interface TreeSortRequest extends SortRequest {
|
|
1390
1457
|
parentId?: string | null;
|
|
1391
1458
|
}
|
|
1392
1459
|
export type FieldKind = 'input' | 'select' | 'dictionary-select' | 'reference-select';
|
|
@@ -4,3 +4,4 @@ export * from './staticModuleClient';
|
|
|
4
4
|
export type { ModuleActionState, ModuleRecordActionAvailability, ModuleRuntimeAction, ModuleRuntimeContext, ModuleRuntimeContextState, } from './runtimeContext';
|
|
5
5
|
export type { ModuleAbilityClients, ModuleAbilities } from './abilities';
|
|
6
6
|
export * from './moduleContext';
|
|
7
|
+
export * from './pageActionEntries';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type PropType } from 'vue';
|
|
1
2
|
import type { HttpClient } from '../http';
|
|
2
3
|
import { type ModuleAbilities } from './abilities';
|
|
3
4
|
import { type ModuleActionState, type ModuleRecordActionAvailability, type ModuleRuntimeAction, type ModuleRuntimeContextState } from './runtimeContext';
|
|
@@ -34,6 +35,20 @@ export declare function createModuleContext<TRecord>(options: ModuleContextOptio
|
|
|
34
35
|
export declare function createModuleTreeContext<TRecord>(options: ModuleContextOptions): ModuleTreeContext<TRecord>;
|
|
35
36
|
export declare function useModuleContext<TRecord>(options?: Partial<ModuleContextOptions>): ModuleContext<TRecord>;
|
|
36
37
|
export declare function useModuleTreeContext<TRecord>(options?: Partial<ModuleContextOptions>): ModuleTreeContext<TRecord>;
|
|
38
|
+
/** An immutable transport boundary; remount it to begin a separate business data session. */
|
|
39
|
+
export declare const ModuleHttpProvider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
40
|
+
http: {
|
|
41
|
+
type: PropType<HttpClient>;
|
|
42
|
+
required: true;
|
|
43
|
+
};
|
|
44
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
45
|
+
[key: string]: any;
|
|
46
|
+
}>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
47
|
+
http: {
|
|
48
|
+
type: PropType<HttpClient>;
|
|
49
|
+
required: true;
|
|
50
|
+
};
|
|
51
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
37
52
|
export declare const ModuleContextProvider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
38
53
|
moduleAlias: {
|
|
39
54
|
type: StringConstructor;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Shared interaction vocabulary for page design and business rendering. */
|
|
2
|
+
export declare function pageActionIntent(code: string, anchor: string): {
|
|
3
|
+
operation: string;
|
|
4
|
+
title: string;
|
|
5
|
+
mode?: "create" | "edit";
|
|
6
|
+
};
|
|
7
|
+
export declare function pageActionEntryTitle(entry: {
|
|
8
|
+
actionCode: string;
|
|
9
|
+
anchor: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
}): string;
|
|
12
|
+
export declare function pageActionEntryVisible(entry: {
|
|
13
|
+
actionCode: string;
|
|
14
|
+
anchor: string;
|
|
15
|
+
hidden?: boolean;
|
|
16
|
+
operation?: string;
|
|
17
|
+
}, mode: 'view' | 'create' | 'edit'): boolean;
|
|
18
|
+
export declare function pageActionEntryDescription(entry: {
|
|
19
|
+
actionCode: string;
|
|
20
|
+
anchor: string;
|
|
21
|
+
}): string;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type { ResolvedModuleUiDescriptor } from '../../web-contracts/index';
|
|
1
|
+
import type { PageActionInvocation, ResolvedModuleUiDescriptor } from '../../web-contracts/index';
|
|
2
2
|
import { type AppError } from '../errors';
|
|
3
3
|
import type { HttpClient } from '../http';
|
|
4
4
|
import type { ModuleAbilityCode } from './abilityCodes';
|
|
5
5
|
export interface ModuleRuntimeAction {
|
|
6
|
+
bindingPending?: boolean;
|
|
7
|
+
formSupported?: boolean;
|
|
8
|
+
invocations?: Partial<Record<'PAGE' | 'DETAIL' | 'FORM', PageActionInvocation>>;
|
|
6
9
|
actionCode: string;
|
|
7
10
|
permissionActionCode?: string;
|
|
8
11
|
title?: string;
|
|
@@ -38,6 +41,7 @@ export interface ModuleRecordActionDecision {
|
|
|
38
41
|
}
|
|
39
42
|
export interface ModuleRuntimeContext {
|
|
40
43
|
moduleAlias: string;
|
|
44
|
+
tenantRequired?: boolean;
|
|
41
45
|
title?: string;
|
|
42
46
|
moduleKind?: 'STATIC' | 'DYNAMIC';
|
|
43
47
|
entryType?: 'module' | 'route' | 'link';
|
|
@@ -45,10 +49,10 @@ export interface ModuleRuntimeContext {
|
|
|
45
49
|
entryExternalUrl?: string;
|
|
46
50
|
mainEntityAlias?: string;
|
|
47
51
|
capabilities: string[];
|
|
52
|
+
/** Persisted fields that define the server-authoritative sort partition. */
|
|
53
|
+
sortPartitionFields?: string[];
|
|
48
54
|
abilities?: string[];
|
|
49
55
|
actions: ModuleRuntimeAction[];
|
|
50
|
-
/** Read-only projections this module deliberately exposes for page navigation. */
|
|
51
|
-
navigatorSourceCapabilities?: Array<'REFERENCE_QUERY' | 'REFERENCE_TREE'>;
|
|
52
56
|
uiDescriptor?: ResolvedModuleUiDescriptor;
|
|
53
57
|
}
|
|
54
58
|
export interface ModuleRuntimeContextState {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TreeSortRequest, WebActionResultFacts, WebActionResultEnvelope, QuerySchema, WebListResponse, WebPageResponse, WebQueryRequest, WebTreeNode } from '../../web-contracts/index';
|
|
1
|
+
import type { SortRequest, TreeSortRequest, WebActionResultFacts, WebActionResultEnvelope, QuerySchema, WebListResponse, WebPageResponse, WebQueryRequest, WebTreeNode } from '../../web-contracts/index';
|
|
2
2
|
import type { HttpClient } from '../http';
|
|
3
3
|
export interface StaticRecordMutationResult<TRecord> extends WebActionResultFacts {
|
|
4
4
|
record: TRecord;
|
|
@@ -21,6 +21,8 @@ export interface ModuleCrudClient<TRecord> {
|
|
|
21
21
|
delete(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
|
|
22
22
|
enable(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
|
|
23
23
|
disable(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
|
|
24
|
+
/** Optional capability: plain CRUD consumers must not be forced to implement sorting. */
|
|
25
|
+
sort?(id: string, request: SortRequest): Promise<StaticCountMutationResult>;
|
|
24
26
|
}
|
|
25
27
|
/** Source-neutral tree extension for a platform module. */
|
|
26
28
|
export interface ModuleTreeClient<TRecord> extends ModuleCrudClient<TRecord> {
|
|
@@ -32,7 +34,12 @@ export interface ModuleTreeClient<TRecord> extends ModuleCrudClient<TRecord> {
|
|
|
32
34
|
subtree(id: string, options?: {
|
|
33
35
|
includeSelf?: boolean;
|
|
34
36
|
}): Promise<WebListResponse<WebTreeNode<TRecord>>>;
|
|
35
|
-
sort(id: string, request: TreeSortRequest): Promise<StaticCountMutationResult>;
|
|
37
|
+
sort(id: string, request: TreeSortRequest, options?: TreeSortOptions): Promise<StaticCountMutationResult>;
|
|
38
|
+
}
|
|
39
|
+
export interface TreeSortOptions {
|
|
40
|
+
externalQueryValues?: Record<string, unknown>;
|
|
41
|
+
navigatorHostModuleAlias?: string;
|
|
42
|
+
navigatorTargetLevelKey?: string;
|
|
36
43
|
}
|
|
37
44
|
export interface ModuleEnableClient {
|
|
38
45
|
enable(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
|
|
@@ -75,11 +82,27 @@ export interface NavigatorReferenceRequestContext {
|
|
|
75
82
|
targetLevelKey: string;
|
|
76
83
|
}
|
|
77
84
|
export declare function createStaticResourceTreeClient<TRecord>(http: HttpClient, resourcePath: string): ModuleTreeClient<TRecord>;
|
|
78
|
-
/** @deprecated Use ModuleCrudClient.
|
|
85
|
+
/** @deprecated Use ModuleCrudClient. Retained for published consumer compatibility. */
|
|
79
86
|
export type StaticModuleCrudClient<TRecord> = ModuleCrudClient<TRecord>;
|
|
80
|
-
/** @deprecated Use ModuleTreeClient.
|
|
87
|
+
/** @deprecated Use ModuleTreeClient. Retained for published consumer compatibility. */
|
|
81
88
|
export type StaticModuleTreeClient<TRecord> = ModuleTreeClient<TRecord>;
|
|
82
|
-
/** @deprecated Use createModuleCrudClient.
|
|
89
|
+
/** @deprecated Use createModuleCrudClient. Retained for published consumer compatibility. */
|
|
83
90
|
export declare const createStaticModuleCrudClient: typeof createModuleCrudClient;
|
|
84
|
-
/** @deprecated Use createModuleTreeClient.
|
|
91
|
+
/** @deprecated Use createModuleTreeClient. Retained for published consumer compatibility. */
|
|
85
92
|
export declare const createStaticModuleTreeClient: typeof createModuleTreeClient;
|
|
93
|
+
/**
|
|
94
|
+
* Dynamic records use a typed `{ id, version, values, children }` wire envelope while static
|
|
95
|
+
* records already publish their fields at the root. The shared module client is the only place
|
|
96
|
+
* that should bridge this transport difference: every page surface then consumes one flat record
|
|
97
|
+
* contract, including aggregate children, and submits that same accepted shape back to the
|
|
98
|
+
* dynamic deserializer.
|
|
99
|
+
*/
|
|
100
|
+
export declare function normalizeModuleRecord<TRecord>(record: TRecord): TRecord;
|
|
101
|
+
/**
|
|
102
|
+
* Normalizes a page response at the source-neutral module transport boundary.
|
|
103
|
+
*
|
|
104
|
+
* <p>Association query contracts use their server-issued route directly instead of the standard
|
|
105
|
+
* module CRUD path, but they still return the same dynamic record envelope. Keeping this helper
|
|
106
|
+
* public lets those descriptor-driven surfaces reuse the one normalization rule.</p>
|
|
107
|
+
*/
|
|
108
|
+
export declare function normalizeModulePageResponse<TRecord>(response: WebPageResponse<TRecord>): WebPageResponse<TRecord>;
|