@acorex/platform 21.0.0-next.75 → 21.0.0-next.76

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 (40) hide show
  1. package/fesm2022/{acorex-platform-common-common-settings.provider-Ytey9uhY.mjs → acorex-platform-common-common-settings.provider-ChoT4m4k.mjs} +42 -1
  2. package/fesm2022/acorex-platform-common-common-settings.provider-ChoT4m4k.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-common.mjs +1471 -606
  4. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-contracts.mjs +1330 -1
  6. package/fesm2022/acorex-platform-contracts.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +208 -5
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-layout-entity.mjs +595 -439
  11. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-views.mjs +372 -171
  13. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-widget-core.mjs +3 -103
  15. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-CFyfix31.mjs +513 -0
  17. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-CFyfix31.mjs.map +1 -0
  18. package/fesm2022/acorex-platform-layout-widgets.mjs +11 -6
  19. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  20. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs → acorex-platform-themes-default-entity-master-single-view.component-DrUwqKKA.mjs} +2 -3
  21. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DrUwqKKA.mjs.map +1 -0
  22. package/fesm2022/acorex-platform-themes-default.mjs +643 -52
  23. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-workflow.mjs +5 -8
  25. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  26. package/package.json +1 -1
  27. package/types/acorex-platform-common.d.ts +337 -1056
  28. package/types/acorex-platform-contracts.d.ts +1679 -4
  29. package/types/acorex-platform-core.d.ts +92 -181
  30. package/types/acorex-platform-layout-components.d.ts +2 -1
  31. package/types/acorex-platform-layout-entity.d.ts +68 -176
  32. package/types/acorex-platform-layout-views.d.ts +39 -5
  33. package/types/acorex-platform-layout-widget-core.d.ts +2 -3
  34. package/types/acorex-platform-layout-widgets.d.ts +11 -4
  35. package/types/acorex-platform-themes-default.d.ts +120 -57
  36. package/types/acorex-platform-workflow.d.ts +5 -18
  37. package/fesm2022/acorex-platform-common-common-settings.provider-Ytey9uhY.mjs.map +0 -1
  38. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-J0zcGKBX.mjs +0 -116
  39. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-J0zcGKBX.mjs.map +0 -1
  40. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs.map +0 -1
@@ -1,15 +1,17 @@
1
1
  import * as _acorex_platform_core from '@acorex/platform/core';
2
- import { AXPExecuteCommandResult, AXPQueryRequest, AXPUserReference, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPPagedListResult, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPFileListItem, AXPContextChangeEvent } from '@acorex/platform/core';
2
+ import { AXPExecuteCommandResult, AXPQueryRequest, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPPagedListResult, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPFileListItem, AXPExpressionEvaluatorService, AXPContextEvalFactory, 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';
6
+ import * as _acorex_platform_contracts from '@acorex/platform/contracts';
7
+ import { AXPRecordWorkflowInfo, AXPEntityDetailDto, AXPEntityModel, AXPEntityListItemDto, AXPEntityCreateDto, AXPEntityUpdateDto, AXPCategoryEntity } from '@acorex/platform/contracts';
8
+ export { AXPAuditEvent, AXPEntityCreateDto, AXPEntityDataSourceKeys, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityModel, AXPEntityOutputDto, AXPEntityUpdateDto, AXPMockDto, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRecordWorkflowInfo, collectNestedCreateHiddenProperties, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, mergeForeignKeyFieldIntoCreateActions } from '@acorex/platform/contracts';
6
9
  import { AXPopoverComponent } from '@acorex/components/popover';
7
10
  import * as i4 from '@acorex/platform/layout/widget-core';
8
11
  import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetRendererDirective, AXPWidgetCoreElementAPI } from '@acorex/platform/layout/widget-core';
9
12
  import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorRowActionsHandler, AXPCategoryTreeDataSource, AXPDataSelectorAllowCreate } from '@acorex/platform/layout/components';
10
13
  import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';
11
- import * as _acorex_platform_common from '@acorex/platform/common';
12
- import { AXPRelatedEntity, AXPEntityPage, AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPCardField, AXPEntityPropertyLayoutConfig, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPQueryView, AXPEntityMasterListLayoutType, AXPEntityMasterListDisplayMode, AXPEntityMasterListLayoutOption, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPQueryFilter, AXCFileUploaderCapabilities, AXCFileUploaderAction } from '@acorex/platform/common';
14
+ 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';
13
15
  export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
14
16
  import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
15
17
  import * as i1 from '@angular/router';
@@ -115,6 +117,9 @@ declare class AXPUpdateEntityCommand implements AXPCommand<any, any> {
115
117
  private readonly entityService;
116
118
  private readonly toastService;
117
119
  private readonly translationService;
120
+ private readonly formatService;
121
+ private readonly expressionEvaluator;
122
+ private readonly contextEvalFactory;
118
123
  private readonly eventService;
119
124
  execute(input: any): Promise<AXPExecuteCommandResult<any>>;
120
125
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPUpdateEntityCommand, never>;
@@ -125,7 +130,11 @@ declare class AXPViewEntityDetailsCommand implements AXPCommand<any, any> {
125
130
  private readonly entityForm;
126
131
  private readonly entityService;
127
132
  private readonly translationService;
133
+ private readonly expressionEvaluator;
134
+ private readonly contextEvalFactory;
128
135
  execute(input: any): Promise<AXPExecuteCommandResult<any>>;
136
+ private resolveDialogTitle;
137
+ private loadRecordContext;
129
138
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPViewEntityDetailsCommand, never>;
130
139
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPViewEntityDetailsCommand>;
131
140
  }
@@ -152,11 +161,6 @@ declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDet
152
161
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
153
162
  }
154
163
 
155
- /** Platform entity layout datasource registry names. */
156
- declare const AXPEntityDataSourceKeys: {
157
- readonly Entities: "entities";
158
- };
159
-
160
164
  declare const AXPEntityEventsKeys: {
161
165
  REFRESH_LAYOUT: string;
162
166
  REFRESH_DATA: string;
@@ -204,80 +208,6 @@ interface AXPEntityAggregateOptions {
204
208
  pageSize?: number;
205
209
  }
206
210
 
207
- /**
208
- * One audit point in time for a record lifecycle event.
209
- *
210
- * Used inside {@link AXPRecordAuditInfo} (`created`, `updated`, `deleted`).
211
- * Backends and mock middleware typically set `at` and `by`; `reason` and `source`
212
- * (for example `api`, `system`, `import`) are optional diagnostic fields.
213
- */
214
- interface AXPAuditEvent {
215
- at?: Date;
216
- by?: AXPUserReference;
217
- /** Optional business or technical reason for the event. */
218
- reason?: string;
219
- /** Optional origin of the change (for example `api`, `system`, `import`). */
220
- source?: string;
221
- }
222
- /**
223
- * Aggregated audit trail for a persisted row.
224
- *
225
- * Filled by APIs or connectivity mock middleware when creating, updating, or
226
- * soft-deleting records. UI surfaces may show these via the history plugin or
227
- * custom columns. Version snapshot pipelines often **omit** this object from
228
- * stored snapshots while still applying it to live payloads.
229
- *
230
- * @remarks Fields are optional today; callers should tolerate partial data.
231
- */
232
- interface AXPRecordAuditInfo {
233
- created?: AXPAuditEvent;
234
- updated?: AXPAuditEvent;
235
- deleted?: AXPAuditEvent;
236
- }
237
- /**
238
- * Cross-cutting flags that are not part of the domain schema but affect how a
239
- * row is shown or edited (visibility, built-in/system rows, immutability).
240
- *
241
- * Module entity models sometimes expose only this slice (for example
242
- * `stateInfo` on business units) when the rest of the row uses a bespoke shape.
243
- *
244
- * @remarks Entity list/detail flows should honor these flags where applicable.
245
- */
246
- interface AXPRecordStateInfo {
247
- isHidden?: boolean;
248
- isSystem?: boolean;
249
- isImmutable?: boolean;
250
- /** @deprecated Prefer explicit domain modeling over this flag. */
251
- isDistributed?: boolean;
252
- }
253
- /**
254
- * Tenancy and actor scope for a row in a multi-tenant application.
255
- *
256
- * Used to associate a record with a tenant, application instance, or owning
257
- * user when the API returns ownership metadata alongside domain fields.
258
- */
259
- interface AXPRecordOwnershipInfo {
260
- tenantId?: string;
261
- applicationId?: string;
262
- userId?: string;
263
- }
264
- /**
265
- * Workflow linkage for a domain record (set when a run is started or bound).
266
- *
267
- * Populated by workflow engine, middleware, or integration — not declared as
268
- * entity definition properties. Entities with the `workflow` plugin may carry
269
- * this object when a {@link WorkflowManagement.WorkflowInstance} drives the row.
270
- */
271
- interface AXPRecordWorkflowInfo {
272
- /** Workflow instance id for this record's active or last run. */
273
- instanceId?: string | null;
274
- /** Logical workflow definition id (same as WorkflowInstance.definitionId). */
275
- definitionId?: string | null;
276
- /** Correlation id for idempotent start and related-run lookup (same as WorkflowInstance.correlationId). */
277
- correlationId?: string | null;
278
- /** When set, pins the run to a workflow definition version; omit for current default. */
279
- pinnedVersion?: number | null;
280
- }
281
211
  /** Entity query filter field for {@link AXPRecordWorkflowInfo.instanceId}. */
282
212
  declare const AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD: "workflowInfo.instanceId";
283
213
  /** Entity query filter field for {@link AXPRecordWorkflowInfo.correlationId}. */
@@ -299,41 +229,14 @@ declare function buildAXPRecordWorkflowInfo(params: {
299
229
  correlationId?: string | null;
300
230
  pinnedVersion?: number | null;
301
231
  }): AXPRecordWorkflowInfo;
302
- /**
303
- * Base shape for **entity row** TypeScript models across modules: a stable
304
- * identifier plus optional platform metadata.
305
- *
306
- * Module-specific interfaces extend this with domain properties
307
- * (`extends AXPEntityModel<string>` / `AXPEntityModel<Id>`) while reusing
308
- * `auditInfo`, `stateInfo`, `ownershipInfo`, and `workflowInfo` when the backend sends them.
309
- */
310
- interface AXPEntityModel<Id> {
311
- id: Id;
312
- auditInfo?: AXPRecordAuditInfo;
313
- stateInfo?: AXPRecordStateInfo;
314
- ownershipInfo?: AXPRecordOwnershipInfo;
315
- workflowInfo?: AXPRecordWorkflowInfo;
316
- }
317
- interface AXPEntityCreateDto {
318
- }
319
- interface AXPEntityUpdateDto<Id> {
320
- id: Id;
321
- }
322
- interface AXPEntityOutputDto<Id> {
323
- id: Id;
324
- }
325
- interface AXPEntityDetailDto<Id> extends AXPEntityOutputDto<Id> {
326
- }
327
- interface AXPEntityListItemDto<Id> extends AXPEntityOutputDto<Id> {
328
- }
329
- interface AXPMockDto<Id> extends AXPEntityModel<Id> {
330
- }
331
232
 
332
233
  declare class AXPEntityDetailPopoverComponent {
333
234
  private readonly commandService;
334
235
  private readonly queryService;
335
236
  private readonly formatService;
336
237
  private readonly translation;
238
+ private readonly expressionEvaluator;
239
+ private readonly contextEvalFactory;
337
240
  entity: _angular_core.InputSignal<string>;
338
241
  entityId: _angular_core.InputSignal<string | number>;
339
242
  textField: _angular_core.InputSignal<string>;
@@ -345,9 +248,11 @@ declare class AXPEntityDetailPopoverComponent {
345
248
  protected entityDetails: _angular_core.WritableSignal<any>;
346
249
  protected isLoadingDetails: _angular_core.WritableSignal<boolean>;
347
250
  protected isDetailPopoverOpen: _angular_core.WritableSignal<boolean>;
251
+ private headerTitleVersion;
348
252
  /** Placeholder rows for the loading skeleton (matches typical property count). */
349
253
  protected readonly loadingSkeletonRows: readonly [1, 2, 3, 4, 5];
350
- protected readonly headerTitle: _angular_core.Signal<string>;
254
+ protected readonly headerTitle: _angular_core.WritableSignal<string>;
255
+ constructor();
351
256
  /**
352
257
  * Stable list of property widgets for the template. Must be a signal (computed), not a method:
353
258
  * calling a method from the template rebuilds nodes every CD cycle and can make the widget renderer loop.
@@ -367,7 +272,8 @@ declare class AXPEntityDetailPopoverComponent {
367
272
  hide(): void;
368
273
  protected onDetailPopoverOpenChange(event: any): void;
369
274
  protected navigateToDetails(): Promise<void>;
370
- private resolveLookupDisplayLabel;
275
+ private resolveHeaderTitle;
276
+ private resolveLookupDisplayLabelAsync;
371
277
  /**
372
278
  * Returns true if a value is meaningful for display (non-empty/non-null).
373
279
  */
@@ -426,12 +332,11 @@ declare class AXPEntityDetailPopoverService {
426
332
 
427
333
  declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBaseComponent {
428
334
  private readonly route;
429
- private readonly router;
430
335
  private readonly entityService;
431
336
  private readonly filterOperatorMiddleware;
432
337
  protected readonly noMatchText: _angular_core.WritableSignal<string | null>;
433
338
  private vm;
434
- preloadFiltersDef: _angular_core.Signal<_acorex_platform_core.AXPFilterDefinition[]>;
339
+ preloadFiltersDef: _angular_core.Signal<_acorex_platform_contracts.AXPFilterDefinition[]>;
435
340
  hasNoRequiredFilters: _angular_core.Signal<boolean>;
436
341
  protected getPageTitle(): string;
437
342
  protected getPageDescription(): string | null;
@@ -543,7 +448,7 @@ declare class AXPEntityListViewCardFieldViewModel {
543
448
  name: string;
544
449
  title: string;
545
450
  visible: string | boolean;
546
- layout: _acorex_platform_common.AXPEntityPropertyLayoutConfig | undefined;
451
+ layout: _acorex_platform_contracts.AXPEntityPropertyLayoutConfig | undefined;
547
452
  display: string;
548
453
  isBadgeDisplay: boolean;
549
454
  badgeColor: string | undefined;
@@ -681,7 +586,7 @@ declare class AXPEntityCreateViewSectionViewModel {
681
586
  private entity;
682
587
  private section;
683
588
  constructor(entity: AXPEntity, section: AXPEntitySectionView);
684
- group: _acorex_platform_common.AXPEntityPropertyGroup;
589
+ group: _acorex_platform_contracts.AXPEntityPropertyGroup;
685
590
  name: _angular_core.WritableSignal<string>;
686
591
  title: _angular_core.Signal<string>;
687
592
  description: _angular_core.Signal<string | null | undefined>;
@@ -757,9 +662,9 @@ declare class AXPEntityMasterListViewQueryViewModel {
757
662
  constructor(entity: AXPEntity, section: AXPEntityMasterListViewModel, view: AXPQueryView);
758
663
  name: string;
759
664
  title: string;
760
- sorts: _acorex_platform_common.AXPQuerySort[];
665
+ sorts: _acorex_platform_contracts.AXPQuerySort[];
761
666
  columns: string[];
762
- conditions: _acorex_platform_common.AXPQueryFilter[];
667
+ conditions: _acorex_platform_contracts.AXPQueryFilter[];
763
668
  indexCol: boolean | undefined;
764
669
  pageSize: number | undefined;
765
670
  }
@@ -774,6 +679,7 @@ declare class AXPEntityMasterListViewModel {
774
679
  private readonly settings;
775
680
  private readonly widgetResolver;
776
681
  private readonly expressionEvaluator;
682
+ private readonly contextEvalFactory;
777
683
  private readonly translation;
778
684
  private readonly commandService;
779
685
  private readonly eventService;
@@ -854,7 +760,8 @@ declare class AXPEntityMasterListViewModel {
854
760
  switchListLayout(): AXPEntityMasterListLayoutType;
855
761
  private resolveActiveListLayout;
856
762
  private applyListLayoutFromSettings;
857
- private createExpressionScope;
763
+ private createLogicExpressionScope;
764
+ private createDisplayExpressionScope;
858
765
  private resolveCommandNameExpression;
859
766
  private resolveTitleExpression;
860
767
  /**
@@ -1042,7 +949,7 @@ declare class AXPEntityMasterSingleViewGroupViewModel {
1042
949
  private entity;
1043
950
  private section;
1044
951
  constructor(entity: AXPEntity, section: AXPEntitySectionView);
1045
- group: _acorex_platform_common.AXPEntityPropertyGroup;
952
+ group: _acorex_platform_contracts.AXPEntityPropertyGroup;
1046
953
  name: _angular_core.WritableSignal<string>;
1047
954
  isLoading: _angular_core.WritableSignal<boolean>;
1048
955
  title: _angular_core.Signal<string>;
@@ -1115,7 +1022,7 @@ declare class AXPEntityUpdateViewSectionViewModel {
1115
1022
  private entity;
1116
1023
  private section;
1117
1024
  constructor(entity: AXPEntity, section: AXPEntitySectionView);
1118
- group: _acorex_platform_common.AXPEntityPropertyGroup;
1025
+ group: _acorex_platform_contracts.AXPEntityPropertyGroup;
1119
1026
  name: _angular_core.WritableSignal<string>;
1120
1027
  title: _angular_core.Signal<string>;
1121
1028
  description: _angular_core.Signal<string | null | undefined>;
@@ -1193,8 +1100,8 @@ interface AXPEntityModifierContext {
1193
1100
  set(newKey: string | undefined): AXPEntityModifierContext;
1194
1101
  };
1195
1102
  category: {
1196
- get(): AXPCategoryEntity | undefined;
1197
- update(updater: (cat: AXPCategoryEntity | undefined) => AXPCategoryEntity): AXPEntityModifierContext;
1103
+ get(): AXPEntityCategoryPlugin | undefined;
1104
+ update(updater: (cat: AXPEntityCategoryPlugin | undefined) => AXPEntityCategoryPlugin): AXPEntityModifierContext;
1198
1105
  };
1199
1106
  properties: {
1200
1107
  list(): AXPEntityProperty[];
@@ -1487,10 +1394,7 @@ declare function runEntityQuery<T = unknown>(entityName: string, request: AXPQue
1487
1394
 
1488
1395
  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> {
1489
1396
  abstract get dbName(): string;
1490
- abstract initial(entityName: string, collection: TCreateDto[], options?: {
1491
- mergeType?: 'merge' | 'replace';
1492
- uniqueKeys?: string[];
1493
- }): Promise<TCreateDto[]>;
1397
+ abstract initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
1494
1398
  abstract getOne(entityName: string, id: TKey): Promise<TDetailDto>;
1495
1399
  abstract updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
1496
1400
  abstract deleteOne(entityName: string, id: TKey): Promise<void>;
@@ -1573,7 +1477,7 @@ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailD
1573
1477
  categoryId: TKey;
1574
1478
  categoryKey?: string;
1575
1479
  }): Promise<AXPPagedListResult<TListItemDto>>;
1576
- getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity$1<TKey>>>;
1480
+ getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity<TKey>>>;
1577
1481
  get storageService(): AXPEntityStorageService<any, any, any, any, any>;
1578
1482
  count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1579
1483
  queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
@@ -1685,7 +1589,7 @@ declare class EntityDataAccessor<TKey = any, TDetailDto extends AXPEntityDetailD
1685
1589
  * Queries category entities linked to this entity (`{module}.{entity}Category`).
1686
1590
  * Falls back to CRUD category storage (same as {@link AXMEntityCrudServiceImpl.getCategoriesList}).
1687
1591
  */
1688
- getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity$1<TKey>>>;
1592
+ getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity<TKey>>>;
1689
1593
  /**
1690
1594
  * Creates a new entity.
1691
1595
  * @param data - The entity data to create
@@ -2216,10 +2120,7 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
2216
2120
  private compose;
2217
2121
  private run;
2218
2122
  private createCtx;
2219
- initial(entityName: string, collection: TCreateDto[], options?: {
2220
- mergeType?: 'merge' | 'replace';
2221
- uniqueKeys?: string[];
2222
- }): Promise<TCreateDto[]>;
2123
+ initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
2223
2124
  getOne(entityName: string, id: TKey): Promise<TDetailDto>;
2224
2125
  updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2225
2126
  deleteOne(entityName: string, id: TKey): Promise<void>;
@@ -2239,42 +2140,6 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
2239
2140
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
2240
2141
  }
2241
2142
 
2242
- declare function entityMasterCreateAction(): AXPEntityAction;
2243
- declare function entityMasterEditAction(): AXPEntityAction;
2244
- declare function entityMasterBulkDeleteAction(): AXPEntityAction;
2245
- declare function entityMasterViewAction(): AXPEntityAction;
2246
- declare function entityMasterDeleteAction(): AXPEntityAction;
2247
- declare function entityMasterCrudActions(options?: {
2248
- create?: boolean;
2249
- delete?: boolean;
2250
- view?: boolean;
2251
- edit?: boolean;
2252
- }): AXPEntityAction[];
2253
- declare function entityMasterRecordActions(): AXPEntityAction[];
2254
- declare function entityDetailsCreateActions(parentId: string): AXPEntityAction;
2255
- /**
2256
- * Type-level Create with empty `process.data`; the FK is supplied from `relatedEntity.persistence.foreignKeyField`
2257
- * when the related list is built (see `mergeForeignKeyFieldIntoCreateActions`).
2258
- */
2259
- declare function entityDetailsCreateActionsDeferredParent(): AXPEntityAction;
2260
- /**
2261
- * Ensures each type-level `Entity:Create` action includes `process.data[foreignKeyField]` bound to the parent row id.
2262
- */
2263
- declare function mergeForeignKeyFieldIntoCreateActions(foreignKeyField: string | undefined, actions: AXPEntityAction[] | undefined): AXPEntityAction[];
2264
- /** Property names hidden on nested Create from a related list (`excludeProperties` plus `foreignKeyField` when set). */
2265
- declare function collectNestedCreateHiddenProperties(relatedEntity: AXPRelatedEntity): string[] | undefined;
2266
- declare function entityDetailsSimpleCondition(fk: string): AXPQueryFilter;
2267
- declare function entityDetailsReferenceCondition(type: string): AXPQueryFilter[];
2268
- declare function entityDetailsEditAction(): AXPEntityAction;
2269
- declare function entityDetailsNewEditAction(): AXPEntityAction;
2270
- declare function entityOverrideDetailsViewAction(): AXPEntityAction;
2271
- declare function entityDetailsCrudActions(parentId?: string, options?: {
2272
- create?: boolean;
2273
- delete?: boolean;
2274
- view?: boolean;
2275
- edit?: boolean;
2276
- }): AXPEntityAction[];
2277
- declare function entityDetailsReferenceCreateActions(type: string): AXPEntityAction[];
2278
2143
  type AXPEntityChangeSet = {
2279
2144
  [key: string]: {
2280
2145
  oldValue: any;
@@ -3446,14 +3311,26 @@ declare function resolveLookupDisplayTemplate(entity: AXPEntity | null | undefin
3446
3311
  * Priority: explicit `textField` → entity `formats.lookup` (simple path) → common property names.
3447
3312
  */
3448
3313
  declare function resolveLookupDisplayField(entity: AXPEntity | null | undefined, options: AXPLookupDisplayOptions): string;
3314
+ interface AXPLookupDisplayEvalDeps {
3315
+ expressionEvaluator: AXPExpressionEvaluatorService;
3316
+ contextEvalFactory: AXPContextEvalFactory;
3317
+ translationService: AXTranslationService;
3318
+ locale: string;
3319
+ }
3449
3320
  /**
3450
- * Formats a lookup row for display using template and/or field resolution.
3321
+ * Formats a lookup row for display using template and/or field resolution (display tier).
3322
+ */
3323
+ declare function formatLookupItemDisplayAsync(item: unknown, entity: AXPEntity | null | undefined, options: AXPLookupDisplayOptions, formatService: AXFormatService, displayDeps: AXPLookupDisplayEvalDeps, resolveMultiLanguage?: (value: AXPMultiLanguageString) => string): Promise<string>;
3324
+ /**
3325
+ * @deprecated Prefer {@link formatLookupItemDisplayAsync} for expression templates with `context.eval`.
3451
3326
  */
3452
3327
  declare function formatLookupItemDisplay(item: unknown, entity: AXPEntity | null | undefined, options: AXPLookupDisplayOptions, formatService: AXFormatService, resolveMultiLanguage?: (value: AXPMultiLanguageString) => string): string | AXPMultiLanguageString;
3453
3328
 
3454
3329
  declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any> {
3455
3330
  protected readonly formatService: AXFormatService;
3456
3331
  protected readonly translation: AXTranslationService;
3332
+ protected readonly expressionEvaluator: AXPExpressionEvaluatorService;
3333
+ protected readonly contextEvalFactory: AXPContextEvalFactory;
3457
3334
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
3458
3335
  protected entity: _angular_core.Signal<string>;
3459
3336
  protected multiple: _angular_core.Signal<boolean>;
@@ -3733,7 +3610,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
3733
3610
  protected allowUnselect: _angular_core.Signal<boolean>;
3734
3611
  protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
3735
3612
  protected displayField: _angular_core.Signal<string>;
3736
- protected allowCreate: _angular_core.Signal<"none" | "full" | "quick">;
3613
+ protected allowCreate: _angular_core.Signal<"full" | "none" | "quick">;
3737
3614
  protected selectorRowActions: _angular_core.Signal<AXPLookupSelectorRowActionsConfig | undefined>;
3738
3615
  protected valueField: _angular_core.Signal<string>;
3739
3616
  protected displayFormat: _angular_core.Signal<string | undefined>;
@@ -3778,6 +3655,8 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
3778
3655
  private readonly entityService;
3779
3656
  private readonly entityResolver;
3780
3657
  private readonly queryExecutor;
3658
+ private readonly expressionEvaluator;
3659
+ private readonly contextEvalFactory;
3781
3660
  protected moreButton: _angular_core.Signal<ElementRef<any> | undefined>;
3782
3661
  protected lazyTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
3783
3662
  protected morePopover: _angular_core.Signal<AXPopoverComponent | undefined>;
@@ -3804,9 +3683,14 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
3804
3683
  protected resolveError: _angular_core.WritableSignal<string | null>;
3805
3684
  protected summaryLabel: _angular_core.WritableSignal<string>;
3806
3685
  protected popoverHeader: _angular_core.WritableSignal<string>;
3686
+ protected mainItemLabels: _angular_core.WritableSignal<string[]>;
3687
+ protected lazyPopoverItemLabels: _angular_core.WritableSignal<string[]>;
3807
3688
  private entityDef;
3808
3689
  private hydratedDisplayItems;
3809
3690
  private hydrateRequestId;
3691
+ private mainLabelsVersion;
3692
+ private lazyPopoverLabelsVersion;
3693
+ protected popoverItemLabels: _angular_core.Signal<string[]>;
3810
3694
  protected displayItems: _angular_core.Signal<any[]>;
3811
3695
  protected allItems: _angular_core.Signal<any[]>;
3812
3696
  protected visibleItems: _angular_core.Signal<any[]>;
@@ -3829,7 +3713,10 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
3829
3713
  * Uses textField / expose targets on the row — not merely whether column dataPath differs from columnName.
3830
3714
  */
3831
3715
  protected hasPreresolvedDisplay(): boolean;
3832
- protected getDisplayRaw(item: any): string;
3716
+ protected getItemLabel(index: number): string;
3717
+ protected getPopoverItemLabel(index: number): string;
3718
+ private resolveLabelsForItems;
3719
+ private resolveItemLabel;
3833
3720
  private refreshSummaryLabel;
3834
3721
  private refreshPopoverHeader;
3835
3722
  private resetLazyState;
@@ -3852,7 +3739,6 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
3852
3739
  private getRowDisplayTextFromTextField;
3853
3740
  private getExposeTargets;
3854
3741
  private hasDisplayTextOnLookupValue;
3855
- private renderLookupLabel;
3856
3742
  private formatDisplayValue;
3857
3743
  /** True when a scalar cell value is a stored entity key (uuid/numeric), not pre-resolved display text. */
3858
3744
  private isLikelyEntityId;
@@ -4421,6 +4307,9 @@ declare class AXPQuickEntityModifyPopupAction extends AXPWorkflowAction {
4421
4307
  private popupService;
4422
4308
  private platform;
4423
4309
  private translateService;
4310
+ private formatService;
4311
+ private expressionEvaluator;
4312
+ private contextEvalFactory;
4424
4313
  private entityRegistery;
4425
4314
  private config;
4426
4315
  private factory;
@@ -4453,6 +4342,9 @@ declare class AXPEntityModifySectionPopupAction extends AXPWorkflowAction {
4453
4342
  private popupService;
4454
4343
  private platform;
4455
4344
  private translateService;
4345
+ private formatService;
4346
+ private expressionEvaluator;
4347
+ private contextEvalFactory;
4456
4348
  private entityRegistery;
4457
4349
  private config;
4458
4350
  private factory;
@@ -4494,5 +4386,5 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
4494
4386
  }
4495
4387
  declare const AXPShowListViewWorkflow: AXPWorkflow;
4496
4388
 
4497
- 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, AXPEntityDataSourceKeys, 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 };
4498
- 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 };
4389
+ 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, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, 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, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, 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 };
4390
+ export type { AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, 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, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, 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 };
@@ -3,6 +3,7 @@ import * as _angular_core from '@angular/core';
3
3
  import { Signal, 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
7
  import * as i1 from '@acorex/cdk/drawer';
7
8
  import { AXDrawerItemDirective } from '@acorex/cdk/drawer';
8
9
  import * as _acorex_platform_core from '@acorex/platform/core';
@@ -14,15 +15,14 @@ import { AXTranslationService } from '@acorex/core/translation';
14
15
  import { AXToastService } from '@acorex/components/toast';
15
16
  import { AXFormatService } from '@acorex/core/format';
16
17
  import { AXPSessionService } from '@acorex/platform/auth';
17
- import { AXPHomePageService, AXPSettingsService, AXPEntityCommandScope } from '@acorex/platform/common';
18
+ import * as _angular_router from '@angular/router';
19
+ import { Router, ActivatedRoute } from '@angular/router';
18
20
  import { AXBasePageComponent } from '@acorex/components/page';
19
21
  import * as _acorex_platform_layout_widget_core from '@acorex/platform/layout/widget-core';
20
22
  import { AXPWidgetNode, AXPPageStatus as AXPPageStatus$1, AXPWidgetContainerComponent } from '@acorex/platform/layout/widget-core';
21
23
  import * as _acorex_platform_layout_views from '@acorex/platform/layout/views';
22
24
  import { AXFormComponent } from '@acorex/components/form';
23
25
  import { AXTabStripChangedEvent } from '@acorex/components/tabs';
24
- import * as _angular_router from '@angular/router';
25
- import { Router, ActivatedRoute } from '@angular/router';
26
26
 
27
27
  declare abstract class AXPPageLayoutBase {
28
28
  abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;
@@ -117,6 +117,7 @@ declare class AXPPageLayoutComponent {
117
117
  isPrinting: boolean;
118
118
  }>;
119
119
  protected deviceService: AXPDeviceService;
120
+ protected tabNavigation: AXPTabNavigationService;
120
121
  protected startSideDrawer: _angular_core.Signal<AXDrawerItemDirective | undefined>;
121
122
  protected workflow: AXPWorkflowService;
122
123
  protected commandService: AXPCommandService;
@@ -206,10 +207,28 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
206
207
  protected readonly homePageService: AXPHomePageService;
207
208
  protected readonly policyService: AXPPolicyEngineService;
208
209
  protected readonly settingsService: AXPSettingsService;
210
+ protected readonly tabNavigation: AXPTabNavigationService;
211
+ protected readonly tabPreviewService: AXPTabPreviewService;
212
+ protected readonly unsavedChangesConfirm: AXPUnsavedChangesConfirmService;
213
+ protected readonly router: Router;
209
214
  private _updateTrigger;
215
+ /** Tab key captured at page init — stable while the route instance is cached. */
216
+ private readonly pageTabKey;
210
217
  protected updateTrigger: _angular_core.Signal<number>;
211
218
  protected recompute(): void;
212
219
  ngOnInit(): Promise<void>;
220
+ /** Maps the home-page route to the pinned home tab key instead of a path-based key. */
221
+ private resolvePageTabKey;
222
+ protected publishTabStructuredPreview(tabKey: string, input: {
223
+ titleValue: AXPMultiLanguageString;
224
+ descriptionValue: AXPMultiLanguageString | null;
225
+ icon: string | null;
226
+ breadcrumbItems: AXPBreadcrumbItem[];
227
+ isDirty: boolean;
228
+ }): Promise<void>;
229
+ protected resolveMultiLanguageText(value: AXPMultiLanguageString | null | undefined, fallback: string): Promise<string>;
230
+ /** Resolves i18n keys (`@scope:key`); returns plain text unchanged. */
231
+ protected translateTextIfKey(text: string): Promise<string>;
213
232
  title: _angular_core.WritableSignal<_acorex_core_translation.AXMultiLanguageString>;
214
233
  titleIcon: _angular_core.WritableSignal<string | null>;
215
234
  protected getPageTitle(): AXPMultiLanguageString | Promise<AXPMultiLanguageString>;
@@ -223,9 +242,20 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
223
242
  breadcrumbs: _angular_core.WritableSignal<AXPBreadcrumbItem[]>;
224
243
  hasBreadcrumbs: _angular_core.Signal<boolean>;
225
244
  protected getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
245
+ /** Joins all page breadcrumbs (Home is excluded upstream) as the tab label. */
246
+ protected resolveBreadcrumbTabTitle(pageBreadcrumbs: AXPBreadcrumbItem[]): Promise<string | null>;
247
+ /** Resolves a breadcrumb label the same way as page chrome (`t(item.title)`). */
248
+ protected resolveBreadcrumbItemTitle(item: AXPBreadcrumbItem | undefined): Promise<string | null>;
249
+ /** Fallback tab label from the page title when breadcrumbs are not ready yet. */
250
+ protected resolvePageTitleForTab(): Promise<string | null>;
226
251
  badge: _angular_core.WritableSignal<AXPBadge | null>;
227
252
  hasBadge: _angular_core.Signal<boolean>;
228
253
  hasUnsavedChanges(): boolean;
254
+ /**
255
+ * Confirms closing this page as a background tab (no router navigation).
256
+ * Override when dirty detection differs from {@link hasUnsavedChanges}.
257
+ */
258
+ onBeforeTabClose(): boolean | Promise<boolean>;
229
259
  protected getPageBadge(): Promise<AXPBadge | null>;
230
260
  resolvePageBadge(): Promise<AXPBadge | null>;
231
261
  status: _angular_core.WritableSignal<AXPPageStatus | null>;
@@ -658,11 +688,9 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
658
688
  evaluatedTabContentsById: Record<string, _acorex_platform_layout_widget_core.AXPWidgetNode[]>;
659
689
  formDirty: boolean;
660
690
  }>;
661
- protected router: Router;
662
691
  protected route: ActivatedRoute;
663
692
  protected eventService: AXPBroadcastEventService;
664
693
  protected deviceService: AXPDeviceService;
665
- private readonly unsavedChangesConfirm;
666
694
  private readonly unsavedChangesPopstate;
667
695
  private readonly pageComponentInstanceRegistry;
668
696
  private readonly shortcutRegistry;
@@ -724,6 +752,8 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
724
752
  private getLiveFormContext;
725
753
  private finalizeSave;
726
754
  private finalizeDiscard;
755
+ /** Reverts widget form state and view-model context to the last saved baseline. */
756
+ private discardUnsavedChanges;
727
757
  /**
728
758
  * `ax-tabs` selects on click before we can confirm. Revert synchronously, then confirm + switch.
729
759
  */
@@ -740,6 +770,7 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
740
770
  protected getPageTitle(): Promise<AXPMultiLanguageString>;
741
771
  getPageDescription(): Promise<AXPMultiLanguageString | null>;
742
772
  getBackButton(): Promise<AXPBackButton | null>;
773
+ hasUnsavedChanges(): boolean;
743
774
  getPageBadge(): Promise<AXPBadge | null>;
744
775
  getPageStatus(): Promise<AXPPageStatus | null>;
745
776
  /**
@@ -751,11 +782,14 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
751
782
  * Router guard hook — same unsaved-changes confirm as dialog builder {@link confirmCloseWhenDirty}.
752
783
  */
753
784
  canDeactivate(): Promise<boolean>;
785
+ /** Background tab close — confirm without discarding (the cached instance is destroyed). */
786
+ onBeforeTabClose(): Promise<boolean>;
754
787
  /** Active entity component page instance, when the current details sub-page is component-based. */
755
788
  private getActivePageComponentInstance;
756
789
  /** Component key for the current details sub-page, when content is component-based. */
757
790
  private getActivePageComponentKey;
758
791
  private static isComponentPageContent;
792
+ protected pageContentTrackKey(item: AXPPageContentItem, index: number): string;
759
793
  /** Whether the active component-based entity page has unsaved edits. */
760
794
  private isActivePageComponentDirty;
761
795
  /** Whether the current details page has user-origin unsaved edits (form or component page). */