@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
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ModuleContext } from '../../web-core/index';
|
|
2
|
+
interface DetailController<TRecord> {
|
|
3
|
+
beginLoad(record: TRecord, mode: 'edit' | 'view'): void;
|
|
4
|
+
resolveLoad(record: TRecord): void;
|
|
5
|
+
failLoad(): void;
|
|
6
|
+
finishLoad(): void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Serializes record-detail requests for one module-page session.
|
|
10
|
+
*
|
|
11
|
+
* Loading a second record (or closing the detail) invalidates all earlier
|
|
12
|
+
* completions. This is deliberately independent of the visual host so list,
|
|
13
|
+
* card and drawer surfaces cannot accidentally diverge on request races.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useRecordEditingSession<TRecord extends {
|
|
16
|
+
id?: unknown;
|
|
17
|
+
}>(context: ModuleContext<TRecord>, detail: DetailController<TRecord>, onLoaded: () => void): {
|
|
18
|
+
invalidatePendingRequests: () => void;
|
|
19
|
+
openRecord: (record: TRecord, mode: "edit" | "view", skipLoad?: boolean) => Promise<void>;
|
|
20
|
+
openRecycleBinRecord: (record: TRecord) => Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { UserPreferenceStore } from '../web-core/index';
|
|
2
|
+
export type DetailSurfacePreference = 'drawer' | 'pinned';
|
|
3
|
+
export declare function detailSurfacePreferenceKey(moduleAlias: string): string;
|
|
4
|
+
export declare function normalizeDetailSurfacePreference(value: unknown): DetailSurfacePreference | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Restores an account-scoped choice while retaining the device-local value as
|
|
7
|
+
* a resilient fallback when the preference service is temporarily unavailable.
|
|
8
|
+
*/
|
|
9
|
+
export declare function restoreDetailSurfacePreference(store: UserPreferenceStore, moduleAlias: string): Promise<DetailSurfacePreference | undefined>;
|
|
10
|
+
export declare function saveDetailSurfacePreference(store: UserPreferenceStore, moduleAlias: string, preference: DetailSurfacePreference): Promise<void>;
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
hasRecord: boolean;
|
|
7
|
-
saving: boolean;
|
|
8
|
-
loading: boolean;
|
|
9
|
-
loadFailed: boolean;
|
|
10
|
-
}
|
|
11
|
-
export declare function shouldCommitDynamicModuleDetailRequest(state: DynamicModuleDetailRequestState): boolean;
|
|
12
|
-
export declare function canMutateDynamicModuleDetail(state: DynamicModuleDetailMutationState): boolean;
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Standard module pages use `moduleDetailStateModel`. Remove after
|
|
3
|
+
* extensions built before the rename have migrated their state-model imports.
|
|
4
|
+
*/
|
|
5
|
+
export { canMutateModuleDetail as canMutateDynamicModuleDetail, shouldCommitModuleDetailRequest as shouldCommitDynamicModuleDetailRequest, type ModuleDetailMutationState as DynamicModuleDetailMutationState, type ModuleDetailRequestState as DynamicModuleDetailRequestState, } from './moduleDetailStateModel';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FormulaRuntime, type FormulaRecord } from '../formula/FormulaRuntime';
|
|
2
|
+
import type { ResolvedFormComputeRuleDescriptor } from '../web-contracts/index';
|
|
3
|
+
/**
|
|
4
|
+
* Applies server-issued main-form calculation rules to a draft after one or
|
|
5
|
+
* more user-originated field changes.
|
|
6
|
+
*
|
|
7
|
+
* The coordinator owns propagation, rather than the field component or the
|
|
8
|
+
* FormulaRuntime: fields remain plain inputs and FormulaRuntime remains a
|
|
9
|
+
* pure evaluator. A rule runs at most once in a pass, which makes malformed
|
|
10
|
+
* cyclic descriptor graphs fail closed instead of repeatedly overwriting a
|
|
11
|
+
* user's draft.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FormComputeCoordinator {
|
|
14
|
+
private readonly runtime;
|
|
15
|
+
private readonly rules;
|
|
16
|
+
constructor(rules: readonly ResolvedFormComputeRuleDescriptor[] | undefined, runtime?: FormulaRuntime);
|
|
17
|
+
applyAfterChange<TDraft extends FormulaRecord>(draft: TDraft, changedFields: readonly string[]): TDraft;
|
|
18
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
export { default as ModulePageHost } from './ModulePageHost.vue';
|
|
1
2
|
export { default as DynamicModuleHost } from './DynamicModuleHost.vue';
|
|
2
3
|
export { default as DynamicModulePage } from './DynamicModulePage.vue';
|
|
4
|
+
export { default as DynamicModuleWorkspaceDetailView } from './DynamicModuleWorkspaceDetailView.vue';
|
|
3
5
|
export { customerDescriptor } from './mockDescriptor';
|
|
4
|
-
export { configureModulePageEnhancements, createModulePageEnhancementRegistry, modulePageWorkspaceViews, resolveModulePageEnhancement, } from './modulePageEnhancements';
|
|
6
|
+
export { configureModulePageEnhancementContributions, configureModulePageEnhancements, createModulePageEnhancementRegistry, createReadonlyCardRecordSnapshot, modulePageWorkspaceViews, resolveModulePageEnhancement, } from './modulePageEnhancements';
|
|
5
7
|
export { provideModulePageNavigation, useModulePageNavigation } from './modulePageNavigation';
|
|
6
8
|
export { createModulePageListRefreshRegistry, modulePageListRefreshRegistry, refreshModulePageList, } from './modulePageListRefresh';
|
|
7
9
|
export type { ModulePageListRefreshRegistry } from './modulePageListRefresh';
|
|
8
|
-
export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
|
|
10
|
+
export type { ModuleListEnhancement, ModulePageListRowExpansion, ModulePageListRowExpansionContext, ModuleDetailEnhancement, ModulePageFormEnhancement, ModulePageFormContribution, ModulePageFormContributionContext, ModulePageFormContributionState, ModulePageFormFieldPolicy, ModulePageFormContributionLocation, ModulePageFormContributionValidity, ModulePageFormSurface, ModuleCardEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailDrawer, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageRecordViewContext, ModulePageEnhancement, ModulePageEnhancementActivationContext, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageCardAssistant, ModulePageCardAssistantContext, ModulePageCardAssistantPlacement, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { UserPreferenceStore } from '../web-core/index';
|
|
2
|
+
export declare function listPageSizePreferenceKey(moduleAlias: string): string;
|
|
3
|
+
export declare function normalizeListPageSize(value: unknown, fallback?: number): number;
|
|
4
|
+
/**
|
|
5
|
+
* A module-list preference is presentation-only. It deliberately remains
|
|
6
|
+
* separate from the menu UI config and query template, which continue to own
|
|
7
|
+
* authorized page shape and server-side criteria.
|
|
8
|
+
*/
|
|
9
|
+
export declare function restoreListPageSize(store: UserPreferenceStore, moduleAlias: string, fallback?: number): Promise<number>;
|
|
10
|
+
export declare function saveListPageSize(store: UserPreferenceStore, moduleAlias: string, pageSize: number): Promise<void>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ModuleDetailRequestState {
|
|
2
|
+
activeRequestSequence: number;
|
|
3
|
+
requestSequence: number;
|
|
4
|
+
}
|
|
5
|
+
export interface ModuleDetailMutationState {
|
|
6
|
+
hasRecord: boolean;
|
|
7
|
+
saving: boolean;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
loadFailed: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function shouldCommitModuleDetailRequest(state: ModuleDetailRequestState): boolean;
|
|
12
|
+
export declare function canMutateModuleDetail(state: ModuleDetailMutationState): boolean;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Component } from 'vue';
|
|
2
|
-
import type { PageLayoutMode, RouteQueryValue } from '../web-contracts/index';
|
|
2
|
+
import type { PageDescriptor, PageLayoutMode, RouteQueryValue } from '../web-contracts/index';
|
|
3
3
|
import type { ModuleContext } from '../web-core/index';
|
|
4
|
-
import type { RecordActionItem, RecordQueryListColumn, QueryListRecord } from '../platform-components/index';
|
|
4
|
+
import type { RecordActionItem, RecordFormFieldState, RecordFormFieldValue, RecordQueryListColumn, QueryListRecord } from '../platform-components/index';
|
|
5
|
+
import type { DrawerTitleAction } from '../platform-components/index';
|
|
5
6
|
/**
|
|
6
7
|
* Frontend-owned, constrained composition for a descriptor-driven module page.
|
|
7
8
|
*
|
|
@@ -12,30 +13,184 @@ import type { RecordActionItem, RecordQueryListColumn, QueryListRecord } from '.
|
|
|
12
13
|
export interface ModulePageEnhancement {
|
|
13
14
|
id: string;
|
|
14
15
|
target: ModulePageEnhancementTarget;
|
|
16
|
+
/**
|
|
17
|
+
* Optional frontend-owned activation hook for a descriptor page. It may load
|
|
18
|
+
* auxiliary, already-authorized platform facts used by the enhancement, but
|
|
19
|
+
* never receives a backend component name or executable descriptor payload.
|
|
20
|
+
*/
|
|
21
|
+
activate?(context: ModulePageEnhancementActivationContext): void | (() => void);
|
|
15
22
|
list?: ModuleListEnhancement;
|
|
16
23
|
detail?: ModuleDetailEnhancement;
|
|
17
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Frontend-owned editor content mounted at a typed standard-form boundary.
|
|
26
|
+
* The backend descriptor never selects a component or supplies executable UI.
|
|
27
|
+
*/
|
|
28
|
+
form?: ModulePageFormEnhancement;
|
|
29
|
+
/** Frontend-owned assistant persistently mounted in the standard record card. */
|
|
30
|
+
card?: ModuleCardEnhancement;
|
|
31
|
+
/**
|
|
32
|
+
* The presentation selected when a user invokes the standard record-view intent.
|
|
33
|
+
*
|
|
34
|
+
* Both the platform "查看" action and a list double-click enter the same record
|
|
35
|
+
* view flow. Applications may replace only the drawer body, while the runtime
|
|
36
|
+
* retains that flow's action checks, shell and lifecycle.
|
|
37
|
+
*/
|
|
38
|
+
recordView?: ModulePageRecordView;
|
|
39
|
+
workspaceViews?: ModulePageWorkspaceView<ModulePageWorkspaceViewInput>[];
|
|
18
40
|
}
|
|
19
41
|
export interface ModulePageEnhancementTarget {
|
|
20
42
|
moduleAlias: string;
|
|
21
43
|
/** Omit to apply to every list view of the module. */
|
|
22
44
|
viewCode?: string;
|
|
23
45
|
}
|
|
46
|
+
export interface ModulePageEnhancementActivationContext {
|
|
47
|
+
module: ModuleContext<QueryListRecord>;
|
|
48
|
+
}
|
|
24
49
|
export interface ModuleListEnhancement {
|
|
25
50
|
actions?: ModulePageActionContribution[];
|
|
26
51
|
columns?: ModulePageColumnContribution[];
|
|
27
52
|
/** Replaces the visual renderer of a descriptor-owned column without adding a duplicate column. */
|
|
28
53
|
cellComponents?: ModulePageCellComponentContribution[];
|
|
54
|
+
/**
|
|
55
|
+
* Application-owned content for the platform list's expanded-row boundary.
|
|
56
|
+
*
|
|
57
|
+
* This is deliberately separate from descriptor relation expansions: use it
|
|
58
|
+
* for authorized business projections that are not a standard child relation.
|
|
59
|
+
* The runtime owns expansion state and table rendering; the application owns
|
|
60
|
+
* only the trusted Vue component and its auxiliary reads/actions.
|
|
61
|
+
*/
|
|
62
|
+
rowExpansion?: ModulePageListRowExpansion;
|
|
29
63
|
/** Width of the list's fixed operation column; defaults to the platform compact width. */
|
|
30
64
|
actionColumnWidth?: string | number;
|
|
31
65
|
rowActions?: ModulePageRecordActionContribution[];
|
|
32
66
|
batchActions?: ModulePageBatchActionContribution[];
|
|
33
67
|
}
|
|
68
|
+
export interface ModulePageListRowExpansion {
|
|
69
|
+
key: string;
|
|
70
|
+
component: Component;
|
|
71
|
+
}
|
|
72
|
+
export interface ModulePageListRowExpansionContext {
|
|
73
|
+
module: ModuleContext<QueryListRecord>;
|
|
74
|
+
/** Detached snapshot of the record being expanded. */
|
|
75
|
+
record: Readonly<QueryListRecord>;
|
|
76
|
+
expanded: boolean;
|
|
77
|
+
/** Reloads the standard list without giving the extension ownership of its query state. */
|
|
78
|
+
refreshList(): void;
|
|
79
|
+
}
|
|
34
80
|
/** Actions appended to the standard record-detail operation area in view mode. */
|
|
35
81
|
export interface ModuleDetailEnhancement {
|
|
36
82
|
actions?: ModulePageRecordActionContribution[];
|
|
37
83
|
sections?: ModulePageDetailSection[];
|
|
38
84
|
}
|
|
85
|
+
/** A controlled addition to the descriptor-owned standard form, not a replacement editor. */
|
|
86
|
+
export interface ModulePageFormEnhancement {
|
|
87
|
+
contributions: ModulePageFormContribution[];
|
|
88
|
+
fieldPolicies?: ModulePageFormFieldPolicy[];
|
|
89
|
+
}
|
|
90
|
+
/** The platform-owned record-card form surface, regardless of its outer page shell. */
|
|
91
|
+
export type ModulePageFormSurface = 'record-card';
|
|
92
|
+
/**
|
|
93
|
+
* A contribution can target an entire semantic form section or the immediate
|
|
94
|
+
* boundary before/after one descriptor-owned field. The host owns all other
|
|
95
|
+
* rendering, codecs, permissions, requests and save lifecycle.
|
|
96
|
+
*/
|
|
97
|
+
export interface ModulePageFormContribution {
|
|
98
|
+
key: string;
|
|
99
|
+
component: Component;
|
|
100
|
+
location: ModulePageFormContributionLocation;
|
|
101
|
+
}
|
|
102
|
+
export type ModulePageFormContributionLocation = {
|
|
103
|
+
surface: ModulePageFormSurface;
|
|
104
|
+
section: 'before-fields' | 'after-fields';
|
|
105
|
+
} | {
|
|
106
|
+
surface: ModulePageFormSurface;
|
|
107
|
+
fieldName: string;
|
|
108
|
+
placement: 'before' | 'after';
|
|
109
|
+
};
|
|
110
|
+
/** The only form state exposed to application-owned editor contributions. */
|
|
111
|
+
export interface ModulePageFormContributionContext {
|
|
112
|
+
mode: 'create' | 'edit' | 'view';
|
|
113
|
+
/** A detached, deeply frozen draft snapshot. */
|
|
114
|
+
draft: Readonly<Record<string, unknown>>;
|
|
115
|
+
/** Descriptor-resolved field states; never a mutable draft or HTTP client. */
|
|
116
|
+
fields: readonly Readonly<RecordFormFieldState>[];
|
|
117
|
+
/** The field at a field-boundary location, otherwise undefined. */
|
|
118
|
+
field?: Readonly<RecordFormFieldState>;
|
|
119
|
+
setField(fieldName: string, value: RecordFormFieldValue): void;
|
|
120
|
+
formSessionKey: number;
|
|
121
|
+
/** Reports only this contribution's validation fact to the standard save boundary. */
|
|
122
|
+
reportValidity(validity: ModulePageFormContributionValidity): void;
|
|
123
|
+
}
|
|
124
|
+
export interface ModulePageFormContributionValidity {
|
|
125
|
+
valid: boolean;
|
|
126
|
+
errors?: Record<string, string>;
|
|
127
|
+
}
|
|
128
|
+
/** Read-only facts consumable by a descriptor-field presentation policy. */
|
|
129
|
+
export interface ModulePageFormContributionState {
|
|
130
|
+
mode: 'create' | 'edit' | 'view';
|
|
131
|
+
draft: Readonly<Record<string, unknown>>;
|
|
132
|
+
fields: readonly Readonly<RecordFormFieldState>[];
|
|
133
|
+
formSessionKey: number;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* A typed visual policy around one descriptor-owned field. The platform keeps
|
|
137
|
+
* transport, file upload and field codecs inside the standard renderer.
|
|
138
|
+
*/
|
|
139
|
+
export interface ModulePageFormFieldPolicy {
|
|
140
|
+
fieldName: string;
|
|
141
|
+
visible?(state: ModulePageFormContributionState): boolean;
|
|
142
|
+
imageUploadHint?(state: ModulePageFormContributionState): string | undefined;
|
|
143
|
+
imageUploadAdvisory?(state: ModulePageFormContributionState): ((file: File) => string | undefined | Promise<string | undefined>) | undefined;
|
|
144
|
+
}
|
|
145
|
+
/** Frontend-owned auxiliary UI adjacent to the descriptor-owned record card. */
|
|
146
|
+
export interface ModuleCardEnhancement {
|
|
147
|
+
assistant: ModulePageCardAssistant;
|
|
148
|
+
}
|
|
149
|
+
export interface ModulePageCardAssistant {
|
|
150
|
+
/** A source component; backend descriptors never select or name it. */
|
|
151
|
+
component: Component;
|
|
152
|
+
/** Explicitly anchors the component to the standard record-card boundary. */
|
|
153
|
+
placement: ModulePageCardAssistantPlacement;
|
|
154
|
+
}
|
|
155
|
+
export interface ModulePageCardAssistantPlacement {
|
|
156
|
+
/** `inside` shares the record-card content scrollbar; `outside` remains a sibling surface. */
|
|
157
|
+
boundary: 'inside' | 'outside';
|
|
158
|
+
/** Position relative to that boundary; never inserted between descriptor-owned fields. */
|
|
159
|
+
position: 'top' | 'bottom';
|
|
160
|
+
}
|
|
161
|
+
export interface ModulePageCardAssistantContext {
|
|
162
|
+
module: ModuleContext<QueryListRecord>;
|
|
163
|
+
mode: 'view' | 'create' | 'edit';
|
|
164
|
+
/** Detached and deeply frozen current record or form draft. It may be absent before selection. */
|
|
165
|
+
record?: Readonly<Record<string, unknown>>;
|
|
166
|
+
/**
|
|
167
|
+
* Detached snapshot of records already loaded by the standard explorer.
|
|
168
|
+
* This never triggers an auxiliary request and may be bounded by the explorer.
|
|
169
|
+
*/
|
|
170
|
+
loadedRecords: readonly Readonly<Record<string, unknown>>[];
|
|
171
|
+
formSessionKey: number;
|
|
172
|
+
saving: boolean;
|
|
173
|
+
loading: boolean;
|
|
174
|
+
loadFailed: boolean;
|
|
175
|
+
}
|
|
176
|
+
/** Application-owned presentation of the platform's standard record-view intent. */
|
|
177
|
+
export interface ModulePageRecordView {
|
|
178
|
+
/**
|
|
179
|
+
* Replaces the descriptor-generated detail body while retaining the platform
|
|
180
|
+
* view drawer, its list entry points, and its lifecycle.
|
|
181
|
+
*
|
|
182
|
+
* A custom drawer body is intentionally read-only from the platform's point
|
|
183
|
+
* of view: generic edit and enable/disable controls are withheld so that the
|
|
184
|
+
* business module owns every operation it exposes in the view.
|
|
185
|
+
*/
|
|
186
|
+
drawer: ModulePageDetailDrawer;
|
|
187
|
+
/**
|
|
188
|
+
* Optional record-level business grant required in addition to the standard
|
|
189
|
+
* view entry point. This protects business drawer data without turning its
|
|
190
|
+
* custom endpoints into a second "查看" UI action.
|
|
191
|
+
*/
|
|
192
|
+
authorizationActionCode?: string;
|
|
193
|
+
}
|
|
39
194
|
export interface ModulePageActionContribution extends RecordActionItem {
|
|
40
195
|
key: string;
|
|
41
196
|
/** Authorizes this toolbar action against the selected scoped-list record instead of the page module. */
|
|
@@ -59,6 +214,18 @@ export interface ModulePageDetailSection {
|
|
|
59
214
|
title: string;
|
|
60
215
|
component: Component;
|
|
61
216
|
}
|
|
217
|
+
/** Business content rendered inside the platform-owned standard view drawer. */
|
|
218
|
+
export interface ModulePageDetailDrawer {
|
|
219
|
+
/** The component receives only the documented read-only ModulePageRecordViewContext prop. */
|
|
220
|
+
component: Component;
|
|
221
|
+
/** Keeps the platform drawer shell while allowing dense business views more room. */
|
|
222
|
+
width?: number | string;
|
|
223
|
+
/**
|
|
224
|
+
* Defaults to true. Set false when the business detail body has its own
|
|
225
|
+
* governed read endpoint and only needs the selected list record as context.
|
|
226
|
+
*/
|
|
227
|
+
loadRecord?: boolean;
|
|
228
|
+
}
|
|
62
229
|
export interface ModulePageColumnContribution extends RecordQueryListColumn {
|
|
63
230
|
key: string;
|
|
64
231
|
/** Insert adjacent to a descriptor column. Omit to append after descriptor columns. */
|
|
@@ -77,7 +244,10 @@ export interface ModulePageDrawer {
|
|
|
77
244
|
/** The component receives only the documented ModulePageDrawerContext prop. */
|
|
78
245
|
component: Component;
|
|
79
246
|
}
|
|
80
|
-
|
|
247
|
+
/** A business-owned action rendered by the platform in a semantic drawer region. */
|
|
248
|
+
export type ModulePageDrawerAction = DrawerTitleAction;
|
|
249
|
+
/** Matches the Workbench input boundary; `parse` remains responsible for route-value validation. */
|
|
250
|
+
export type ModulePageWorkspaceViewInput = object;
|
|
81
251
|
/** A business-owned view with stable, serializable identity. */
|
|
82
252
|
export interface ModulePageWorkspaceView<TInput extends ModulePageWorkspaceViewInput = ModulePageWorkspaceViewInput> {
|
|
83
253
|
type: string;
|
|
@@ -96,6 +266,29 @@ export interface ModulePageDrawerContext {
|
|
|
96
266
|
scope?: ModulePageScopeContext;
|
|
97
267
|
/** Reloads only the current list query and preserves its query and editor state. */
|
|
98
268
|
refreshList(): void;
|
|
269
|
+
/** Invalidates frontend-owned detail sections for the current record. */
|
|
270
|
+
refreshDetailExtensions(): void;
|
|
271
|
+
/** Blocks the drawer shell's close affordances while a contributed operation is in flight. */
|
|
272
|
+
setCloseBlocked(blocked: boolean): void;
|
|
273
|
+
close(): void;
|
|
274
|
+
reload(): void;
|
|
275
|
+
/** Replaces contextual actions beside the drawer title; actions are cleared with the drawer. */
|
|
276
|
+
setTitleActions(actions: ModulePageDrawerAction[]): void;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Context for a custom body inside the platform-owned record-view shell.
|
|
280
|
+
*
|
|
281
|
+
* A record-view body does not own the drawer chrome. In particular it cannot
|
|
282
|
+
* replace title actions or block the shell from closing; those facilities are
|
|
283
|
+
* reserved for an action-opened ModulePageDrawer, whose operation lifecycle is
|
|
284
|
+
* explicitly governed by the platform drawer runtime.
|
|
285
|
+
*/
|
|
286
|
+
export interface ModulePageRecordViewContext {
|
|
287
|
+
module: ModuleContext<QueryListRecord>;
|
|
288
|
+
record: QueryListRecord;
|
|
289
|
+
scope?: ModulePageScopeContext;
|
|
290
|
+
refreshList(): void;
|
|
291
|
+
refreshDetailExtensions(): void;
|
|
99
292
|
close(): void;
|
|
100
293
|
reload(): void;
|
|
101
294
|
}
|
|
@@ -107,6 +300,8 @@ export interface ModulePageActionContext {
|
|
|
107
300
|
refreshList(): void;
|
|
108
301
|
openDrawer(drawer: ModulePageDrawer): void;
|
|
109
302
|
openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput): void;
|
|
303
|
+
/** Opens an existing, platform-owned page descriptor through the Workbench. */
|
|
304
|
+
openPage(descriptor: PageDescriptor): void;
|
|
110
305
|
reload(): void;
|
|
111
306
|
}
|
|
112
307
|
/** Read-only scope state supplied by a descriptor-owned scoped list workspace. */
|
|
@@ -131,14 +326,31 @@ export interface ModulePageDetailSectionContext {
|
|
|
131
326
|
record: QueryListRecord;
|
|
132
327
|
/** Reloads only the current list query and preserves its query and editor state. */
|
|
133
328
|
refreshList(): void;
|
|
329
|
+
/** Monotonic invalidation fact for frontend-owned detail data. */
|
|
330
|
+
refreshKey: number;
|
|
134
331
|
reload(): void;
|
|
135
332
|
}
|
|
136
333
|
export interface ModulePageEnhancementRegistry {
|
|
137
334
|
resolve(moduleAlias: string, viewCode?: string): ModulePageEnhancement | undefined;
|
|
138
|
-
workspaceViews(): readonly ModulePageWorkspaceView[];
|
|
335
|
+
workspaceViews(): readonly ModulePageWorkspaceView<ModulePageWorkspaceViewInput>[];
|
|
139
336
|
}
|
|
140
337
|
export declare function createModulePageEnhancementRegistry(enhancements: readonly ModulePageEnhancement[]): ModulePageEnhancementRegistry;
|
|
141
|
-
/**
|
|
338
|
+
/**
|
|
339
|
+
* Replaces one owner's contribution set while retaining every other owner.
|
|
340
|
+
*
|
|
341
|
+
* This is the composition API for first-party defaults and consuming
|
|
342
|
+
* applications. Multiple owners may contribute to the same module target;
|
|
343
|
+
* their independent regions are merged and conflicting regions fail fast.
|
|
344
|
+
*/
|
|
345
|
+
export declare function configureModulePageEnhancementContributions(owner: string, enhancements: readonly ModulePageEnhancement[]): void;
|
|
346
|
+
/**
|
|
347
|
+
* Legacy application composition API. It replaces only the legacy
|
|
348
|
+
* application's contribution set; first-party and named-owner defaults remain
|
|
349
|
+
* registered. New composition roots should use
|
|
350
|
+
* configureModulePageEnhancementContributions(owner, enhancements).
|
|
351
|
+
*/
|
|
142
352
|
export declare function configureModulePageEnhancements(enhancements: readonly ModulePageEnhancement[]): void;
|
|
143
353
|
export declare function resolveModulePageEnhancement(moduleAlias: string, viewCode?: string): ModulePageEnhancement | undefined;
|
|
144
354
|
export declare function modulePageWorkspaceViews(): readonly ModulePageWorkspaceView<ModulePageWorkspaceViewInput>[];
|
|
355
|
+
/** Creates the only record shape that a card assistant may receive. */
|
|
356
|
+
export declare function createReadonlyCardRecordSnapshot(record: Record<string, unknown>): Readonly<Record<string, unknown>>;
|
|
@@ -5,7 +5,7 @@ export interface ModulePageNavigation {
|
|
|
5
5
|
openPage(descriptor: PageDescriptor): {
|
|
6
6
|
created: boolean;
|
|
7
7
|
};
|
|
8
|
-
openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput): void;
|
|
8
|
+
openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput, title?: string): void;
|
|
9
9
|
}
|
|
10
10
|
export declare function provideModulePageNavigation(navigation: ModulePageNavigation | undefined): void;
|
|
11
11
|
export declare function useModulePageNavigation(): ModulePageNavigation | undefined;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ResolvedPageNavigatorLevelDescriptor } from '../web-contracts/index';
|
|
2
|
+
/**
|
|
3
|
+
* A tenant user's sole tenant is a fixed request scope, while a system user has no session
|
|
4
|
+
* tenant and may choose from the tenant records allowed by the source REFERENCE action.
|
|
5
|
+
*/
|
|
6
|
+
export declare function shouldHideSingleResultNavigator(level: ResolvedPageNavigatorLevelDescriptor, singleResult: boolean, sessionTenantId: string | undefined): boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ResolvedPageContextBindingDescriptor } from '../web-contracts/index';
|
|
2
|
+
export type PageContextSourceValues = Partial<Record<ResolvedPageContextBindingDescriptor['source'], Record<string, unknown>>>;
|
|
3
|
+
/** Returns context fields that must be supplied by the browser for a query target. */
|
|
4
|
+
export declare function externalPageContextCriteriaKeys(bindings: readonly ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target'], targetNavigatorLevelKey?: string): string[];
|
|
5
|
+
/** Resolves declared context flows without coupling a target to navigator UI state. */
|
|
6
|
+
export declare function resolvePageContextTargetValues(bindings: readonly ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target'], sourceValues: PageContextSourceValues, targetNavigatorLevelKey?: string): Record<string, unknown> | undefined;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type RecordDetailMode = 'create' | 'edit' | 'view';
|
|
2
|
+
export interface RecordDetailCreateOptions<TRecord> {
|
|
3
|
+
/**
|
|
4
|
+
* The already selected detail to reinstate if the user abandons this new
|
|
5
|
+
* draft. It is deliberately held outside `record`: while creating, the
|
|
6
|
+
* detail surface must not accidentally expose actions for the prior record.
|
|
7
|
+
*/
|
|
8
|
+
restoreRecord?: TRecord;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* State transitions shared by descriptor-driven record detail surfaces.
|
|
12
|
+
* Containers own their layout; this controller owns only one record's
|
|
13
|
+
* lifecycle and deliberately contains no drawer, tab or list concerns.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useRecordDetailController<TRecord extends Record<string, unknown>>(): {
|
|
16
|
+
record: import("vue").Ref<TRecord | undefined, TRecord | undefined>;
|
|
17
|
+
draft: import("vue").Ref<TRecord | undefined, TRecord | undefined>;
|
|
18
|
+
mode: import("vue").Ref<RecordDetailMode, RecordDetailMode>;
|
|
19
|
+
open: import("vue").Ref<boolean, boolean>;
|
|
20
|
+
loading: import("vue").Ref<boolean, boolean>;
|
|
21
|
+
loadFailed: import("vue").Ref<boolean, boolean>;
|
|
22
|
+
saving: import("vue").Ref<boolean, boolean>;
|
|
23
|
+
togglingEnabled: import("vue").Ref<boolean, boolean>;
|
|
24
|
+
formSessionKey: import("vue").Ref<number, number>;
|
|
25
|
+
beginLoad: (next: TRecord, nextMode: Extract<RecordDetailMode, "edit" | "view">) => void;
|
|
26
|
+
resolveLoad: (next: TRecord) => void;
|
|
27
|
+
failLoad: () => void;
|
|
28
|
+
finishLoad: () => void;
|
|
29
|
+
beginCreate: (initial: TRecord, options?: RecordDetailCreateOptions<TRecord>) => void;
|
|
30
|
+
beginEdit: () => boolean;
|
|
31
|
+
cancelEdit: () => void;
|
|
32
|
+
applySaved: (next: TRecord) => void;
|
|
33
|
+
clearDeleted: () => void;
|
|
34
|
+
close: () => void;
|
|
35
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FormulaRuntime, type FormulaRecord } from '../formula/FormulaRuntime';
|
|
2
|
+
import type { ResolvedDetailRelationFormComputeRuleDescriptor } from '../web-contracts/index';
|
|
3
|
+
/** Propagates server-compiled calculations after a user changes one embedded child row. */
|
|
4
|
+
export declare class RelationFormComputeCoordinator {
|
|
5
|
+
private readonly rules;
|
|
6
|
+
private readonly runtime;
|
|
7
|
+
constructor(rules: readonly ResolvedDetailRelationFormComputeRuleDescriptor[] | undefined, runtime?: FormulaRuntime);
|
|
8
|
+
applyAfterChange<TRow extends FormulaRecord>(rows: readonly TRow[], changedRowKey: string, keyOf: (row: TRow) => string, changedField: string): TRow[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { FormulaProgram, ViewFieldValueType } from '../web-contracts/index';
|
|
2
|
+
export type FormulaRecord = Record<string, unknown>;
|
|
3
|
+
export type FormulaComputePatch = Readonly<Record<string, FormulaValue>>;
|
|
4
|
+
export interface FormulaComputeResult {
|
|
5
|
+
readonly patch: FormulaComputePatch;
|
|
6
|
+
readonly changedFields: readonly string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Browser-local executor for server-issued FormulaProgram values.
|
|
10
|
+
*
|
|
11
|
+
* It deliberately accepts no source expression. Unknown program versions, profiles and node shapes fail closed.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FormulaRuntime {
|
|
14
|
+
evaluateWebUi(program: FormulaProgram | undefined, record: FormulaRecord): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Evaluates one server-issued FORM_COMPUTE assignment against a draft without mutating it.
|
|
17
|
+
* Applying the returned patch, ordering rules, and user-value ownership remain form-runtime concerns.
|
|
18
|
+
*/
|
|
19
|
+
evaluateFormCompute(program: FormulaProgram | undefined, draft: FormulaRecord, targetValueType?: ViewFieldValueType): FormulaComputeResult;
|
|
20
|
+
/** Evaluates a row-to-row assignment in the changed row's scope without mutating any drafts. */
|
|
21
|
+
evaluateRelationFormCompute(program: FormulaProgram | undefined, draft: FormulaRecord, targetField: string, targetValueType?: ViewFieldValueType): FormulaComputeResult;
|
|
22
|
+
private evaluateNode;
|
|
23
|
+
private toBoolean;
|
|
24
|
+
private evaluateComputeNode;
|
|
25
|
+
}
|
|
26
|
+
type FormulaValue = string | number | boolean | null | undefined;
|
|
27
|
+
/** Mirrors FormulaEngine.equalsLoose for the primitive values admitted by the WEB_UI profile. */
|
|
28
|
+
export declare function equalsFormulaLoose(left: unknown, right: unknown): boolean;
|
|
29
|
+
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { ModulePageDrawerContext } from '../../dynamic-page-runtime/index';
|
|
1
2
|
type __VLS_Props = {
|
|
2
|
-
|
|
3
|
+
context: ModulePageDrawerContext;
|
|
3
4
|
};
|
|
4
5
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
5
6
|
declare const _default: typeof __VLS_export;
|
|
@@ -14,6 +14,8 @@ export interface ModuleOpenApiDocument {
|
|
|
14
14
|
export declare function moduleAliasFromOpenApiPath(pathname: string): string | undefined;
|
|
15
15
|
/** Creates the workbench page contract for one module's authenticated API document. */
|
|
16
16
|
export declare function createModuleOpenApiPageDescriptor(moduleAlias: string, moduleTitle?: string): PageDescriptor;
|
|
17
|
+
/** Creates the authenticated OpenAPI directory as an ordinary workbench page. */
|
|
18
|
+
export declare function createOpenApiCatalogPageDescriptor(): PageDescriptor;
|
|
17
19
|
/** Recognizes the app-owned OpenAPI tab without teaching the shared route resolver about this feature. */
|
|
18
20
|
export declare function isModuleOpenApiPage(descriptor?: PageDescriptor): boolean;
|
|
19
21
|
export declare function isOpenApiCatalogPath(pathname: string): boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ModulePageEnhancement } from '../dynamic-page-runtime/index';
|
|
2
|
+
/**
|
|
3
|
+
* IAM-owned card assistance for the standard password-policy module page.
|
|
4
|
+
* The component is selected by frontend source composition; no backend DSL can inject executable UI.
|
|
5
|
+
*/
|
|
6
|
+
export declare const passwordPolicyPageEnhancement: ModulePageEnhancement;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ModulePageEnhancement } from '../dynamic-page-runtime/index';
|
|
2
|
+
/**
|
|
3
|
+
* Frontend composition for the platform-module descriptor page.
|
|
4
|
+
*
|
|
5
|
+
* These actions deliberately reuse ordinary workspace/page descriptors. The
|
|
6
|
+
* backend UI descriptor only describes the module record; it never chooses a
|
|
7
|
+
* Vue component or arbitrary client-side behavior.
|
|
8
|
+
*/
|
|
9
|
+
export declare const platformModulePageEnhancement: ModulePageEnhancement;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RealtimeConnectionState } from '../web-core/index';
|
|
2
|
-
import type { WebBusinessRealtimeEvent, WebCommittedChangeSet, WebUserNotification } from '../web-contracts/index';
|
|
2
|
+
import type { WebBusinessRealtimeEvent, WebBusinessNotification, WebCommittedChangeSet, WebUserNotification } from '../web-contracts/index';
|
|
3
3
|
export declare const appDataChangeDispatcher: import("../web-core/index").DataChangeDispatcher;
|
|
4
4
|
export interface AppRealtimeOptions {
|
|
5
5
|
/** Backend origin supplied by the consuming App at runtime. */
|
|
@@ -8,6 +8,7 @@ export interface AppRealtimeOptions {
|
|
|
8
8
|
token?: string;
|
|
9
9
|
onUnauthorized?: () => void;
|
|
10
10
|
onUserNotification?: (notification: WebUserNotification) => void;
|
|
11
|
+
onBusinessNotification?: (notification: WebBusinessNotification) => void;
|
|
11
12
|
onStateChange?: (state: RealtimeConnectionState) => void;
|
|
12
13
|
}
|
|
13
14
|
export interface AppRealtimeConnection {
|
package/dist/types/platform-admin-runtime/tenant/TenantApplicationConfigurationDrawer.vue.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ModulePageDrawerContext } from '../../dynamic-page-runtime/index';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
context: ModulePageDrawerContext;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
declare const _default: typeof __VLS_export;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ModulePageDetailSectionContext } from '../../dynamic-page-runtime/index';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
context: ModulePageDetailSectionContext;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
declare const _default: typeof __VLS_export;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ModulePageEnhancement } from '../dynamic-page-runtime/index';
|
|
2
|
+
/**
|
|
3
|
+
* IAM-specific presentation around the descriptor-owned tenant CRUD surface.
|
|
4
|
+
* Standard records remain owned by ModulePageHost; this contribution only
|
|
5
|
+
* renders the tenant application's authorized child-resource capability.
|
|
6
|
+
*/
|
|
7
|
+
export declare const tenantModulePageEnhancement: ModulePageEnhancement;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { QueryListRecord, RecordQueryListColumn } from '../../platform-components/index';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
record: QueryListRecord;
|
|
4
|
+
column?: RecordQueryListColumn;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
8
|
+
export default _default;
|