@acorex/platform 21.0.0-next.88 → 21.0.0-next.89

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 (52) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +8 -2
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-VfmZct9H.mjs → acorex-platform-common-common-settings.provider-DilV4dql.mjs} +15 -42
  4. package/fesm2022/acorex-platform-common-common-settings.provider-DilV4dql.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +3299 -3200
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +621 -26
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-builder.mjs +98 -189
  10. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  11. package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-RttFwaw9.mjs} +17 -4
  12. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-RttFwaw9.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-layout-components.mjs +125 -26
  14. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-designer.mjs +4 -4
  16. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-entity-contracts.mjs +106 -12
  18. package/fesm2022/acorex-platform-layout-entity-contracts.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +419 -147
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +851 -162
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +378 -103
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-D4MOHEpI.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-CZc2zFlg.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-D4MOHEpI.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component-CZc2zFlg.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-XWRUVoL4.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-XWRUVoL4.mjs.map} +1 -1
  29. package/fesm2022/acorex-platform-layout-widgets.mjs +575 -239
  30. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  31. package/fesm2022/acorex-platform-themes-default.mjs +221 -24
  32. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  33. package/fesm2022/{acorex-platform-themes-shared-settings.provider-BUwPqwUS.mjs → acorex-platform-themes-shared-settings.provider-UyKdkeyk.mjs} +48 -1
  34. package/fesm2022/acorex-platform-themes-shared-settings.provider-UyKdkeyk.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-themes-shared.mjs +103 -24
  36. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  37. package/package.json +1 -1
  38. package/types/acorex-platform-auth.d.ts +1 -0
  39. package/types/acorex-platform-common.d.ts +202 -151
  40. package/types/acorex-platform-core.d.ts +161 -6
  41. package/types/acorex-platform-layout-builder.d.ts +10 -20
  42. package/types/acorex-platform-layout-components.d.ts +14 -1
  43. package/types/acorex-platform-layout-entity-contracts.d.ts +27 -2
  44. package/types/acorex-platform-layout-entity.d.ts +61 -12
  45. package/types/acorex-platform-layout-views.d.ts +101 -19
  46. package/types/acorex-platform-layout-widget-core.d.ts +65 -9
  47. package/types/acorex-platform-layout-widgets.d.ts +48 -26
  48. package/types/acorex-platform-themes-default.d.ts +56 -5
  49. package/types/acorex-platform-themes-shared.d.ts +4 -0
  50. package/fesm2022/acorex-platform-common-common-settings.provider-VfmZct9H.mjs.map +0 -1
  51. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-themes-shared-settings.provider-BUwPqwUS.mjs.map +0 -1
@@ -1,16 +1,16 @@
1
+ import { AXPEntityListFilterDefinition, AXPEntityListSortableField, AXPEntityAggregateRequest, AXPEntityDetailDto, AXPEntityModel, AXPEntityListItemDto, AXPEntityCreateDto, AXPEntityUpdateDto, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityAggregateOptions, AXPEntityAggregateResult, AXPEntity as AXPEntity$1 } from '@acorex/platform/layout/entity-contracts';
2
+ export * from '@acorex/platform/layout/entity-contracts';
3
+ export { collectNestedCreateHiddenProperties, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, mergeForeignKeyFieldIntoCreateActions } from '@acorex/platform/layout/entity-contracts';
1
4
  import * as _acorex_platform_contracts from '@acorex/platform/contracts';
2
5
  import { AXPExecuteCommandResult, AXPMetaData, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPExecuteCommand, AXPFilterDefinition, AXPPagedListResult, AXPCategoryEntity, AXPEntityOp, AXPMiddlewareErrorResponse, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPFileListItem } from '@acorex/platform/contracts';
3
6
  import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
4
7
  import * as _angular_core from '@angular/core';
5
8
  import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
6
- import { AXPEntityListFilterDefinition, AXPEntityAggregateRequest, AXPEntityDetailDto, AXPEntityModel, AXPEntityListItemDto, AXPEntityCreateDto, AXPEntityUpdateDto, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityAggregateOptions, AXPEntityAggregateResult, AXPEntity as AXPEntity$1 } from '@acorex/platform/layout/entity-contracts';
7
- export * from '@acorex/platform/layout/entity-contracts';
8
- export { collectNestedCreateHiddenProperties, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, mergeForeignKeyFieldIntoCreateActions } from '@acorex/platform/layout/entity-contracts';
9
9
  import * as i4 from '@acorex/platform/layout/widget-core';
10
10
  import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetRendererDirective, AXPWidgetCoreElementAPI } from '@acorex/platform/layout/widget-core';
11
11
  import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorRowActionsHandler, AXPCategoryTreeDataSource, AXPDataSelectorAllowCreate } from '@acorex/platform/layout/components';
12
12
  import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';
13
- import { AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPQueryRequest, AXHighlightService, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXPContextChangeEvent } from '@acorex/platform/core';
13
+ import { AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPQueryRequest, AXHighlightService, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPContextData, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXPContextStore, AXPContextChangeEvent } from '@acorex/platform/core';
14
14
  import * as _acorex_platform_common from '@acorex/platform/common';
15
15
  import { AXPRelatedEntity, AXPEntityPage, AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPCardField, AXPEntityPropertyLayoutConfig, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPQueryView, AXPEntityMasterListLayoutType, AXPEntityMasterListDisplayMode, AXPEntityMasterListLayoutOption, AXPEntityPropertyView, AXPEntityCategoryPlugin, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXCFileUploaderCapabilities, AXCFileUploaderAction, AXPQueryFilter } from '@acorex/platform/common';
16
16
  export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
@@ -43,6 +43,7 @@ declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
43
43
  private translationService;
44
44
  private settingsService;
45
45
  private openEntityDetailsCommand;
46
+ private workflowEventService;
46
47
  protected context: {};
47
48
  execute(input: any): Promise<AXPExecuteCommandResult<any>>;
48
49
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPCreateEntityCommand, never>;
@@ -297,9 +298,9 @@ declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefini
297
298
 
298
299
  /**
299
300
  * Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
300
- * tabs): meta-data-builder → attachments → documents → comments → history.
301
+ * tabs): meta-data-builder → attachments → documents → comments → dashboard → history.
301
302
  */
302
- type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'documents' | 'comments' | 'history';
303
+ type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'documents' | 'comments' | 'dashboard' | 'history';
303
304
  /** Identifies an `entity.pages` entry when skipping its order during recomputation. */
304
305
  interface SkipEntityComponentPageRef {
305
306
  componentKey: string;
@@ -802,6 +803,10 @@ declare class AXPEntityMasterListViewModel {
802
803
  * Apply filters from query params
803
804
  */
804
805
  applyFiltersFromQueryParams(filtersJson: string | null): boolean;
806
+ /**
807
+ * Loads host and merge-detail related sortable field definitions (async registry resolution).
808
+ */
809
+ loadSortableFields(): Promise<void>;
805
810
  /**
806
811
  * Loads host and merge-detail related filter definitions (async registry resolution).
807
812
  */
@@ -811,6 +816,7 @@ declare class AXPEntityMasterListViewModel {
811
816
  applyViewFilters(): Promise<void>;
812
817
  resetFilters(): void;
813
818
  applyFilterAndSort(): Promise<void>;
819
+ private resolveMergeDetailProperty;
814
820
  private allAvailableColumns;
815
821
  visibleColumnCount: () => number;
816
822
  columns: _angular_core.WritableSignal<AXPEntityListViewColumnViewModel[]>;
@@ -832,6 +838,7 @@ declare class AXPEntityMasterListViewModel {
832
838
  private allAvailableCardFields;
833
839
  cardFields: _angular_core.WritableSignal<AXPEntityListViewCardFieldViewModel[]>;
834
840
  applyCardFields(): void;
841
+ sortableFieldDefinitions: _angular_core.WritableSignal<AXPEntityListSortableField[]>;
835
842
  sortableFields: () => {
836
843
  name: string;
837
844
  title: string;
@@ -1494,10 +1501,16 @@ declare class EntityDataAccessor<TKey = any, TDetailDto extends AXPEntityDetailD
1494
1501
  private entityRegistry;
1495
1502
  private queryExecutor;
1496
1503
  private commandService;
1504
+ private injector;
1497
1505
  private crudService;
1498
1506
  private entityDef;
1499
1507
  private entityDefPromise;
1500
- constructor(module: string, entity: string, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService);
1508
+ constructor(module: string, entity: string, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService, injector: Injector);
1509
+ /**
1510
+ * Lazily creates the CRUD fallback inside an injection context so {@link AXMEntityCrudServiceImpl}
1511
+ * can resolve {@link AXPEntityStorageService} via `inject()`.
1512
+ */
1513
+ private ensureCrudService;
1501
1514
  /**
1502
1515
  * Resolves the entity definition lazily and caches it.
1503
1516
  * @returns The resolved entity definition
@@ -1548,9 +1561,10 @@ declare class EntityBuilder {
1548
1561
  private entityRegistry;
1549
1562
  private queryExecutor;
1550
1563
  private commandService;
1564
+ private injector;
1551
1565
  readonly module: string;
1552
1566
  readonly entity: string;
1553
- constructor(module: string, entity: string, sessionService: AXPSessionService, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService);
1567
+ constructor(module: string, entity: string, sessionService: AXPSessionService, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService, injector: Injector);
1554
1568
  /**
1555
1569
  * Creates a path for the entity.
1556
1570
  * @param path - The path segment (defaults to 'list')
@@ -1569,6 +1583,7 @@ declare class AXPEntityService {
1569
1583
  private entityRegistry;
1570
1584
  private queryExecutor;
1571
1585
  private commandService;
1586
+ private injector;
1572
1587
  /**
1573
1588
  * @deprecated Use `withEntity(module, entity).createPath(path)` instead.
1574
1589
  * This method will be removed in a future version.
@@ -2633,7 +2648,7 @@ declare class AXPEntityListToolbarService {
2633
2648
  private createColumnDefinitions;
2634
2649
  /**
2635
2650
  * Create Sort Definitions for Toolbar.
2636
- * Includes entity.properties with sort enabled, plus enriched columns (dotted paths).
2651
+ * Includes host properties and merge-detail related fields with sort enabled.
2637
2652
  */
2638
2653
  private createSortDefinitions;
2639
2654
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
@@ -3166,6 +3181,16 @@ declare class AXPFileUploaderWidgetService {
3166
3181
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderWidgetService>;
3167
3182
  }
3168
3183
 
3184
+ interface AXPLookupWidgetCreateOptions {
3185
+ enable?: boolean;
3186
+ context?: AXPContextData;
3187
+ }
3188
+ interface ResolvedLookupCreateOptions {
3189
+ enabled: boolean;
3190
+ mode: 'none' | 'full' | 'quick';
3191
+ context?: AXPContextData;
3192
+ }
3193
+
3169
3194
  type AXPLookupWidgetLookType = 'select' | 'lookup';
3170
3195
  /**
3171
3196
  * How the lookup column resolves related items for display in entity lists.
@@ -3222,6 +3247,10 @@ interface AXPLookupWidgetOptions {
3222
3247
  expose?: string | string[];
3223
3248
  look?: AXPLookupWidgetLookType;
3224
3249
  allowClear?: boolean;
3250
+ /** Inline entity create configuration. */
3251
+ create?: AXPLookupWidgetCreateOptions;
3252
+ /** @deprecated Use create.enable; still supported for create mode (quick/full). */
3253
+ allowCreate?: 'none' | 'full' | 'quick';
3225
3254
  displayFormat?: string;
3226
3255
  /** Column list: entity detail popover behavior. */
3227
3256
  popover?: AXPLookupPopoverOptions;
@@ -3282,6 +3311,9 @@ declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any>
3282
3311
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetViewComponent, "axp-lookup-widget-view", never, {}, {}, never, never, true, never>;
3283
3312
  }
3284
3313
 
3314
+ type AXPContextStoreInstance = InstanceType<typeof AXPContextStore>;
3315
+ type AXPLookupCreateContextStore = AXPContextStoreInstance;
3316
+
3285
3317
  /**
3286
3318
  * Selects which entity list row actions appear in the data selector.
3287
3319
  * Match by full command name, action `name`, trigger name, or command suffix (e.g. `:Preview`).
@@ -3352,7 +3384,11 @@ interface AXPEntityDataSelectorCategoryOptions {
3352
3384
  dataSource?: AXPCategoryTreeDataSource;
3353
3385
  }
3354
3386
  interface AXPEntityDataSelectorCreateOptions {
3387
+ enable?: boolean;
3388
+ /** Create dialog mode when enabled. Legacy `allowCreate` maps here. */
3355
3389
  mode?: AXPDataSelectorAllowCreate;
3390
+ /** Prefilled entity create form values; may use {{ context.eval() }} expressions. */
3391
+ context?: AXPContextData;
3356
3392
  }
3357
3393
  /** Nested options for {@link AXPEntityDataSelectorService.open}. */
3358
3394
  interface AXPEntityDataSelectorOpenOptions {
@@ -3365,6 +3401,8 @@ interface AXPEntityDataSelectorOpenOptions {
3365
3401
  sort?: AXPEntityDataSelectorSortOptions;
3366
3402
  category?: AXPEntityDataSelectorCategoryOptions;
3367
3403
  create?: AXPEntityDataSelectorCreateOptions;
3404
+ /** Form context store used to evaluate `create.context` expressions. Must come from the hosting form scope. */
3405
+ contextStore?: AXPLookupCreateContextStore;
3368
3406
  /** Entity list row actions to expose in the selector grid (matched by command name). */
3369
3407
  rowActions?: AXPEntityDataSelectorRowActionsConfig;
3370
3408
  }
@@ -3384,7 +3422,10 @@ interface AXPEntityDataSelectorOptions {
3384
3422
  name: string;
3385
3423
  dir: 'asc' | 'desc';
3386
3424
  }[];
3425
+ /** @deprecated Prefer nested `create`. Legacy allowCreate mode. */
3387
3426
  allowCreate?: AXPDataSelectorAllowCreate;
3427
+ /** Form context store for evaluating create.context expressions. */
3428
+ contextStore?: AXPLookupCreateContextStore;
3388
3429
  searchFields?: string[];
3389
3430
  initialSearchTerm?: string;
3390
3431
  selectedItemIds?: string[] | number[];
@@ -3424,6 +3465,11 @@ declare class AXPEntityDataSelectorService {
3424
3465
  private readonly categoryTreeService;
3425
3466
  private readonly translationService;
3426
3467
  private readonly rowActionsService;
3468
+ private readonly expressionEvaluator;
3469
+ /**
3470
+ * Resolves lookup `create.context` templates using the provided form context store.
3471
+ */
3472
+ resolveCreateContext(template?: AXPContextData | null, contextStore?: AXPLookupCreateContextStore | null): Promise<Record<string, unknown>>;
3427
3473
  /**
3428
3474
  * Open entity data selector popup.
3429
3475
  * Accepts nested {@link AXPEntityDataSelectorOpenOptions} or deprecated flat {@link AXPEntityDataSelectorOptions}.
@@ -3433,7 +3479,7 @@ declare class AXPEntityDataSelectorService {
3433
3479
  * Execute Entity:Create and return created item.
3434
3480
  * Used by lookup widget and data selector for inline create.
3435
3481
  */
3436
- executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick'): Promise<any | null>;
3482
+ executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick', initialData?: Record<string, unknown>): Promise<any | null>;
3437
3483
  /**
3438
3484
  * Normalize item's phones/emails for expose/display.
3439
3485
  * Call this when receiving items from any source (create, API, selector).
@@ -3541,7 +3587,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
3541
3587
  protected allowUnselect: _angular_core.Signal<boolean>;
3542
3588
  protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
3543
3589
  protected displayField: _angular_core.Signal<string>;
3544
- protected allowCreate: _angular_core.Signal<"full" | "none" | "quick">;
3590
+ protected resolvedCreate: _angular_core.Signal<ResolvedLookupCreateOptions>;
3545
3591
  protected selectorRowActions: _angular_core.Signal<AXPLookupSelectorRowActionsConfig | undefined>;
3546
3592
  protected valueField: _angular_core.Signal<string>;
3547
3593
  protected displayFormat: _angular_core.Signal<string | undefined>;
@@ -3567,6 +3613,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
3567
3613
  * so e.g. `{ person: { educationLevel: { id, title } } }` would replace the entire `person`
3568
3614
  * object and drop sibling fields like `person.educationLevelId`, causing a value/effect loop.
3569
3615
  */
3616
+ private syncExposePathsToSavedBaseline;
3570
3617
  private expoesItems;
3571
3618
  outputs(): (string | {
3572
3619
  [name: string]: unknown;
@@ -3918,6 +3965,7 @@ declare class AXPMultiSourceSelectorComponent extends AXBasePageComponent {
3918
3965
  protected activeSource: _angular_core.Signal<AXPMultiSourceItem | null>;
3919
3966
  protected selectedItems: _angular_core.WritableSignal<AXPMultiSourceRef[]>;
3920
3967
  protected readonly AXPMultiSourceType: typeof AXPMultiSourceType;
3968
+ constructor();
3921
3969
  protected ngOnInit(): void;
3922
3970
  protected handleTabClick(source: AXPMultiSourceItem): void;
3923
3971
  protected handleSelectFromSource(source: AXPMultiSourceItem): Promise<void>;
@@ -4202,6 +4250,7 @@ declare class AXPEntityCreatePopupAction extends AXPWorkflowAction {
4202
4250
  private factory;
4203
4251
  private config;
4204
4252
  private translateService;
4253
+ private settingsService;
4205
4254
  execute(context: AXPWorkflowContext): Promise<void>;
4206
4255
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreatePopupAction, never>;
4207
4256
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreatePopupAction>;
@@ -4328,4 +4377,4 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
4328
4377
  declare const AXPShowListViewWorkflow: AXPWorkflow;
4329
4378
 
4330
4379
  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, 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, 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, canPersistEntityListState, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, commandMessageTextForError, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, formatLookupItemDisplayAsync, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, hasFileUploaderTitleOrDescriptionFields, isAXPMiddlewareAbortError, isAttachmentListEntry, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, persistedAttachments, provideEntity, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
4331
- export type { AXPDataSeeder, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayEvalDeps, AXPLookupDisplayOptions, AXPLookupPopoverOptions, AXPLookupSelectorRowActionsConfig, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, 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 };
4380
+ export type { AXPDataSeeder, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayEvalDeps, AXPLookupDisplayOptions, AXPLookupPopoverOptions, AXPLookupSelectorRowActionsConfig, AXPLookupWidgetCreateOptions, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, 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 };
@@ -1,9 +1,9 @@
1
1
  import * as _ngrx_signals from '@ngrx/signals';
2
2
  import * as _angular_core from '@angular/core';
3
- import { Signal, OnInit, OnDestroy } from '@angular/core';
3
+ import { Signal, InjectionToken, OnInit, OnDestroy } from '@angular/core';
4
4
  import * as _acorex_platform_themes_shared from '@acorex/platform/themes/shared';
5
5
  import { AXClickEvent } from '@acorex/cdk/common';
6
- import { AXPTabNavigationService, AXPHomePageService, AXPSettingsService, AXPTabPreviewService, AXPUnsavedChangesConfirmService, AXPEntityCommandScope } from '@acorex/platform/common';
6
+ import { AXPTabNavigationService, AXPHomePageService, AXPSettingsService, AXPTabPreviewService, AXPUnsavedChangesConfirmService, AXPBrowserTitleService, AXPEntityCommandScope } from '@acorex/platform/common';
7
7
  import * as i1 from '@acorex/cdk/drawer';
8
8
  import { AXDrawerItemDirective } from '@acorex/cdk/drawer';
9
9
  import { AXPBreadcrumbItem, AXPMultiLanguageString, AXPBadge, AXPPageStatus, AXPBackButton, AXPExecuteCommand, AXPExecuteCommandResult } from '@acorex/platform/contracts';
@@ -82,6 +82,7 @@ declare class AXPPageLayoutComponent {
82
82
  isSystemMode: _angular_core.Signal<boolean>;
83
83
  isSideMenuOpen: _angular_core.Signal<boolean>;
84
84
  isOverlayLoading: _angular_core.Signal<boolean>;
85
+ overlayTaskCount: _angular_core.Signal<number>;
85
86
  isNavigationLoading: _angular_core.Signal<boolean>;
86
87
  isMenuHorizontal: _angular_core.Signal<boolean>;
87
88
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -95,6 +96,7 @@ declare class AXPPageLayoutComponent {
95
96
  toggleSideMenu: () => void;
96
97
  setNavigationLoading: (value: boolean, delay?: number) => void;
97
98
  setOverlayLoading: (value: boolean, delay?: number) => void;
99
+ clearOverlayLoading: () => void;
98
100
  loadSettings: () => Promise<void>;
99
101
  } & _ngrx_signals.StateSource<{
100
102
  currentMode: _acorex_platform_themes_shared.AXPThemeMode;
@@ -166,6 +168,7 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
166
168
  isSystemMode: _angular_core.Signal<boolean>;
167
169
  isSideMenuOpen: _angular_core.Signal<boolean>;
168
170
  isOverlayLoading: _angular_core.Signal<boolean>;
171
+ overlayTaskCount: _angular_core.Signal<number>;
169
172
  isNavigationLoading: _angular_core.Signal<boolean>;
170
173
  isMenuHorizontal: _angular_core.Signal<boolean>;
171
174
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -179,6 +182,7 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
179
182
  toggleSideMenu: () => void;
180
183
  setNavigationLoading: (value: boolean, delay?: number) => void;
181
184
  setOverlayLoading: (value: boolean, delay?: number) => void;
185
+ clearOverlayLoading: () => void;
182
186
  loadSettings: () => Promise<void>;
183
187
  } & _ngrx_signals.StateSource<{
184
188
  currentMode: _acorex_platform_themes_shared.AXPThemeMode;
@@ -210,7 +214,9 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
210
214
  protected readonly tabNavigation: AXPTabNavigationService;
211
215
  protected readonly tabPreviewService: AXPTabPreviewService;
212
216
  protected readonly unsavedChangesConfirm: AXPUnsavedChangesConfirmService;
217
+ protected readonly browserTitleService: AXPBrowserTitleService;
213
218
  protected readonly router: Router;
219
+ private readonly pageLayoutDestroyRef;
214
220
  private _updateTrigger;
215
221
  /** Tab key captured at page init — stable while the route instance is cached. */
216
222
  private readonly pageTabKey;
@@ -219,6 +225,8 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
219
225
  ngOnInit(): Promise<void>;
220
226
  /** Maps the home-page route to the pinned home tab key instead of a path-based key. */
221
227
  private resolvePageTabKey;
228
+ /** Stable tab key for this cached page instance (tabular mode). */
229
+ protected getPageTabKey(): string | null;
222
230
  protected publishTabStructuredPreview(tabKey: string, input: {
223
231
  titleValue: AXPMultiLanguageString;
224
232
  descriptionValue: AXPMultiLanguageString | null;
@@ -235,6 +243,10 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
235
243
  protected getPageIcon(): string | null | Promise<string | null>;
236
244
  hasTitle: _angular_core.Signal<boolean>;
237
245
  hasTitleIcon: _angular_core.Signal<boolean>;
246
+ /** Publishes the page title to the browser tab when this instance is the active route. */
247
+ protected publishBrowserTitleIfActive(): Promise<void>;
248
+ /** True when this cached page instance matches the current router location. */
249
+ protected isActivePageForBrowserTitle(): boolean;
238
250
  description: _angular_core.WritableSignal<AXPMultiLanguageString | null>;
239
251
  hasDescription: _angular_core.Signal<boolean>;
240
252
  protected getPageDescription(): AXPMultiLanguageString | null | Promise<AXPMultiLanguageString | null>;
@@ -242,7 +254,9 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
242
254
  breadcrumbs: _angular_core.WritableSignal<AXPBreadcrumbItem[]>;
243
255
  hasBreadcrumbs: _angular_core.Signal<boolean>;
244
256
  protected getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
245
- /** Joins all page breadcrumbs (Home is excluded upstream) as the tab label. */
257
+ /** Collects resolved breadcrumb labels (Home excluded upstream) for tab chrome. */
258
+ protected resolveBreadcrumbTabTitleSegments(pageBreadcrumbs: AXPBreadcrumbItem[]): Promise<string[]>;
259
+ /** Joins breadcrumb segments as the stored tab title string. */
246
260
  protected resolveBreadcrumbTabTitle(pageBreadcrumbs: AXPBreadcrumbItem[]): Promise<string | null>;
247
261
  /** Resolves a breadcrumb label the same way as page chrome (`t(item.title)`). */
248
262
  protected resolveBreadcrumbItemTitle(item: AXPBreadcrumbItem | undefined): Promise<string | null>;
@@ -338,6 +352,7 @@ declare class AXPPopupLayoutComponent {
338
352
  isSystemMode: _angular_core.Signal<boolean>;
339
353
  isSideMenuOpen: _angular_core.Signal<boolean>;
340
354
  isOverlayLoading: _angular_core.Signal<boolean>;
355
+ overlayTaskCount: _angular_core.Signal<number>;
341
356
  isNavigationLoading: _angular_core.Signal<boolean>;
342
357
  isMenuHorizontal: _angular_core.Signal<boolean>;
343
358
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -351,6 +366,7 @@ declare class AXPPopupLayoutComponent {
351
366
  toggleSideMenu: () => void;
352
367
  setNavigationLoading: (value: boolean, delay?: number) => void;
353
368
  setOverlayLoading: (value: boolean, delay?: number) => void;
369
+ clearOverlayLoading: () => void;
354
370
  loadSettings: () => Promise<void>;
355
371
  } & _ngrx_signals.StateSource<{
356
372
  currentMode: _acorex_platform_themes_shared.AXPThemeMode;
@@ -407,6 +423,7 @@ declare abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {
407
423
  isSystemMode: _angular_core.Signal<boolean>;
408
424
  isSideMenuOpen: _angular_core.Signal<boolean>;
409
425
  isOverlayLoading: _angular_core.Signal<boolean>;
426
+ overlayTaskCount: _angular_core.Signal<number>;
410
427
  isNavigationLoading: _angular_core.Signal<boolean>;
411
428
  isMenuHorizontal: _angular_core.Signal<boolean>;
412
429
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -420,6 +437,7 @@ declare abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {
420
437
  toggleSideMenu: () => void;
421
438
  setNavigationLoading: (value: boolean, delay?: number) => void;
422
439
  setOverlayLoading: (value: boolean, delay?: number) => void;
440
+ clearOverlayLoading: () => void;
423
441
  loadSettings: () => Promise<void>;
424
442
  } & _ngrx_signals.StateSource<{
425
443
  currentMode: _acorex_platform_themes_shared.AXPThemeMode;
@@ -548,9 +566,20 @@ interface AXPLayoutDetailsViewAdapter {
548
566
  getPageStatus?: (context: Record<string, unknown>, currentPage: AXPLayoutDetailsViewPage | null) => Promise<AXPPageStatus | null>;
549
567
  }
550
568
 
569
+ interface AXPLayoutDetailsViewRouteParams {
570
+ moduleName: string;
571
+ entityName: string;
572
+ id: string;
573
+ }
574
+ interface AXPLayoutDetailsViewAdapterLoader {
575
+ load(params: AXPLayoutDetailsViewRouteParams): Promise<AXPLayoutDetailsViewAdapter>;
576
+ }
577
+ declare const AXP_LAYOUT_DETAILS_VIEW_ADAPTER_LOADER: InjectionToken<AXPLayoutDetailsViewAdapterLoader>;
578
+
551
579
  declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
552
580
  adapter: _angular_core.Signal<AXPLayoutDetailsViewAdapter | null>;
553
581
  rootContext: _angular_core.Signal<Record<string, any>>;
582
+ savedContext: _angular_core.Signal<Record<string, any>>;
554
583
  previousContext: _angular_core.Signal<Record<string, any>>;
555
584
  context: _angular_core.Signal<Record<string, any>>;
556
585
  scope: _angular_core.Signal<AXPExpressionEvaluatorScope | null>;
@@ -567,6 +596,8 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
567
596
  isLarge: _angular_core.Signal<boolean>;
568
597
  isBusy: _angular_core.Signal<boolean>;
569
598
  isSaving: _angular_core.Signal<boolean>;
599
+ isOverlayBusy: _angular_core.Signal<boolean>;
600
+ isPageReady: _angular_core.Signal<boolean>;
570
601
  isDirty: _angular_core.Signal<boolean>;
571
602
  changesCount: _angular_core.Signal<1 | 0>;
572
603
  isLoaded: _angular_core.Signal<boolean>;
@@ -574,7 +605,8 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
574
605
  activeTabContent: _angular_core.Signal<AXPWidgetNode[]>;
575
606
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
576
607
  loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
577
- load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
608
+ load: (adapter: AXPLayoutDetailsViewAdapter, forceRefresh?: boolean, pageIdFromUrl?: string) => Promise<void>;
609
+ loadFromRoute: (forceRefresh?: boolean) => Promise<void>;
578
610
  updateContext: (context: any) => void;
579
611
  setFormDirty: (dirty: boolean) => void;
580
612
  updatePageSelectedRows: (rows: any[]) => void;
@@ -601,10 +633,11 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
601
633
  applySavedState: (context: Record<string, unknown>) => void;
602
634
  discard: () => Promise<void>;
603
635
  save: (command: AXPExecuteCommand, form: AXFormComponent, liveContext?: Record<string, unknown>) => Promise<boolean>;
604
- goToListPage: () => void;
636
+ goToListPage: () => Promise<void>;
605
637
  } & _ngrx_signals.StateSource<{
606
638
  adapter: AXPLayoutDetailsViewAdapter | null;
607
639
  rootContext: Record<string, any>;
640
+ savedContext: Record<string, any>;
608
641
  previousContext: Record<string, any>;
609
642
  context: Record<string, any>;
610
643
  scope: AXPExpressionEvaluatorScope | null;
@@ -619,10 +652,10 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
619
652
 
620
653
  declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
621
654
  #private;
622
- adapter: _angular_core.InputSignal<AXPLayoutDetailsViewAdapter>;
623
655
  protected vm: {
624
- adapter: _angular_core.Signal<AXPLayoutDetailsViewAdapter | null>;
656
+ adapter: _angular_core.Signal<_acorex_platform_layout_views.AXPLayoutDetailsViewAdapter | null>;
625
657
  rootContext: _angular_core.Signal<Record<string, any>>;
658
+ savedContext: _angular_core.Signal<Record<string, any>>;
626
659
  previousContext: _angular_core.Signal<Record<string, any>>;
627
660
  context: _angular_core.Signal<Record<string, any>>;
628
661
  scope: _angular_core.Signal<_acorex_platform_core.AXPExpressionEvaluatorScope | null>;
@@ -639,14 +672,17 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
639
672
  isLarge: _angular_core.Signal<boolean>;
640
673
  isBusy: _angular_core.Signal<boolean>;
641
674
  isSaving: _angular_core.Signal<boolean>;
675
+ isOverlayBusy: _angular_core.Signal<boolean>;
676
+ isPageReady: _angular_core.Signal<boolean>;
642
677
  isDirty: _angular_core.Signal<boolean>;
643
678
  changesCount: _angular_core.Signal<1 | 0>;
644
679
  isLoaded: _angular_core.Signal<boolean>;
645
680
  currentPageSelectedRows: _angular_core.Signal<any[]>;
646
681
  activeTabContent: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPWidgetNode[]>;
647
- loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
682
+ loadAdapter: (adapter: _acorex_platform_layout_views.AXPLayoutDetailsViewAdapter) => Promise<void>;
648
683
  loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
649
- load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
684
+ load: (adapter: _acorex_platform_layout_views.AXPLayoutDetailsViewAdapter, forceRefresh?: boolean, pageIdFromUrl?: string) => Promise<void>;
685
+ loadFromRoute: (forceRefresh?: boolean) => Promise<void>;
650
686
  updateContext: (context: any) => void;
651
687
  setFormDirty: (dirty: boolean) => void;
652
688
  updatePageSelectedRows: (rows: any[]) => void;
@@ -673,10 +709,11 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
673
709
  applySavedState: (context: Record<string, unknown>) => void;
674
710
  discard: () => Promise<void>;
675
711
  save: (command: AXPExecuteCommand, form: AXFormComponent, liveContext?: Record<string, unknown>) => Promise<boolean>;
676
- goToListPage: () => void;
712
+ goToListPage: () => Promise<void>;
677
713
  } & _ngrx_signals.StateSource<{
678
- adapter: AXPLayoutDetailsViewAdapter | null;
714
+ adapter: _acorex_platform_layout_views.AXPLayoutDetailsViewAdapter | null;
679
715
  rootContext: Record<string, any>;
716
+ savedContext: Record<string, any>;
680
717
  previousContext: Record<string, any>;
681
718
  context: Record<string, any>;
682
719
  scope: _acorex_platform_core.AXPExpressionEvaluatorScope | null;
@@ -694,14 +731,26 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
694
731
  private readonly unsavedChangesPopstate;
695
732
  private readonly pageComponentInstanceRegistry;
696
733
  private readonly shortcutRegistry;
734
+ private readonly workflowService;
697
735
  private readonly destroyRef;
698
736
  private readonly elementRef;
737
+ private readonly debug;
699
738
  private onSelectionChangeSubscription?;
700
- /** Prevents sidebar tab init events from pushing history before {@link ngOnInit} load completes. */
701
- private detailsLayoutReady;
739
+ /** Prevents sidebar tab init events from pushing history before the first page activation completes. */
740
+ private readonly detailsLayoutReady;
702
741
  private readonly destroyed$;
703
742
  private footerActionsGeneration;
704
743
  private keyboardShortcutRegistrationGeneration;
744
+ private overlayFallbackTimer?;
745
+ /** Page id the overlay release logic is bound to; reset on sidebar/page switch. */
746
+ private overlayTargetPageId;
747
+ /** After a page switch, wait for widget registry to clear before accepting remounted widgets. */
748
+ private overlaySawZeroWidgetsAfterPageChange;
749
+ /** Cancels in-flight overlay release when the page changes. */
750
+ private overlayReleaseGeneration;
751
+ private overlayReleasePromise?;
752
+ /** Safety cap when widget ready detection does not settle. */
753
+ private static readonly overlayMaxWaitMs;
705
754
  /** Header actions with resolved shortcut chords, keyed by command name. */
706
755
  private readonly actionShortcutEntries;
707
756
  /** Save/discard use live {@link AXPLayoutDetailsViewViewModel.isDirty}; other actions use evaluated `visible`. */
@@ -741,15 +790,27 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
741
790
  protected isFooterActionDisabled(action: AXPActionMenuItem): boolean;
742
791
  protected hasFooter: _angular_core.Signal<boolean>;
743
792
  /**
744
- * Append timestamp query param to trigger router to re-run guards/resolvers
793
+ * Re-fetches the entity adapter and reloads the active page.
745
794
  */
746
795
  protected refreshLayout(): Promise<void>;
747
796
  ngOnInit(): Promise<void>;
797
+ /** Navigates to {@link AXPLayoutDetailsViewAdapter.exitUrl} when the open record was deleted. */
798
+ private handleEntityDeleted;
748
799
  ngAfterViewInit(): Promise<void>;
749
800
  ngOnDestroy(): void;
750
801
  private refreshFooterActions;
751
802
  protected handleOnContextChanged(e: AXPContextChangeEvent): void;
752
803
  private getLiveFormContext;
804
+ /** Whether the active page renders widget nodes (not only hosted components). */
805
+ private pageHasWidgetNodes;
806
+ /** Clears all overlay loading tasks once the page (or hosted view) is ready. */
807
+ private clearPageOverlay;
808
+ private scheduleOverlayFallback;
809
+ private clearOverlayFallback;
810
+ /**
811
+ * Hides overlay after the widget container reports continuous idle (same gate as saved baseline).
812
+ */
813
+ private requestOverlayRelease;
753
814
  private finalizeSave;
754
815
  private finalizeDiscard;
755
816
  /** Reverts widget form state and view-model context to the last saved baseline. */
@@ -792,6 +853,11 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
792
853
  protected pageContentTrackKey(item: AXPPageContentItem, index: number): string;
793
854
  /** Whether the active component-based entity page has unsaved edits. */
794
855
  private isActivePageComponentDirty;
856
+ /**
857
+ * Widget-form dirty state for leave guards (popstate, canDeactivate).
858
+ * Unlike {@link liveFormIsDirty}, does not suppress dirty while overlay is busy.
859
+ */
860
+ private hasWidgetFormUnsavedChanges;
795
861
  /** Whether the current details page has user-origin unsaved edits (form or component page). */
796
862
  private shouldPromptLeave;
797
863
  /** Single gate for leaving the page or switching details sub-pages when dirty. */
@@ -805,19 +871,25 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
805
871
  /** Waits for builder/effect microtasks to finish after a component page command. */
806
872
  private waitForComponentDirtySettle;
807
873
  private refreshKeyboardShortcutRegistrations;
874
+ /** i18n scope label for the active details sub-page shortcut group in the help dialog. */
875
+ private getKeyboardShortcutScope;
876
+ /** Primary overview page backed by the entity widget form (not a component-hosted sub-page). */
877
+ private isWidgetFormPrimaryPage;
878
+ private registerDetailsViewShortcutScope;
808
879
  private collectActionShortcutEntries;
809
- private isHeaderActionAvailable;
810
- /** Whether save/discard core shortcuts are listed in the help dialog (page supports them). */
880
+ private isShortcutActionAvailable;
881
+ /** Whether save/discard core shortcuts are listed in the help dialog (widget overview page only). */
811
882
  private isCoreSaveShortcutAvailable;
812
883
  private isCoreDiscardShortcutAvailable;
813
884
  private canExecuteSaveShortcut;
814
885
  private canExecuteDiscardShortcut;
815
886
  private executeDiscardViaShortcut;
887
+ private executeActionShortcut;
816
888
  private isActionShortcutActive;
817
889
  private registerCoreKeyboardShortcuts;
818
890
  private registerActionKeyboardShortcuts;
819
891
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDetailsViewComponent, never>;
820
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDetailsViewComponent, "axp-layout-details-view", never, { "adapter": { "alias": "adapter"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
892
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDetailsViewComponent, "axp-layout-details-view", never, {}, {}, never, never, true, never>;
821
893
  }
822
894
 
823
895
  type AXPDetailsViewActionShortcut = AXPKeyboardShortcutChord;
@@ -834,6 +906,16 @@ declare function resolveDetailsViewActionShortcuts(commandBaseName: string, expl
834
906
  * Resolves save/discard footer command shortcuts from page settings.
835
907
  */
836
908
  declare function resolveDetailsViewFooterCommandShortcuts(commandName: string, explicit?: readonly AXPKeyboardShortcut[]): AXPDetailsViewActionShortcut[] | undefined;
909
+ /**
910
+ * Platform defaults for component-page footer save/discard commands (e.g. `MetaDataBuilder:Save`).
911
+ */
912
+ declare function resolvePageFooterActionDefaultShortcuts(commandName: string): AXPDetailsViewActionShortcut[] | undefined;
913
+ declare function isSaveFooterCommand(commandName: string): boolean;
914
+ declare function isDiscardFooterCommand(commandName: string): boolean;
915
+ /**
916
+ * Resolves keyboard shortcuts for a footer action on entity detail sub-pages.
917
+ */
918
+ declare function resolvePageFooterActionShortcuts(commandName: string, explicit?: readonly AXPKeyboardShortcut[]): AXPDetailsViewActionShortcut[] | undefined;
837
919
 
838
920
  /**
839
921
  * Prompts for unsaved changes before leaving the entity details route (breadcrumbs, menu, back to list).
@@ -881,5 +963,5 @@ declare class AXPPageComponentRendererDirective implements OnInit, OnDestroy {
881
963
  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>;
882
964
  }
883
965
 
884
- export { AXPLayoutDetailsViewComponent, AXPLayoutDetailsViewViewModel, AXPPageComponentInstanceRegistryService, AXPPageComponentRendererDirective, AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPopupLayoutBase, AXPPopupLayoutBaseComponent, AXPPopupLayoutComponent, axpDetailsViewCanDeactivateGuard, buildNotSavedPageBadge, getDetailsViewActionCommandBaseName, isDiscardCommand, resolveDetailsViewActionShortcuts, resolveDetailsViewFooterCommandShortcuts };
885
- export type { AXPDetailsViewActionShortcut, AXPLayoutDetailsViewAction, AXPLayoutDetailsViewAdapter, AXPLayoutDetailsViewPage, AXPLayoutDetailsViewTabItem, AXPPageContentItem };
966
+ 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 };
967
+ export type { AXPDetailsViewActionShortcut, AXPLayoutDetailsViewAction, AXPLayoutDetailsViewAdapter, AXPLayoutDetailsViewAdapterLoader, AXPLayoutDetailsViewPage, AXPLayoutDetailsViewRouteParams, AXPLayoutDetailsViewTabItem, AXPPageContentItem };