@acorex-platform/framework-client 0.0.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.
Files changed (112) hide show
  1. package/README.md +7 -0
  2. package/auth/README.md +3 -0
  3. package/common/README.md +3 -0
  4. package/core/README.md +4 -0
  5. package/fesm2022/acorex-platform-framework-client-auth.mjs +1383 -0
  6. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CbzOYCnI.mjs +190 -0
  8. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CbzOYCnI.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-framework-client-common.mjs +9467 -0
  10. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-framework-client-core.mjs +4655 -0
  12. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-framework-client-domain.mjs +3189 -0
  14. package/fesm2022/acorex-platform-framework-client-domain.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +3439 -0
  16. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CWVU3wXL.mjs +134 -0
  18. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CWVU3wXL.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +9777 -0
  20. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +2799 -0
  22. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-CxBxxpmA.mjs +376 -0
  24. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-CxBxxpmA.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-l0JAHKIH.mjs +100 -0
  26. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-l0JAHKIH.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +26299 -0
  28. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +2960 -0
  30. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +4711 -0
  32. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CpkWwygb.mjs +72 -0
  34. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CpkWwygb.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-C_EPAvCU.mjs +29 -0
  36. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CmtTq2Mt.mjs +172 -0
  38. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CmtTq2Mt.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DSx0E3NV.mjs +513 -0
  40. package/fesm2022/acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DSx0E3NV.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-DdfcGV1C.mjs +274 -0
  42. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-DdfcGV1C.mjs.map +1 -0
  43. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs +64 -0
  44. package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs.map +1 -0
  45. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-B5kSWxGk.mjs +34 -0
  46. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-B5kSWxGk.mjs.map +1 -0
  47. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +28553 -0
  48. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-framework-client-native.mjs +155 -0
  50. package/fesm2022/acorex-platform-framework-client-native.mjs.map +1 -0
  51. package/fesm2022/acorex-platform-framework-client-runtime.mjs +911 -0
  52. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DnTHwsDJ.mjs +160 -0
  54. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DnTHwsDJ.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BpR9g6QS.mjs +121 -0
  56. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BpR9g6QS.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-D1a7UI71.mjs +236 -0
  58. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-D1a7UI71.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-D--_MIar.mjs +48 -0
  60. package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-D--_MIar.mjs.map +1 -0
  61. package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-Byyqk8pH.mjs +42 -0
  62. package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-Byyqk8pH.mjs.map +1 -0
  63. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
  64. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
  65. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +4160 -0
  66. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CXSGiTCK.mjs +55 -0
  68. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CXSGiTCK.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BY5clQ1J.mjs +57 -0
  70. package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BY5clQ1J.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DEL2YOTP.mjs +234 -0
  72. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DEL2YOTP.mjs.map +1 -0
  73. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BXl8u4Yp.mjs +94 -0
  74. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BXl8u4Yp.mjs.map +1 -0
  75. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-i2sOOkVj.mjs +86 -0
  76. package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-i2sOOkVj.mjs.map +1 -0
  77. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +2375 -0
  78. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -0
  79. package/fesm2022/acorex-platform-framework-client-workflow.mjs +2836 -0
  80. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -0
  81. package/fesm2022/acorex-platform-framework-client.mjs +6 -0
  82. package/fesm2022/acorex-platform-framework-client.mjs.map +1 -0
  83. package/layout/builder/README.md +1578 -0
  84. package/layout/components/README.md +3 -0
  85. package/layout/designer/README.md +4 -0
  86. package/layout/entity/README.md +4 -0
  87. package/layout/views/README.md +3 -0
  88. package/layout/widget-core/README.md +4 -0
  89. package/layout/widgets/README.md +3 -0
  90. package/native/README.md +4 -0
  91. package/package.json +98 -0
  92. package/runtime/README.md +3 -0
  93. package/themes/default/README.md +3 -0
  94. package/themes/shared/README.md +3 -0
  95. package/types/acorex-platform-framework-client-auth.d.ts +690 -0
  96. package/types/acorex-platform-framework-client-common.d.ts +3287 -0
  97. package/types/acorex-platform-framework-client-core.d.ts +1849 -0
  98. package/types/acorex-platform-framework-client-domain.d.ts +1968 -0
  99. package/types/acorex-platform-framework-client-layout-builder.d.ts +1058 -0
  100. package/types/acorex-platform-framework-client-layout-components.d.ts +3362 -0
  101. package/types/acorex-platform-framework-client-layout-designer.d.ts +501 -0
  102. package/types/acorex-platform-framework-client-layout-entity.d.ts +4374 -0
  103. package/types/acorex-platform-framework-client-layout-views.d.ts +975 -0
  104. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +1080 -0
  105. package/types/acorex-platform-framework-client-layout-widgets.d.ts +5263 -0
  106. package/types/acorex-platform-framework-client-native.d.ts +28 -0
  107. package/types/acorex-platform-framework-client-runtime.d.ts +301 -0
  108. package/types/acorex-platform-framework-client-themes-default.d.ts +889 -0
  109. package/types/acorex-platform-framework-client-themes-shared.d.ts +202 -0
  110. package/types/acorex-platform-framework-client-workflow.d.ts +1345 -0
  111. package/types/acorex-platform-framework-client.d.ts +2 -0
  112. package/workflow/README.md +4 -0
@@ -0,0 +1,975 @@
1
+ import * as _ngrx_signals from '@ngrx/signals';
2
+ import * as _angular_core from '@angular/core';
3
+ import { Signal, InjectionToken, OnInit, OnDestroy } from '@angular/core';
4
+ import * as _acorex_platform_framework_client_themes_shared from '@acorex-platform/framework-client/themes/shared';
5
+ import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
6
+ import { AXPActionMenuItem, AXPBreadcrumbItem, AXPMultiLanguageString, AXPBadge, AXPPageStatus, AXPBackButton, AXPExecuteCommand, AXPWidgetNode, AXPKeyboardShortcut, AXPExecuteCommandResult, AXPContextChangeEvent, AXPKeyboardShortcutChord } from '@acorex-platform/framework-shared/core';
7
+ import { AXClickEvent } from '@acorex/cdk/common';
8
+ import { AXPTabNavigationService, AXPHomePageService, AXPSettingsService, AXPTabPreviewService, AXPUnsavedChangesConfirmService, AXPBrowserTitleService } from '@acorex-platform/framework-client/common';
9
+ import * as i1 from '@acorex/cdk/drawer';
10
+ import { AXDrawerItemDirective } from '@acorex/cdk/drawer';
11
+ import * as _acorex_platform_framework_client_core from '@acorex-platform/framework-client/core';
12
+ import { AXPDeviceService, AXPExpressionEvaluatorScope, AXPBroadcastEventService } from '@acorex-platform/framework-client/core';
13
+ import { AXPCommandService, AXPPolicyEngineService } from '@acorex-platform/framework-client/runtime';
14
+ import { AXPWorkflowService } from '@acorex-platform/framework-client/workflow';
15
+ import { AXToastService } from '@acorex/components/toast';
16
+ import { AXFormatService } from '@acorex/core/format';
17
+ import { AXTranslationService } from '@acorex/core/translation';
18
+ import { AXPSessionService } from '@acorex-platform/framework-client/auth';
19
+ import * as _angular_router from '@angular/router';
20
+ import { Router, ActivatedRoute } from '@angular/router';
21
+ import { AXBasePageComponent } from '@acorex/components/page';
22
+ import { AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';
23
+ import * as _acorex_platform_framework_client_layout_views from '@acorex-platform/framework-client/layout/views';
24
+ import * as _acorex_platform_framework_shared_widget_core from '@acorex-platform/framework-shared/widget-core';
25
+ import { AXPPageStatus as AXPPageStatus$1 } from '@acorex-platform/framework-shared/widget-core';
26
+ import { AXFormComponent } from '@acorex/components/form';
27
+ import { AXTabStripChangedEvent } from '@acorex/components/tabs';
28
+ import { AXPWidgetContainerComponent } from '@acorex-platform/framework-client/layout/widget-core';
29
+
30
+ declare abstract class AXPPageLayoutBase {
31
+ abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;
32
+ abstract secondaryMenuItems: Signal<AXPActionMenuItem[]>;
33
+ abstract titleActions: Signal<AXPActionMenuItem[]>;
34
+ abstract hasTitleActions: Signal<boolean>;
35
+ abstract hasPrimaryActions: Signal<boolean>;
36
+ abstract hasSecondaryActions: Signal<boolean>;
37
+ abstract hasActions: Signal<boolean>;
38
+ abstract breadcrumbs: Signal<AXPBreadcrumbItem[]>;
39
+ abstract title: Signal<AXPMultiLanguageString>;
40
+ abstract titleIcon: Signal<string | null>;
41
+ abstract hasTitle: Signal<boolean>;
42
+ abstract hasTitleIcon: Signal<boolean>;
43
+ abstract hasDescription: Signal<boolean>;
44
+ abstract description: Signal<AXPMultiLanguageString | null>;
45
+ abstract hasBreadcrumbs: Signal<boolean>;
46
+ abstract hasBadge: Signal<boolean>;
47
+ abstract badge: Signal<AXPBadge | null>;
48
+ abstract hasStatus: Signal<boolean>;
49
+ abstract status: Signal<AXPPageStatus | null>;
50
+ abstract hasBackButton: Signal<boolean>;
51
+ abstract backButton: Signal<AXPBackButton | null>;
52
+ abstract onBackButtonClick: () => void | Promise<void>;
53
+ abstract startSideToggle: () => void | Promise<void>;
54
+ abstract execute: (command: AXPExecuteCommand) => void | Promise<void>;
55
+ /** Whether the page has user-origin edits that are not yet persisted. */
56
+ abstract hasUnsavedChanges(): boolean;
57
+ /** Resolves the page title badge (used by host layouts for nested entity pages). */
58
+ abstract resolvePageBadge(): AXPBadge | null | Promise<AXPBadge | null>;
59
+ }
60
+
61
+ declare class AXPPageLayoutComponent {
62
+ #private;
63
+ protected page: AXPPageLayoutBase | null;
64
+ protected layoutService: {
65
+ currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
66
+ currentPalette: _angular_core.Signal<string>;
67
+ systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
68
+ font: _ngrx_signals.DeepSignal<{
69
+ family: string;
70
+ size: string;
71
+ }>;
72
+ overlayLoading: _angular_core.Signal<boolean>;
73
+ navigationLoading: _angular_core.Signal<boolean>;
74
+ overlayLoadingTaskCount: _angular_core.Signal<number>;
75
+ navigationLoadingTaskCount: _angular_core.Signal<number>;
76
+ sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
77
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
78
+ sideMenuWidth: _angular_core.Signal<number>;
79
+ sideMenuCompactWidth: _angular_core.Signal<number>;
80
+ menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
81
+ menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
82
+ isPrinting: _angular_core.Signal<boolean>;
83
+ isDarkMode: _angular_core.Signal<boolean>;
84
+ isLightMode: _angular_core.Signal<boolean>;
85
+ isSystemMode: _angular_core.Signal<boolean>;
86
+ isSideMenuOpen: _angular_core.Signal<boolean>;
87
+ isOverlayLoading: _angular_core.Signal<boolean>;
88
+ overlayTaskCount: _angular_core.Signal<number>;
89
+ isNavigationLoading: _angular_core.Signal<boolean>;
90
+ isMenuHorizontal: _angular_core.Signal<boolean>;
91
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
92
+ sideMenuDrawerWidth: _angular_core.Signal<number>;
93
+ changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
94
+ openSideMenu: () => void;
95
+ closeSideMenu: () => void;
96
+ setSideMenuWidth: (width: number) => void;
97
+ setSideMenuCompactWidth: (width: number) => void;
98
+ setSideMenuDrawerWidth: (width: number) => void;
99
+ toggleSideMenu: () => void;
100
+ setNavigationLoading: (value: boolean, delay?: number) => void;
101
+ setOverlayLoading: (value: boolean, delay?: number) => void;
102
+ clearOverlayLoading: () => void;
103
+ loadSettings: () => Promise<void>;
104
+ } & _ngrx_signals.StateSource<{
105
+ currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
106
+ currentPalette: string;
107
+ systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
108
+ font: {
109
+ family: string;
110
+ size: string;
111
+ };
112
+ overlayLoading: boolean;
113
+ navigationLoading: boolean;
114
+ overlayLoadingTaskCount: number;
115
+ navigationLoadingTaskCount: number;
116
+ sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
117
+ overlaySideMenuOpen: boolean;
118
+ sideMenuWidth: number;
119
+ sideMenuCompactWidth: number;
120
+ menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
121
+ menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
122
+ isPrinting: boolean;
123
+ }>;
124
+ protected deviceService: AXPDeviceService;
125
+ protected tabNavigation: AXPTabNavigationService;
126
+ protected startSideDrawer: _angular_core.Signal<AXDrawerItemDirective | undefined>;
127
+ protected workflow: AXPWorkflowService;
128
+ protected commandService: AXPCommandService;
129
+ private checkScrollableContent;
130
+ protected handleActionClick(item: AXPActionMenuItem): void;
131
+ toggleStartSide(): void;
132
+ protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
133
+ protected handleBackdropClick(e: AXClickEvent): boolean;
134
+ protected execute(command: AXPExecuteCommand): Promise<void>;
135
+ protected handleOnBackdropClick(event: MouseEvent): void;
136
+ /**
137
+ * Breadcrumbs and other in-page `navigate` commands bypass `routerLink`, so prompt here
138
+ * when the hosted page implements {@link AXPUnsavedChangesCanDeactivate}.
139
+ * A successful confirm sets `leaveConfirmed` for the router guard on the subsequent navigation.
140
+ */
141
+ private canLeaveCurrentPage;
142
+ protected getEntityData(): Record<string, any> | null;
143
+ protected handleStatusTransition(transition: any): Promise<void>;
144
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageLayoutComponent, never>;
145
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPageLayoutComponent, "axp-page-layout", never, {}, {}, never, ["axp-layout-start-side", "axp-page-toolbar", "axp-page-content", "axp-page-footer"], true, [{ directive: typeof i1.AXDrawerContainerDirective; inputs: {}; outputs: {}; }]>;
146
+ }
147
+
148
+ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
149
+ #private;
150
+ protected readonly layoutService: {
151
+ currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
152
+ currentPalette: _angular_core.Signal<string>;
153
+ systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
154
+ font: _ngrx_signals.DeepSignal<{
155
+ family: string;
156
+ size: string;
157
+ }>;
158
+ overlayLoading: _angular_core.Signal<boolean>;
159
+ navigationLoading: _angular_core.Signal<boolean>;
160
+ overlayLoadingTaskCount: _angular_core.Signal<number>;
161
+ navigationLoadingTaskCount: _angular_core.Signal<number>;
162
+ sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
163
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
164
+ sideMenuWidth: _angular_core.Signal<number>;
165
+ sideMenuCompactWidth: _angular_core.Signal<number>;
166
+ menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
167
+ menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
168
+ isPrinting: _angular_core.Signal<boolean>;
169
+ isDarkMode: _angular_core.Signal<boolean>;
170
+ isLightMode: _angular_core.Signal<boolean>;
171
+ isSystemMode: _angular_core.Signal<boolean>;
172
+ isSideMenuOpen: _angular_core.Signal<boolean>;
173
+ isOverlayLoading: _angular_core.Signal<boolean>;
174
+ overlayTaskCount: _angular_core.Signal<number>;
175
+ isNavigationLoading: _angular_core.Signal<boolean>;
176
+ isMenuHorizontal: _angular_core.Signal<boolean>;
177
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
178
+ sideMenuDrawerWidth: _angular_core.Signal<number>;
179
+ changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
180
+ openSideMenu: () => void;
181
+ closeSideMenu: () => void;
182
+ setSideMenuWidth: (width: number) => void;
183
+ setSideMenuCompactWidth: (width: number) => void;
184
+ setSideMenuDrawerWidth: (width: number) => void;
185
+ toggleSideMenu: () => void;
186
+ setNavigationLoading: (value: boolean, delay?: number) => void;
187
+ setOverlayLoading: (value: boolean, delay?: number) => void;
188
+ clearOverlayLoading: () => void;
189
+ loadSettings: () => Promise<void>;
190
+ } & _ngrx_signals.StateSource<{
191
+ currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
192
+ currentPalette: string;
193
+ systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
194
+ font: {
195
+ family: string;
196
+ size: string;
197
+ };
198
+ overlayLoading: boolean;
199
+ navigationLoading: boolean;
200
+ overlayLoadingTaskCount: number;
201
+ navigationLoadingTaskCount: number;
202
+ sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
203
+ overlaySideMenuOpen: boolean;
204
+ sideMenuWidth: number;
205
+ sideMenuCompactWidth: number;
206
+ menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
207
+ menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
208
+ isPrinting: boolean;
209
+ }>;
210
+ protected readonly sessionService: AXPSessionService;
211
+ protected readonly translateService: AXTranslationService;
212
+ protected readonly formatService: AXFormatService;
213
+ protected readonly toastService: AXToastService;
214
+ protected readonly homePageService: AXPHomePageService;
215
+ protected readonly policyService: AXPPolicyEngineService;
216
+ protected readonly settingsService: AXPSettingsService;
217
+ protected readonly tabNavigation: AXPTabNavigationService;
218
+ protected readonly tabPreviewService: AXPTabPreviewService;
219
+ protected readonly unsavedChangesConfirm: AXPUnsavedChangesConfirmService;
220
+ protected readonly browserTitleService: AXPBrowserTitleService;
221
+ protected readonly router: Router;
222
+ private readonly pageLayoutDestroyRef;
223
+ private _updateTrigger;
224
+ /** Tab key captured at page init — stable while the route instance is cached. */
225
+ private readonly pageTabKey;
226
+ protected updateTrigger: _angular_core.Signal<number>;
227
+ protected recompute(): void;
228
+ ngOnInit(): Promise<void>;
229
+ /** Maps the home-page route to the pinned home tab key instead of a path-based key. */
230
+ private resolvePageTabKey;
231
+ /** Stable tab key for this cached page instance (tabular mode). */
232
+ protected getPageTabKey(): string | null;
233
+ protected publishTabStructuredPreview(tabKey: string, input: {
234
+ titleValue: AXPMultiLanguageString;
235
+ descriptionValue: AXPMultiLanguageString | null;
236
+ icon: string | null;
237
+ breadcrumbItems: AXPBreadcrumbItem[];
238
+ isDirty: boolean;
239
+ }): Promise<void>;
240
+ protected resolveMultiLanguageText(value: AXPMultiLanguageString | null | undefined, fallback: string): Promise<string>;
241
+ /** Resolves i18n keys (`@scope:key`); returns plain text unchanged. */
242
+ protected translateTextIfKey(text: string): Promise<string>;
243
+ title: _angular_core.WritableSignal<AXPMultiLanguageString>;
244
+ titleIcon: _angular_core.WritableSignal<string | null>;
245
+ protected getPageTitle(): AXPMultiLanguageString | Promise<AXPMultiLanguageString>;
246
+ protected getPageIcon(): string | null | Promise<string | null>;
247
+ hasTitle: _angular_core.Signal<boolean>;
248
+ hasTitleIcon: _angular_core.Signal<boolean>;
249
+ /** Publishes the page title to the browser tab when this instance is the active route. */
250
+ protected publishBrowserTitleIfActive(): Promise<void>;
251
+ /** True when this cached page instance matches the current router location. */
252
+ protected isActivePageForBrowserTitle(): boolean;
253
+ description: _angular_core.WritableSignal<AXPMultiLanguageString | null>;
254
+ hasDescription: _angular_core.Signal<boolean>;
255
+ protected getPageDescription(): AXPMultiLanguageString | null | Promise<AXPMultiLanguageString | null>;
256
+ private defaultBreadCrumbs;
257
+ breadcrumbs: _angular_core.WritableSignal<AXPBreadcrumbItem[]>;
258
+ hasBreadcrumbs: _angular_core.Signal<boolean>;
259
+ protected getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
260
+ /** Collects resolved breadcrumb labels (Home excluded upstream) for tab chrome. */
261
+ protected resolveBreadcrumbTabTitleSegments(pageBreadcrumbs: AXPBreadcrumbItem[]): Promise<string[]>;
262
+ /** Joins breadcrumb segments as the stored tab title string. */
263
+ protected resolveBreadcrumbTabTitle(pageBreadcrumbs: AXPBreadcrumbItem[]): Promise<string | null>;
264
+ /** Resolves a breadcrumb label the same way as page chrome (`t(item.title)`). */
265
+ protected resolveBreadcrumbItemTitle(item: AXPBreadcrumbItem | undefined): Promise<string | null>;
266
+ /** Fallback tab label from the page title when breadcrumbs are not ready yet. */
267
+ protected resolvePageTitleForTab(): Promise<string | null>;
268
+ badge: _angular_core.WritableSignal<AXPBadge | null>;
269
+ hasBadge: _angular_core.Signal<boolean>;
270
+ hasUnsavedChanges(): boolean;
271
+ /**
272
+ * Confirms closing this page as a background tab (no router navigation).
273
+ * Override when dirty detection differs from {@link hasUnsavedChanges}.
274
+ */
275
+ onBeforeTabClose(): boolean | Promise<boolean>;
276
+ protected getPageBadge(): Promise<AXPBadge | null>;
277
+ resolvePageBadge(): Promise<AXPBadge | null>;
278
+ status: _angular_core.WritableSignal<AXPPageStatus | null>;
279
+ hasStatus: _angular_core.Signal<boolean>;
280
+ protected getPageStatus(): AXPPageStatus | null | Promise<AXPPageStatus | null>;
281
+ protected layout: _angular_core.Signal<AXPPageLayoutComponent | undefined>;
282
+ protected toggleEndSide(): void;
283
+ protected toggleStartSide(): void;
284
+ primaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
285
+ hasPrimaryActions: _angular_core.Signal<boolean>;
286
+ getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
287
+ secondaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
288
+ hasSecondaryActions: _angular_core.Signal<boolean>;
289
+ hasActions: _angular_core.Signal<boolean>;
290
+ getSecondaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
291
+ titleActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
292
+ hasTitleActions: _angular_core.Signal<boolean>;
293
+ protected getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
294
+ backButton: _angular_core.WritableSignal<AXPBackButton | null>;
295
+ hasBackButton: _angular_core.Signal<boolean>;
296
+ protected getBackButton(): (AXPBackButton | null) | Promise<AXPBackButton | null>;
297
+ execute(command: AXPExecuteCommand): void | Promise<void>;
298
+ /**
299
+ * Optional partial context to merge into the create/update wizard when leaving a page step.
300
+ * Override when the page keeps edits in local state instead of the shared form context.
301
+ */
302
+ getWizardStepContext(): Record<string, unknown> | null;
303
+ startSideToggle(): void | Promise<void>;
304
+ onBackButtonClick(): void | Promise<void>;
305
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageLayoutBaseComponent, never>;
306
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPageLayoutBaseComponent, "ng-component", never, {}, {}, never, never, true, never>;
307
+ }
308
+
309
+ /**
310
+ * Builds the standard "Not Saved" page badge when the global show-page-badge setting is enabled.
311
+ */
312
+ declare function buildNotSavedPageBadge(translateService: AXTranslationService, settingsService: AXPSettingsService): Promise<AXPBadge | null>;
313
+ /**
314
+ * Whether a command name represents a discard/revert action on a details sub-page.
315
+ */
316
+ declare function isDiscardCommand(commandName: string, rejectCommandName?: string | null): boolean;
317
+
318
+ declare abstract class AXPPopupLayoutBase {
319
+ abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;
320
+ abstract secondaryMenuItems: Signal<AXPActionMenuItem[]>;
321
+ abstract titleActions: Signal<AXPActionMenuItem[]>;
322
+ abstract hasTitleActions: Signal<boolean>;
323
+ abstract hasPrimaryActions: Signal<boolean>;
324
+ abstract hasSecondaryActions: Signal<boolean>;
325
+ abstract hasActions: Signal<boolean>;
326
+ abstract title: Signal<string>;
327
+ abstract hasTitle: Signal<boolean>;
328
+ abstract execute: (command: AXPExecuteCommand) => void | Promise<void>;
329
+ }
330
+
331
+ declare class AXPPopupLayoutComponent {
332
+ #private;
333
+ protected popup: AXPPopupLayoutBase;
334
+ protected layoutService: {
335
+ currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
336
+ currentPalette: _angular_core.Signal<string>;
337
+ systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
338
+ font: _ngrx_signals.DeepSignal<{
339
+ family: string;
340
+ size: string;
341
+ }>;
342
+ overlayLoading: _angular_core.Signal<boolean>;
343
+ navigationLoading: _angular_core.Signal<boolean>;
344
+ overlayLoadingTaskCount: _angular_core.Signal<number>;
345
+ navigationLoadingTaskCount: _angular_core.Signal<number>;
346
+ sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
347
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
348
+ sideMenuWidth: _angular_core.Signal<number>;
349
+ sideMenuCompactWidth: _angular_core.Signal<number>;
350
+ menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
351
+ menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
352
+ isPrinting: _angular_core.Signal<boolean>;
353
+ isDarkMode: _angular_core.Signal<boolean>;
354
+ isLightMode: _angular_core.Signal<boolean>;
355
+ isSystemMode: _angular_core.Signal<boolean>;
356
+ isSideMenuOpen: _angular_core.Signal<boolean>;
357
+ isOverlayLoading: _angular_core.Signal<boolean>;
358
+ overlayTaskCount: _angular_core.Signal<number>;
359
+ isNavigationLoading: _angular_core.Signal<boolean>;
360
+ isMenuHorizontal: _angular_core.Signal<boolean>;
361
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
362
+ sideMenuDrawerWidth: _angular_core.Signal<number>;
363
+ changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
364
+ openSideMenu: () => void;
365
+ closeSideMenu: () => void;
366
+ setSideMenuWidth: (width: number) => void;
367
+ setSideMenuCompactWidth: (width: number) => void;
368
+ setSideMenuDrawerWidth: (width: number) => void;
369
+ toggleSideMenu: () => void;
370
+ setNavigationLoading: (value: boolean, delay?: number) => void;
371
+ setOverlayLoading: (value: boolean, delay?: number) => void;
372
+ clearOverlayLoading: () => void;
373
+ loadSettings: () => Promise<void>;
374
+ } & _ngrx_signals.StateSource<{
375
+ currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
376
+ currentPalette: string;
377
+ systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
378
+ font: {
379
+ family: string;
380
+ size: string;
381
+ };
382
+ overlayLoading: boolean;
383
+ navigationLoading: boolean;
384
+ overlayLoadingTaskCount: number;
385
+ navigationLoadingTaskCount: number;
386
+ sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
387
+ overlaySideMenuOpen: boolean;
388
+ sideMenuWidth: number;
389
+ sideMenuCompactWidth: number;
390
+ menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
391
+ menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
392
+ isPrinting: boolean;
393
+ }>;
394
+ protected workflow: AXPWorkflowService;
395
+ private checkScrollableContent;
396
+ protected handleActionClick(item: AXPActionMenuItem): void;
397
+ protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
398
+ protected handleBackdropClick(e: AXClickEvent): boolean;
399
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPopupLayoutComponent, never>;
400
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPopupLayoutComponent, "axp-popup-layout", never, {}, {}, never, ["axp-page-content"], true, never>;
401
+ }
402
+
403
+ declare abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {
404
+ #private;
405
+ protected readonly layoutService: {
406
+ currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
407
+ currentPalette: _angular_core.Signal<string>;
408
+ systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
409
+ font: _ngrx_signals.DeepSignal<{
410
+ family: string;
411
+ size: string;
412
+ }>;
413
+ overlayLoading: _angular_core.Signal<boolean>;
414
+ navigationLoading: _angular_core.Signal<boolean>;
415
+ overlayLoadingTaskCount: _angular_core.Signal<number>;
416
+ navigationLoadingTaskCount: _angular_core.Signal<number>;
417
+ sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
418
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
419
+ sideMenuWidth: _angular_core.Signal<number>;
420
+ sideMenuCompactWidth: _angular_core.Signal<number>;
421
+ menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
422
+ menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
423
+ isPrinting: _angular_core.Signal<boolean>;
424
+ isDarkMode: _angular_core.Signal<boolean>;
425
+ isLightMode: _angular_core.Signal<boolean>;
426
+ isSystemMode: _angular_core.Signal<boolean>;
427
+ isSideMenuOpen: _angular_core.Signal<boolean>;
428
+ isOverlayLoading: _angular_core.Signal<boolean>;
429
+ overlayTaskCount: _angular_core.Signal<number>;
430
+ isNavigationLoading: _angular_core.Signal<boolean>;
431
+ isMenuHorizontal: _angular_core.Signal<boolean>;
432
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
433
+ sideMenuDrawerWidth: _angular_core.Signal<number>;
434
+ changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
435
+ openSideMenu: () => void;
436
+ closeSideMenu: () => void;
437
+ setSideMenuWidth: (width: number) => void;
438
+ setSideMenuCompactWidth: (width: number) => void;
439
+ setSideMenuDrawerWidth: (width: number) => void;
440
+ toggleSideMenu: () => void;
441
+ setNavigationLoading: (value: boolean, delay?: number) => void;
442
+ setOverlayLoading: (value: boolean, delay?: number) => void;
443
+ clearOverlayLoading: () => void;
444
+ loadSettings: () => Promise<void>;
445
+ } & _ngrx_signals.StateSource<{
446
+ currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
447
+ currentPalette: string;
448
+ systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
449
+ font: {
450
+ family: string;
451
+ size: string;
452
+ };
453
+ overlayLoading: boolean;
454
+ navigationLoading: boolean;
455
+ overlayLoadingTaskCount: number;
456
+ navigationLoadingTaskCount: number;
457
+ sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
458
+ overlaySideMenuOpen: boolean;
459
+ sideMenuWidth: number;
460
+ sideMenuCompactWidth: number;
461
+ menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
462
+ menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
463
+ isPrinting: boolean;
464
+ }>;
465
+ protected readonly sessionService: AXPSessionService;
466
+ protected readonly translateService: AXTranslationService;
467
+ protected readonly formatService: AXFormatService;
468
+ protected readonly toastService: AXToastService;
469
+ protected readonly homePageService: AXPHomePageService;
470
+ private _updateTrigger;
471
+ protected updateTrigger: _angular_core.Signal<number>;
472
+ protected recompute(): void;
473
+ ngOnInit(): Promise<void>;
474
+ title: _angular_core.WritableSignal<string>;
475
+ protected getPopupTitle(): string | Promise<string>;
476
+ hasTitle: _angular_core.Signal<boolean>;
477
+ protected layout: _angular_core.Signal<AXPPopupLayoutComponent | undefined>;
478
+ primaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
479
+ hasPrimaryActions: _angular_core.Signal<boolean>;
480
+ protected getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
481
+ secondaryMenuItems: _angular_core.WritableSignal<AXPActionMenuItem[]>;
482
+ hasSecondaryActions: _angular_core.Signal<boolean>;
483
+ protected getSecondaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
484
+ hasActions: _angular_core.Signal<boolean>;
485
+ titleActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
486
+ hasTitleActions: _angular_core.Signal<boolean>;
487
+ protected getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
488
+ execute(command: AXPExecuteCommand): void | Promise<void>;
489
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPopupLayoutBaseComponent, never>;
490
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPopupLayoutBaseComponent, "ng-component", never, {}, {}, never, never, true, never>;
491
+ }
492
+
493
+ interface AXPLayoutDetailsViewAction extends AXPActionMenuItem {
494
+ zone: 'header' | 'footer';
495
+ priority: 'primary' | 'secondary';
496
+ scope?: AXPEntityCommandScope;
497
+ }
498
+ type AXPPageContentItem = AXPWidgetNode | {
499
+ type: 'component';
500
+ componentKey: string;
501
+ pageConfig?: Record<string, unknown>;
502
+ };
503
+ interface AXPLayoutDetailsViewTabItem {
504
+ id: string;
505
+ title: string;
506
+ icon?: string;
507
+ visible?: boolean;
508
+ disabled?: boolean;
509
+ active?: boolean;
510
+ content: AXPWidgetNode[];
511
+ }
512
+ interface AXPLayoutDetailsViewPage {
513
+ id: string;
514
+ title: AXPMultiLanguageString;
515
+ label: AXPMultiLanguageString;
516
+ description?: AXPMultiLanguageString;
517
+ icon?: string;
518
+ /**
519
+ * Content can be either widget nodes or component references
520
+ */
521
+ content?: AXPPageContentItem[];
522
+ tabs?: AXPLayoutDetailsViewTabItem[];
523
+ /**
524
+ * Static actions array (legacy, use getActions for reactive actions)
525
+ */
526
+ actions?: AXPLayoutDetailsViewAction[];
527
+ /**
528
+ * Function to get actions dynamically (supports reactive updates from component instances)
529
+ */
530
+ getActions?: () => Promise<AXPLayoutDetailsViewAction[]>;
531
+ isPrimary?: boolean;
532
+ isReadonly?: boolean;
533
+ settings?: {
534
+ commands?: {
535
+ accept?: {
536
+ title: string;
537
+ icon?: string;
538
+ color: string;
539
+ visible?: string | boolean;
540
+ command: AXPExecuteCommand;
541
+ shortcuts?: AXPKeyboardShortcut[];
542
+ };
543
+ reject?: {
544
+ title: string;
545
+ icon?: string;
546
+ color: string;
547
+ visible?: string | boolean;
548
+ command: AXPExecuteCommand;
549
+ shortcuts?: AXPKeyboardShortcut[];
550
+ };
551
+ };
552
+ };
553
+ load?: (params?: Record<string, any>) => Promise<AXPExecuteCommandResult>;
554
+ execute?: (command: AXPExecuteCommand, context: {}) => Promise<AXPExecuteCommandResult>;
555
+ }
556
+ interface AXPLayoutDetailsViewAdapter {
557
+ name: string;
558
+ title?: AXPMultiLanguageString;
559
+ label?: AXPMultiLanguageString;
560
+ description?: AXPMultiLanguageString;
561
+ icon?: string;
562
+ actions?: AXPLayoutDetailsViewAction[];
563
+ breadcrumbs?: AXPBreadcrumbItem[];
564
+ pages: AXPLayoutDetailsViewPage[];
565
+ execute?: (command: AXPExecuteCommand, context: {}) => Promise<AXPExecuteCommandResult>;
566
+ load?: (params?: Record<string, unknown>) => Promise<AXPExecuteCommandResult>;
567
+ exitUrl?: string;
568
+ getPageBadge?: (context: Record<string, unknown>, isDirty: boolean) => Promise<AXPBadge | null>;
569
+ getPageStatus?: (context: Record<string, unknown>, currentPage: AXPLayoutDetailsViewPage | null) => Promise<AXPPageStatus | null>;
570
+ }
571
+
572
+ interface AXPLayoutDetailsViewRouteParams {
573
+ moduleName: string;
574
+ entityName: string;
575
+ id: string;
576
+ }
577
+ interface AXPLayoutDetailsViewAdapterLoader {
578
+ load(params: AXPLayoutDetailsViewRouteParams): Promise<AXPLayoutDetailsViewAdapter>;
579
+ }
580
+ declare const AXP_LAYOUT_DETAILS_VIEW_ADAPTER_LOADER: InjectionToken<AXPLayoutDetailsViewAdapterLoader>;
581
+
582
+ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
583
+ adapter: _angular_core.Signal<AXPLayoutDetailsViewAdapter | null>;
584
+ rootContext: _angular_core.Signal<Record<string, any>>;
585
+ savedContext: _angular_core.Signal<Record<string, any>>;
586
+ previousContext: _angular_core.Signal<Record<string, any>>;
587
+ context: _angular_core.Signal<Record<string, any>>;
588
+ scope: _angular_core.Signal<AXPExpressionEvaluatorScope | null>;
589
+ status: _angular_core.Signal<AXPPageStatus$1>;
590
+ currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
591
+ currentTab: _angular_core.Signal<AXPLayoutDetailsViewTabItem | null>;
592
+ pageSelectedRows: _angular_core.Signal<any[]>;
593
+ evaluatedPageContent: _angular_core.Signal<AXPWidgetNode[]>;
594
+ evaluatedTabContentsById: _angular_core.Signal<Record<string, AXPWidgetNode[]>>;
595
+ formDirty: _angular_core.Signal<boolean>;
596
+ icon: _angular_core.Signal<string | null>;
597
+ content: _angular_core.Signal<_acorex_platform_framework_client_layout_views.AXPPageContentItem[]>;
598
+ showPages: _angular_core.Signal<boolean>;
599
+ isLarge: _angular_core.Signal<boolean>;
600
+ isBusy: _angular_core.Signal<boolean>;
601
+ isSaving: _angular_core.Signal<boolean>;
602
+ isOverlayBusy: _angular_core.Signal<boolean>;
603
+ isPageReady: _angular_core.Signal<boolean>;
604
+ isDirty: _angular_core.Signal<boolean>;
605
+ changesCount: _angular_core.Signal<1 | 0>;
606
+ isLoaded: _angular_core.Signal<boolean>;
607
+ currentPageSelectedRows: _angular_core.Signal<any[]>;
608
+ activeTabContent: _angular_core.Signal<AXPWidgetNode[]>;
609
+ loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
610
+ loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
611
+ load: (adapter: AXPLayoutDetailsViewAdapter, forceRefresh?: boolean, pageIdFromUrl?: string) => Promise<void>;
612
+ loadFromRoute: (forceRefresh?: boolean) => Promise<void>;
613
+ updateContext: (context: any) => void;
614
+ setFormDirty: (dirty: boolean) => void;
615
+ updatePageSelectedRows: (rows: any[]) => void;
616
+ currentPagePrimaryActions: () => Promise<any>;
617
+ currentPageSecondaryActions: () => Promise<any>;
618
+ currentPageContent: () => AXPWidgetNode[];
619
+ currentPageTabs: () => AXPLayoutDetailsViewTabItem[] | undefined;
620
+ setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
621
+ setCurrentTab: (tab: AXPLayoutDetailsViewTabItem) => void;
622
+ backButtonTitle: () => AXPMultiLanguageString;
623
+ getPageTitle: () => Promise<AXPMultiLanguageString>;
624
+ getPageDescription: () => Promise<AXPMultiLanguageString | null>;
625
+ getBackButton: () => Promise<AXPBackButton | null>;
626
+ getPageBadge: () => Promise<AXPBadge | null>;
627
+ getPageStatus: () => Promise<AXPPageStatus | null>;
628
+ primaryActions: () => Promise<any>;
629
+ secondaryActions: () => Promise<any>;
630
+ breadcrumbs: () => Promise<{
631
+ title: AXPMultiLanguageString;
632
+ name?: string;
633
+ icon?: string;
634
+ command?: AXPExecuteCommand;
635
+ }[]>;
636
+ applySavedState: (context: Record<string, unknown>) => void;
637
+ discard: () => Promise<void>;
638
+ save: (command: AXPExecuteCommand, form: AXFormComponent, liveContext?: Record<string, unknown>) => Promise<boolean>;
639
+ goToListPage: () => Promise<void>;
640
+ } & _ngrx_signals.StateSource<{
641
+ adapter: AXPLayoutDetailsViewAdapter | null;
642
+ rootContext: Record<string, any>;
643
+ savedContext: Record<string, any>;
644
+ previousContext: Record<string, any>;
645
+ context: Record<string, any>;
646
+ scope: AXPExpressionEvaluatorScope | null;
647
+ status: AXPPageStatus$1;
648
+ currentPage: AXPLayoutDetailsViewPage | null;
649
+ currentTab: AXPLayoutDetailsViewTabItem | null;
650
+ pageSelectedRows: any[];
651
+ evaluatedPageContent: AXPWidgetNode[];
652
+ evaluatedTabContentsById: Record<string, AXPWidgetNode[]>;
653
+ formDirty: boolean;
654
+ }>>;
655
+
656
+ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
657
+ #private;
658
+ protected vm: {
659
+ adapter: _angular_core.Signal<_acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewAdapter | null>;
660
+ rootContext: _angular_core.Signal<Record<string, any>>;
661
+ savedContext: _angular_core.Signal<Record<string, any>>;
662
+ previousContext: _angular_core.Signal<Record<string, any>>;
663
+ context: _angular_core.Signal<Record<string, any>>;
664
+ scope: _angular_core.Signal<_acorex_platform_framework_client_core.AXPExpressionEvaluatorScope | null>;
665
+ status: _angular_core.Signal<_acorex_platform_framework_shared_widget_core.AXPPageStatus>;
666
+ currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
667
+ currentTab: _angular_core.Signal<_acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewTabItem | null>;
668
+ pageSelectedRows: _angular_core.Signal<any[]>;
669
+ evaluatedPageContent: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPWidgetNode[]>;
670
+ evaluatedTabContentsById: _angular_core.Signal<Record<string, _acorex_platform_framework_shared_core.AXPWidgetNode[]>>;
671
+ formDirty: _angular_core.Signal<boolean>;
672
+ icon: _angular_core.Signal<string | null>;
673
+ content: _angular_core.Signal<AXPPageContentItem[]>;
674
+ showPages: _angular_core.Signal<boolean>;
675
+ isLarge: _angular_core.Signal<boolean>;
676
+ isBusy: _angular_core.Signal<boolean>;
677
+ isSaving: _angular_core.Signal<boolean>;
678
+ isOverlayBusy: _angular_core.Signal<boolean>;
679
+ isPageReady: _angular_core.Signal<boolean>;
680
+ isDirty: _angular_core.Signal<boolean>;
681
+ changesCount: _angular_core.Signal<1 | 0>;
682
+ isLoaded: _angular_core.Signal<boolean>;
683
+ currentPageSelectedRows: _angular_core.Signal<any[]>;
684
+ activeTabContent: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPWidgetNode[]>;
685
+ loadAdapter: (adapter: _acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewAdapter) => Promise<void>;
686
+ loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
687
+ load: (adapter: _acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewAdapter, forceRefresh?: boolean, pageIdFromUrl?: string) => Promise<void>;
688
+ loadFromRoute: (forceRefresh?: boolean) => Promise<void>;
689
+ updateContext: (context: any) => void;
690
+ setFormDirty: (dirty: boolean) => void;
691
+ updatePageSelectedRows: (rows: any[]) => void;
692
+ currentPagePrimaryActions: () => Promise<any>;
693
+ currentPageSecondaryActions: () => Promise<any>;
694
+ currentPageContent: () => _acorex_platform_framework_shared_core.AXPWidgetNode[];
695
+ currentPageTabs: () => _acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewTabItem[] | undefined;
696
+ setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
697
+ setCurrentTab: (tab: _acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewTabItem) => void;
698
+ backButtonTitle: () => AXPMultiLanguageString;
699
+ getPageTitle: () => Promise<AXPMultiLanguageString>;
700
+ getPageDescription: () => Promise<AXPMultiLanguageString | null>;
701
+ getBackButton: () => Promise<AXPBackButton | null>;
702
+ getPageBadge: () => Promise<AXPBadge | null>;
703
+ getPageStatus: () => Promise<AXPPageStatus | null>;
704
+ primaryActions: () => Promise<any>;
705
+ secondaryActions: () => Promise<any>;
706
+ breadcrumbs: () => Promise<{
707
+ title: AXPMultiLanguageString;
708
+ name?: string;
709
+ icon?: string;
710
+ command?: AXPExecuteCommand;
711
+ }[]>;
712
+ applySavedState: (context: Record<string, unknown>) => void;
713
+ discard: () => Promise<void>;
714
+ save: (command: AXPExecuteCommand, form: AXFormComponent, liveContext?: Record<string, unknown>) => Promise<boolean>;
715
+ goToListPage: () => Promise<void>;
716
+ } & _ngrx_signals.StateSource<{
717
+ adapter: _acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewAdapter | null;
718
+ rootContext: Record<string, any>;
719
+ savedContext: Record<string, any>;
720
+ previousContext: Record<string, any>;
721
+ context: Record<string, any>;
722
+ scope: _acorex_platform_framework_client_core.AXPExpressionEvaluatorScope | null;
723
+ status: _acorex_platform_framework_shared_widget_core.AXPPageStatus;
724
+ currentPage: AXPLayoutDetailsViewPage | null;
725
+ currentTab: _acorex_platform_framework_client_layout_views.AXPLayoutDetailsViewTabItem | null;
726
+ pageSelectedRows: any[];
727
+ evaluatedPageContent: _acorex_platform_framework_shared_core.AXPWidgetNode[];
728
+ evaluatedTabContentsById: Record<string, _acorex_platform_framework_shared_core.AXPWidgetNode[]>;
729
+ formDirty: boolean;
730
+ }>;
731
+ protected route: ActivatedRoute;
732
+ protected eventService: AXPBroadcastEventService;
733
+ protected deviceService: AXPDeviceService;
734
+ private readonly unsavedChangesPopstate;
735
+ private readonly pageComponentInstanceRegistry;
736
+ private readonly shortcutRegistry;
737
+ private readonly workflowService;
738
+ private readonly destroyRef;
739
+ private readonly elementRef;
740
+ private readonly debug;
741
+ private onSelectionChangeSubscription?;
742
+ /** Cancels in-flight list selection bind when the sidebar page or widget tree changes. */
743
+ private pageListSelectionBindGeneration;
744
+ /** Prevents sidebar tab init events from pushing history before the first page activation completes. */
745
+ private readonly detailsLayoutReady;
746
+ private readonly destroyed$;
747
+ private footerActionsGeneration;
748
+ private keyboardShortcutRegistrationGeneration;
749
+ private overlayFallbackTimer?;
750
+ /** Page id the overlay release logic is bound to; reset on sidebar/page switch. */
751
+ private overlayTargetPageId;
752
+ /** After a page switch, wait for widget registry to clear before accepting remounted widgets. */
753
+ private overlaySawZeroWidgetsAfterPageChange;
754
+ /** Cancels in-flight overlay release when the page changes. */
755
+ private overlayReleaseGeneration;
756
+ private overlayReleasePromise?;
757
+ /** Safety cap when widget ready detection does not settle. */
758
+ private static readonly overlayMaxWaitMs;
759
+ /** Header actions with resolved shortcut chords, keyed by command name. */
760
+ private readonly actionShortcutEntries;
761
+ /** Save/discard use live {@link AXPLayoutDetailsViewViewModel.isDirty}; other actions use evaluated `visible`. */
762
+ private static isTruthyActionFlag;
763
+ protected form: _angular_core.Signal<AXFormComponent | undefined>;
764
+ protected widgetContainer: _angular_core.Signal<AXPWidgetContainerComponent | undefined>;
765
+ private readonly sidebarTabs;
766
+ private sidebarTabChangeSuppressed;
767
+ protected footerPrimaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
768
+ protected footerSecondaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
769
+ protected footerActions: _angular_core.Signal<AXPActionMenuItem[]>;
770
+ protected rejectFooterCommand: _angular_core.Signal<{
771
+ title: string;
772
+ icon?: string;
773
+ color: string;
774
+ visible?: string | boolean;
775
+ command: AXPExecuteCommand;
776
+ shortcuts?: _acorex_platform_framework_shared_core.AXPKeyboardShortcut[];
777
+ } | null>;
778
+ protected acceptFooterCommand: _angular_core.Signal<{
779
+ title: string;
780
+ icon?: string;
781
+ color: string;
782
+ visible?: string | boolean;
783
+ command: AXPExecuteCommand;
784
+ shortcuts?: _acorex_platform_framework_shared_core.AXPKeyboardShortcut[];
785
+ } | null>;
786
+ protected hasSaveDiscardFooterCommands: _angular_core.Signal<boolean>;
787
+ /** Entity save/discard — driven live by widget/container dirty state, not evaluated action metadata. */
788
+ protected showSaveDiscardFooter: _angular_core.Signal<boolean>;
789
+ /** Live dirty flag for widget-based entity forms (not component-hosted pages). */
790
+ protected liveFormIsDirty: _angular_core.Signal<boolean>;
791
+ protected hasVisibleFooterPrimaryActions: _angular_core.Signal<boolean>;
792
+ protected hasVisibleFooterSecondaryActions: _angular_core.Signal<boolean>;
793
+ protected isSaveDiscardFooterAction(action: AXPActionMenuItem): boolean;
794
+ protected isFooterActionVisible(action: AXPActionMenuItem): boolean;
795
+ protected isFooterActionDisabled(action: AXPActionMenuItem): boolean;
796
+ protected hasFooter: _angular_core.Signal<boolean>;
797
+ /**
798
+ * Re-fetches the entity adapter and reloads the active page.
799
+ */
800
+ protected refreshLayout(): Promise<void>;
801
+ ngOnInit(): Promise<void>;
802
+ /** Navigates to {@link AXPLayoutDetailsViewAdapter.exitUrl} when the open record was deleted. */
803
+ private handleEntityDeleted;
804
+ ngOnDestroy(): void;
805
+ private refreshFooterActions;
806
+ /** Whether the active page hosts a related-entity list (`page-list` widget). */
807
+ private pageHasEntityListWidget;
808
+ /** Subscribes to the live data-list selection stream for Selected-scope header actions. */
809
+ private attachSelectionToListWidget;
810
+ protected handleOnContextChanged(e: AXPContextChangeEvent): void;
811
+ private getLiveFormContext;
812
+ /** Whether the active page renders widget nodes (not only hosted components). */
813
+ private pageHasWidgetNodes;
814
+ /** Clears all overlay loading tasks once the page (or hosted view) is ready. */
815
+ private clearPageOverlay;
816
+ private scheduleOverlayFallback;
817
+ private clearOverlayFallback;
818
+ /**
819
+ * Hides overlay after the widget container reports continuous idle (same gate as saved baseline).
820
+ */
821
+ private requestOverlayRelease;
822
+ private finalizeSave;
823
+ private finalizeDiscard;
824
+ /** Reverts widget form state and view-model context to the last saved baseline. */
825
+ private discardUnsavedChanges;
826
+ /**
827
+ * `ax-tabs` selects on click before we can confirm. Revert synchronously, then confirm + switch.
828
+ */
829
+ protected handleSidebarTabChanged(event: AXTabStripChangedEvent): void;
830
+ protected handleSelectPage(page: AXPLayoutDetailsViewPage): Promise<void>;
831
+ private completePageSwitch;
832
+ protected getAllPrimaryActions(): Promise<AXPLayoutDetailsViewAction[]>;
833
+ getPrimaryMenuItems(): Promise<AXPActionMenuItem[]>;
834
+ protected getFooterPrimaryActions(): Promise<AXPActionMenuItem[]>;
835
+ protected getAllSecondaryActions(): Promise<AXPLayoutDetailsViewAction[]>;
836
+ getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
837
+ protected getFooterSecondaryActions(): Promise<AXPActionMenuItem[]>;
838
+ protected getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]>;
839
+ protected getPageTitle(): Promise<AXPMultiLanguageString>;
840
+ getPageDescription(): Promise<AXPMultiLanguageString | null>;
841
+ getBackButton(): Promise<AXPBackButton | null>;
842
+ hasUnsavedChanges(): boolean;
843
+ getPageBadge(): Promise<AXPBadge | null>;
844
+ getPageStatus(): Promise<AXPPageStatus | null>;
845
+ /**
846
+ * Get entity data for status chip component
847
+ */
848
+ getEntityData(): Record<string, any> | null;
849
+ onBackButtonClick(): Promise<void>;
850
+ /**
851
+ * Router guard hook — same unsaved-changes confirm as dialog builder {@link confirmCloseWhenDirty}.
852
+ */
853
+ canDeactivate(): Promise<boolean>;
854
+ /** Background tab close — confirm without discarding (the cached instance is destroyed). */
855
+ onBeforeTabClose(): Promise<boolean>;
856
+ /** Active entity component page instance, when the current details sub-page is component-based. */
857
+ private getActivePageComponentInstance;
858
+ /** Component key for the current details sub-page, when content is component-based. */
859
+ private getActivePageComponentKey;
860
+ private static isComponentPageContent;
861
+ protected pageContentTrackKey(item: AXPPageContentItem, index: number): string;
862
+ /** Whether the active component-based entity page has unsaved edits. */
863
+ private isActivePageComponentDirty;
864
+ /**
865
+ * Widget-form dirty state for leave guards (popstate, canDeactivate).
866
+ * Unlike {@link liveFormIsDirty}, does not suppress dirty while overlay is busy.
867
+ */
868
+ private hasWidgetFormUnsavedChanges;
869
+ /** Whether the current details page has user-origin unsaved edits (form or component page). */
870
+ private shouldPromptLeave;
871
+ /** Single gate for leaving the page or switching details sub-pages when dirty. */
872
+ private confirmLeaveIfDirty;
873
+ execute(command: AXPExecuteCommand): Promise<void>;
874
+ /**
875
+ * After a component-based page command (e.g. custom discard/save), align view-model dirty
876
+ * state and widget context with the hosted page when it no longer reports unsaved changes.
877
+ */
878
+ private syncDirtyStateAfterPageComponentCommand;
879
+ /** Waits for builder/effect microtasks to finish after a component page command. */
880
+ private waitForComponentDirtySettle;
881
+ private refreshKeyboardShortcutRegistrations;
882
+ /** i18n scope label for the active details sub-page shortcut group in the help dialog. */
883
+ private getKeyboardShortcutScope;
884
+ /** Primary overview page backed by the entity widget form (not a component-hosted sub-page). */
885
+ private isWidgetFormPrimaryPage;
886
+ private registerDetailsViewShortcutScope;
887
+ private collectActionShortcutEntries;
888
+ private isShortcutActionAvailable;
889
+ /** Whether save/discard core shortcuts are listed in the help dialog (widget overview page only). */
890
+ private isCoreSaveShortcutAvailable;
891
+ private isCoreDiscardShortcutAvailable;
892
+ private canExecuteSaveShortcut;
893
+ private canExecuteDiscardShortcut;
894
+ private executeDiscardViaShortcut;
895
+ private executeActionShortcut;
896
+ private isActionShortcutActive;
897
+ private registerCoreKeyboardShortcuts;
898
+ private registerActionKeyboardShortcuts;
899
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDetailsViewComponent, never>;
900
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDetailsViewComponent, "axp-layout-details-view", never, {}, {}, never, never, true, never>;
901
+ }
902
+
903
+ type AXPDetailsViewActionShortcut = AXPKeyboardShortcutChord;
904
+ /**
905
+ * Returns the base workflow/command name from a composite entity action command id (`cmd&actionName`).
906
+ */
907
+ declare function getDetailsViewActionCommandBaseName(commandName: string | undefined): string;
908
+ /**
909
+ * Resolves keyboard shortcuts for a header entity action.
910
+ * Explicit `shortcuts` wins; pass `[]` to disable. Otherwise known commands use platform defaults.
911
+ */
912
+ declare function resolveDetailsViewActionShortcuts(commandBaseName: string, explicit?: readonly AXPKeyboardShortcut[]): AXPDetailsViewActionShortcut[] | undefined;
913
+ /**
914
+ * Resolves save/discard footer command shortcuts from page settings.
915
+ */
916
+ declare function resolveDetailsViewFooterCommandShortcuts(commandName: string, explicit?: readonly AXPKeyboardShortcut[]): AXPDetailsViewActionShortcut[] | undefined;
917
+ /**
918
+ * Platform defaults for component-page footer save/discard commands (e.g. `MetaDataBuilder:Save`).
919
+ */
920
+ declare function resolvePageFooterActionDefaultShortcuts(commandName: string): AXPDetailsViewActionShortcut[] | undefined;
921
+ declare function isSaveFooterCommand(commandName: string): boolean;
922
+ declare function isDiscardFooterCommand(commandName: string): boolean;
923
+ /**
924
+ * Resolves keyboard shortcuts for a footer action on entity detail sub-pages.
925
+ */
926
+ declare function resolvePageFooterActionShortcuts(commandName: string, explicit?: readonly AXPKeyboardShortcut[]): AXPDetailsViewActionShortcut[] | undefined;
927
+
928
+ /**
929
+ * Prompts for unsaved changes before leaving the entity details route (breadcrumbs, menu, back to list).
930
+ */
931
+ declare const axpDetailsViewCanDeactivateGuard: _angular_router.CanDeactivateFn<AXPLayoutDetailsViewComponent>;
932
+
933
+ /**
934
+ * Registry of rendered page component instances by component key.
935
+ * Used so page execute can delegate to the actual component instance in the view.
936
+ */
937
+ declare class AXPPageComponentInstanceRegistryService {
938
+ private readonly instances;
939
+ register(key: string, instance: AXPPageLayoutBaseComponent): void;
940
+ unregister(key: string): void;
941
+ get(key: string): AXPPageLayoutBaseComponent | null;
942
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageComponentInstanceRegistryService, never>;
943
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPageComponentInstanceRegistryService>;
944
+ }
945
+
946
+ /**
947
+ * Directive for rendering page components dynamically
948
+ * Similar to component-slot pattern but specifically for page components
949
+ */
950
+ declare class AXPPageComponentRendererDirective implements OnInit, OnDestroy {
951
+ #private;
952
+ componentKey: _angular_core.InputSignal<string>;
953
+ rootContext: _angular_core.InputSignal<Record<string, any>>;
954
+ pageConfig: _angular_core.InputSignal<Record<string, unknown> | undefined>;
955
+ options: _angular_core.InputSignal<Record<string, any>>;
956
+ /** Emitted when the component instance is registered and ready */
957
+ componentReady: _angular_core.OutputEmitterRef<string>;
958
+ /** Returns the dynamically mounted page component instance, if loaded. */
959
+ getMountedPageInstance(): unknown;
960
+ private viewContainerRef;
961
+ private pageComponentRegistry;
962
+ private instanceRegistry;
963
+ private contextStore;
964
+ private componentRef;
965
+ ngOnInit(): Promise<void>;
966
+ ngOnDestroy(): void;
967
+ /** Persists page edits into the shared form context before the step component is destroyed. */
968
+ private syncWizardStepContextBeforeTeardown;
969
+ private loadComponent;
970
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageComponentRendererDirective, never>;
971
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXPPageComponentRendererDirective, "[axp-page-component-renderer]", never, { "componentKey": { "alias": "componentKey"; "required": true; "isSignal": true; }; "rootContext": { "alias": "rootContext"; "required": false; "isSignal": true; }; "pageConfig": { "alias": "pageConfig"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "componentReady": "componentReady"; }, never, never, true, never>;
972
+ }
973
+
974
+ export { AXPLayoutDetailsViewComponent, AXPLayoutDetailsViewViewModel, AXPPageComponentInstanceRegistryService, AXPPageComponentRendererDirective, AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPopupLayoutBase, AXPPopupLayoutBaseComponent, AXPPopupLayoutComponent, AXP_LAYOUT_DETAILS_VIEW_ADAPTER_LOADER, axpDetailsViewCanDeactivateGuard, buildNotSavedPageBadge, getDetailsViewActionCommandBaseName, isDiscardCommand, isDiscardFooterCommand, isSaveFooterCommand, resolveDetailsViewActionShortcuts, resolveDetailsViewFooterCommandShortcuts, resolvePageFooterActionDefaultShortcuts, resolvePageFooterActionShortcuts };
975
+ export type { AXPDetailsViewActionShortcut, AXPLayoutDetailsViewAction, AXPLayoutDetailsViewAdapter, AXPLayoutDetailsViewAdapterLoader, AXPLayoutDetailsViewPage, AXPLayoutDetailsViewRouteParams, AXPLayoutDetailsViewTabItem, AXPPageContentItem };