@ximatai/muyun-web-app 0.26.8 → 0.26.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.
- package/dist/DictionaryManagementView-CtIQpqVA.js +1035 -0
- package/dist/MenuManagementView-DJhkN2sG.js +837 -0
- package/dist/{MetadataOrchestrationView-DKYVGMzy.js → MetadataOrchestrationView-CzhAgEdX.js} +211 -205
- package/dist/{ModuleActionManagementView-DiVzuPdu.js → ModuleActionManagementView-CM2d8jPO.js} +72 -72
- package/dist/{RoleAuthorizationView-C0s4Bog7.js → RoleAuthorizationView-jn_WUCeg.js} +228 -221
- package/dist/{RoleDetailWorkspaceView-dqHxKVfd.js → RoleDetailWorkspaceView-CzaQ3Dz1.js} +1 -1
- package/dist/RoleManagementView-nY7qu4GF.js +1951 -0
- package/dist/{SystemUserDetailWorkspaceView-CQ9WeLrR.js → SystemUserDetailWorkspaceView-CBvqmWvP.js} +1 -1
- package/dist/SystemUserManagementView-AEomKvK7.js +887 -0
- package/dist/currentUserContext-B1lj1WgF.js +11 -0
- package/dist/index.css +1 -1
- package/dist/index.js +531 -4402
- package/dist/{platform-components-CFU_zR7-.js → platform-components-CIi6GdC9.js} +4832 -3453
- package/dist/types/App.vue.d.ts +1 -0
- package/dist/types/app/StaticRoutePageHost.vue.d.ts +11 -0
- package/dist/types/app/loginTenant.d.ts +1 -1
- package/dist/types/app/menuRouteCompiler.d.ts +45 -0
- package/dist/types/app/menuRouteRuntime.d.ts +24 -0
- package/dist/types/app/pageRouteContext.d.ts +24 -0
- package/dist/types/app/routeDiagnosticsStore.d.ts +10 -0
- package/dist/types/app/router.d.ts +15 -0
- package/dist/types/app/staticRouteDefinitions.d.ts +25 -0
- package/dist/types/app/workbenchRouteSync.d.ts +1 -1
- package/dist/types/app/workbenchStartup.d.ts +3 -3
- package/dist/types/consumer/index.d.ts +5 -3
- package/dist/types/dynamic-page-runtime/DynamicModuleHost.vue.d.ts +3 -10
- package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +4 -3
- package/dist/types/dynamic-page-runtime/ManagedDetailRelationInlineSurface.vue.d.ts +40 -0
- package/dist/types/dynamic-page-runtime/ManagedDetailRelationSurface.vue.d.ts +14 -0
- package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +26 -0
- package/dist/types/dynamic-page-runtime/ModulePageFormContributionRenderer.vue.d.ts +12 -0
- package/dist/types/dynamic-page-runtime/ModulePageHost.vue.d.ts +14 -0
- package/dist/types/dynamic-page-runtime/ModulePageListExpansionSurface.vue.d.ts +19 -0
- package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansion.vue.d.ts +13 -0
- package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansions.vue.d.ts +16 -0
- package/dist/types/dynamic-page-runtime/ModulePageRecordContent.vue.d.ts +42 -0
- package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +41 -0
- package/dist/types/dynamic-page-runtime/NavigatorManagementEditor.vue.d.ts +20 -1
- package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +12 -5
- package/dist/types/dynamic-page-runtime/RecordFormSurface.vue.d.ts +31 -0
- package/dist/types/dynamic-page-runtime/composables/useManagedDetailRelationRuntime.d.ts +30 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageActions.d.ts +13 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageBootstrap.d.ts +17 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageDetailActionRuntime.d.ts +48 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageDetailExtensionRuntime.d.ts +26 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageFormContributionRuntime.d.ts +22 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageListSession.d.ts +41 -0
- package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +1324 -0
- package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +22 -0
- package/dist/types/dynamic-page-runtime/dynamicModuleDetailStateModel.d.ts +5 -12
- package/dist/types/dynamic-page-runtime/formComputeCoordinator.d.ts +18 -0
- package/dist/types/dynamic-page-runtime/index.d.ts +3 -2
- package/dist/types/dynamic-page-runtime/listPageSizePreference.d.ts +10 -0
- package/dist/types/dynamic-page-runtime/moduleDetailStateModel.d.ts +12 -0
- package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +181 -7
- package/dist/types/dynamic-page-runtime/navigatorVisibility.d.ts +6 -0
- package/dist/types/dynamic-page-runtime/pageContextRuntime.d.ts +2 -2
- package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +9 -1
- package/dist/types/dynamic-page-runtime/relationFormComputeCoordinator.d.ts +9 -0
- package/dist/types/formula/FormulaRuntime.d.ts +29 -0
- package/dist/types/platform-admin-runtime/WorkspaceViewDrawer.vue.d.ts +1 -0
- package/dist/types/{views/UserDetailWorkspaceView.vue.d.ts → platform-admin-runtime/employee/EmployeeAccountDrawer.vue.d.ts} +2 -2
- package/dist/types/platform-admin-runtime/employeeModulePageEnhancement.d.ts +3 -0
- package/dist/types/platform-admin-runtime/index.d.ts +1 -1
- package/dist/types/platform-admin-runtime/moduleOpenApi.d.ts +2 -0
- package/dist/types/platform-admin-runtime/passwordPolicyPageEnhancement.d.ts +6 -0
- package/dist/types/platform-admin-runtime/platformAdminRoutes.d.ts +1 -6
- package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +9 -0
- package/dist/types/platform-admin-runtime/tenant/TenantApplicationConfigurationDrawer.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/tenant/TenantApplicationsDetailSection.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/tenantModulePageEnhancement.d.ts +7 -0
- package/dist/types/platform-admin-runtime/user/UserOnlineStatusCell.vue.d.ts +8 -0
- package/dist/types/platform-admin-runtime/user/UserPasswordDrawer.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/user/UserSessionListExpansion.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/user/useUserSessionRows.d.ts +23 -0
- package/dist/types/platform-admin-runtime/user/userOnlineStatusStore.d.ts +11 -0
- package/dist/types/platform-admin-runtime/userModulePageEnhancement.d.ts +7 -0
- package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +4 -2
- package/dist/types/platform-components/DetailRelationListPanel.vue.d.ts +13 -0
- package/dist/types/{views/EmployeeDetailWorkspaceView.vue.d.ts → platform-components/DrawerTitleActions.vue.d.ts} +2 -1
- package/dist/types/platform-components/FileTransferUploader.vue.d.ts +7 -0
- package/dist/types/platform-components/ModuleActionButton.vue.d.ts +5 -2
- package/dist/types/platform-components/RecordContentSectionHeading.vue.d.ts +17 -0
- package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +3 -0
- package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +8 -3
- package/dist/types/platform-components/RecordDetailFields.vue.d.ts +5 -0
- package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +11 -3
- package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +14 -6
- package/dist/types/platform-components/RecordExpandedSubtable.vue.d.ts +3 -0
- package/dist/types/platform-components/RecordFileReferenceTransfer.vue.d.ts +4 -0
- package/dist/types/platform-components/RecordFormFields.vue.d.ts +29 -1
- package/dist/types/platform-components/RecordImageFileReferencePreview.vue.d.ts +11 -0
- package/dist/types/platform-components/RecordListExpansionSurface.vue.d.ts +13 -0
- package/dist/types/platform-components/RecordListExplorer.vue.d.ts +4 -2
- package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +2 -1
- package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +12 -2
- package/dist/types/platform-components/RecordPicker.vue.d.ts +10 -2
- package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +33 -5
- package/dist/types/{views/EmployeeEmploymentDrawer.vue.d.ts → platform-components/RecordRelationTabs.vue.d.ts} +7 -7
- package/dist/types/platform-components/RecordSelectionCheckbox.vue.d.ts +13 -0
- package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +12 -4
- package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +4 -2
- package/dist/types/platform-components/UserSessionExpandedSubtable.vue.d.ts +2 -0
- package/dist/types/platform-components/drawerTitleActions.d.ts +11 -0
- package/dist/types/platform-components/index.d.ts +11 -3
- package/dist/types/platform-components/optionFieldOptionCache.d.ts +3 -0
- package/dist/types/platform-components/recordDetailFieldModel.d.ts +2 -0
- package/dist/types/platform-components/recordFormFieldModel.d.ts +67 -4
- package/dist/types/platform-components/recordPickerConstraints.d.ts +2 -0
- package/dist/types/platform-components/recordPickerModel.d.ts +6 -2
- package/dist/types/platform-workbench/Workbench.vue.d.ts +2 -2
- package/dist/types/platform-workbench/index.d.ts +3 -2
- package/dist/types/platform-workbench/legacyPageHostTypeCompatibility.d.ts +6 -0
- package/dist/types/platform-workbench/menuNavigation.d.ts +24 -2
- package/dist/types/platform-workbench/pageCacheKey.d.ts +2 -0
- package/dist/types/platform-workbench/pageHostRegistry.d.ts +1 -1
- package/dist/types/platform-workbench/workbenchNavigation.d.ts +14 -1
- package/dist/types/views/PasswordPolicyPreview.vue.d.ts +7 -0
- package/dist/types/views/RoleAccountGrantDrawer.vue.d.ts +1 -0
- package/dist/types/views/RoleAuthorizationView.vue.d.ts +2 -0
- package/dist/types/views/RoleEmploymentGrantDrawer.vue.d.ts +1 -0
- package/dist/types/views/{EmployeeManagementView.vue.d.ts → UserDetailRouteView.vue.d.ts} +3 -2
- package/dist/types/views/UserManagementListView.vue.d.ts +3 -0
- package/dist/types/views/UserManagementView.vue.d.ts +1 -6
- package/dist/types/views/WorkspaceRouteView.vue.d.ts +3 -0
- package/dist/types/views/menuManagementState.d.ts +2 -0
- package/dist/types/views/userDetailStateModel.d.ts +1 -3
- package/dist/types/views/userManagementRouteState.d.ts +11 -0
- package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +3 -0
- package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiInput.vue.d.ts +2 -1
- package/dist/types/vue-ui-antdv/components/UiRadioGroup.vue.d.ts +18 -0
- package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +2 -2
- package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +4 -2
- package/dist/types/vue-ui-antdv/index.d.ts +4 -2
- package/dist/types/web-contracts/index.d.ts +303 -12
- package/dist/types/web-core/businessNotifications.d.ts +3 -2
- package/dist/types/web-core/index.d.ts +1 -0
- package/dist/types/web-core/module/abilities.d.ts +7 -7
- package/dist/types/web-core/module/moduleContext.d.ts +5 -3
- package/dist/types/web-core/module/runtimeContext.d.ts +2 -0
- package/dist/types/web-core/module/staticModuleClient.d.ts +36 -10
- package/dist/types/web-core/referenceResolveClient.d.ts +11 -0
- package/dist/workspaceViewSessions-B5g4M0rT.js +51 -0
- package/dist/workspaceViews-CkERhK0K.js +8748 -0
- package/package.json +1 -1
- package/dist/EmployeeDetailWorkspaceView-DswEDSxH.js +0 -14
- package/dist/EmployeeManagementView-C9STtw08.js +0 -1777
- package/dist/RoleManagementView-D43pUCxi.js +0 -1926
- package/dist/SystemUserManagementView-D75_ylYk.js +0 -758
- package/dist/UserDetailWorkspaceView-BCST01d2.js +0 -17
- package/dist/UserManagementView-CcdvDo_y.js +0 -964
- package/dist/pageRealtime-EAiGWKEo.js +0 -227
- package/dist/types/views/EmployeeDetailContent.vue.d.ts +0 -64
- package/dist/types/views/employeeDetailStateModel.d.ts +0 -39
- package/dist/types/views/employeeDetailWorkspaceSession.d.ts +0 -16
- package/dist/types/views/employeeDetailWorkspaceView.d.ts +0 -4
- package/dist/types/views/fieldUiControlManagementState.d.ts +0 -76
- package/dist/types/views/moduleManagementState.d.ts +0 -76
- package/dist/types/views/positionManagementState.d.ts +0 -218
- package/dist/types/views/tenantManagementState.d.ts +0 -74
- package/dist/types/views/useEmployeeEmploymentRows.d.ts +0 -20
- package/dist/types/views/userDetailWorkspaceSession.d.ts +0 -14
- package/dist/types/views/userDetailWorkspaceView.d.ts +0 -4
- package/dist/useUserSessionRows-DCpUZCzN.js +0 -128
- package/dist/workspaceViewSessions-Dj1LjdG1.js +0 -4984
- /package/dist/types/views/{FieldUiControlManagementView.vue.d.ts → DynamicModuleRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{ModuleManagementView.vue.d.ts → ExternalRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{PasswordManagementView.vue.d.ts → ModuleOpenApiRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{PositionManagementView.vue.d.ts → OpenApiCatalogRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{TenantManagementView.vue.d.ts → RouteDiagnosticsView.vue.d.ts} +0 -0
|
@@ -5,12 +5,14 @@ type __VLS_Props = {
|
|
|
5
5
|
expandedKeys?: string[];
|
|
6
6
|
};
|
|
7
7
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
-
select: (node: UiTreeNode) => any;
|
|
9
8
|
action: (action: import("../../web-contracts/index.ts").RecordInlineAction, node: UiTreeNode) => any;
|
|
9
|
+
select: (node: UiTreeNode) => any;
|
|
10
|
+
deselect: () => any;
|
|
10
11
|
"update:expandedKeys": (keys: string[]) => any;
|
|
11
12
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
12
|
-
onSelect?: ((node: UiTreeNode) => any) | undefined;
|
|
13
13
|
onAction?: ((action: import("../../web-contracts/index.ts").RecordInlineAction, node: UiTreeNode) => any) | undefined;
|
|
14
|
+
onSelect?: ((node: UiTreeNode) => any) | undefined;
|
|
15
|
+
onDeselect?: (() => any) | undefined;
|
|
14
16
|
"onUpdate:expandedKeys"?: ((keys: string[]) => any) | undefined;
|
|
15
17
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
18
|
declare const _default: typeof __VLS_export;
|
|
@@ -10,6 +10,8 @@ export { default as UiInput } from './components/UiInput.vue';
|
|
|
10
10
|
export { default as UiSearchInput } from './components/UiSearchInput.vue';
|
|
11
11
|
export { default as UiTextArea } from './components/UiTextArea.vue';
|
|
12
12
|
export { default as UiSelect } from './components/UiSelect.vue';
|
|
13
|
+
export { default as UiRadioGroup } from './components/UiRadioGroup.vue';
|
|
14
|
+
export type { UiRadioOption } from './components/UiRadioGroup.vue';
|
|
13
15
|
export { default as UiTreeSelect } from './components/UiTreeSelect.vue';
|
|
14
16
|
export type { UiTreeSelectNode } from './components/UiTreeSelect.vue';
|
|
15
17
|
export { default as UiTooltip } from './components/UiTooltip.vue';
|
|
@@ -20,9 +22,9 @@ export { default as UiTabs } from './components/UiTabs.vue';
|
|
|
20
22
|
export { default as UiTree } from './components/UiTree.vue';
|
|
21
23
|
export { default as UiDataTable } from './components/UiDataTable.vue';
|
|
22
24
|
export { default as UiDropdown } from './components/UiDropdown.vue';
|
|
23
|
-
export { default as UiModal } from './components/UiModal.vue';
|
|
24
25
|
export { default as UiSidePanel } from './components/UiSidePanel.vue';
|
|
25
26
|
export { default as UiSidePanelHost } from './components/UiSidePanelHost.vue';
|
|
27
|
+
export { default as UiModal } from './components/UiModal.vue';
|
|
26
28
|
export { default as UiRecordExplorerItem } from './components/UiRecordExplorerItem.vue';
|
|
27
29
|
export { default as UiSpin } from './components/UiSpin.vue';
|
|
28
30
|
export { default as UiEmpty } from './components/UiEmpty.vue';
|
|
@@ -36,8 +38,8 @@ export { showErrorMessage, showFeedback, showInfoMessage, showSuccessMessage, sh
|
|
|
36
38
|
export type { UiFeedbackOptions, UiFeedbackTone } from './feedback';
|
|
37
39
|
export { resolveFieldComponent } from './registry';
|
|
38
40
|
export type { UiIconName } from './components/UiIcon.vue';
|
|
39
|
-
export type { UiTagListItem } from './components/UiTagList.vue';
|
|
40
41
|
export type { UiSidePanelScope } from './components/sidePanelHost';
|
|
42
|
+
export type { UiTagListItem } from './components/UiTagList.vue';
|
|
41
43
|
export { antDesignThemeOf, cssVariablesOf, defaultUiTheme, defaultUiThemeSkinId, uiThemeSkinById, uiThemeSkins, } from './theme';
|
|
42
44
|
export type { UiSupportTheme, UiTheme, UiThemeSkin, UiThemeSkinId, UiThemeTone } from './theme';
|
|
43
45
|
export type { UiConfirmOptions, UiDataTableColumn, UiDataTableKey, UiDataTablePagination, UiDataTableRecord, UiDataTableSelection, UiDropdownItem, UiMenuItem, UiRecordInlineAction, UiTabItem, UiTreeNode, UiTreeNodeAction, } from './types';
|
|
@@ -79,7 +79,7 @@ export interface WebBusinessNotification {
|
|
|
79
79
|
dismissible: boolean;
|
|
80
80
|
actions: WebBusinessNotificationAction[];
|
|
81
81
|
}
|
|
82
|
-
export type WebBusinessNotificationAction = WebBusinessNotificationNavigateAction |
|
|
82
|
+
export type WebBusinessNotificationAction = WebBusinessNotificationNavigateAction | WebBusinessNotificationRecordAction;
|
|
83
83
|
export interface WebBusinessNotificationNavigateAction {
|
|
84
84
|
kind: 'navigate';
|
|
85
85
|
key: string;
|
|
@@ -88,16 +88,21 @@ export interface WebBusinessNotificationNavigateAction {
|
|
|
88
88
|
recordId?: string;
|
|
89
89
|
pageMode?: 'LIST' | 'FORM' | 'DETAIL';
|
|
90
90
|
query?: Record<string, string>;
|
|
91
|
+
placement?: 'leading' | 'trailing';
|
|
91
92
|
dismissOnSuccess: boolean;
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
/** A standard record action implemented by the owning business module. */
|
|
95
|
+
export interface WebBusinessNotificationRecordAction {
|
|
96
|
+
kind: 'record';
|
|
95
97
|
key: string;
|
|
96
98
|
label: string;
|
|
97
|
-
|
|
99
|
+
moduleAlias: string;
|
|
100
|
+
recordId: string;
|
|
101
|
+
actionCode: string;
|
|
98
102
|
arguments?: Record<string, unknown>;
|
|
99
103
|
danger?: boolean;
|
|
100
104
|
confirmation?: string;
|
|
105
|
+
placement?: 'leading' | 'trailing';
|
|
101
106
|
dismissOnSuccess: boolean;
|
|
102
107
|
}
|
|
103
108
|
export interface WebBusinessRealtimeEvent {
|
|
@@ -119,6 +124,8 @@ export interface WebTreeNode<T> {
|
|
|
119
124
|
*/
|
|
120
125
|
export interface RecordInlineAction {
|
|
121
126
|
key: string;
|
|
127
|
+
/** Standard record action whose availability is resolved for the rendered record. */
|
|
128
|
+
actionCode?: string;
|
|
122
129
|
title: string;
|
|
123
130
|
iconName?: RecordInlineActionIconName;
|
|
124
131
|
showLabel?: boolean;
|
|
@@ -227,13 +234,166 @@ export interface PageBootstrap {
|
|
|
227
234
|
resolvedConfig: {
|
|
228
235
|
uiFields: unknown[];
|
|
229
236
|
queryItems: unknown[];
|
|
237
|
+
/**
|
|
238
|
+
* Permission-scoped detail interaction blocks. The standard runner only
|
|
239
|
+
* executes the explicitly supported block kinds; it never resolves a
|
|
240
|
+
* backend block to an arbitrary client component or handler.
|
|
241
|
+
*/
|
|
242
|
+
actionBlocks?: PageBootstrapActionBlock[];
|
|
243
|
+
/** Server-resolved detail relations. Only relation.queryContract is executable by a Web runner. */
|
|
244
|
+
associationBlocks?: PageBootstrapAssociationBlock[];
|
|
230
245
|
};
|
|
231
246
|
openApiPath: string;
|
|
232
247
|
}
|
|
248
|
+
/** A server-resolved action entry declared by a published detail UI config. */
|
|
249
|
+
export interface PageBootstrapActionBlock {
|
|
250
|
+
uiConfigId?: string;
|
|
251
|
+
type: 'action' | 'dialog' | 'localEdit';
|
|
252
|
+
key?: string;
|
|
253
|
+
actionCode: string;
|
|
254
|
+
title?: string;
|
|
255
|
+
position?: string;
|
|
256
|
+
targetUiConfigId?: string;
|
|
257
|
+
submitPath?: string;
|
|
258
|
+
refreshStrategy?: {
|
|
259
|
+
list?: boolean;
|
|
260
|
+
detail?: boolean;
|
|
261
|
+
};
|
|
262
|
+
width?: number;
|
|
263
|
+
height?: number;
|
|
264
|
+
localEditForm?: PageBootstrapLocalEditForm;
|
|
265
|
+
}
|
|
266
|
+
export interface PageBootstrapLocalEditForm {
|
|
267
|
+
uiConfigId: string;
|
|
268
|
+
fields: PageBootstrapLocalEditField[];
|
|
269
|
+
/**
|
|
270
|
+
* Authoritative controls resolved from the published target FORM config.
|
|
271
|
+
* Local edit must consume these facts rather than falling back to the
|
|
272
|
+
* field's legacy alias, otherwise a control can drift from the page that
|
|
273
|
+
* was actually published.
|
|
274
|
+
*/
|
|
275
|
+
fieldUiControls: ResolvedFieldControlDescriptor[];
|
|
276
|
+
submitContract: {
|
|
277
|
+
recordRequired: true;
|
|
278
|
+
recordVersionRequired: true;
|
|
279
|
+
fieldNamesRequired: true;
|
|
280
|
+
uiConfigIdPayloadKey: 'uiConfigId';
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
export interface PageBootstrapLocalEditField {
|
|
284
|
+
relationAlias?: string;
|
|
285
|
+
fieldName: string;
|
|
286
|
+
fieldTitle?: string;
|
|
287
|
+
fieldUiControlAlias?: string;
|
|
288
|
+
/** Authoritative storage type of this resolved field; editors use it for lossless codecs. */
|
|
289
|
+
valueType?: ViewFieldValueType;
|
|
290
|
+
visible?: boolean;
|
|
291
|
+
readOnly?: boolean;
|
|
292
|
+
requiredOverride?: boolean;
|
|
293
|
+
placeholder?: string;
|
|
294
|
+
columnSpan?: number;
|
|
295
|
+
}
|
|
296
|
+
export interface PageBootstrapAssociationBlock {
|
|
297
|
+
title?: string;
|
|
298
|
+
relation?: ResolvedDetailRelationDescriptor;
|
|
299
|
+
}
|
|
300
|
+
/** Source-neutral detail-relation descriptor. A declaration without queryContract is intentionally inert. */
|
|
301
|
+
export interface ResolvedDetailRelationDescriptor {
|
|
302
|
+
code: string;
|
|
303
|
+
title?: string;
|
|
304
|
+
readOnly: boolean;
|
|
305
|
+
sourceModuleAlias: string;
|
|
306
|
+
sourceEntityAlias: string;
|
|
307
|
+
targetModuleAlias: string;
|
|
308
|
+
targetEntityAlias: string;
|
|
309
|
+
parentBinding: string;
|
|
310
|
+
queryContract?: ResolvedDetailRelationQueryContract;
|
|
311
|
+
/** Read access never implies these operations; the server must explicitly compile them. */
|
|
312
|
+
mutationContract?: ResolvedDetailRelationMutationContract;
|
|
313
|
+
/** Optional client-visible applicability fact; the server remains authoritative. */
|
|
314
|
+
parentConstraint?: ResolvedDetailRelationParentConstraint;
|
|
315
|
+
/** Parent entity field carrying the complete child collection for standard CRUD. */
|
|
316
|
+
embeddedField?: string;
|
|
317
|
+
/** Shared column projection for gateway-backed and embedded relations. */
|
|
318
|
+
listProjection?: ResolvedDetailRelationListProjection;
|
|
319
|
+
/** Immediate server-compiled calculations for rows in this embedded child relation. */
|
|
320
|
+
formComputeRules?: ResolvedDetailRelationFormComputeRuleDescriptor[];
|
|
321
|
+
/** Server-compiled visibility rule; clients execute only its FormulaProgram. */
|
|
322
|
+
visible?: UiRule<boolean>;
|
|
323
|
+
editing?: ResolvedDetailRelationEditing;
|
|
324
|
+
refreshOnDetailReload: boolean;
|
|
325
|
+
}
|
|
326
|
+
export interface ResolvedDetailRelationEditing {
|
|
327
|
+
mode: 'DIALOG' | 'INLINE';
|
|
328
|
+
saveMode: 'INDEPENDENT' | 'AGGREGATE_DRAFT';
|
|
329
|
+
recycleBinEnabled?: boolean;
|
|
330
|
+
}
|
|
331
|
+
export interface ResolvedDetailRelationFormComputeRuleDescriptor {
|
|
332
|
+
code: string;
|
|
333
|
+
program: FormulaProgram;
|
|
334
|
+
targetField: string;
|
|
335
|
+
targetValueType: ViewFieldValueType;
|
|
336
|
+
triggerFields: string[];
|
|
337
|
+
}
|
|
338
|
+
export interface ResolvedDetailRelationParentConstraint {
|
|
339
|
+
fieldName: string;
|
|
340
|
+
expectedValue: string;
|
|
341
|
+
}
|
|
342
|
+
export interface ResolvedDetailRelationMutationContract {
|
|
343
|
+
createAllowed: boolean;
|
|
344
|
+
updateAllowed: boolean;
|
|
345
|
+
deleteAllowed: boolean;
|
|
346
|
+
createActionCode?: string;
|
|
347
|
+
updateActionCode?: string;
|
|
348
|
+
deleteActionCode?: string;
|
|
349
|
+
}
|
|
350
|
+
export interface ResolvedDetailRelationQueryContract {
|
|
351
|
+
/** Dynamic/legacy relation route. Managed relations deliberately omit it. */
|
|
352
|
+
queryPath?: string;
|
|
353
|
+
/** Uses the platform parent-association gateway derived from module + relation facts. */
|
|
354
|
+
managedGateway?: boolean;
|
|
355
|
+
/** Compiled action identity in the source/parent module permission catalog. */
|
|
356
|
+
actionCode?: string;
|
|
357
|
+
targetUiConfigId?: string;
|
|
358
|
+
queryTemplateId?: string;
|
|
359
|
+
pageable: boolean;
|
|
360
|
+
/** Initial page size; absent when the relation explicitly loads its complete result. */
|
|
361
|
+
pageSize?: number;
|
|
362
|
+
/** Server-approved choices. Empty for a non-pageable relation. */
|
|
363
|
+
pageSizeOptions?: number[];
|
|
364
|
+
queryable: boolean;
|
|
365
|
+
listProjection?: ResolvedDetailRelationListProjection;
|
|
366
|
+
/** Source-owned query schema; the relation runner must not load target-module schema directly. */
|
|
367
|
+
querySchema?: QuerySchema;
|
|
368
|
+
}
|
|
369
|
+
/** Server-issued list columns, not a raw target UI config or a client-side inferred view. */
|
|
370
|
+
export interface ResolvedDetailRelationListProjection {
|
|
371
|
+
uiConfigId?: string;
|
|
372
|
+
fields: ResolvedDetailRelationListField[];
|
|
373
|
+
}
|
|
374
|
+
export interface ResolvedDetailRelationListField {
|
|
375
|
+
fieldName: string;
|
|
376
|
+
title?: string;
|
|
377
|
+
fieldForm?: string;
|
|
378
|
+
fieldUiControlAlias?: string;
|
|
379
|
+
width?: number;
|
|
380
|
+
align?: 'left' | 'center' | 'right' | string;
|
|
381
|
+
maxDisplayLines?: number;
|
|
382
|
+
}
|
|
383
|
+
export declare function hasExecutableDetailRelationQueryContract(relation: ResolvedDetailRelationDescriptor | undefined): relation is ResolvedDetailRelationDescriptor & {
|
|
384
|
+
queryContract: ResolvedDetailRelationQueryContract & {
|
|
385
|
+
listProjection: ResolvedDetailRelationListProjection;
|
|
386
|
+
};
|
|
387
|
+
};
|
|
388
|
+
export declare function hasExecutableDetailRelationMutationContract(relation: ResolvedDetailRelationDescriptor | undefined): relation is ResolvedDetailRelationDescriptor & {
|
|
389
|
+
mutationContract: ResolvedDetailRelationMutationContract;
|
|
390
|
+
};
|
|
391
|
+
export type MenuEntryType = 'module' | 'route' | 'link';
|
|
233
392
|
export interface MenuRecord extends StandardEnabledTreeEntity {
|
|
234
393
|
id: string;
|
|
235
394
|
title: string;
|
|
236
395
|
schemeId: string;
|
|
396
|
+
entryType?: MenuEntryType;
|
|
237
397
|
openMode?: MenuOpenMode;
|
|
238
398
|
moduleAlias?: string;
|
|
239
399
|
route?: string;
|
|
@@ -283,7 +443,11 @@ export type MenuNavigationTarget = ModuleMenuTarget | RouteMenuTarget | External
|
|
|
283
443
|
export type MenuNavigationType = MenuNavigationTarget['menuType'];
|
|
284
444
|
export type PageType = 'platform-route' | 'business-route' | 'dynamic-module' | 'remote-url' | 'external-link';
|
|
285
445
|
export type OpenMode = 'workbench-route' | 'dynamic-runner' | 'iframe' | 'new-window';
|
|
286
|
-
export type PageHostType = 'platform-route-host' | 'business-route-host'
|
|
446
|
+
export type PageHostType = 'platform-route-host' | 'business-route-host'
|
|
447
|
+
/** Source-neutral standard CRUD page host. */
|
|
448
|
+
| 'module-page-host'
|
|
449
|
+
/** Persisted compatibility identifier for the standard module page host. */
|
|
450
|
+
| 'dynamic-module-host' | 'external-page-host';
|
|
287
451
|
export type TabIdentityStrategy = 'by-menu' | 'by-target' | 'by-params';
|
|
288
452
|
/**
|
|
289
453
|
* Declares which layer owns a page's vertical scroll boundary.
|
|
@@ -330,17 +494,25 @@ export interface DynamicModulePageTarget {
|
|
|
330
494
|
defaultUiConfigId?: string;
|
|
331
495
|
defaultQueryTemplateId?: string;
|
|
332
496
|
}
|
|
497
|
+
export type ModulePageDescriptor = PageDescriptorBase<'dynamic-module', 'dynamic-runner', 'module-page-host', DynamicModulePageTarget>;
|
|
498
|
+
/** Compatibility descriptor accepted when restoring existing workbench state. */
|
|
333
499
|
export type DynamicModulePageDescriptor = PageDescriptorBase<'dynamic-module', 'dynamic-runner', 'dynamic-module-host', DynamicModulePageTarget>;
|
|
500
|
+
/** Source-neutral descriptor accepted by the standard module page runner. */
|
|
501
|
+
export type StandardModulePageDescriptor = ModulePageDescriptor | DynamicModulePageDescriptor;
|
|
334
502
|
export interface UrlPageTarget {
|
|
335
503
|
url: string;
|
|
336
504
|
moduleAlias?: string;
|
|
337
505
|
}
|
|
338
506
|
export type RemoteUrlPageDescriptor = PageDescriptorBase<'remote-url', 'iframe' | 'new-window', 'external-page-host', UrlPageTarget>;
|
|
339
507
|
export type ExternalLinkPageDescriptor = PageDescriptorBase<'external-link', 'new-window', 'external-page-host', UrlPageTarget>;
|
|
340
|
-
export type PageDescriptor = PlatformRoutePageDescriptor | BusinessRoutePageDescriptor | DynamicModulePageDescriptor | RemoteUrlPageDescriptor | ExternalLinkPageDescriptor;
|
|
508
|
+
export type PageDescriptor = PlatformRoutePageDescriptor | BusinessRoutePageDescriptor | ModulePageDescriptor | DynamicModulePageDescriptor | RemoteUrlPageDescriptor | ExternalLinkPageDescriptor;
|
|
341
509
|
export interface MenuTab {
|
|
510
|
+
/** Immutable page-instance key used by route restoration and cache isolation. */
|
|
511
|
+
instanceKey?: string;
|
|
342
512
|
key: string;
|
|
343
513
|
title: string;
|
|
514
|
+
/** Exact browser address used to restore this tab. */
|
|
515
|
+
fullPath?: string;
|
|
344
516
|
target?: MenuNavigationTarget;
|
|
345
517
|
pageDescriptor?: PageDescriptor;
|
|
346
518
|
restoreState?: TabRestoreState;
|
|
@@ -379,6 +551,54 @@ export interface WebQueryRequest {
|
|
|
379
551
|
quickSearchFields?: string[];
|
|
380
552
|
externalQueryValues?: Record<string, unknown>;
|
|
381
553
|
}
|
|
554
|
+
/** Shared field-reference delivery contract for static and metadata-backed modules. */
|
|
555
|
+
export type WebReferenceResolveMode = 'QUERY' | 'TREE' | 'TRANSLATE';
|
|
556
|
+
export type WebReferenceMatchMode = 'KEY' | 'LABEL' | 'AUTO';
|
|
557
|
+
export type WebReferenceResolveStatus = 'OK' | 'RESOLVED' | 'NOT_FOUND' | 'AMBIGUOUS' | 'PARTIAL';
|
|
558
|
+
/** Persisted aggregate record owning a reference interaction; never use form values to provide its tenant. */
|
|
559
|
+
export interface WebReferenceSource {
|
|
560
|
+
recordId?: string;
|
|
561
|
+
}
|
|
562
|
+
export interface WebReferenceResolveRequest {
|
|
563
|
+
mode?: WebReferenceResolveMode;
|
|
564
|
+
matchMode?: WebReferenceMatchMode;
|
|
565
|
+
fuzzy?: string;
|
|
566
|
+
values?: unknown[];
|
|
567
|
+
conditions?: WebQueryCondition[];
|
|
568
|
+
criteria?: unknown;
|
|
569
|
+
page?: WebPageRequest;
|
|
570
|
+
includeProjections?: boolean;
|
|
571
|
+
formValues?: Record<string, unknown>;
|
|
572
|
+
source?: WebReferenceSource;
|
|
573
|
+
sourceUiConfigId?: string;
|
|
574
|
+
uiConfigId?: string;
|
|
575
|
+
queryTemplateId?: string;
|
|
576
|
+
externalQueryValues?: Record<string, unknown>;
|
|
577
|
+
}
|
|
578
|
+
export interface WebReferenceResolveItem {
|
|
579
|
+
id: string;
|
|
580
|
+
title?: string;
|
|
581
|
+
matchedBy?: WebReferenceMatchMode;
|
|
582
|
+
projections?: Record<string, unknown>;
|
|
583
|
+
affectPatch?: Record<string, unknown>;
|
|
584
|
+
}
|
|
585
|
+
export interface WebReferenceResolveResult {
|
|
586
|
+
input: unknown;
|
|
587
|
+
status: WebReferenceResolveStatus;
|
|
588
|
+
matchedBy?: WebReferenceMatchMode;
|
|
589
|
+
item?: WebReferenceResolveItem;
|
|
590
|
+
candidates: WebReferenceResolveItem[];
|
|
591
|
+
}
|
|
592
|
+
export interface WebReferenceResolveResponse {
|
|
593
|
+
status: WebReferenceResolveStatus;
|
|
594
|
+
mode: WebReferenceResolveMode;
|
|
595
|
+
options: WebReferenceResolveItem[];
|
|
596
|
+
results: WebReferenceResolveResult[];
|
|
597
|
+
offset: number;
|
|
598
|
+
limit: number;
|
|
599
|
+
total: number;
|
|
600
|
+
tree?: WebTreeNode<WebReferenceResolveItem>[];
|
|
601
|
+
}
|
|
382
602
|
export type QueryValueType = 'STRING' | 'TEXT' | 'BOOLEAN' | 'INTEGER' | 'LONG' | 'DECIMAL' | 'INSTANT' | 'DATE' | 'JSON';
|
|
383
603
|
export type QueryOperator = 'EQ' | 'NOT_EQUAL' | 'LIKE' | 'IN' | 'NOT_IN' | 'GT' | 'GTE' | 'LT' | 'LTE' | 'BETWEEN' | 'NULL' | 'NOT_NULL';
|
|
384
604
|
export interface QuerySchemaField {
|
|
@@ -420,13 +640,25 @@ export interface UiRule<T> {
|
|
|
420
640
|
formula?: UiFormula;
|
|
421
641
|
disabledHint?: string;
|
|
422
642
|
}
|
|
423
|
-
/**
|
|
424
|
-
* A platform-owned portable Boolean predicate evaluated against the current record draft.
|
|
425
|
-
* The current grammar supports `PRESENT({fieldName})`, `!()` negation, and `&&` conjunction of PRESENT terms.
|
|
426
|
-
* It is deliberately smaller than the server FormulaEngine because this contract must run in every Web client.
|
|
427
|
-
*/
|
|
643
|
+
/** A FormulaEngine expression together with its server-issued WEB_UI AST. */
|
|
428
644
|
export interface UiFormula {
|
|
429
645
|
expression: string;
|
|
646
|
+
program?: FormulaProgram;
|
|
647
|
+
}
|
|
648
|
+
/** Versioned program compiled by FormulaEngine. The browser executes it locally and never parses expression. */
|
|
649
|
+
export interface FormulaProgram {
|
|
650
|
+
schemaVersion: number;
|
|
651
|
+
profile: 'WEB_UI' | 'FORM_COMPUTE';
|
|
652
|
+
root: FormulaNode;
|
|
653
|
+
referencedFields: string[];
|
|
654
|
+
}
|
|
655
|
+
/** Source-neutral FormulaEngine AST node. Profiles decide which nodes can execute. */
|
|
656
|
+
export interface FormulaNode {
|
|
657
|
+
kind: 'VALUE' | 'FIELD' | 'OTHERS' | 'UNARY' | 'BINARY' | 'FUNCTION' | 'ASSIGN';
|
|
658
|
+
operator?: string;
|
|
659
|
+
field?: string;
|
|
660
|
+
value?: string | number | boolean | null;
|
|
661
|
+
arguments: FormulaNode[];
|
|
430
662
|
}
|
|
431
663
|
export interface ViewFieldRef {
|
|
432
664
|
relationCode?: string;
|
|
@@ -448,6 +680,8 @@ export interface ViewFieldDefinition {
|
|
|
448
680
|
booleanStatus?: BooleanStatusPresentation;
|
|
449
681
|
/** Maximum visible lines for text cells in standard list views. Omitted uses the platform default of one line. */
|
|
450
682
|
maxDisplayLines?: number;
|
|
683
|
+
/** User-facing title for the standard tree root sentinel in a detail field. */
|
|
684
|
+
treeRootTitle?: string;
|
|
451
685
|
}
|
|
452
686
|
/** Semantic group that owns a contiguous set of standard-form fields. */
|
|
453
687
|
export interface FormGroupDescriptor {
|
|
@@ -465,6 +699,21 @@ export interface BooleanStatusPresentation {
|
|
|
465
699
|
export type BooleanStatusTone = 'SUCCESS' | 'NEUTRAL' | 'WARNING' | 'DANGER';
|
|
466
700
|
export type FieldValuePresentation = 'FILE_SIZE';
|
|
467
701
|
export type ViewFieldValueType = 'STRING' | 'TEXT' | 'INTEGER' | 'LONG' | 'BOOLEAN' | 'TIMESTAMP' | 'ZONED_TIMESTAMP' | 'DATE' | 'DECIMAL' | 'JSON';
|
|
702
|
+
/**
|
|
703
|
+
* Source-neutral field-control fact compiled by the platform. `renderer` is a platform semantic
|
|
704
|
+
* renderer type, never a Vue component name or front-end module path.
|
|
705
|
+
*/
|
|
706
|
+
export interface ResolvedFieldControlDescriptor {
|
|
707
|
+
alias: string;
|
|
708
|
+
rendererType: string;
|
|
709
|
+
valueShape: 'SCALAR' | 'COLLECTION' | 'COMPOSITE';
|
|
710
|
+
properties?: Record<string, string>;
|
|
711
|
+
bindings?: ResolvedFieldControlBindingDescriptor[];
|
|
712
|
+
}
|
|
713
|
+
export interface ResolvedFieldControlBindingDescriptor {
|
|
714
|
+
key: string;
|
|
715
|
+
valueType: string;
|
|
716
|
+
}
|
|
468
717
|
export interface ResolvedViewFieldDescriptor {
|
|
469
718
|
fieldRef: ViewFieldRef;
|
|
470
719
|
label?: string;
|
|
@@ -472,6 +721,8 @@ export interface ResolvedViewFieldDescriptor {
|
|
|
472
721
|
required?: UiRule<boolean>;
|
|
473
722
|
readOnly?: UiRule<boolean>;
|
|
474
723
|
uiType?: string;
|
|
724
|
+
/** Optional while older descriptors still publish only `uiType`. When present it is authoritative. */
|
|
725
|
+
fieldControl?: ResolvedFieldControlDescriptor;
|
|
475
726
|
valueType?: ViewFieldValueType;
|
|
476
727
|
valuePresentation?: FieldValuePresentation;
|
|
477
728
|
width?: string;
|
|
@@ -479,6 +730,7 @@ export interface ResolvedViewFieldDescriptor {
|
|
|
479
730
|
align?: 'left' | 'center' | 'right' | string;
|
|
480
731
|
fixed?: boolean;
|
|
481
732
|
booleanStatus?: BooleanStatusPresentation;
|
|
733
|
+
treeRootTitle?: string;
|
|
482
734
|
option?: ResolvedOptionFieldDescriptor;
|
|
483
735
|
reference?: ResolvedReferenceFieldDescriptor;
|
|
484
736
|
referenceSummary?: ResolvedReferenceSummaryFieldDescriptor;
|
|
@@ -495,9 +747,22 @@ export interface ResolvedReferenceSummaryFieldDescriptor {
|
|
|
495
747
|
export interface ResolvedReferenceFieldDescriptor {
|
|
496
748
|
targetModuleAlias: string;
|
|
497
749
|
cardinality: 'ONE' | 'MANY';
|
|
750
|
+
/** Server-resolved standard picker transport. AUTO exists only for descriptors issued before an explicit mode. */
|
|
751
|
+
pickerMode?: ReferencePickerMode;
|
|
752
|
+
/** Standardized candidate transport chosen by the compiled source-field contract. */
|
|
753
|
+
candidateDelivery?: 'TARGET_NAVIGATOR' | 'SOURCE_FIELD';
|
|
754
|
+
resolvePath?: string;
|
|
755
|
+
/** Server-enforced dependencies that constrain candidates from values of the current form row. */
|
|
756
|
+
candidateDependencies?: ReferenceCandidateDependency[];
|
|
498
757
|
/** Read-side title projection for this scalar reference, when supplied by the server. */
|
|
499
758
|
titleField?: string;
|
|
500
759
|
}
|
|
760
|
+
export interface ReferenceCandidateDependency {
|
|
761
|
+
sourceField: string;
|
|
762
|
+
targetField: string;
|
|
763
|
+
required: boolean;
|
|
764
|
+
}
|
|
765
|
+
export type ReferencePickerMode = 'LIST' | 'TREE' | 'AUTO';
|
|
501
766
|
export interface OptionBindingDescriptor {
|
|
502
767
|
sourceType: string;
|
|
503
768
|
source: string;
|
|
@@ -506,6 +771,8 @@ export interface ResolvedOptionFieldDescriptor {
|
|
|
506
771
|
binding: OptionBindingDescriptor;
|
|
507
772
|
selectionMode: 'SINGLE' | 'MULTIPLE';
|
|
508
773
|
titleField?: string;
|
|
774
|
+
/** Immutable option facts (currently CodeTitleEnum); scope-sensitive dictionaries stay runtime data. */
|
|
775
|
+
inlineItems?: OptionItemDescriptor[];
|
|
509
776
|
}
|
|
510
777
|
export interface OptionItemDescriptor {
|
|
511
778
|
code: string;
|
|
@@ -522,6 +789,15 @@ export interface ViewDefinition {
|
|
|
522
789
|
fields: ViewFieldDefinition[];
|
|
523
790
|
formGroups?: FormGroupDescriptor[];
|
|
524
791
|
}
|
|
792
|
+
/** Server-issued deterministic main-form calculation. The coordinator is introduced separately. */
|
|
793
|
+
export interface ResolvedFormComputeRuleDescriptor {
|
|
794
|
+
code: string;
|
|
795
|
+
program: FormulaProgram;
|
|
796
|
+
targetField: string;
|
|
797
|
+
targetValueType: ViewFieldValueType;
|
|
798
|
+
triggerFields: string[];
|
|
799
|
+
writePolicy: 'ALWAYS';
|
|
800
|
+
}
|
|
525
801
|
export interface ResolvedViewDescriptor {
|
|
526
802
|
viewCode: string;
|
|
527
803
|
viewKind: ModuleViewKind;
|
|
@@ -531,6 +807,7 @@ export interface ResolvedViewDescriptor {
|
|
|
531
807
|
/** Dynamic-page provenance used to select the view configured by a menu entry. */
|
|
532
808
|
sourceUiConfigId?: string;
|
|
533
809
|
formGroups?: FormGroupDescriptor[];
|
|
810
|
+
formComputeRules?: ResolvedFormComputeRuleDescriptor[];
|
|
534
811
|
}
|
|
535
812
|
export type ModulePageTemplate = 'FLAT_MANAGEMENT' | 'LIST_DETAIL_CARD' | 'TREE_MANAGEMENT';
|
|
536
813
|
export interface ResolvedPageExplorerDescriptor {
|
|
@@ -555,7 +832,12 @@ export interface ResolvedPageNavigatorLevelDescriptor {
|
|
|
555
832
|
searchPlaceholder: string;
|
|
556
833
|
/** Presentation policy applied after the source has authoritatively loaded. */
|
|
557
834
|
singleResultPolicy?: 'NONE' | 'AUTO_SELECT' | 'AUTO_SELECT_AND_HIDE';
|
|
558
|
-
/**
|
|
835
|
+
/** Explicit initial selection policy; omitted means the navigator starts unselected. */
|
|
836
|
+
initialSelectionPolicy?: 'NONE' | 'FIRST_RECORD';
|
|
837
|
+
/**
|
|
838
|
+
* Session-derived source scope, enforced by the source reference transport. A system user has
|
|
839
|
+
* no current tenant, so a CURRENT_TENANT tenant source resolves its REFERENCE-authorized choices.
|
|
840
|
+
*/
|
|
559
841
|
sourceScope?: 'NONE' | 'CURRENT_TENANT';
|
|
560
842
|
/** When present, the navigator source exposes its own standard CRUD affordances in place. */
|
|
561
843
|
management?: ResolvedPageNavigatorManagementDescriptor;
|
|
@@ -576,10 +858,18 @@ export interface ResolvedPageNavigatorManagementDescriptor {
|
|
|
576
858
|
export interface ResolvedPageListDescriptor {
|
|
577
859
|
searchPlaceholder: string;
|
|
578
860
|
fields: ResolvedViewDescriptor;
|
|
861
|
+
/** Read-only placements of declared aggregate relations beneath an expanded list row. */
|
|
862
|
+
relationExpansions?: ResolvedPageListRelationExpansionDescriptor[];
|
|
863
|
+
}
|
|
864
|
+
export interface ResolvedPageListRelationExpansionDescriptor {
|
|
865
|
+
relationCode: string;
|
|
866
|
+
fields: string[];
|
|
579
867
|
}
|
|
580
868
|
export interface ResolvedPageDetailDescriptor {
|
|
581
869
|
emptyDescription: string;
|
|
582
870
|
createTitle: string;
|
|
871
|
+
/** Whether the standard immutable system metadata section is displayed. */
|
|
872
|
+
showSystemInfo?: boolean;
|
|
583
873
|
display?: ResolvedViewDescriptor;
|
|
584
874
|
/** Omitted by an editorless page; standard mutation actions remain governed by the runtime action contract. */
|
|
585
875
|
editor?: ResolvedViewDescriptor;
|
|
@@ -627,6 +917,7 @@ export interface ResolvedModuleUiDescriptor {
|
|
|
627
917
|
defaultEditor?: ResolvedViewDescriptor;
|
|
628
918
|
editorSurfaces?: ResolvedEditorSurfaceDescriptor[];
|
|
629
919
|
editorContributions?: ResolvedPageDetailEditorContribution[];
|
|
920
|
+
detailRelations?: ResolvedDetailRelationDescriptor[];
|
|
630
921
|
}
|
|
631
922
|
export interface ResolvedEditorSurfaceDescriptor {
|
|
632
923
|
key: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WebBusinessNotificationRecordAction } from '../web-contracts/index';
|
|
2
2
|
import type { HttpClient } from './http';
|
|
3
|
-
|
|
3
|
+
/** Calls the standard record action declared by a notification. */
|
|
4
|
+
export declare function invokeBusinessNotificationRecordAction(http: HttpClient, action: WebBusinessNotificationRecordAction): Promise<unknown>;
|
|
@@ -6,6 +6,7 @@ export * from './businessNotifications';
|
|
|
6
6
|
export * from './dataChanges';
|
|
7
7
|
export * from './realtime';
|
|
8
8
|
export * from './clients';
|
|
9
|
+
export * from './referenceResolveClient';
|
|
9
10
|
export { userPreferences } from './userPreferences';
|
|
10
11
|
export type { UserPreferenceOptions, UserPreferenceStore } from './userPreferences';
|
|
11
12
|
export * from './module/index';
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { type ModuleAbilityCode } from './abilityCodes';
|
|
2
2
|
import { type ModuleRuntimeContextState } from './runtimeContext';
|
|
3
|
-
import type { ModuleEnableClient,
|
|
3
|
+
import type { ModuleEnableClient, ModuleCrudClient, ModuleTreeClient } from './staticModuleClient';
|
|
4
4
|
export interface ModuleAbilityClients<TRecord> {
|
|
5
|
-
crud:
|
|
6
|
-
tree:
|
|
5
|
+
crud: ModuleCrudClient<TRecord>;
|
|
6
|
+
tree: ModuleTreeClient<TRecord>;
|
|
7
7
|
enable: ModuleEnableClient;
|
|
8
8
|
}
|
|
9
9
|
export interface ModuleAbilities<TRecord> {
|
|
10
|
-
crud():
|
|
11
|
-
tree():
|
|
10
|
+
crud(): ModuleCrudClient<TRecord>;
|
|
11
|
+
tree(): ModuleTreeClient<TRecord>;
|
|
12
12
|
enable(): ModuleEnableClient;
|
|
13
|
-
tryCrud():
|
|
14
|
-
tryTree():
|
|
13
|
+
tryCrud(): ModuleCrudClient<TRecord> | undefined;
|
|
14
|
+
tryTree(): ModuleTreeClient<TRecord> | undefined;
|
|
15
15
|
tryEnable(): ModuleEnableClient | undefined;
|
|
16
16
|
has(ability: ModuleAbilityCode | string): boolean | undefined;
|
|
17
17
|
hasCrud(): boolean | undefined;
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import type { HttpClient } from '../http';
|
|
2
2
|
import { type ModuleAbilities } from './abilities';
|
|
3
3
|
import { type ModuleActionState, type ModuleRecordActionAvailability, type ModuleRuntimeAction, type ModuleRuntimeContextState } from './runtimeContext';
|
|
4
|
-
import { type
|
|
4
|
+
import { type ModuleCrudClient, type ModuleTreeClient } from './staticModuleClient';
|
|
5
5
|
export interface ModuleContext<TRecord> {
|
|
6
6
|
moduleAlias: string;
|
|
7
7
|
http: HttpClient;
|
|
8
|
-
crud:
|
|
8
|
+
crud: ModuleCrudClient<TRecord>;
|
|
9
9
|
runtime: ModuleRuntimeContextState;
|
|
10
10
|
abilities: ModuleAbilities<TRecord>;
|
|
11
11
|
action(actionCode: string, recordId?: string): ModuleActionState | undefined;
|
|
12
12
|
runtimeAction(actionCode: string): ModuleRuntimeAction | undefined;
|
|
13
13
|
can(actionCode: string, recordId?: string): boolean | undefined;
|
|
14
14
|
recordActions(recordId: string): Promise<ModuleRecordActionAvailability>;
|
|
15
|
+
recordActionsBatch?(recordIds: string[]): Promise<ModuleRecordActionAvailability[]>;
|
|
15
16
|
recordActionsSnapshot(recordId: string): ModuleRecordActionAvailability | undefined;
|
|
17
|
+
invalidateRecordActions?(recordIds?: string[]): void;
|
|
16
18
|
}
|
|
17
19
|
export interface ModuleTreeContext<TRecord> extends ModuleContext<TRecord> {
|
|
18
|
-
tree:
|
|
20
|
+
tree: ModuleTreeClient<TRecord>;
|
|
19
21
|
}
|
|
20
22
|
export interface ModuleContextConfig {
|
|
21
23
|
http?: HttpClient;
|
|
@@ -61,7 +61,9 @@ export interface ModuleRuntimeContextState {
|
|
|
61
61
|
runtimeAction(actionCode: string): ModuleRuntimeAction | undefined;
|
|
62
62
|
can(actionCode: string, recordId?: string): boolean | undefined;
|
|
63
63
|
recordActions(recordId: string): Promise<ModuleRecordActionAvailability>;
|
|
64
|
+
recordActionsBatch?(recordIds: string[]): Promise<ModuleRecordActionAvailability[]>;
|
|
64
65
|
recordActionsSnapshot(recordId: string): ModuleRecordActionAvailability | undefined;
|
|
66
|
+
invalidateRecordActions?(recordIds?: string[]): void;
|
|
65
67
|
}
|
|
66
68
|
export declare function createModuleRuntimeContextState(http: HttpClient, moduleAlias: string, access?: 'MENU' | 'REFERENCE'): ModuleRuntimeContextState;
|
|
67
69
|
export declare function isRuntimeAbilityAvailable(context: ModuleRuntimeContext | undefined, ability: ModuleAbilityCode): boolean;
|