@ximatai/muyun-web-app 0.26.8 → 0.26.10
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/{MetadataOrchestrationView-DKYVGMzy.js → MetadataOrchestrationView-BhtVwJII.js} +210 -204
- package/dist/{ModuleActionManagementView-DiVzuPdu.js → ModuleActionManagementView-DpZS-xAD.js} +74 -74
- package/dist/{RoleAuthorizationView-C0s4Bog7.js → RoleAuthorizationView-8lilhtMB.js} +193 -139
- package/dist/{RoleDetailWorkspaceView-dqHxKVfd.js → RoleDetailWorkspaceView-CFha6JHn.js} +1 -1
- package/dist/{RoleManagementView-D43pUCxi.js → RoleManagementView-0_KDrzgh.js} +572 -550
- package/dist/index.css +1 -1
- package/dist/index.js +536 -4427
- package/dist/{platform-components-CFU_zR7-.js → platform-components-oRIsIoxu.js} +5154 -3608
- package/dist/types/App.vue.d.ts +1 -0
- package/dist/types/app/StaticRoutePageHost.vue.d.ts +13 -0
- package/dist/types/app/loginTenant.d.ts +1 -1
- package/dist/types/app/menuRouteCompiler.d.ts +45 -0
- package/dist/types/app/menuRouteRuntime.d.ts +24 -0
- package/dist/types/app/pageRouteContext.d.ts +24 -0
- package/dist/types/app/routeDiagnosticsStore.d.ts +10 -0
- package/dist/types/app/router.d.ts +15 -0
- package/dist/types/app/staticRouteDefinitions.d.ts +25 -0
- package/dist/types/app/workbenchRouteSync.d.ts +1 -1
- package/dist/types/app/workbenchStartup.d.ts +3 -3
- package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +4 -2
- package/dist/types/consumer/index.d.ts +5 -3
- package/dist/types/dynamic-page-runtime/DynamicModuleHost.vue.d.ts +3 -10
- package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +4 -3
- package/dist/types/dynamic-page-runtime/ManagedDetailRelationInlineSurface.vue.d.ts +42 -0
- package/dist/types/dynamic-page-runtime/ManagedDetailRelationSurface.vue.d.ts +15 -0
- package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +28 -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 +20 -0
- package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansion.vue.d.ts +14 -0
- package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansions.vue.d.ts +17 -0
- package/dist/types/dynamic-page-runtime/ModulePageRecordContent.vue.d.ts +44 -0
- package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +41 -0
- package/dist/types/dynamic-page-runtime/NavigatorManagementEditor.vue.d.ts +20 -1
- package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +17 -5
- package/dist/types/dynamic-page-runtime/RecordFormSurface.vue.d.ts +31 -0
- package/dist/types/dynamic-page-runtime/composables/useManagedDetailRelationRuntime.d.ts +30 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageActions.d.ts +13 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageBootstrap.d.ts +17 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageDetailActionRuntime.d.ts +48 -0
- package/dist/types/dynamic-page-runtime/composables/useModulePageDetailExtensionRuntime.d.ts +28 -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 +1378 -0
- package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +23 -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 +215 -9
- package/dist/types/dynamic-page-runtime/navigatorEntrySelection.d.ts +18 -0
- package/dist/types/dynamic-page-runtime/navigatorVisibility.d.ts +6 -0
- package/dist/types/dynamic-page-runtime/pageContextRuntime.d.ts +10 -2
- package/dist/types/dynamic-page-runtime/pageNavigatorItemModel.d.ts +13 -0
- package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +12 -3
- 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/SystemUserManagementView.vue.d.ts → platform-admin-runtime/employee/EmployeeAccountDrawer.vue.d.ts} +2 -2
- package/dist/types/platform-admin-runtime/employeeModulePageEnhancement.d.ts +3 -0
- package/dist/types/platform-admin-runtime/index.d.ts +1 -1
- package/dist/types/platform-admin-runtime/moduleOpenApi.d.ts +2 -0
- package/dist/types/platform-admin-runtime/passwordPolicyPageEnhancement.d.ts +6 -0
- package/dist/types/platform-admin-runtime/platformAdminRoutes.d.ts +1 -6
- package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +15 -0
- package/dist/types/{views/EmployeeManagementView.vue.d.ts → platform-admin-runtime/tenant/TenantApplicationConfigurationDrawer.vue.d.ts} +2 -2
- package/dist/types/platform-admin-runtime/tenant/TenantApplicationsDetailSection.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/tenantModulePageEnhancement.d.ts +7 -0
- package/dist/types/platform-admin-runtime/user/UserOnlineStatusCell.vue.d.ts +8 -0
- package/dist/types/platform-admin-runtime/user/UserPasswordDrawer.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/user/UserSessionListExpansion.vue.d.ts +7 -0
- package/dist/types/platform-admin-runtime/user/useUserSessionRows.d.ts +23 -0
- package/dist/types/platform-admin-runtime/user/userOnlineStatusStore.d.ts +11 -0
- package/dist/types/platform-admin-runtime/userModulePageEnhancement.d.ts +7 -0
- package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +8 -2
- package/dist/types/platform-components/DetailRelationListPanel.vue.d.ts +13 -0
- package/dist/types/{views/SystemUserDetailWorkspaceView.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 +2 -0
- package/dist/types/platform-components/ModuleActionButton.vue.d.ts +5 -2
- package/dist/types/platform-components/RecordContentSectionHeading.vue.d.ts +17 -0
- package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +5 -0
- package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +8 -3
- package/dist/types/platform-components/RecordDetailFields.vue.d.ts +5 -0
- package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +11 -3
- package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +14 -6
- package/dist/types/platform-components/RecordExpandedSubtable.vue.d.ts +3 -0
- package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +2 -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 +4 -1
- 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 +12 -2
- package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +39 -5
- package/dist/types/{views/EmployeeEmploymentDrawer.vue.d.ts → platform-components/RecordRelationTabs.vue.d.ts} +7 -7
- package/dist/types/platform-components/RecordSelectionCheckbox.vue.d.ts +13 -0
- package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +2 -0
- package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +12 -4
- package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +8 -2
- package/dist/types/platform-components/UserSessionExpandedSubtable.vue.d.ts +2 -0
- package/dist/types/platform-components/drawerTitleActions.d.ts +11 -0
- package/dist/types/platform-components/index.d.ts +11 -5
- 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 +82 -5
- package/dist/types/platform-components/recordPickerConstraints.d.ts +4 -0
- package/dist/types/platform-components/recordPickerModel.d.ts +6 -2
- package/dist/types/platform-workbench/Workbench.vue.d.ts +4 -2
- package/dist/types/platform-workbench/index.d.ts +3 -2
- package/dist/types/platform-workbench/legacyPageHostTypeCompatibility.d.ts +6 -0
- package/dist/types/platform-workbench/menuNavigation.d.ts +24 -2
- package/dist/types/platform-workbench/pageCacheKey.d.ts +2 -0
- package/dist/types/platform-workbench/pageHostRegistry.d.ts +1 -1
- package/dist/types/platform-workbench/workbenchNavigation.d.ts +14 -1
- package/dist/types/views/PasswordPolicyPreview.vue.d.ts +7 -0
- package/dist/types/views/RoleAccountGrantDrawer.vue.d.ts +1 -0
- package/dist/types/views/RoleAuthorizationView.vue.d.ts +2 -0
- package/dist/types/views/RoleEmploymentGrantDrawer.vue.d.ts +1 -0
- package/dist/types/views/{EmployeeDetailWorkspaceView.vue.d.ts → UserDetailRouteView.vue.d.ts} +3 -1
- package/dist/types/views/UserManagementView.vue.d.ts +1 -6
- package/dist/types/views/userDetailStateModel.d.ts +1 -3
- package/dist/types/views/userManagementRouteState.d.ts +11 -0
- package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +3 -0
- package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiInput.vue.d.ts +2 -1
- package/dist/types/vue-ui-antdv/components/UiRadioGroup.vue.d.ts +18 -0
- package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +2 -2
- package/dist/types/vue-ui-antdv/components/UiSidePanel.vue.d.ts +4 -2
- package/dist/types/vue-ui-antdv/components/UiSwitch.vue.d.ts +2 -0
- package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +4 -2
- package/dist/types/vue-ui-antdv/index.d.ts +4 -2
- package/dist/types/web-contracts/index.d.ts +375 -14
- package/dist/types/web-core/businessNotifications.d.ts +3 -2
- package/dist/types/web-core/http.d.ts +6 -0
- package/dist/types/web-core/index.d.ts +1 -0
- package/dist/types/web-core/module/abilities.d.ts +7 -7
- package/dist/types/web-core/module/index.d.ts +1 -1
- package/dist/types/web-core/module/moduleContext.d.ts +6 -3
- package/dist/types/web-core/module/runtimeContext.d.ts +2 -0
- package/dist/types/web-core/module/staticModuleClient.d.ts +42 -10
- package/dist/types/web-core/realtime.d.ts +8 -0
- package/dist/types/web-core/referenceResolveClient.d.ts +11 -0
- package/dist/workspaceViews-D-RiJ64o.js +9078 -0
- package/package.json +1 -1
- package/dist/EmployeeDetailWorkspaceView-DswEDSxH.js +0 -14
- package/dist/EmployeeManagementView-C9STtw08.js +0 -1777
- package/dist/SystemUserDetailWorkspaceView-CQ9WeLrR.js +0 -17
- package/dist/SystemUserManagementView-D75_ylYk.js +0 -758
- package/dist/UserDetailWorkspaceView-BCST01d2.js +0 -17
- package/dist/UserManagementView-CcdvDo_y.js +0 -964
- package/dist/pageRealtime-EAiGWKEo.js +0 -227
- package/dist/types/platform-components/scopedResourceTreeModuleContext.d.ts +0 -6
- package/dist/types/views/EmployeeDetailContent.vue.d.ts +0 -64
- package/dist/types/views/UserDetailWorkspaceView.vue.d.ts +0 -7
- package/dist/types/views/dictionaryManagementState.d.ts +0 -215
- package/dist/types/views/employeeDetailStateModel.d.ts +0 -39
- package/dist/types/views/employeeDetailWorkspaceSession.d.ts +0 -16
- package/dist/types/views/employeeDetailWorkspaceView.d.ts +0 -4
- package/dist/types/views/fieldUiControlManagementState.d.ts +0 -76
- package/dist/types/views/menuManagementState.d.ts +0 -178
- package/dist/types/views/moduleManagementState.d.ts +0 -76
- package/dist/types/views/positionManagementState.d.ts +0 -218
- package/dist/types/views/systemUserDetailWorkspaceSession.d.ts +0 -12
- package/dist/types/views/systemUserDetailWorkspaceView.d.ts +0 -5
- package/dist/types/views/tenantManagementState.d.ts +0 -74
- package/dist/types/views/useEmployeeEmploymentRows.d.ts +0 -20
- package/dist/types/views/userDetailWorkspaceSession.d.ts +0 -14
- package/dist/types/views/userDetailWorkspaceView.d.ts +0 -4
- package/dist/useUserSessionRows-DCpUZCzN.js +0 -128
- package/dist/workspaceViewSessions-Dj1LjdG1.js +0 -4984
- /package/dist/types/views/{DictionaryManagementView.vue.d.ts → DynamicModuleRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{FieldUiControlManagementView.vue.d.ts → ExternalRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{MenuManagementView.vue.d.ts → ModuleOpenApiRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{ModuleManagementView.vue.d.ts → OpenApiCatalogRouteView.vue.d.ts} +0 -0
- /package/dist/types/views/{PasswordManagementView.vue.d.ts → RouteDiagnosticsView.vue.d.ts} +0 -0
- /package/dist/types/views/{PositionManagementView.vue.d.ts → UserManagementListView.vue.d.ts} +0 -0
- /package/dist/types/views/{TenantManagementView.vue.d.ts → WorkspaceRouteView.vue.d.ts} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ModuleContext } from '../../web-core/index';
|
|
2
|
+
import type { RecordDetailTransitionOptions } from '../recordDetailController';
|
|
3
|
+
interface DetailController<TRecord> {
|
|
4
|
+
beginLoad(record: TRecord, mode: 'edit' | 'view', options?: RecordDetailTransitionOptions): void;
|
|
5
|
+
resolveLoad(record: TRecord): void;
|
|
6
|
+
failLoad(): void;
|
|
7
|
+
finishLoad(): void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Serializes record-detail requests for one module-page session.
|
|
11
|
+
*
|
|
12
|
+
* Loading a second record (or closing the detail) invalidates all earlier
|
|
13
|
+
* completions. This is deliberately independent of the visual host so list,
|
|
14
|
+
* card and drawer surfaces cannot accidentally diverge on request races.
|
|
15
|
+
*/
|
|
16
|
+
export declare function useRecordEditingSession<TRecord extends {
|
|
17
|
+
id?: unknown;
|
|
18
|
+
}>(context: ModuleContext<TRecord>, detail: DetailController<TRecord>, onLoaded: () => void): {
|
|
19
|
+
invalidatePendingRequests: () => void;
|
|
20
|
+
openRecord: (record: TRecord, mode: "edit" | "view", options?: RecordDetailTransitionOptions, skipLoad?: boolean) => Promise<void>;
|
|
21
|
+
openRecycleBinRecord: (record: TRecord) => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -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,9 +1,11 @@
|
|
|
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';
|
|
3
4
|
export { default as DynamicModuleWorkspaceDetailView } from './DynamicModuleWorkspaceDetailView.vue';
|
|
4
5
|
export { customerDescriptor } from './mockDescriptor';
|
|
5
|
-
export { configureModulePageEnhancements, createModulePageEnhancementRegistry, modulePageWorkspaceViews, resolveModulePageEnhancement, } from './modulePageEnhancements';
|
|
6
|
+
export { configureModulePageEnhancementContributions, configureModulePageEnhancements, createModulePageEnhancementRegistry, createReadonlyCardRecordSnapshot, modulePageWorkspaceViews, resolveModulePageEnhancement, } from './modulePageEnhancements';
|
|
6
7
|
export { provideModulePageNavigation, useModulePageNavigation } from './modulePageNavigation';
|
|
8
|
+
export { NAVIGATOR_ENTRY_MODULE_ALIAS_QUERY_KEY, NAVIGATOR_ENTRY_RECORD_ID_QUERY_KEY, } from './navigatorEntrySelection';
|
|
7
9
|
export { createModulePageListRefreshRegistry, modulePageListRefreshRegistry, refreshModulePageList, } from './modulePageListRefresh';
|
|
8
10
|
export type { ModulePageListRefreshRegistry } from './modulePageListRefresh';
|
|
9
|
-
export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailDrawer, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
|
|
11
|
+
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, ModulePageLockedNavigatorEntry, 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 { CurrentUser, PageDescriptor, PageLayoutMode, RouteQueryValue, WebQueryCondition } 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,8 +13,21 @@ 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;
|
|
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;
|
|
17
31
|
/**
|
|
18
32
|
* The presentation selected when a user invokes the standard record-view intent.
|
|
19
33
|
*
|
|
@@ -22,28 +36,175 @@ export interface ModulePageEnhancement {
|
|
|
22
36
|
* retains that flow's action checks, shell and lifecycle.
|
|
23
37
|
*/
|
|
24
38
|
recordView?: ModulePageRecordView;
|
|
25
|
-
|
|
39
|
+
/** Restricts standard runner actions for one business-owned entry without replacing the runner. */
|
|
40
|
+
standardActions?: ModulePageStandardActionsEnhancement;
|
|
41
|
+
/** Entry-owned adjustments to descriptor-provided navigator presentation and list readiness. */
|
|
42
|
+
navigator?: ModulePageNavigatorEnhancement;
|
|
43
|
+
workspaceViews?: ModulePageWorkspaceView<ModulePageWorkspaceViewInput>[];
|
|
44
|
+
}
|
|
45
|
+
export interface ModulePageStandardActionsEnhancement {
|
|
46
|
+
disabled?: readonly string[];
|
|
47
|
+
}
|
|
48
|
+
export interface ModulePageNavigatorEnhancement {
|
|
49
|
+
/** Hides descriptor navigators when this entry is not navigated by their business scope. */
|
|
50
|
+
hidden?: boolean;
|
|
51
|
+
/** Declares one navigator as an entry-owned, immutable page context. */
|
|
52
|
+
lockedEntry?: ModulePageLockedNavigatorEntry;
|
|
53
|
+
/** Allows the standard list to load without navigator-derived list criteria. */
|
|
54
|
+
bypassListScope?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Optional business-owned fallback when no navigator item is selected. The platform still owns
|
|
57
|
+
* navigator rendering and request lifecycle; this hook contributes only typed list conditions.
|
|
58
|
+
*/
|
|
59
|
+
emptyListScope?(context: ModulePageEmptyNavigatorScopeContext): readonly WebQueryCondition[] | undefined;
|
|
60
|
+
}
|
|
61
|
+
export interface ModulePageLockedNavigatorEntry {
|
|
62
|
+
/** Descriptor navigator key whose selection is supplied by the page address. */
|
|
63
|
+
navigatorKey: string;
|
|
64
|
+
/** Text shown if the addressed record cannot be resolved or authorized. */
|
|
65
|
+
unavailableDescription: string;
|
|
66
|
+
}
|
|
67
|
+
export interface ModulePageEmptyNavigatorScopeContext {
|
|
68
|
+
currentUser?: CurrentUser;
|
|
69
|
+
selectedNavigatorRecords: Readonly<Record<string, QueryListRecord | undefined>>;
|
|
26
70
|
}
|
|
27
71
|
export interface ModulePageEnhancementTarget {
|
|
28
72
|
moduleAlias: string;
|
|
29
73
|
/** Omit to apply to every list view of the module. */
|
|
30
74
|
viewCode?: string;
|
|
75
|
+
/** Omit to apply to every visible menu entry of the module. */
|
|
76
|
+
menuId?: string;
|
|
77
|
+
}
|
|
78
|
+
export interface ModulePageEnhancementActivationContext {
|
|
79
|
+
module: ModuleContext<QueryListRecord>;
|
|
31
80
|
}
|
|
32
81
|
export interface ModuleListEnhancement {
|
|
33
82
|
actions?: ModulePageActionContribution[];
|
|
34
83
|
columns?: ModulePageColumnContribution[];
|
|
35
84
|
/** Replaces the visual renderer of a descriptor-owned column without adding a duplicate column. */
|
|
36
85
|
cellComponents?: ModulePageCellComponentContribution[];
|
|
86
|
+
/**
|
|
87
|
+
* Application-owned content for the platform list's expanded-row boundary.
|
|
88
|
+
*
|
|
89
|
+
* This is deliberately separate from descriptor relation expansions: use it
|
|
90
|
+
* for authorized business projections that are not a standard child relation.
|
|
91
|
+
* The runtime owns expansion state and table rendering; the application owns
|
|
92
|
+
* only the trusted Vue component and its auxiliary reads/actions.
|
|
93
|
+
*/
|
|
94
|
+
rowExpansion?: ModulePageListRowExpansion;
|
|
37
95
|
/** Width of the list's fixed operation column; defaults to the platform compact width. */
|
|
38
96
|
actionColumnWidth?: string | number;
|
|
39
97
|
rowActions?: ModulePageRecordActionContribution[];
|
|
40
98
|
batchActions?: ModulePageBatchActionContribution[];
|
|
41
99
|
}
|
|
100
|
+
export interface ModulePageListRowExpansion {
|
|
101
|
+
key: string;
|
|
102
|
+
component: Component;
|
|
103
|
+
}
|
|
104
|
+
export interface ModulePageListRowExpansionContext {
|
|
105
|
+
module: ModuleContext<QueryListRecord>;
|
|
106
|
+
/** Detached snapshot of the record being expanded. */
|
|
107
|
+
record: Readonly<QueryListRecord>;
|
|
108
|
+
expanded: boolean;
|
|
109
|
+
/** Reloads the standard list without giving the extension ownership of its query state. */
|
|
110
|
+
refreshList(): void;
|
|
111
|
+
}
|
|
42
112
|
/** Actions appended to the standard record-detail operation area in view mode. */
|
|
43
113
|
export interface ModuleDetailEnhancement {
|
|
44
114
|
actions?: ModulePageRecordActionContribution[];
|
|
45
115
|
sections?: ModulePageDetailSection[];
|
|
46
116
|
}
|
|
117
|
+
/** A controlled addition to the descriptor-owned standard form, not a replacement editor. */
|
|
118
|
+
export interface ModulePageFormEnhancement {
|
|
119
|
+
contributions: ModulePageFormContribution[];
|
|
120
|
+
fieldPolicies?: ModulePageFormFieldPolicy[];
|
|
121
|
+
}
|
|
122
|
+
/** The platform-owned record-card form surface, regardless of its outer page shell. */
|
|
123
|
+
export type ModulePageFormSurface = 'record-card';
|
|
124
|
+
/**
|
|
125
|
+
* A contribution can target an entire semantic form section or the immediate
|
|
126
|
+
* boundary before/after one descriptor-owned field. The host owns all other
|
|
127
|
+
* rendering, codecs, permissions, requests and save lifecycle.
|
|
128
|
+
*/
|
|
129
|
+
export interface ModulePageFormContribution {
|
|
130
|
+
key: string;
|
|
131
|
+
component: Component;
|
|
132
|
+
location: ModulePageFormContributionLocation;
|
|
133
|
+
}
|
|
134
|
+
export type ModulePageFormContributionLocation = {
|
|
135
|
+
surface: ModulePageFormSurface;
|
|
136
|
+
section: 'before-fields' | 'after-fields';
|
|
137
|
+
} | {
|
|
138
|
+
surface: ModulePageFormSurface;
|
|
139
|
+
fieldName: string;
|
|
140
|
+
placement: 'before' | 'after';
|
|
141
|
+
};
|
|
142
|
+
/** The only form state exposed to application-owned editor contributions. */
|
|
143
|
+
export interface ModulePageFormContributionContext {
|
|
144
|
+
mode: 'create' | 'edit' | 'view';
|
|
145
|
+
/** A detached, deeply frozen draft snapshot. */
|
|
146
|
+
draft: Readonly<Record<string, unknown>>;
|
|
147
|
+
/** Descriptor-resolved field states; never a mutable draft or HTTP client. */
|
|
148
|
+
fields: readonly Readonly<RecordFormFieldState>[];
|
|
149
|
+
/** The field at a field-boundary location, otherwise undefined. */
|
|
150
|
+
field?: Readonly<RecordFormFieldState>;
|
|
151
|
+
setField(fieldName: string, value: RecordFormFieldValue): void;
|
|
152
|
+
formSessionKey: number;
|
|
153
|
+
/** Reports only this contribution's validation fact to the standard save boundary. */
|
|
154
|
+
reportValidity(validity: ModulePageFormContributionValidity): void;
|
|
155
|
+
}
|
|
156
|
+
export interface ModulePageFormContributionValidity {
|
|
157
|
+
valid: boolean;
|
|
158
|
+
errors?: Record<string, string>;
|
|
159
|
+
}
|
|
160
|
+
/** Read-only facts consumable by a descriptor-field presentation policy. */
|
|
161
|
+
export interface ModulePageFormContributionState {
|
|
162
|
+
mode: 'create' | 'edit' | 'view';
|
|
163
|
+
draft: Readonly<Record<string, unknown>>;
|
|
164
|
+
fields: readonly Readonly<RecordFormFieldState>[];
|
|
165
|
+
formSessionKey: number;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* A typed visual policy around one descriptor-owned field. The platform keeps
|
|
169
|
+
* transport, file upload and field codecs inside the standard renderer.
|
|
170
|
+
*/
|
|
171
|
+
export interface ModulePageFormFieldPolicy {
|
|
172
|
+
fieldName: string;
|
|
173
|
+
visible?(state: ModulePageFormContributionState): boolean;
|
|
174
|
+
imageUploadHint?(state: ModulePageFormContributionState): string | undefined;
|
|
175
|
+
imageUploadAdvisory?(state: ModulePageFormContributionState): ((file: File) => string | undefined | Promise<string | undefined>) | undefined;
|
|
176
|
+
}
|
|
177
|
+
/** Frontend-owned auxiliary UI adjacent to the descriptor-owned record card. */
|
|
178
|
+
export interface ModuleCardEnhancement {
|
|
179
|
+
assistant: ModulePageCardAssistant;
|
|
180
|
+
}
|
|
181
|
+
export interface ModulePageCardAssistant {
|
|
182
|
+
/** A source component; backend descriptors never select or name it. */
|
|
183
|
+
component: Component;
|
|
184
|
+
/** Explicitly anchors the component to the standard record-card boundary. */
|
|
185
|
+
placement: ModulePageCardAssistantPlacement;
|
|
186
|
+
}
|
|
187
|
+
export interface ModulePageCardAssistantPlacement {
|
|
188
|
+
/** `inside` shares the record-card content scrollbar; `outside` remains a sibling surface. */
|
|
189
|
+
boundary: 'inside' | 'outside';
|
|
190
|
+
/** Position relative to that boundary; never inserted between descriptor-owned fields. */
|
|
191
|
+
position: 'top' | 'bottom';
|
|
192
|
+
}
|
|
193
|
+
export interface ModulePageCardAssistantContext {
|
|
194
|
+
module: ModuleContext<QueryListRecord>;
|
|
195
|
+
mode: 'view' | 'create' | 'edit';
|
|
196
|
+
/** Detached and deeply frozen current record or form draft. It may be absent before selection. */
|
|
197
|
+
record?: Readonly<Record<string, unknown>>;
|
|
198
|
+
/**
|
|
199
|
+
* Detached snapshot of records already loaded by the standard explorer.
|
|
200
|
+
* This never triggers an auxiliary request and may be bounded by the explorer.
|
|
201
|
+
*/
|
|
202
|
+
loadedRecords: readonly Readonly<Record<string, unknown>>[];
|
|
203
|
+
formSessionKey: number;
|
|
204
|
+
saving: boolean;
|
|
205
|
+
loading: boolean;
|
|
206
|
+
loadFailed: boolean;
|
|
207
|
+
}
|
|
47
208
|
/** Application-owned presentation of the platform's standard record-view intent. */
|
|
48
209
|
export interface ModulePageRecordView {
|
|
49
210
|
/**
|
|
@@ -87,7 +248,7 @@ export interface ModulePageDetailSection {
|
|
|
87
248
|
}
|
|
88
249
|
/** Business content rendered inside the platform-owned standard view drawer. */
|
|
89
250
|
export interface ModulePageDetailDrawer {
|
|
90
|
-
/** The component receives only the documented
|
|
251
|
+
/** The component receives only the documented read-only ModulePageRecordViewContext prop. */
|
|
91
252
|
component: Component;
|
|
92
253
|
/** Keeps the platform drawer shell while allowing dense business views more room. */
|
|
93
254
|
width?: number | string;
|
|
@@ -115,7 +276,10 @@ export interface ModulePageDrawer {
|
|
|
115
276
|
/** The component receives only the documented ModulePageDrawerContext prop. */
|
|
116
277
|
component: Component;
|
|
117
278
|
}
|
|
118
|
-
|
|
279
|
+
/** A business-owned action rendered by the platform in a semantic drawer region. */
|
|
280
|
+
export type ModulePageDrawerAction = DrawerTitleAction;
|
|
281
|
+
/** Matches the Workbench input boundary; `parse` remains responsible for route-value validation. */
|
|
282
|
+
export type ModulePageWorkspaceViewInput = object;
|
|
119
283
|
/** A business-owned view with stable, serializable identity. */
|
|
120
284
|
export interface ModulePageWorkspaceView<TInput extends ModulePageWorkspaceViewInput = ModulePageWorkspaceViewInput> {
|
|
121
285
|
type: string;
|
|
@@ -134,6 +298,29 @@ export interface ModulePageDrawerContext {
|
|
|
134
298
|
scope?: ModulePageScopeContext;
|
|
135
299
|
/** Reloads only the current list query and preserves its query and editor state. */
|
|
136
300
|
refreshList(): void;
|
|
301
|
+
/** Invalidates frontend-owned detail sections for the current record. */
|
|
302
|
+
refreshDetailExtensions(): void;
|
|
303
|
+
/** Blocks the drawer shell's close affordances while a contributed operation is in flight. */
|
|
304
|
+
setCloseBlocked(blocked: boolean): void;
|
|
305
|
+
close(): void;
|
|
306
|
+
reload(): void;
|
|
307
|
+
/** Replaces contextual actions beside the drawer title; actions are cleared with the drawer. */
|
|
308
|
+
setTitleActions(actions: ModulePageDrawerAction[]): void;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Context for a custom body inside the platform-owned record-view shell.
|
|
312
|
+
*
|
|
313
|
+
* A record-view body does not own the drawer chrome. In particular it cannot
|
|
314
|
+
* replace title actions or block the shell from closing; those facilities are
|
|
315
|
+
* reserved for an action-opened ModulePageDrawer, whose operation lifecycle is
|
|
316
|
+
* explicitly governed by the platform drawer runtime.
|
|
317
|
+
*/
|
|
318
|
+
export interface ModulePageRecordViewContext {
|
|
319
|
+
module: ModuleContext<QueryListRecord>;
|
|
320
|
+
record: QueryListRecord;
|
|
321
|
+
scope?: ModulePageScopeContext;
|
|
322
|
+
refreshList(): void;
|
|
323
|
+
refreshDetailExtensions(): void;
|
|
137
324
|
close(): void;
|
|
138
325
|
reload(): void;
|
|
139
326
|
}
|
|
@@ -145,6 +332,8 @@ export interface ModulePageActionContext {
|
|
|
145
332
|
refreshList(): void;
|
|
146
333
|
openDrawer(drawer: ModulePageDrawer): void;
|
|
147
334
|
openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput): void;
|
|
335
|
+
/** Opens an existing, platform-owned page descriptor through the Workbench. */
|
|
336
|
+
openPage(descriptor: PageDescriptor): void;
|
|
148
337
|
reload(): void;
|
|
149
338
|
}
|
|
150
339
|
/** Read-only scope state supplied by a descriptor-owned scoped list workspace. */
|
|
@@ -169,14 +358,31 @@ export interface ModulePageDetailSectionContext {
|
|
|
169
358
|
record: QueryListRecord;
|
|
170
359
|
/** Reloads only the current list query and preserves its query and editor state. */
|
|
171
360
|
refreshList(): void;
|
|
361
|
+
/** Monotonic invalidation fact for frontend-owned detail data. */
|
|
362
|
+
refreshKey: number;
|
|
172
363
|
reload(): void;
|
|
173
364
|
}
|
|
174
365
|
export interface ModulePageEnhancementRegistry {
|
|
175
|
-
resolve(moduleAlias: string, viewCode?: string): ModulePageEnhancement | undefined;
|
|
176
|
-
workspaceViews(): readonly ModulePageWorkspaceView[];
|
|
366
|
+
resolve(moduleAlias: string, viewCode?: string, menuId?: string): ModulePageEnhancement | undefined;
|
|
367
|
+
workspaceViews(): readonly ModulePageWorkspaceView<ModulePageWorkspaceViewInput>[];
|
|
177
368
|
}
|
|
178
369
|
export declare function createModulePageEnhancementRegistry(enhancements: readonly ModulePageEnhancement[]): ModulePageEnhancementRegistry;
|
|
179
|
-
/**
|
|
370
|
+
/**
|
|
371
|
+
* Replaces one owner's contribution set while retaining every other owner.
|
|
372
|
+
*
|
|
373
|
+
* This is the composition API for first-party defaults and consuming
|
|
374
|
+
* applications. Multiple owners may contribute to the same module target;
|
|
375
|
+
* their independent regions are merged and conflicting regions fail fast.
|
|
376
|
+
*/
|
|
377
|
+
export declare function configureModulePageEnhancementContributions(owner: string, enhancements: readonly ModulePageEnhancement[]): void;
|
|
378
|
+
/**
|
|
379
|
+
* Legacy application composition API. It replaces only the legacy
|
|
380
|
+
* application's contribution set; first-party and named-owner defaults remain
|
|
381
|
+
* registered. New composition roots should use
|
|
382
|
+
* configureModulePageEnhancementContributions(owner, enhancements).
|
|
383
|
+
*/
|
|
180
384
|
export declare function configureModulePageEnhancements(enhancements: readonly ModulePageEnhancement[]): void;
|
|
181
|
-
export declare function resolveModulePageEnhancement(moduleAlias: string, viewCode?: string): ModulePageEnhancement | undefined;
|
|
385
|
+
export declare function resolveModulePageEnhancement(moduleAlias: string, viewCode?: string, menuId?: string): ModulePageEnhancement | undefined;
|
|
182
386
|
export declare function modulePageWorkspaceViews(): readonly ModulePageWorkspaceView<ModulePageWorkspaceViewInput>[];
|
|
387
|
+
/** Creates the only record shape that a card assistant may receive. */
|
|
388
|
+
export declare function createReadonlyCardRecordSnapshot(record: Record<string, unknown>): Readonly<Record<string, unknown>>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RouteQueryValue } from '../web-contracts/index';
|
|
2
|
+
/**
|
|
3
|
+
* Controlled module-page entries may nominate one navigator source record.
|
|
4
|
+
* These are framework query keys, deliberately separate from a module's
|
|
5
|
+
* business query fields and from the navigator REFERENCE transport.
|
|
6
|
+
*/
|
|
7
|
+
export declare const NAVIGATOR_ENTRY_MODULE_ALIAS_QUERY_KEY = "_muyunNavigatorModuleAlias";
|
|
8
|
+
export declare const NAVIGATOR_ENTRY_RECORD_ID_QUERY_KEY = "_muyunNavigatorRecordId";
|
|
9
|
+
export interface NavigatorEntrySelection {
|
|
10
|
+
moduleAlias: string;
|
|
11
|
+
recordId: string;
|
|
12
|
+
identity: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Accept only the complete scalar pair. A malformed public address must leave
|
|
16
|
+
* the page in its normal, unselected state rather than guessing a scope.
|
|
17
|
+
*/
|
|
18
|
+
export declare function navigatorEntrySelectionOf(params: Record<string, RouteQueryValue> | undefined): NavigatorEntrySelection | 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;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import type { ResolvedPageContextBindingDescriptor } from '../web-contracts/index';
|
|
2
2
|
export type PageContextSourceValues = Partial<Record<ResolvedPageContextBindingDescriptor['source'], Record<string, unknown>>>;
|
|
3
3
|
/** Returns context fields that must be supplied by the browser for a query target. */
|
|
4
|
-
export declare function externalPageContextCriteriaKeys(bindings: ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target']): string[];
|
|
4
|
+
export declare function externalPageContextCriteriaKeys(bindings: readonly ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target'], targetNavigatorLevelKey?: string): string[];
|
|
5
|
+
/** Browser-provided navigator keys that must be selected before a page list may query. */
|
|
6
|
+
export declare function requiredNavigatorListScopeCriteriaKeys(bindings: readonly ResolvedPageContextBindingDescriptor[]): string[];
|
|
5
7
|
/** Resolves declared context flows without coupling a target to navigator UI state. */
|
|
6
|
-
export declare function resolvePageContextTargetValues(bindings: ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target'], sourceValues: PageContextSourceValues, targetNavigatorLevelKey?: string): Record<string, unknown> | undefined;
|
|
8
|
+
export declare function resolvePageContextTargetValues(bindings: readonly ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target'], sourceValues: PageContextSourceValues, targetNavigatorLevelKey?: string): Record<string, unknown> | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Query scopes are values, not refresh signals. Preserve the prior object when
|
|
11
|
+
* a render reconstructs the same flat criteria so consumers do not reload just
|
|
12
|
+
* because their parent component rendered for an unrelated state transition.
|
|
13
|
+
*/
|
|
14
|
+
export declare function reuseEquivalentQueryValues(previous: Record<string, unknown> | undefined, next: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RecordExplorerItemDescriptor } from '../platform-components/index';
|
|
2
|
+
import type { RecordInlineAction } from '../web-contracts/index';
|
|
3
|
+
export interface NavigatorItemRecord {
|
|
4
|
+
id?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
code?: string;
|
|
8
|
+
alias?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Page navigators expose only the actions explicitly declared by the page. */
|
|
11
|
+
export declare function navigatorItemOf(record: NavigatorItemRecord, secondaryField: string | undefined, manageable: boolean, actionsOf: ((record: {
|
|
12
|
+
id?: string;
|
|
13
|
+
}) => RecordInlineAction[]) | undefined): RecordExplorerItemDescriptor;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
export type RecordDetailMode = 'create' | 'edit' | 'view';
|
|
2
|
+
export type RecordDetailCancelDestination = 'close' | 'restore-view';
|
|
3
|
+
export interface RecordDetailTransitionOptions {
|
|
4
|
+
/**
|
|
5
|
+
* The detail surface to return to when the user cancels the operation.
|
|
6
|
+
* A row action starts an independent task and closes; an edit launched from
|
|
7
|
+
* an open detail returns to that detail view.
|
|
8
|
+
*/
|
|
9
|
+
cancelDestination?: RecordDetailCancelDestination;
|
|
10
|
+
}
|
|
2
11
|
/**
|
|
3
12
|
* State transitions shared by descriptor-driven record detail surfaces.
|
|
4
13
|
* Containers own their layout; this controller owns only one record's
|
|
@@ -14,12 +23,12 @@ export declare function useRecordDetailController<TRecord extends Record<string,
|
|
|
14
23
|
saving: import("vue").Ref<boolean, boolean>;
|
|
15
24
|
togglingEnabled: import("vue").Ref<boolean, boolean>;
|
|
16
25
|
formSessionKey: import("vue").Ref<number, number>;
|
|
17
|
-
beginLoad: (next: TRecord, nextMode: Extract<RecordDetailMode, "edit" | "view"
|
|
26
|
+
beginLoad: (next: TRecord, nextMode: Extract<RecordDetailMode, "edit" | "view">, options?: RecordDetailTransitionOptions) => void;
|
|
18
27
|
resolveLoad: (next: TRecord) => void;
|
|
19
28
|
failLoad: () => void;
|
|
20
29
|
finishLoad: () => void;
|
|
21
|
-
beginCreate: (initial: TRecord) => void;
|
|
22
|
-
beginEdit: () => boolean;
|
|
30
|
+
beginCreate: (initial: TRecord, options?: RecordDetailTransitionOptions) => void;
|
|
31
|
+
beginEdit: (options?: RecordDetailTransitionOptions) => boolean;
|
|
23
32
|
cancelEdit: () => void;
|
|
24
33
|
applySaved: (next: TRecord) => void;
|
|
25
34
|
clearDeleted: () => void;
|
|
@@ -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,6 +1,6 @@
|
|
|
1
|
+
import type { ModulePageDrawerContext } from '../../dynamic-page-runtime/index';
|
|
1
2
|
type __VLS_Props = {
|
|
2
|
-
|
|
3
|
-
mode?: 'view' | 'edit';
|
|
3
|
+
context: ModulePageDrawerContext;
|
|
4
4
|
};
|
|
5
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
6
|
declare const _default: typeof __VLS_export;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* directory: an App supplies its startup state, navigation and HTTP factory.
|
|
7
7
|
*/
|
|
8
8
|
export { default as PlatformAdminRouteOutlet } from './PlatformAdminOutlet.vue';
|
|
9
|
-
export { isPlatformAdminRoutePage,
|
|
9
|
+
export { isPlatformAdminRoutePage, platformAdminModuleRoutes, platformAdminRouteLayouts, platformAdminRoutePrefixes, platformAdminRoutes, resolvePlatformAdminRoute, } from './platformAdminRoutes';
|
|
10
10
|
export type { PlatformAdminRoute } from './platformAdminRoutes';
|
|
11
11
|
export { provideCurrentUserContext, useCurrentUserContext } from './currentUserContext';
|
|
12
12
|
export { createBackendHttpClient } from './backendHttp';
|
|
@@ -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;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Component } from 'vue';
|
|
2
2
|
import type { BusinessRoutePageDescriptor, PageDescriptor, PageLayoutMode } from '../web-contracts/index';
|
|
3
3
|
export interface PlatformAdminRoute {
|
|
4
4
|
route: string;
|
|
@@ -11,11 +11,6 @@ export interface PlatformAdminRoute {
|
|
|
11
11
|
}
|
|
12
12
|
export declare const platformAdminRoutes: PlatformAdminRoute[];
|
|
13
13
|
export declare const platformAdminRoutePrefixes: string[];
|
|
14
|
-
/**
|
|
15
|
-
* Retains readable legacy menu URLs while delegating their content to the standard module runner.
|
|
16
|
-
* These are deliberately separate from `platformAdminRoutes`: no business-owned Vue page exists.
|
|
17
|
-
*/
|
|
18
|
-
export declare const platformAdminDynamicModuleRoutes: Record<string, string>;
|
|
19
14
|
export declare const platformAdminModuleRoutes: {
|
|
20
15
|
[k: string]: string;
|
|
21
16
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
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;
|
|
10
|
+
/**
|
|
11
|
+
* Action management has no menu identity of its own. Its standard CRUD page is
|
|
12
|
+
* entered from exactly one governed platform module, which is the hidden and
|
|
13
|
+
* immutable navigator scope.
|
|
14
|
+
*/
|
|
15
|
+
export declare const platformModuleActionPageEnhancement: ModulePageEnhancement;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { ModulePageDrawerContext } from '../../dynamic-page-runtime/index';
|
|
1
2
|
type __VLS_Props = {
|
|
2
|
-
|
|
3
|
-
mode?: 'view' | 'edit';
|
|
3
|
+
context: ModulePageDrawerContext;
|
|
4
4
|
};
|
|
5
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
6
|
declare const _default: typeof __VLS_export;
|