@acorex/platform 21.0.0-next.71 → 21.0.0-next.72

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 (51) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +10 -2
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-Bi1RYif5.mjs → acorex-platform-common-common-settings.provider-Ytey9uhY.mjs} +15 -1
  4. package/fesm2022/acorex-platform-common-common-settings.provider-Ytey9uhY.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +3792 -1679
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +1112 -103
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-builder.mjs +53 -170
  10. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-components.mjs +70 -46
  12. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-designer.mjs +199 -126
  14. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  15. package/fesm2022/{acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs → acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs} +6 -1
  16. package/fesm2022/acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-layout-entity.mjs +341 -418
  18. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-views.mjs +675 -301
  20. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-widget-core.mjs +115 -74
  22. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  23. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs.map} +1 -1
  27. package/fesm2022/acorex-platform-layout-widgets.mjs +184 -655
  28. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  29. package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs +48 -0
  30. package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs +42 -0
  32. package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-themes-default.mjs +76 -32
  34. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  35. package/package.json +1 -1
  36. package/types/acorex-platform-auth.d.ts +2 -0
  37. package/types/acorex-platform-common.d.ts +891 -259
  38. package/types/acorex-platform-core.d.ts +284 -40
  39. package/types/acorex-platform-layout-builder.d.ts +10 -22
  40. package/types/acorex-platform-layout-components.d.ts +9 -7
  41. package/types/acorex-platform-layout-entity.d.ts +37 -41
  42. package/types/acorex-platform-layout-views.d.ts +125 -67
  43. package/types/acorex-platform-layout-widget-core.d.ts +53 -61
  44. package/types/acorex-platform-layout-widgets.d.ts +33 -20
  45. package/types/acorex-platform-themes-default.d.ts +14 -4
  46. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +0 -1
  47. package/fesm2022/acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs.map +0 -1
  48. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs +0 -31
  49. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +0 -1
  50. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs +0 -25
  51. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import * as _acorex_platform_core from '@acorex/platform/core';
2
- import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPFileListItem, AXPContextUpdateOrigin, AXPContextChangeEvent } from '@acorex/platform/core';
2
+ import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPFileListItem, AXPContextChangeEvent } from '@acorex/platform/core';
3
3
  import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
@@ -13,7 +13,7 @@ import { AXPRelatedEntity, AXPEntityPage, AXPEntityCommandScope, AXPEntity, AXPE
13
13
  export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
14
14
  import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
15
15
  import * as i1 from '@angular/router';
16
- import { ResolveFn } from '@angular/router';
16
+ import { ResolveFn, RedirectCommand } from '@angular/router';
17
17
  import * as rxjs from 'rxjs';
18
18
  import { Subject } from 'rxjs';
19
19
  import * as i3 from '@acorex/platform/workflow';
@@ -343,6 +343,7 @@ declare class AXPEntityCommandTriggerViewModel {
343
343
  options: any;
344
344
  metadata?: AXPMetaData;
345
345
  default?: boolean;
346
+ shortcuts?: string[];
346
347
  items?: AXPEntityCommandTriggerViewModel[];
347
348
  isChild?: boolean;
348
349
  constructor(entity: AXPEntity, action: AXPEntityAction, isChild?: boolean);
@@ -863,7 +864,7 @@ declare class AXPEntityListViewModelFactory {
863
864
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListViewModelFactory, never>;
864
865
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListViewModelFactory>;
865
866
  }
866
- declare const AXPEntityListViewModelResolver: ResolveFn<Promise<AXPEntityMasterListViewModel>>;
867
+ declare const AXPEntityListViewModelResolver: ResolveFn<Promise<AXPEntityMasterListViewModel | RedirectCommand>>;
867
868
 
868
869
  declare class AXPEntityMasterSingleViewGroupViewModel {
869
870
  private entity;
@@ -1193,7 +1194,7 @@ declare class AXPEntityPreloadFiltersViewModel {
1193
1194
  */
1194
1195
  serializeFilters(filters: any): AXPFilterQuery[];
1195
1196
  }
1196
- declare const AXPEntityPreloadFiltersViewModelResolver: ResolveFn<Promise<AXPEntityPreloadFiltersViewModel>>;
1197
+ declare const AXPEntityPreloadFiltersViewModelResolver: ResolveFn<Promise<AXPEntityPreloadFiltersViewModel | RedirectCommand>>;
1197
1198
 
1198
1199
  type AXPCollectEntityQuickSearchPathsResolver = (moduleName: string, entityName: string) => Promise<AXPEntity | null>;
1199
1200
  /**
@@ -1476,6 +1477,8 @@ interface AXPEntityDetailDto<Id> extends AXPEntityOutputDto<Id> {
1476
1477
  }
1477
1478
  interface AXPEntityListItemDto<Id> extends AXPEntityOutputDto<Id> {
1478
1479
  }
1480
+ interface AXPMockDto<Id> extends AXPEntityModel<Id> {
1481
+ }
1479
1482
 
1480
1483
  declare abstract class AXPEntityStorageService<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
1481
1484
  abstract get dbName(): string;
@@ -2321,16 +2324,19 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
2321
2324
  private initialExpandSyncDone;
2322
2325
  constructor();
2323
2326
  ngOnInit(): void;
2327
+ /** Keeps at most one id when {@link allowMultiple} is false. */
2328
+ private normalizeSelectedIds;
2329
+ private setSelectedNodeIds;
2330
+ /** Keeps widget selectedNodeIds in sync when the tree uses controlled single selection. */
2331
+ protected onControlledSelectedIdsChange(ids: string[]): void;
2332
+ private waitForTreeComponent;
2333
+ /** Expands ancestor paths and reveals the initial selection via the tree API. */
2334
+ private revealInitialSelection;
2324
2335
  private initializeTree;
2325
2336
  /**
2326
2337
  * Called when popup data arrives after ngOnInit: load data, set selection, expand and sync.
2327
2338
  */
2328
2339
  private runInitialExpandAndSync;
2329
- /**
2330
- * Runs expand path + sync selection once the tree viewChild is available.
2331
- * Uses retry loop so we don't run before the view has rendered the tree.
2332
- */
2333
- private runExpandAndSyncWhenTreeReady;
2334
2340
  /**
2335
2341
  * Handles search input value changes - Uses server-side search for efficiency and reliability
2336
2342
  */
@@ -2369,10 +2375,9 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
2369
2375
  */
2370
2376
  private resetSearch;
2371
2377
  /**
2372
- * Restores selection state after tree reload.
2373
- * Expands ancestor nodes and selects the previously selected leaf nodes.
2378
+ * Restores multiple-mode leaf selection after search reset.
2374
2379
  */
2375
- private restoreSelectionAfterReload;
2380
+ private restoreMultipleSelectionAfterReload;
2376
2381
  protected onNodeSelect(event: AXTreeViewNodeSelectEvent): Promise<void>;
2377
2382
  /** Datasource callback for tree-view component. */
2378
2383
  protected datasource: (id?: string) => Promise<AXTreeViewNode[]>;
@@ -2434,11 +2439,6 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
2434
2439
  private expandAncestorNodesInOrder;
2435
2440
  /** Waits until the node is expanded (tree has loaded children). Polls so deep paths load. */
2436
2441
  private waitForNodeExpanded;
2437
- /**
2438
- * Syncs selection state with the tree component.
2439
- * Selects leaf nodes and manually updates parent states (indeterminate/selected).
2440
- */
2441
- private syncSelectionWithTree;
2442
2442
  /**
2443
2443
  * Updates parent node states (selected/indeterminate) based on children selection.
2444
2444
  * Called after leaf nodes are selected to properly show parent states.
@@ -2461,26 +2461,16 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
2461
2461
  * Resolves parent ID from node data: supports nested `parent` object or flat parentId/parentKey.
2462
2462
  */
2463
2463
  private getParentIdFromNodeData;
2464
- /**
2465
- * Marks nodes as selected in the tree structure based on selectedNodeIds.
2466
- * This ensures pre-selected nodes appear selected when the tree is rendered.
2467
- */
2468
- private markNodesAsSelected;
2469
- /**
2470
- * Marks a single node as selected if it's in the selectedNodeIds list.
2471
- */
2472
- private markNodeAsSelectedIfNeeded;
2473
2464
  /**
2474
2465
  * Marks a node and its children as disabled if the node ID matches the excluded ID.
2475
2466
  */
2476
2467
  private markNodeAsDisabled;
2477
2468
  /**
2478
- * Processes root node: marks excluded as disabled, marks selected, and syncs selection with tree component
2469
+ * Processes root node: marks excluded nodes as disabled.
2479
2470
  */
2480
2471
  private processRootNode;
2481
2472
  /**
2482
2473
  * Processes child nodes: marks excluded as disabled
2483
- * Selection marking is handled in datasource callback ONLY during initial load
2484
2474
  */
2485
2475
  private processChildNodes;
2486
2476
  /**
@@ -2619,6 +2609,7 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
2619
2609
  private findByValue;
2620
2610
  private setItems;
2621
2611
  private singleOrMultiple;
2612
+ private normalizePopupSelectedIds;
2622
2613
  protected getItemLabel(item: any): string;
2623
2614
  /**
2624
2615
  * Get item path as array for breadcrumb component (raw MLS or string per segment).
@@ -2903,6 +2894,13 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2903
2894
  * Applies merged route + parent-scope filters to the widget value and data source.
2904
2895
  */
2905
2896
  private applyMergedRouteFiltersToList;
2897
+ /** Syncs toolbar filters to context and AXDataSource (retries until data-list is mounted). */
2898
+ private reapplyScopedFiltersToDataSource;
2899
+ /**
2900
+ * Entity lists use `fetchDataMode: 'manual'`; after scoped filters reach the data source,
2901
+ * the grid must be refreshed once (initial #effect may run before the data-list is ready).
2902
+ */
2903
+ private triggerInitialLoadIfNeeded;
2906
2904
  /**
2907
2905
  * Re-evaluates related-entity list filters from the live dialog form context (e.g. after create saves the main row id).
2908
2906
  */
@@ -2912,6 +2910,11 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2912
2910
  * Returns false while data-list is still mounting (see deferred listNode.set in ngOnInit).
2913
2911
  */
2914
2912
  private pushToolbarFiltersToDataSource;
2913
+ /**
2914
+ * Pushes toolbar filters once the embedded data-list exposes its data source
2915
+ * (listNode is created via deferred setTimeout in ngOnInit).
2916
+ */
2917
+ private ensureToolbarFiltersOnDataSource;
2915
2918
  /**
2916
2919
  * Writes toolbar filters from specs and pushes them onto the data source so refresh/reload keeps the parent scope.
2917
2920
  */
@@ -2942,7 +2945,8 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2942
2945
  */
2943
2946
  private applyDataSourceChanges;
2944
2947
  /**
2945
- * Handles list refresh logic based on changes and mount status
2948
+ * Handles list refresh logic based on changes and mount status.
2949
+ * Initial fetch is owned by {@link triggerInitialLoadIfNeeded} (manual fetchDataMode).
2946
2950
  */
2947
2951
  private handleListRefresh;
2948
2952
  /**
@@ -3421,11 +3425,6 @@ interface AXPLookupWidgetOptions {
3421
3425
  selectorRowActions?: AXPLookupSelectorRowActionsConfig;
3422
3426
  }
3423
3427
 
3424
- /**
3425
- * Normalizes lookup/search display templates for row-based formatting.
3426
- * Converts `context.eval('path')` expressions to `{{ path }}` and single braces to mustache form.
3427
- */
3428
- declare function normalizeLookupDisplayTemplate(template: string): string;
3429
3428
  /**
3430
3429
  * Resolves the display template for a lookup item.
3431
3430
  * Priority: explicit `displayFormat` → entity `formats.lookup` (template) → entity `formats.searchResult.title`.
@@ -3441,8 +3440,6 @@ declare function resolveLookupDisplayField(entity: AXPEntity | null | undefined,
3441
3440
  * Formats a lookup row for display using template and/or field resolution.
3442
3441
  */
3443
3442
  declare function formatLookupItemDisplay(item: unknown, entity: AXPEntity | null | undefined, options: AXPLookupDisplayOptions, formatService: AXFormatService, resolveMultiLanguage?: (value: AXPMultiLanguageString) => string): string | AXPMultiLanguageString;
3444
- /** True when a formatted label still contains unresolved template markers. */
3445
- declare function isUnresolvedLookupDisplayTemplate(value: string): boolean;
3446
3443
 
3447
3444
  declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any> {
3448
3445
  protected readonly formatService: AXFormatService;
@@ -3744,9 +3741,8 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
3744
3741
  protected handleCreateClick(_e: AXClickEvent): Promise<void>;
3745
3742
  private executeCreate;
3746
3743
  protected setLoading: (loading: boolean) => void;
3747
- protected setItems: (items: any[], options?: {
3748
- origin?: AXPContextUpdateOrigin;
3749
- }) => void;
3744
+ /** @param syncContext When false, only updates UI (hydration/revert); skips context writes. */
3745
+ protected setItems: (items: any[], syncContext?: boolean) => void;
3750
3746
  /**
3751
3747
  * Writes expose targets into context using per-path updates.
3752
3748
  * Avoids `contextService.patch()` with nested objects: patch shallow-merges top-level keys only,
@@ -4488,5 +4484,5 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
4488
4484
  }
4489
4485
  declare const AXPShowListViewWorkflow: AXPWorkflow;
4490
4486
 
4491
- export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, buildAXPRecordWorkflowInfo, canPersistEntityListState, cloneLayoutArrays, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, commandMessageTextForError, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, hasFileUploaderTitleOrDescriptionFields, isAXPMiddlewareAbortError, isAttachmentListEntry, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, isUnresolvedLookupDisplayTemplate, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, mergeForeignKeyFieldIntoCreateActions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, normalizeLookupDisplayTemplate, persistedAttachments, provideEntity, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
4492
- export type { AXPAuditEvent, AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayOptions, AXPLookupPopoverOptions, AXPLookupSelectorRowActionsConfig, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRecordWorkflowInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowListViewCondition, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };
4487
+ export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, buildAXPRecordWorkflowInfo, canPersistEntityListState, cloneLayoutArrays, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, commandMessageTextForError, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, hasFileUploaderTitleOrDescriptionFields, isAXPMiddlewareAbortError, isAttachmentListEntry, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, mergeForeignKeyFieldIntoCreateActions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, persistedAttachments, provideEntity, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
4488
+ export type { AXPAuditEvent, AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayOptions, AXPLookupPopoverOptions, AXPLookupSelectorRowActionsConfig, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMockDto, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRecordWorkflowInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowListViewCondition, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };
@@ -6,7 +6,7 @@ import { AXClickEvent } from '@acorex/cdk/common';
6
6
  import * as i1 from '@acorex/cdk/drawer';
7
7
  import { AXDrawerItemDirective } from '@acorex/cdk/drawer';
8
8
  import * as _acorex_platform_core from '@acorex/platform/core';
9
- import { AXPActionMenuItem, AXPBreadcrumbItem, AXPMultiLanguageString, AXPBadge, AXPPageStatus, AXPBackButton, AXPExecuteCommand, AXPDeviceService, AXPExecuteCommandResult, AXPExpressionEvaluatorScope, AXPBroadcastEventService, AXPContextChangeEvent } from '@acorex/platform/core';
9
+ import { AXPActionMenuItem, AXPBreadcrumbItem, AXPMultiLanguageString, AXPBadge, AXPPageStatus, AXPBackButton, AXPExecuteCommand, AXPDeviceService, AXPKeyboardShortcut, AXPExecuteCommandResult, AXPExpressionEvaluatorScope, AXPBroadcastEventService, AXPContextChangeEvent, AXPKeyboardShortcutChord } from '@acorex/platform/core';
10
10
  import { AXPCommandService, AXPPolicyEngineService } from '@acorex/platform/runtime';
11
11
  import { AXPWorkflowService } from '@acorex/platform/workflow';
12
12
  import * as _acorex_core_translation from '@acorex/core/translation';
@@ -14,12 +14,14 @@ import { AXTranslationService } from '@acorex/core/translation';
14
14
  import { AXToastService } from '@acorex/components/toast';
15
15
  import { AXFormatService } from '@acorex/core/format';
16
16
  import { AXPSessionService } from '@acorex/platform/auth';
17
- import { AXPHomePageService, AXPEntityCommandScope } from '@acorex/platform/common';
17
+ import { AXPHomePageService, AXPSettingsService, AXPEntityCommandScope } from '@acorex/platform/common';
18
18
  import { AXBasePageComponent } from '@acorex/components/page';
19
19
  import * as _acorex_platform_layout_widget_core from '@acorex/platform/layout/widget-core';
20
20
  import { AXPWidgetNode, AXPPageStatus as AXPPageStatus$1, AXPWidgetContainerComponent } from '@acorex/platform/layout/widget-core';
21
21
  import * as _acorex_platform_layout_views from '@acorex/platform/layout/views';
22
22
  import { AXFormComponent } from '@acorex/components/form';
23
+ import { AXTabStripChangedEvent } from '@acorex/components/tabs';
24
+ import * as _angular_router from '@angular/router';
23
25
  import { Router, ActivatedRoute } from '@angular/router';
24
26
 
25
27
  declare abstract class AXPPageLayoutBase {
@@ -47,6 +49,10 @@ declare abstract class AXPPageLayoutBase {
47
49
  abstract onBackButtonClick: () => void | Promise<void>;
48
50
  abstract startSideToggle: () => void | Promise<void>;
49
51
  abstract execute: (command: AXPExecuteCommand) => void | Promise<void>;
52
+ /** Whether the page has user-origin edits that are not yet persisted. */
53
+ abstract hasUnsavedChanges(): boolean;
54
+ /** Resolves the page title badge (used by host layouts for nested entity pages). */
55
+ abstract resolvePageBadge(): AXPBadge | null | Promise<AXPBadge | null>;
50
56
  }
51
57
 
52
58
  declare class AXPPageLayoutComponent {
@@ -121,6 +127,12 @@ declare class AXPPageLayoutComponent {
121
127
  protected handleBackdropClick(e: AXClickEvent): boolean;
122
128
  protected execute(command: AXPExecuteCommand): Promise<void>;
123
129
  protected handleOnBackdropClick(event: MouseEvent): void;
130
+ /**
131
+ * Breadcrumbs and other in-page `navigate` commands bypass `routerLink`, so prompt here
132
+ * when the hosted page implements {@link AXPUnsavedChangesCanDeactivate}.
133
+ * A successful confirm sets `leaveConfirmed` for the router guard on the subsequent navigation.
134
+ */
135
+ private canLeaveCurrentPage;
124
136
  protected getEntityData(): Record<string, any> | null;
125
137
  protected handleStatusTransition(transition: any): Promise<void>;
126
138
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageLayoutComponent, never>;
@@ -193,6 +205,7 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
193
205
  protected readonly toastService: AXToastService;
194
206
  protected readonly homePageService: AXPHomePageService;
195
207
  protected readonly policyService: AXPPolicyEngineService;
208
+ protected readonly settingsService: AXPSettingsService;
196
209
  private _updateTrigger;
197
210
  protected updateTrigger: _angular_core.Signal<number>;
198
211
  protected recompute(): void;
@@ -212,7 +225,9 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
212
225
  protected getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
213
226
  badge: _angular_core.WritableSignal<AXPBadge | null>;
214
227
  hasBadge: _angular_core.Signal<boolean>;
215
- protected getPageBadge(): AXPBadge | null | Promise<AXPBadge | null>;
228
+ hasUnsavedChanges(): boolean;
229
+ protected getPageBadge(): Promise<AXPBadge | null>;
230
+ resolvePageBadge(): Promise<AXPBadge | null>;
216
231
  status: _angular_core.WritableSignal<AXPPageStatus | null>;
217
232
  hasStatus: _angular_core.Signal<boolean>;
218
233
  protected getPageStatus(): AXPPageStatus | null | Promise<AXPPageStatus | null>;
@@ -244,6 +259,15 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
244
259
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPageLayoutBaseComponent, "ng-component", never, {}, {}, never, never, true, never>;
245
260
  }
246
261
 
262
+ /**
263
+ * Builds the standard "Not Saved" page badge when the global show-page-badge setting is enabled.
264
+ */
265
+ declare function buildNotSavedPageBadge(translateService: AXTranslationService, settingsService: AXPSettingsService): Promise<AXPBadge | null>;
266
+ /**
267
+ * Whether a command name represents a discard/revert action on a details sub-page.
268
+ */
269
+ declare function isDiscardCommand(commandName: string, rejectCommandName?: string | null): boolean;
270
+
247
271
  declare abstract class AXPPopupLayoutBase {
248
272
  abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;
249
273
  abstract secondaryMenuItems: Signal<AXPActionMenuItem[]>;
@@ -463,6 +487,7 @@ interface AXPLayoutDetailsViewPage {
463
487
  color: string;
464
488
  visible?: string | boolean;
465
489
  command: AXPExecuteCommand;
490
+ shortcuts?: AXPKeyboardShortcut[];
466
491
  };
467
492
  reject?: {
468
493
  title: string;
@@ -470,6 +495,7 @@ interface AXPLayoutDetailsViewPage {
470
495
  color: string;
471
496
  visible?: string | boolean;
472
497
  command: AXPExecuteCommand;
498
+ shortcuts?: AXPKeyboardShortcut[];
473
499
  };
474
500
  };
475
501
  };
@@ -502,14 +528,9 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
502
528
  currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
503
529
  currentTab: _angular_core.Signal<AXPLayoutDetailsViewTabItem | null>;
504
530
  pageSelectedRows: _angular_core.Signal<any[]>;
505
- renderedTabsCache: _angular_core.Signal<Record<string, {
506
- tabId: string;
507
- tab: AXPLayoutDetailsViewTabItem;
508
- }[]>>;
509
531
  evaluatedPageContent: _angular_core.Signal<AXPWidgetNode[]>;
510
532
  evaluatedTabContentsById: _angular_core.Signal<Record<string, AXPWidgetNode[]>>;
511
- formIsDirty: _angular_core.Signal<boolean>;
512
- formBaselineCommitted: _angular_core.Signal<boolean>;
533
+ formDirty: _angular_core.Signal<boolean>;
513
534
  icon: _angular_core.Signal<string | null>;
514
535
  content: _angular_core.Signal<_acorex_platform_layout_views.AXPPageContentItem[]>;
515
536
  showPages: _angular_core.Signal<boolean>;
@@ -520,16 +541,12 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
520
541
  changesCount: _angular_core.Signal<1 | 0>;
521
542
  isLoaded: _angular_core.Signal<boolean>;
522
543
  currentPageSelectedRows: _angular_core.Signal<any[]>;
523
- currentPageRenderedTabs: _angular_core.Signal<{
524
- tabId: string;
525
- tab: AXPLayoutDetailsViewTabItem;
526
- }[]>;
544
+ activeTabContent: _angular_core.Signal<AXPWidgetNode[]>;
527
545
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
528
546
  loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
529
547
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
530
- updateContext: (context: any, formIsDirty?: boolean) => void;
531
- markFormBaselineCommitted: () => void;
532
- resetFormBaselineCommitted: () => void;
548
+ updateContext: (context: any) => void;
549
+ setFormDirty: (dirty: boolean) => void;
533
550
  updatePageSelectedRows: (rows: any[]) => void;
534
551
  currentPagePrimaryActions: () => Promise<any>;
535
552
  currentPageSecondaryActions: () => Promise<any>;
@@ -537,9 +554,6 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
537
554
  currentPageTabs: () => AXPLayoutDetailsViewTabItem[] | undefined;
538
555
  setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
539
556
  setCurrentTab: (tab: AXPLayoutDetailsViewTabItem) => void;
540
- getCurrentTabContent: () => AXPWidgetNode[];
541
- getRenderedTabContent: (tabId: string) => AXPWidgetNode[];
542
- clearPageTabCache: (pageId: string) => void;
543
557
  backButtonTitle: () => _acorex_core_translation.AXMultiLanguageString;
544
558
  getPageTitle: () => Promise<AXPMultiLanguageString>;
545
559
  getPageDescription: () => Promise<AXPMultiLanguageString | null>;
@@ -554,8 +568,9 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
554
568
  icon?: string;
555
569
  command?: AXPExecuteCommand;
556
570
  }[]>;
571
+ applySavedState: (context: Record<string, unknown>) => void;
557
572
  discard: () => Promise<void>;
558
- save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<boolean>;
573
+ save: (command: AXPExecuteCommand, form: AXFormComponent, liveContext?: Record<string, unknown>) => Promise<boolean>;
559
574
  goToListPage: () => void;
560
575
  } & _ngrx_signals.StateSource<{
561
576
  adapter: AXPLayoutDetailsViewAdapter | null;
@@ -567,14 +582,9 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
567
582
  currentPage: AXPLayoutDetailsViewPage | null;
568
583
  currentTab: AXPLayoutDetailsViewTabItem | null;
569
584
  pageSelectedRows: any[];
570
- renderedTabsCache: Record<string, Array<{
571
- tabId: string;
572
- tab: AXPLayoutDetailsViewTabItem;
573
- }>>;
574
585
  evaluatedPageContent: AXPWidgetNode[];
575
586
  evaluatedTabContentsById: Record<string, AXPWidgetNode[]>;
576
- formIsDirty: boolean;
577
- formBaselineCommitted: boolean;
587
+ formDirty: boolean;
578
588
  }>>;
579
589
 
580
590
  declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
@@ -590,16 +600,11 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
590
600
  currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
591
601
  currentTab: _angular_core.Signal<_acorex_platform_layout_views.AXPLayoutDetailsViewTabItem | null>;
592
602
  pageSelectedRows: _angular_core.Signal<any[]>;
593
- renderedTabsCache: _angular_core.Signal<Record<string, {
594
- tabId: string;
595
- tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
596
- }[]>>;
597
603
  evaluatedPageContent: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPWidgetNode[]>;
598
604
  evaluatedTabContentsById: _angular_core.Signal<Record<string, _acorex_platform_layout_widget_core.AXPWidgetNode[]>>;
599
- formIsDirty: _angular_core.Signal<boolean>;
600
- formBaselineCommitted: _angular_core.Signal<boolean>;
605
+ formDirty: _angular_core.Signal<boolean>;
601
606
  icon: _angular_core.Signal<string | null>;
602
- content: _angular_core.Signal<_acorex_platform_layout_views.AXPPageContentItem[]>;
607
+ content: _angular_core.Signal<AXPPageContentItem[]>;
603
608
  showPages: _angular_core.Signal<boolean>;
604
609
  isLarge: _angular_core.Signal<boolean>;
605
610
  isBusy: _angular_core.Signal<boolean>;
@@ -608,16 +613,12 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
608
613
  changesCount: _angular_core.Signal<1 | 0>;
609
614
  isLoaded: _angular_core.Signal<boolean>;
610
615
  currentPageSelectedRows: _angular_core.Signal<any[]>;
611
- currentPageRenderedTabs: _angular_core.Signal<{
612
- tabId: string;
613
- tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
614
- }[]>;
616
+ activeTabContent: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPWidgetNode[]>;
615
617
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
616
618
  loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
617
619
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
618
- updateContext: (context: any, formIsDirty?: boolean) => void;
619
- markFormBaselineCommitted: () => void;
620
- resetFormBaselineCommitted: () => void;
620
+ updateContext: (context: any) => void;
621
+ setFormDirty: (dirty: boolean) => void;
621
622
  updatePageSelectedRows: (rows: any[]) => void;
622
623
  currentPagePrimaryActions: () => Promise<any>;
623
624
  currentPageSecondaryActions: () => Promise<any>;
@@ -625,9 +626,6 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
625
626
  currentPageTabs: () => _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem[] | undefined;
626
627
  setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
627
628
  setCurrentTab: (tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem) => void;
628
- getCurrentTabContent: () => _acorex_platform_layout_widget_core.AXPWidgetNode[];
629
- getRenderedTabContent: (tabId: string) => _acorex_platform_layout_widget_core.AXPWidgetNode[];
630
- clearPageTabCache: (pageId: string) => void;
631
629
  backButtonTitle: () => _acorex_core_translation.AXMultiLanguageString;
632
630
  getPageTitle: () => Promise<AXPMultiLanguageString>;
633
631
  getPageDescription: () => Promise<AXPMultiLanguageString | null>;
@@ -642,8 +640,9 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
642
640
  icon?: string;
643
641
  command?: AXPExecuteCommand;
644
642
  }[]>;
643
+ applySavedState: (context: Record<string, unknown>) => void;
645
644
  discard: () => Promise<void>;
646
- save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<boolean>;
645
+ save: (command: AXPExecuteCommand, form: AXFormComponent, liveContext?: Record<string, unknown>) => Promise<boolean>;
647
646
  goToListPage: () => void;
648
647
  } & _ngrx_signals.StateSource<{
649
648
  adapter: AXPLayoutDetailsViewAdapter | null;
@@ -655,31 +654,34 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
655
654
  currentPage: AXPLayoutDetailsViewPage | null;
656
655
  currentTab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem | null;
657
656
  pageSelectedRows: any[];
658
- renderedTabsCache: Record<string, Array<{
659
- tabId: string;
660
- tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
661
- }>>;
662
657
  evaluatedPageContent: _acorex_platform_layout_widget_core.AXPWidgetNode[];
663
658
  evaluatedTabContentsById: Record<string, _acorex_platform_layout_widget_core.AXPWidgetNode[]>;
664
- formIsDirty: boolean;
665
- formBaselineCommitted: boolean;
659
+ formDirty: boolean;
666
660
  }>;
667
661
  protected router: Router;
668
662
  protected route: ActivatedRoute;
669
663
  protected eventService: AXPBroadcastEventService;
670
664
  protected deviceService: AXPDeviceService;
665
+ private readonly unsavedChangesConfirm;
666
+ private readonly unsavedChangesPopstate;
667
+ private readonly pageComponentInstanceRegistry;
668
+ private readonly shortcutRegistry;
669
+ private readonly destroyRef;
670
+ private readonly elementRef;
671
671
  private onSelectionChangeSubscription?;
672
+ /** Prevents sidebar tab init events from pushing history before {@link ngOnInit} load completes. */
673
+ private detailsLayoutReady;
672
674
  private readonly destroyed$;
673
- private formBaselineCaptured;
674
- private formBaselinePageKey;
675
- private formBaselineTimer?;
676
- private suppressDirtySync;
677
675
  private footerActionsGeneration;
678
- private static readonly FORM_BASELINE_IDLE_MS;
676
+ private keyboardShortcutRegistrationGeneration;
677
+ /** Header actions with resolved shortcut chords, keyed by command name. */
678
+ private readonly actionShortcutEntries;
679
679
  /** Save/discard use live {@link AXPLayoutDetailsViewViewModel.isDirty}; other actions use evaluated `visible`. */
680
680
  private static isTruthyActionFlag;
681
681
  protected form: _angular_core.Signal<AXFormComponent | undefined>;
682
682
  protected widgetContainer: _angular_core.Signal<AXPWidgetContainerComponent | undefined>;
683
+ private readonly sidebarTabs;
684
+ private sidebarTabChangeSuppressed;
683
685
  protected footerPrimaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
684
686
  protected footerSecondaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
685
687
  protected footerActions: _angular_core.Signal<AXPActionMenuItem[]>;
@@ -689,6 +691,7 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
689
691
  color: string;
690
692
  visible?: string | boolean;
691
693
  command: AXPExecuteCommand;
694
+ shortcuts?: _acorex_platform_core.AXPKeyboardShortcut[];
692
695
  } | null>;
693
696
  protected acceptFooterCommand: _angular_core.Signal<{
694
697
  title: string;
@@ -696,10 +699,13 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
696
699
  color: string;
697
700
  visible?: string | boolean;
698
701
  command: AXPExecuteCommand;
702
+ shortcuts?: _acorex_platform_core.AXPKeyboardShortcut[];
699
703
  } | null>;
700
704
  protected hasSaveDiscardFooterCommands: _angular_core.Signal<boolean>;
701
- /** Entity save/discard — driven live by {@link AXPLayoutDetailsViewViewModel.isDirty}, not evaluated action metadata. */
705
+ /** Entity save/discard — driven live by widget/container dirty state, not evaluated action metadata. */
702
706
  protected showSaveDiscardFooter: _angular_core.Signal<boolean>;
707
+ /** Live dirty flag for widget-based entity forms (not component-hosted pages). */
708
+ protected liveFormIsDirty: _angular_core.Signal<boolean>;
703
709
  protected hasVisibleFooterPrimaryActions: _angular_core.Signal<boolean>;
704
710
  protected hasVisibleFooterSecondaryActions: _angular_core.Signal<boolean>;
705
711
  protected isSaveDiscardFooterAction(action: AXPActionMenuItem): boolean;
@@ -715,16 +721,15 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
715
721
  ngOnDestroy(): void;
716
722
  private refreshFooterActions;
717
723
  protected handleOnContextChanged(e: AXPContextChangeEvent): void;
724
+ private getLiveFormContext;
725
+ private finalizeSave;
726
+ private finalizeDiscard;
718
727
  /**
719
- * Clears widget-store dirty state and schedules a fresh post-hydration baseline (discard / save).
720
- */
721
- private resetFormDirtyBaseline;
722
- /**
723
- * Commits a clean baseline immediately when widgets are mounted; otherwise defers to idle commit.
728
+ * `ax-tabs` selects on click before we can confirm. Revert synchronously, then confirm + switch.
724
729
  */
725
- private finalizeFormCleanState;
726
- private scheduleFormBaselineCommit;
727
- protected handleSelectPage(page: AXPLayoutDetailsViewPage): void;
730
+ protected handleSidebarTabChanged(event: AXTabStripChangedEvent): void;
731
+ protected handleSelectPage(page: AXPLayoutDetailsViewPage): Promise<void>;
732
+ private completePageSwitch;
728
733
  protected getAllPrimaryActions(): Promise<AXPLayoutDetailsViewAction[]>;
729
734
  getPrimaryMenuItems(): Promise<AXPActionMenuItem[]>;
730
735
  protected getFooterPrimaryActions(): Promise<AXPActionMenuItem[]>;
@@ -742,12 +747,65 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
742
747
  */
743
748
  getEntityData(): Record<string, any> | null;
744
749
  onBackButtonClick(): Promise<void>;
750
+ /**
751
+ * Router guard hook — same unsaved-changes confirm as dialog builder {@link confirmCloseWhenDirty}.
752
+ */
753
+ canDeactivate(): Promise<boolean>;
754
+ /** Active entity component page instance, when the current details sub-page is component-based. */
755
+ private getActivePageComponentInstance;
756
+ /** Component key for the current details sub-page, when content is component-based. */
757
+ private getActivePageComponentKey;
758
+ private static isComponentPageContent;
759
+ /** Whether the active component-based entity page has unsaved edits. */
760
+ private isActivePageComponentDirty;
761
+ /** Whether the current details page has user-origin unsaved edits (form or component page). */
762
+ private shouldPromptLeave;
763
+ /** Single gate for leaving the page or switching details sub-pages when dirty. */
764
+ private confirmLeaveIfDirty;
745
765
  execute(command: AXPExecuteCommand): Promise<void>;
746
- protected handleKeyboardEvent(event: KeyboardEvent): Promise<void>;
766
+ /**
767
+ * After a component-based page command (e.g. custom discard/save), align view-model dirty
768
+ * state and widget context with the hosted page when it no longer reports unsaved changes.
769
+ */
770
+ private syncDirtyStateAfterPageComponentCommand;
771
+ /** Waits for builder/effect microtasks to finish after a component page command. */
772
+ private waitForComponentDirtySettle;
773
+ private refreshKeyboardShortcutRegistrations;
774
+ private collectActionShortcutEntries;
775
+ private isHeaderActionAvailable;
776
+ /** Whether save/discard core shortcuts are listed in the help dialog (page supports them). */
777
+ private isCoreSaveShortcutAvailable;
778
+ private isCoreDiscardShortcutAvailable;
779
+ private canExecuteSaveShortcut;
780
+ private canExecuteDiscardShortcut;
781
+ private executeDiscardViaShortcut;
782
+ private isActionShortcutActive;
783
+ private registerCoreKeyboardShortcuts;
784
+ private registerActionKeyboardShortcuts;
747
785
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDetailsViewComponent, never>;
748
786
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDetailsViewComponent, "axp-layout-details-view", never, { "adapter": { "alias": "adapter"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
749
787
  }
750
788
 
789
+ type AXPDetailsViewActionShortcut = AXPKeyboardShortcutChord;
790
+ /**
791
+ * Returns the base workflow/command name from a composite entity action command id (`cmd&actionName`).
792
+ */
793
+ declare function getDetailsViewActionCommandBaseName(commandName: string | undefined): string;
794
+ /**
795
+ * Resolves keyboard shortcuts for a header entity action.
796
+ * Explicit `shortcuts` wins; pass `[]` to disable. Otherwise known commands use platform defaults.
797
+ */
798
+ declare function resolveDetailsViewActionShortcuts(commandBaseName: string, explicit?: readonly AXPKeyboardShortcut[]): AXPDetailsViewActionShortcut[] | undefined;
799
+ /**
800
+ * Resolves save/discard footer command shortcuts from page settings.
801
+ */
802
+ declare function resolveDetailsViewFooterCommandShortcuts(commandName: string, explicit?: readonly AXPKeyboardShortcut[]): AXPDetailsViewActionShortcut[] | undefined;
803
+
804
+ /**
805
+ * Prompts for unsaved changes before leaving the entity details route (breadcrumbs, menu, back to list).
806
+ */
807
+ declare const axpDetailsViewCanDeactivateGuard: _angular_router.CanDeactivateFn<AXPLayoutDetailsViewComponent>;
808
+
751
809
  /**
752
810
  * Registry of rendered page component instances by component key.
753
811
  * Used so page execute can delegate to the actual component instance in the view.
@@ -789,5 +847,5 @@ declare class AXPPageComponentRendererDirective implements OnInit, OnDestroy {
789
847
  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>;
790
848
  }
791
849
 
792
- export { AXPLayoutDetailsViewComponent, AXPLayoutDetailsViewViewModel, AXPPageComponentInstanceRegistryService, AXPPageComponentRendererDirective, AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPopupLayoutBase, AXPPopupLayoutBaseComponent, AXPPopupLayoutComponent };
793
- export type { AXPLayoutDetailsViewAction, AXPLayoutDetailsViewAdapter, AXPLayoutDetailsViewPage, AXPLayoutDetailsViewTabItem, AXPPageContentItem };
850
+ export { AXPLayoutDetailsViewComponent, AXPLayoutDetailsViewViewModel, AXPPageComponentInstanceRegistryService, AXPPageComponentRendererDirective, AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPopupLayoutBase, AXPPopupLayoutBaseComponent, AXPPopupLayoutComponent, axpDetailsViewCanDeactivateGuard, buildNotSavedPageBadge, getDetailsViewActionCommandBaseName, isDiscardCommand, resolveDetailsViewActionShortcuts, resolveDetailsViewFooterCommandShortcuts };
851
+ export type { AXPDetailsViewActionShortcut, AXPLayoutDetailsViewAction, AXPLayoutDetailsViewAdapter, AXPLayoutDetailsViewPage, AXPLayoutDetailsViewTabItem, AXPPageContentItem };