@ximatai/muyun-web-app 0.26.7 → 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-B-CPudJl.js → MetadataOrchestrationView-CzhAgEdX.js} +210 -204
- package/dist/{ModuleActionManagementView-CmVj0e0C.js → ModuleActionManagementView-CM2d8jPO.js} +69 -69
- package/dist/RoleAuthorizationView-jn_WUCeg.js +599 -0
- package/dist/{RoleDetailWorkspaceView-DmJlJgAj.js → RoleDetailWorkspaceView-CzaQ3Dz1.js} +1 -1
- package/dist/RoleManagementView-nY7qu4GF.js +1951 -0
- package/dist/{SystemUserDetailWorkspaceView-U6Ij0US1.js → SystemUserDetailWorkspaceView-CBvqmWvP.js} +1 -1
- package/dist/SystemUserManagementView-AEomKvK7.js +887 -0
- package/dist/index.css +1 -1
- package/dist/index.js +651 -6970
- package/dist/{platform-components-DKKWbNrz.js → platform-components-CIi6GdC9.js} +5292 -3634
- 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 +9 -5
- package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +2 -2
- package/dist/types/consumer/index.d.ts +7 -4
- package/dist/types/dynamic-page-runtime/DynamicModuleHost.vue.d.ts +3 -10
- package/dist/types/{views/EmployeeEmploymentDrawer.vue.d.ts → dynamic-page-runtime/DynamicModuleWorkspaceDetailView.vue.d.ts} +3 -7
- package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +39 -0
- 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 +44 -0
- package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +50 -0
- 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/detailSurfacePreference.d.ts +10 -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 +4 -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 +218 -6
- package/dist/types/dynamic-page-runtime/modulePageNavigation.d.ts +1 -1
- package/dist/types/dynamic-page-runtime/navigatorVisibility.d.ts +6 -0
- package/dist/types/dynamic-page-runtime/pageContextRuntime.d.ts +6 -0
- package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +35 -0
- 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/EmployeeDetailWorkspaceView.vue.d.ts → platform-admin-runtime/employee/EmployeeAccountDrawer.vue.d.ts} +2 -1
- package/dist/types/platform-admin-runtime/employeeModulePageEnhancement.d.ts +3 -0
- 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 -1
- package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +9 -0
- package/dist/types/platform-admin-runtime/realtime.d.ts +2 -1
- 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/BusinessNotificationPanel.vue.d.ts +12 -0
- package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +10 -2
- package/dist/types/platform-components/DetailRelationListPanel.vue.d.ts +13 -0
- package/dist/types/{views/EmployeeManagementView.vue.d.ts → platform-components/DrawerTitleActions.vue.d.ts} +2 -2
- package/dist/types/platform-components/FileTransferUploader.vue.d.ts +7 -0
- package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +5 -3
- package/dist/types/platform-components/ManagementWorkspace.vue.d.ts +8 -2
- package/dist/types/platform-components/ModuleActionButton.vue.d.ts +5 -2
- package/dist/types/platform-components/RecordActionBar.vue.d.ts +1 -1
- package/dist/types/platform-components/RecordContentSectionHeading.vue.d.ts +17 -0
- package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +7 -1
- 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 +17 -7
- package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +15 -5
- 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 +6 -2
- package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +12 -2
- package/dist/types/platform-components/RecordPanelButton.vue.d.ts +2 -0
- package/dist/types/platform-components/RecordPicker.vue.d.ts +10 -2
- package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +42 -7
- package/dist/types/platform-components/RecordRelationTabs.vue.d.ts +14 -0
- package/dist/types/platform-components/RecordSelectionCheckbox.vue.d.ts +13 -0
- package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +3 -0
- package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +21 -7
- package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +7 -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 +15 -5
- package/dist/types/platform-components/managementWorkspaceLayout.d.ts +14 -0
- 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 +69 -6
- package/dist/types/platform-components/recordPickerConstraints.d.ts +2 -0
- package/dist/types/platform-components/recordPickerModel.d.ts +6 -2
- package/dist/types/platform-components/recycleBinState.d.ts +2 -0
- package/dist/types/platform-components/scopedTreeModuleContext.d.ts +11 -0
- package/dist/types/platform-workbench/Workbench.vue.d.ts +2 -2
- package/dist/types/platform-workbench/index.d.ts +4 -2
- package/dist/types/platform-workbench/legacyPageHostTypeCompatibility.d.ts +6 -0
- package/dist/types/platform-workbench/menuNavigation.d.ts +26 -1
- package/dist/types/platform-workbench/modulePageWorkspaceViews.d.ts +7 -0
- 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/workbenchLayout.d.ts +36 -0
- package/dist/types/platform-workbench/workbenchNavigation.d.ts +16 -1
- package/dist/types/platform-workbench/workspaceViewHost.d.ts +2 -0
- 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/{UserDetailWorkspaceView.vue.d.ts → UserDetailRouteView.vue.d.ts} +3 -2
- package/dist/types/views/UserManagementView.vue.d.ts +1 -6
- 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 +4 -1
- package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +1 -1
- 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/UiModal.vue.d.ts +1 -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/UiSelect.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +4 -2
- package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +7 -1
- package/dist/types/vue-ui-antdv/index.d.ts +5 -2
- package/dist/types/web-contracts/index.d.ts +408 -24
- package/dist/types/web-core/businessNotifications.d.ts +4 -0
- package/dist/types/web-core/index.d.ts +2 -0
- package/dist/types/web-core/module/abilities.d.ts +7 -7
- package/dist/types/web-core/module/moduleContext.d.ts +6 -3
- package/dist/types/web-core/module/runtimeContext.d.ts +5 -1
- package/dist/types/web-core/module/staticModuleClient.d.ts +42 -9
- package/dist/types/web-core/realtime.d.ts +5 -1
- 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-DYJLlkSz.js +0 -14
- package/dist/EmployeeManagementView-taxWUa7g.js +0 -1778
- package/dist/RoleAuthorizationView-q_6CsBYq.js +0 -592
- package/dist/RoleManagementView-HCa9rH0f.js +0 -1927
- package/dist/SystemUserManagementView-C1CkKivH.js +0 -758
- package/dist/UserDetailWorkspaceView-OPYvD6mH.js +0 -17
- package/dist/UserManagementView-gbCL9SnC.js +0 -965
- package/dist/pageRealtime-CzJlr9hs.js +0 -225
- package/dist/types/views/EmployeeDetailContent.vue.d.ts +0 -64
- package/dist/types/views/PositionManagementView.vue.d.ts +0 -3
- package/dist/types/views/TenantManagementView.vue.d.ts +0 -3
- package/dist/types/views/applicationManagementState.d.ts +0 -64
- package/dist/types/views/departmentManagementState.d.ts +0 -137
- 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/fieldSpecManagementState.d.ts +0 -80
- package/dist/types/views/fieldUiControlManagementState.d.ts +0 -76
- package/dist/types/views/moduleManagementState.d.ts +0 -76
- package/dist/types/views/organizationManagementState.d.ts +0 -64
- 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-CBHEzRFQ.js +0 -128
- package/dist/workspaceViewSessions-DkB9myrq.js +0 -3252
- /package/dist/types/views/{ApplicationManagementView.vue.d.ts → DynamicModuleRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{DepartmentManagementView.vue.d.ts → ExternalRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{FieldSpecManagementView.vue.d.ts → ModuleOpenApiRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{FieldUiControlManagementView.vue.d.ts → OpenApiCatalogRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{ModuleManagementView.vue.d.ts → RouteDiagnosticsView.vue.d.ts} +0 -0
- /package/dist/types/views/{OrganizationManagementView.vue.d.ts → UserManagementListView.vue.d.ts} +0 -0
- /package/dist/types/views/{PasswordManagementView.vue.d.ts → WorkspaceRouteView.vue.d.ts} +0 -0
|
@@ -69,6 +69,42 @@ export interface WebUserNotification {
|
|
|
69
69
|
logoutRequired?: boolean;
|
|
70
70
|
targetSessionId?: string;
|
|
71
71
|
}
|
|
72
|
+
/** Ephemeral business reminder. It is not a persisted inbox or an acknowledgement record. */
|
|
73
|
+
export interface WebBusinessNotification {
|
|
74
|
+
id: string;
|
|
75
|
+
code: string;
|
|
76
|
+
title: string;
|
|
77
|
+
subtitle?: string;
|
|
78
|
+
content: string;
|
|
79
|
+
dismissible: boolean;
|
|
80
|
+
actions: WebBusinessNotificationAction[];
|
|
81
|
+
}
|
|
82
|
+
export type WebBusinessNotificationAction = WebBusinessNotificationNavigateAction | WebBusinessNotificationRecordAction;
|
|
83
|
+
export interface WebBusinessNotificationNavigateAction {
|
|
84
|
+
kind: 'navigate';
|
|
85
|
+
key: string;
|
|
86
|
+
label: string;
|
|
87
|
+
moduleAlias: string;
|
|
88
|
+
recordId?: string;
|
|
89
|
+
pageMode?: 'LIST' | 'FORM' | 'DETAIL';
|
|
90
|
+
query?: Record<string, string>;
|
|
91
|
+
placement?: 'leading' | 'trailing';
|
|
92
|
+
dismissOnSuccess: boolean;
|
|
93
|
+
}
|
|
94
|
+
/** A standard record action implemented by the owning business module. */
|
|
95
|
+
export interface WebBusinessNotificationRecordAction {
|
|
96
|
+
kind: 'record';
|
|
97
|
+
key: string;
|
|
98
|
+
label: string;
|
|
99
|
+
moduleAlias: string;
|
|
100
|
+
recordId: string;
|
|
101
|
+
actionCode: string;
|
|
102
|
+
arguments?: Record<string, unknown>;
|
|
103
|
+
danger?: boolean;
|
|
104
|
+
confirmation?: string;
|
|
105
|
+
placement?: 'leading' | 'trailing';
|
|
106
|
+
dismissOnSuccess: boolean;
|
|
107
|
+
}
|
|
72
108
|
export interface WebBusinessRealtimeEvent {
|
|
73
109
|
type: string;
|
|
74
110
|
moduleAlias: string;
|
|
@@ -88,10 +124,14 @@ export interface WebTreeNode<T> {
|
|
|
88
124
|
*/
|
|
89
125
|
export interface RecordInlineAction {
|
|
90
126
|
key: string;
|
|
127
|
+
/** Standard record action whose availability is resolved for the rendered record. */
|
|
128
|
+
actionCode?: string;
|
|
91
129
|
title: string;
|
|
92
130
|
iconName?: RecordInlineActionIconName;
|
|
93
131
|
showLabel?: boolean;
|
|
94
132
|
disabled?: boolean;
|
|
133
|
+
/** Explains why a visible inline action is unavailable. */
|
|
134
|
+
disabledReason?: string;
|
|
95
135
|
danger?: boolean;
|
|
96
136
|
}
|
|
97
137
|
export type RecordInlineActionIconName = 'app' | 'check' | 'close' | 'delete' | 'down' | 'edit' | 'export' | 'filter' | 'help' | 'lock' | 'notification' | 'plus' | 'power' | 'reload' | 'save' | 'search' | 'settings';
|
|
@@ -194,13 +234,166 @@ export interface PageBootstrap {
|
|
|
194
234
|
resolvedConfig: {
|
|
195
235
|
uiFields: unknown[];
|
|
196
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[];
|
|
197
245
|
};
|
|
198
246
|
openApiPath: string;
|
|
199
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';
|
|
200
392
|
export interface MenuRecord extends StandardEnabledTreeEntity {
|
|
201
393
|
id: string;
|
|
202
394
|
title: string;
|
|
203
395
|
schemeId: string;
|
|
396
|
+
entryType?: MenuEntryType;
|
|
204
397
|
openMode?: MenuOpenMode;
|
|
205
398
|
moduleAlias?: string;
|
|
206
399
|
route?: string;
|
|
@@ -250,7 +443,11 @@ export type MenuNavigationTarget = ModuleMenuTarget | RouteMenuTarget | External
|
|
|
250
443
|
export type MenuNavigationType = MenuNavigationTarget['menuType'];
|
|
251
444
|
export type PageType = 'platform-route' | 'business-route' | 'dynamic-module' | 'remote-url' | 'external-link';
|
|
252
445
|
export type OpenMode = 'workbench-route' | 'dynamic-runner' | 'iframe' | 'new-window';
|
|
253
|
-
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';
|
|
254
451
|
export type TabIdentityStrategy = 'by-menu' | 'by-target' | 'by-params';
|
|
255
452
|
/**
|
|
256
453
|
* Declares which layer owns a page's vertical scroll boundary.
|
|
@@ -297,17 +494,25 @@ export interface DynamicModulePageTarget {
|
|
|
297
494
|
defaultUiConfigId?: string;
|
|
298
495
|
defaultQueryTemplateId?: string;
|
|
299
496
|
}
|
|
497
|
+
export type ModulePageDescriptor = PageDescriptorBase<'dynamic-module', 'dynamic-runner', 'module-page-host', DynamicModulePageTarget>;
|
|
498
|
+
/** Compatibility descriptor accepted when restoring existing workbench state. */
|
|
300
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;
|
|
301
502
|
export interface UrlPageTarget {
|
|
302
503
|
url: string;
|
|
303
504
|
moduleAlias?: string;
|
|
304
505
|
}
|
|
305
506
|
export type RemoteUrlPageDescriptor = PageDescriptorBase<'remote-url', 'iframe' | 'new-window', 'external-page-host', UrlPageTarget>;
|
|
306
507
|
export type ExternalLinkPageDescriptor = PageDescriptorBase<'external-link', 'new-window', 'external-page-host', UrlPageTarget>;
|
|
307
|
-
export type PageDescriptor = PlatformRoutePageDescriptor | BusinessRoutePageDescriptor | DynamicModulePageDescriptor | RemoteUrlPageDescriptor | ExternalLinkPageDescriptor;
|
|
508
|
+
export type PageDescriptor = PlatformRoutePageDescriptor | BusinessRoutePageDescriptor | ModulePageDescriptor | DynamicModulePageDescriptor | RemoteUrlPageDescriptor | ExternalLinkPageDescriptor;
|
|
308
509
|
export interface MenuTab {
|
|
510
|
+
/** Immutable page-instance key used by route restoration and cache isolation. */
|
|
511
|
+
instanceKey?: string;
|
|
309
512
|
key: string;
|
|
310
513
|
title: string;
|
|
514
|
+
/** Exact browser address used to restore this tab. */
|
|
515
|
+
fullPath?: string;
|
|
311
516
|
target?: MenuNavigationTarget;
|
|
312
517
|
pageDescriptor?: PageDescriptor;
|
|
313
518
|
restoreState?: TabRestoreState;
|
|
@@ -346,6 +551,54 @@ export interface WebQueryRequest {
|
|
|
346
551
|
quickSearchFields?: string[];
|
|
347
552
|
externalQueryValues?: Record<string, unknown>;
|
|
348
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
|
+
}
|
|
349
602
|
export type QueryValueType = 'STRING' | 'TEXT' | 'BOOLEAN' | 'INTEGER' | 'LONG' | 'DECIMAL' | 'INSTANT' | 'DATE' | 'JSON';
|
|
350
603
|
export type QueryOperator = 'EQ' | 'NOT_EQUAL' | 'LIKE' | 'IN' | 'NOT_IN' | 'GT' | 'GTE' | 'LT' | 'LTE' | 'BETWEEN' | 'NULL' | 'NOT_NULL';
|
|
351
604
|
export interface QuerySchemaField {
|
|
@@ -387,13 +640,25 @@ export interface UiRule<T> {
|
|
|
387
640
|
formula?: UiFormula;
|
|
388
641
|
disabledHint?: string;
|
|
389
642
|
}
|
|
390
|
-
/**
|
|
391
|
-
* A platform-owned portable Boolean predicate evaluated against the current record draft.
|
|
392
|
-
* The current grammar supports `PRESENT({fieldName})`, `!()` negation, and `&&` conjunction of PRESENT terms.
|
|
393
|
-
* It is deliberately smaller than the server FormulaEngine because this contract must run in every Web client.
|
|
394
|
-
*/
|
|
643
|
+
/** A FormulaEngine expression together with its server-issued WEB_UI AST. */
|
|
395
644
|
export interface UiFormula {
|
|
396
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[];
|
|
397
662
|
}
|
|
398
663
|
export interface ViewFieldRef {
|
|
399
664
|
relationCode?: string;
|
|
@@ -415,6 +680,8 @@ export interface ViewFieldDefinition {
|
|
|
415
680
|
booleanStatus?: BooleanStatusPresentation;
|
|
416
681
|
/** Maximum visible lines for text cells in standard list views. Omitted uses the platform default of one line. */
|
|
417
682
|
maxDisplayLines?: number;
|
|
683
|
+
/** User-facing title for the standard tree root sentinel in a detail field. */
|
|
684
|
+
treeRootTitle?: string;
|
|
418
685
|
}
|
|
419
686
|
/** Semantic group that owns a contiguous set of standard-form fields. */
|
|
420
687
|
export interface FormGroupDescriptor {
|
|
@@ -432,6 +699,21 @@ export interface BooleanStatusPresentation {
|
|
|
432
699
|
export type BooleanStatusTone = 'SUCCESS' | 'NEUTRAL' | 'WARNING' | 'DANGER';
|
|
433
700
|
export type FieldValuePresentation = 'FILE_SIZE';
|
|
434
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
|
+
}
|
|
435
717
|
export interface ResolvedViewFieldDescriptor {
|
|
436
718
|
fieldRef: ViewFieldRef;
|
|
437
719
|
label?: string;
|
|
@@ -439,6 +721,8 @@ export interface ResolvedViewFieldDescriptor {
|
|
|
439
721
|
required?: UiRule<boolean>;
|
|
440
722
|
readOnly?: UiRule<boolean>;
|
|
441
723
|
uiType?: string;
|
|
724
|
+
/** Optional while older descriptors still publish only `uiType`. When present it is authoritative. */
|
|
725
|
+
fieldControl?: ResolvedFieldControlDescriptor;
|
|
442
726
|
valueType?: ViewFieldValueType;
|
|
443
727
|
valuePresentation?: FieldValuePresentation;
|
|
444
728
|
width?: string;
|
|
@@ -446,6 +730,7 @@ export interface ResolvedViewFieldDescriptor {
|
|
|
446
730
|
align?: 'left' | 'center' | 'right' | string;
|
|
447
731
|
fixed?: boolean;
|
|
448
732
|
booleanStatus?: BooleanStatusPresentation;
|
|
733
|
+
treeRootTitle?: string;
|
|
449
734
|
option?: ResolvedOptionFieldDescriptor;
|
|
450
735
|
reference?: ResolvedReferenceFieldDescriptor;
|
|
451
736
|
referenceSummary?: ResolvedReferenceSummaryFieldDescriptor;
|
|
@@ -462,9 +747,22 @@ export interface ResolvedReferenceSummaryFieldDescriptor {
|
|
|
462
747
|
export interface ResolvedReferenceFieldDescriptor {
|
|
463
748
|
targetModuleAlias: string;
|
|
464
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[];
|
|
465
757
|
/** Read-side title projection for this scalar reference, when supplied by the server. */
|
|
466
758
|
titleField?: string;
|
|
467
759
|
}
|
|
760
|
+
export interface ReferenceCandidateDependency {
|
|
761
|
+
sourceField: string;
|
|
762
|
+
targetField: string;
|
|
763
|
+
required: boolean;
|
|
764
|
+
}
|
|
765
|
+
export type ReferencePickerMode = 'LIST' | 'TREE' | 'AUTO';
|
|
468
766
|
export interface OptionBindingDescriptor {
|
|
469
767
|
sourceType: string;
|
|
470
768
|
source: string;
|
|
@@ -473,6 +771,8 @@ export interface ResolvedOptionFieldDescriptor {
|
|
|
473
771
|
binding: OptionBindingDescriptor;
|
|
474
772
|
selectionMode: 'SINGLE' | 'MULTIPLE';
|
|
475
773
|
titleField?: string;
|
|
774
|
+
/** Immutable option facts (currently CodeTitleEnum); scope-sensitive dictionaries stay runtime data. */
|
|
775
|
+
inlineItems?: OptionItemDescriptor[];
|
|
476
776
|
}
|
|
477
777
|
export interface OptionItemDescriptor {
|
|
478
778
|
code: string;
|
|
@@ -489,6 +789,15 @@ export interface ViewDefinition {
|
|
|
489
789
|
fields: ViewFieldDefinition[];
|
|
490
790
|
formGroups?: FormGroupDescriptor[];
|
|
491
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
|
+
}
|
|
492
801
|
export interface ResolvedViewDescriptor {
|
|
493
802
|
viewCode: string;
|
|
494
803
|
viewKind: ModuleViewKind;
|
|
@@ -497,8 +806,86 @@ export interface ResolvedViewDescriptor {
|
|
|
497
806
|
fields: ResolvedViewFieldDescriptor[];
|
|
498
807
|
/** Dynamic-page provenance used to select the view configured by a menu entry. */
|
|
499
808
|
sourceUiConfigId?: string;
|
|
500
|
-
scopedListWorkspace?: ResolvedScopedListWorkspaceDescriptor;
|
|
501
809
|
formGroups?: FormGroupDescriptor[];
|
|
810
|
+
formComputeRules?: ResolvedFormComputeRuleDescriptor[];
|
|
811
|
+
}
|
|
812
|
+
export type ModulePageTemplate = 'FLAT_MANAGEMENT' | 'LIST_DETAIL_CARD' | 'TREE_MANAGEMENT';
|
|
813
|
+
export interface ResolvedPageExplorerDescriptor {
|
|
814
|
+
title: string;
|
|
815
|
+
searchPlaceholder: string;
|
|
816
|
+
emptyDescription: string;
|
|
817
|
+
recordLabel: string;
|
|
818
|
+
fallbackTitle: string;
|
|
819
|
+
titleField: string;
|
|
820
|
+
secondaryField?: string;
|
|
821
|
+
mutedWhenDisabled: boolean;
|
|
822
|
+
}
|
|
823
|
+
export interface ResolvedPageNavigatorDescriptor {
|
|
824
|
+
levels: ResolvedPageNavigatorLevelDescriptor[];
|
|
825
|
+
contextBindings: ResolvedPageContextBindingDescriptor[];
|
|
826
|
+
}
|
|
827
|
+
export interface ResolvedPageNavigatorLevelDescriptor {
|
|
828
|
+
key: string;
|
|
829
|
+
kind: 'TREE' | 'MICRO_LIST';
|
|
830
|
+
sourceModuleAlias: string;
|
|
831
|
+
title: string;
|
|
832
|
+
searchPlaceholder: string;
|
|
833
|
+
/** Presentation policy applied after the source has authoritatively loaded. */
|
|
834
|
+
singleResultPolicy?: 'NONE' | 'AUTO_SELECT' | 'AUTO_SELECT_AND_HIDE';
|
|
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
|
+
*/
|
|
841
|
+
sourceScope?: 'NONE' | 'CURRENT_TENANT';
|
|
842
|
+
/** When present, the navigator source exposes its own standard CRUD affordances in place. */
|
|
843
|
+
management?: ResolvedPageNavigatorManagementDescriptor;
|
|
844
|
+
}
|
|
845
|
+
export interface ResolvedPageContextBindingDescriptor {
|
|
846
|
+
source: 'SESSION' | 'NAVIGATOR';
|
|
847
|
+
sourceKey: string;
|
|
848
|
+
target: 'LIST_QUERY' | 'NAVIGATOR_QUERY' | 'FORM_DEFAULT' | 'PICKER_QUERY' | 'MUTATION_CONSTRAINT';
|
|
849
|
+
targetKey: string;
|
|
850
|
+
targetNavigatorLevelKey?: string;
|
|
851
|
+
/** Field name of the record picker which receives this query context. */
|
|
852
|
+
targetPickerFieldKey?: string;
|
|
853
|
+
}
|
|
854
|
+
export interface ResolvedPageNavigatorManagementDescriptor {
|
|
855
|
+
/** Optional named source-module form; the default editor is used when omitted. */
|
|
856
|
+
editorSurface?: string;
|
|
857
|
+
}
|
|
858
|
+
export interface ResolvedPageListDescriptor {
|
|
859
|
+
searchPlaceholder: string;
|
|
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[];
|
|
867
|
+
}
|
|
868
|
+
export interface ResolvedPageDetailDescriptor {
|
|
869
|
+
emptyDescription: string;
|
|
870
|
+
createTitle: string;
|
|
871
|
+
/** Whether the standard immutable system metadata section is displayed. */
|
|
872
|
+
showSystemInfo?: boolean;
|
|
873
|
+
display?: ResolvedViewDescriptor;
|
|
874
|
+
/** Omitted by an editorless page; standard mutation actions remain governed by the runtime action contract. */
|
|
875
|
+
editor?: ResolvedViewDescriptor;
|
|
876
|
+
/** Stable client registration key for an independently restorable detail workbench view. */
|
|
877
|
+
workspaceView?: ResolvedPageDetailWorkspaceViewDescriptor;
|
|
878
|
+
}
|
|
879
|
+
export interface ResolvedPageDetailWorkspaceViewDescriptor {
|
|
880
|
+
type: string;
|
|
881
|
+
}
|
|
882
|
+
export interface ResolvedModulePageDescriptor {
|
|
883
|
+
template: ModulePageTemplate;
|
|
884
|
+
explorer?: ResolvedPageExplorerDescriptor;
|
|
885
|
+
navigator?: ResolvedPageNavigatorDescriptor;
|
|
886
|
+
list?: ResolvedPageListDescriptor;
|
|
887
|
+
detail: ResolvedPageDetailDescriptor;
|
|
888
|
+
traits: ('STANDARD_CRUD' | 'ENABLED_STATUS' | 'RECYCLE_BIN' | 'RESPONSIVE_DETAIL_SURFACE')[];
|
|
502
889
|
}
|
|
503
890
|
export interface ResolvedUiActionConfirmationDescriptor {
|
|
504
891
|
mode: 'typedText';
|
|
@@ -508,17 +895,6 @@ export interface ResolvedUiActionDescriptor {
|
|
|
508
895
|
actionCode: string;
|
|
509
896
|
confirmation?: ResolvedUiActionConfirmationDescriptor;
|
|
510
897
|
}
|
|
511
|
-
export interface ResolvedScopedListWorkspaceDescriptor {
|
|
512
|
-
scopeModuleAlias: string;
|
|
513
|
-
scopeField: string;
|
|
514
|
-
queryCriteriaKey: string;
|
|
515
|
-
scopeTitle: string;
|
|
516
|
-
scopeSearchPlaceholder: string;
|
|
517
|
-
/** Scope list items only show a secondary label when the descriptor explicitly enables it. */
|
|
518
|
-
showScopeItemSubtitle: boolean;
|
|
519
|
-
createPolicy: 'REQUIRE_SCOPE' | 'ALLOW_UNSCOPED';
|
|
520
|
-
manageScopeTree?: boolean;
|
|
521
|
-
}
|
|
522
898
|
/** Source-neutral runtime fact for one persisted MuYunFileServer field. */
|
|
523
899
|
export interface ResolvedFileReferenceFieldDescriptor {
|
|
524
900
|
fieldRef: ViewFieldRef;
|
|
@@ -529,19 +905,27 @@ export interface ResolvedFileReferenceFieldDescriptor {
|
|
|
529
905
|
uploadAvailable: boolean;
|
|
530
906
|
readAvailable: boolean;
|
|
531
907
|
}
|
|
532
|
-
export interface ModuleUiDefinition {
|
|
533
|
-
moduleAlias: string;
|
|
534
|
-
views: ViewDefinition[];
|
|
535
|
-
}
|
|
536
908
|
export interface ResolvedModuleUiDescriptor {
|
|
537
909
|
schemaVersion: string;
|
|
538
910
|
moduleAlias: string;
|
|
539
911
|
moduleKind?: 'STATIC' | 'DYNAMIC';
|
|
540
912
|
title?: string;
|
|
541
|
-
views: ResolvedViewDescriptor[];
|
|
542
913
|
actions?: ResolvedUiActionDescriptor[];
|
|
543
914
|
recordLabelField?: string;
|
|
544
915
|
fileReferences?: ResolvedFileReferenceFieldDescriptor[];
|
|
916
|
+
page?: ResolvedModulePageDescriptor;
|
|
917
|
+
defaultEditor?: ResolvedViewDescriptor;
|
|
918
|
+
editorSurfaces?: ResolvedEditorSurfaceDescriptor[];
|
|
919
|
+
editorContributions?: ResolvedPageDetailEditorContribution[];
|
|
920
|
+
detailRelations?: ResolvedDetailRelationDescriptor[];
|
|
921
|
+
}
|
|
922
|
+
export interface ResolvedEditorSurfaceDescriptor {
|
|
923
|
+
key: string;
|
|
924
|
+
editor: ResolvedViewDescriptor;
|
|
925
|
+
}
|
|
926
|
+
export interface ResolvedPageDetailEditorContribution {
|
|
927
|
+
resource: string;
|
|
928
|
+
editor: ResolvedViewDescriptor;
|
|
545
929
|
}
|
|
546
930
|
export interface StandardEntity {
|
|
547
931
|
id?: string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { WebBusinessNotificationRecordAction } from '../web-contracts/index';
|
|
2
|
+
import type { HttpClient } from './http';
|
|
3
|
+
/** Calls the standard record action declared by a notification. */
|
|
4
|
+
export declare function invokeBusinessNotificationRecordAction(http: HttpClient, action: WebBusinessNotificationRecordAction): Promise<unknown>;
|
|
@@ -2,9 +2,11 @@ export * from './errors';
|
|
|
2
2
|
export * from './http';
|
|
3
3
|
export * from './query';
|
|
4
4
|
export * from './actionResult';
|
|
5
|
+
export * from './businessNotifications';
|
|
5
6
|
export * from './dataChanges';
|
|
6
7
|
export * from './realtime';
|
|
7
8
|
export * from './clients';
|
|
9
|
+
export * from './referenceResolveClient';
|
|
8
10
|
export { userPreferences } from './userPreferences';
|
|
9
11
|
export type { UserPreferenceOptions, UserPreferenceStore } from './userPreferences';
|
|
10
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;
|
|
@@ -23,6 +25,7 @@ export interface ModuleContextConfig {
|
|
|
23
25
|
}
|
|
24
26
|
export interface ModuleContextOptions extends ModuleContextConfig {
|
|
25
27
|
moduleAlias: string;
|
|
28
|
+
runtimeAccess?: 'MENU' | 'REFERENCE';
|
|
26
29
|
}
|
|
27
30
|
export declare function configureModuleContext(config: ModuleContextConfig): void;
|
|
28
31
|
export declare function provideModuleContextConfig(config: ModuleContextConfig): void;
|
|
@@ -47,6 +47,8 @@ export interface ModuleRuntimeContext {
|
|
|
47
47
|
capabilities: string[];
|
|
48
48
|
abilities?: string[];
|
|
49
49
|
actions: ModuleRuntimeAction[];
|
|
50
|
+
/** Read-only projections this module deliberately exposes for page navigation. */
|
|
51
|
+
navigatorSourceCapabilities?: Array<'REFERENCE_QUERY' | 'REFERENCE_TREE'>;
|
|
50
52
|
uiDescriptor?: ResolvedModuleUiDescriptor;
|
|
51
53
|
}
|
|
52
54
|
export interface ModuleRuntimeContextState {
|
|
@@ -59,7 +61,9 @@ export interface ModuleRuntimeContextState {
|
|
|
59
61
|
runtimeAction(actionCode: string): ModuleRuntimeAction | undefined;
|
|
60
62
|
can(actionCode: string, recordId?: string): boolean | undefined;
|
|
61
63
|
recordActions(recordId: string): Promise<ModuleRecordActionAvailability>;
|
|
64
|
+
recordActionsBatch?(recordIds: string[]): Promise<ModuleRecordActionAvailability[]>;
|
|
62
65
|
recordActionsSnapshot(recordId: string): ModuleRecordActionAvailability | undefined;
|
|
66
|
+
invalidateRecordActions?(recordIds?: string[]): void;
|
|
63
67
|
}
|
|
64
|
-
export declare function createModuleRuntimeContextState(http: HttpClient, moduleAlias: string): ModuleRuntimeContextState;
|
|
68
|
+
export declare function createModuleRuntimeContextState(http: HttpClient, moduleAlias: string, access?: 'MENU' | 'REFERENCE'): ModuleRuntimeContextState;
|
|
65
69
|
export declare function isRuntimeAbilityAvailable(context: ModuleRuntimeContext | undefined, ability: ModuleAbilityCode): boolean;
|