@acorex/platform 21.0.0-next.67 → 21.0.0-next.70

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.
@@ -1,21 +1,21 @@
1
1
  import * as _acorex_platform_core from '@acorex/platform/core';
2
- import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPFileListItem, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPContextChangeEvent } from '@acorex/platform/core';
2
+ import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPFileListItem, AXPContextChangeEvent } from '@acorex/platform/core';
3
3
  import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
6
6
  import { AXPopoverComponent } from '@acorex/components/popover';
7
7
  import * as i4 from '@acorex/platform/layout/widget-core';
8
- import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetCoreElementAPI, AXPWidgetRendererDirective } from '@acorex/platform/layout/widget-core';
8
+ import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetRendererDirective, AXPWidgetCoreElementAPI } from '@acorex/platform/layout/widget-core';
9
9
  import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorRowActionsHandler, AXPCategoryTreeDataSource, AXPDataSelectorAllowCreate } from '@acorex/platform/layout/components';
10
10
  import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';
11
- import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
12
11
  import * as _acorex_platform_common from '@acorex/platform/common';
13
- import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPCardField, AXPRelatedEntity, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityMasterListLayoutType, AXPEntityMasterListDisplayMode, AXPEntityMasterListLayoutOption, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPEntityPage, AXPQueryFilter, AXCFileUploaderCapabilities, AXCFileUploaderAction } 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';
13
+ export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
14
+ import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
14
15
  import * as i1 from '@angular/router';
15
16
  import { ResolveFn } from '@angular/router';
16
17
  import * as rxjs from 'rxjs';
17
18
  import { Subject } from 'rxjs';
18
- export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
19
19
  import * as i3 from '@acorex/platform/workflow';
20
20
  import { AXPWorkflowService, AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';
21
21
  import * as i5 from '@acorex/platform/layout/builder';
@@ -28,9 +28,9 @@ import { AXFormatService } from '@acorex/core/format';
28
28
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
29
29
  import * as _acorex_core_translation from '@acorex/core/translation';
30
30
  import { AXTranslationService } from '@acorex/core/translation';
31
+ import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
31
32
  import * as _acorex_platform_layout_entity from '@acorex/platform/layout/entity';
32
33
  import { AXFileService } from '@acorex/core/file';
33
- import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
34
34
 
35
35
  declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
36
36
  private entityForm;
@@ -266,6 +266,57 @@ declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBas
266
266
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityPreloadFiltersContainerComponent, "axp-entity-preload-filters-container", never, {}, {}, never, never, true, never>;
267
267
  }
268
268
 
269
+ /**
270
+ * Data source definition provider that returns all entity names
271
+ * from entity loaders' list() (const.ts in each module).
272
+ */
273
+ declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefinitionProvider {
274
+ private readonly entityResolver;
275
+ items(): Promise<AXPDataSourceDefinition[]>;
276
+ }
277
+
278
+ /**
279
+ * Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
280
+ * tabs): meta-data-builder → attachments → documents → comments → history.
281
+ */
282
+ type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'documents' | 'comments' | 'history';
283
+ /** Identifies an `entity.pages` entry when skipping its order during recomputation. */
284
+ interface SkipEntityComponentPageRef {
285
+ componentKey: string;
286
+ /** When set, only the page with this `field` is skipped (e.g. attachments / meta-data per field). */
287
+ field?: string;
288
+ }
289
+ interface ResolveEntityPluginDetailPageOrderOptions {
290
+ /** Component key of the page being added or updated (used to count sibling tabs in the same slot). */
291
+ componentKey: string;
292
+ /**
293
+ * Ignore this page when counting siblings / recomputing (the page currently being updated).
294
+ */
295
+ skipPage?: SkipEntityComponentPageRef;
296
+ /**
297
+ * Field name for multi-page slots (`attachments`, `meta-data-builder`). Omit for single-tab slots.
298
+ */
299
+ field?: string;
300
+ /** Gap between auto-assigned related tab orders. Default: 10. */
301
+ relatedOrderStep?: number;
302
+ /** Minimum start of the plugin zone (after related tabs). Default: 100_000. */
303
+ pluginZoneFloor?: number;
304
+ }
305
+ /**
306
+ * Resolves `layout.order` for a built-in plugin detail tab (`entity.pages`).
307
+ *
308
+ * 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
309
+ * `order` (the composer otherwise treats them as +Infinity).
310
+ * 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
311
+ * comments → history, after all related tabs.
312
+ */
313
+ declare function resolveEntityPluginDetailPageOrder(input: {
314
+ relatedEntities?: AXPRelatedEntity[];
315
+ pages?: Array<AXPEntityPage & {
316
+ field?: string;
317
+ }>;
318
+ }, slot: EntityDetailPluginPageSlot, options: ResolveEntityPluginDetailPageOrderOptions): number;
319
+
269
320
  interface AXPDataSeeder {
270
321
  seed(): Promise<void>;
271
322
  }
@@ -277,15 +328,6 @@ declare class AXPDataSeederService {
277
328
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataSeederService>;
278
329
  }
279
330
 
280
- /**
281
- * Data source definition provider that returns all entity names
282
- * from entity loaders' list() (const.ts in each module).
283
- */
284
- declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefinitionProvider {
285
- private readonly entityResolver;
286
- items(): Promise<AXPDataSourceDefinition[]>;
287
- }
288
-
289
331
  declare class AXPEntityCommandTriggerViewModel {
290
332
  priority: 'primary' | 'secondary' | 'none';
291
333
  order: number;
@@ -393,6 +435,32 @@ declare const AXPEntityEventsKeys: {
393
435
  REFRESH_DATA: string;
394
436
  };
395
437
 
438
+ /**
439
+ * Entity Event Dispatcher - A wrapper for entity-specific events
440
+ * Handles pattern-based dispatching for entity operations with wildcard support
441
+ */
442
+ declare class AXPEntityEventDispatcherService {
443
+ private readonly eventService;
444
+ dispatchEntityEvent(operation: 'inserted' | 'updated' | 'deleted', entityName: string, data: any): Promise<void>;
445
+ private getAllMatchingEventKeys;
446
+ private findMatchingWildcardKeys;
447
+ private matchesEntityPattern;
448
+ private generateEventKeys;
449
+ dispatchInserted(entityName: string, data: any): Promise<void>;
450
+ dispatchUpdated(entityName: string, data: any): Promise<void>;
451
+ dispatchDeleted(entityName: string, data: any): Promise<void>;
452
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityEventDispatcherService, never>;
453
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
454
+ }
455
+
456
+ /**
457
+ * Sort key for entries in `interfaces.master.{create|update|single}.properties`.
458
+ * Uses `layout.order` when set and finite; otherwise the property index in that list.
459
+ */
460
+ declare function getMasterInterfacePropertySortKey(interfaceRow: {
461
+ layout?: AXPEntityPropertyLayoutConfig | undefined;
462
+ } | undefined, indexInMasterInterfaceList: number): number;
463
+
396
464
  interface AXPEntityListExpandRowRef {
397
465
  data: Record<string, unknown>;
398
466
  }
@@ -436,24 +504,6 @@ declare function shouldLoadEntityListStateFromStorage(mode: AXPEntityListPersist
436
504
  declare function shouldResetEntityListStateOnRouteEntry(mode: AXPEntityListPersistenceMode): boolean;
437
505
  declare const ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY = "axp-entity-list-route-context";
438
506
 
439
- /**
440
- * Entity Event Dispatcher - A wrapper for entity-specific events
441
- * Handles pattern-based dispatching for entity operations with wildcard support
442
- */
443
- declare class AXPEntityEventDispatcherService {
444
- private readonly eventService;
445
- dispatchEntityEvent(operation: 'inserted' | 'updated' | 'deleted', entityName: string, data: any): Promise<void>;
446
- private getAllMatchingEventKeys;
447
- private findMatchingWildcardKeys;
448
- private matchesEntityPattern;
449
- private generateEventKeys;
450
- dispatchInserted(entityName: string, data: any): Promise<void>;
451
- dispatchUpdated(entityName: string, data: any): Promise<void>;
452
- dispatchDeleted(entityName: string, data: any): Promise<void>;
453
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityEventDispatcherService, never>;
454
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
455
- }
456
-
457
507
  declare class AXPEntityCreateViewSectionViewModel {
458
508
  private entity;
459
509
  private section;
@@ -941,52 +991,6 @@ declare class AXPEntityMasterUpdateViewModelFactory {
941
991
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMasterUpdateViewModelFactory>;
942
992
  }
943
993
 
944
- type AXPCollectEntityQuickSearchPathsResolver = (moduleName: string, entityName: string) => Promise<AXPEntity | null>;
945
- /**
946
- * Lodash-get paths for quick search from a single entity definition: string-like property names
947
- * plus lookup `expose[].target` paths (e.g. `brand.title`).
948
- */
949
- declare function collectQuickSearchPathsFromSingleEntityDefinition(entity: AXPEntity | null | undefined): string[];
950
- /**
951
- * Adds dotted paths from master columns (`name` or `options.dataPath`), e.g. `person.fullName`, `jobDefinition.title`.
952
- */
953
- declare function collectNestedFieldPathsFromEntityColumns(entity: AXPEntity | null | undefined): string[];
954
- /**
955
- * Collects lodash-get field paths used for mock/API quick search (`contains` / OR filters):
956
- * host properties and lookup expose targets, dotted column paths, and merge-detail related entities
957
- * prefixed with the related entity merge `persistence.dataPath` (e.g. `person.firstName`).
958
- */
959
- declare function collectEntityQuickSearchFieldPaths(entity: AXPEntity | null | undefined, resolveRelatedDefinition: AXPCollectEntityQuickSearchPathsResolver): Promise<string[]>;
960
-
961
- declare class AXPEntityPreloadFiltersViewModel {
962
- private injector;
963
- private config;
964
- readonly entityDef: AXPEntity;
965
- private readonly widgetResolver;
966
- constructor(injector: Injector, config: AXPEntity);
967
- /**
968
- * Entity title
969
- */
970
- title: _angular_core.Signal<string>;
971
- /**
972
- * Entity description
973
- */
974
- description: _angular_core.Signal<string | null>;
975
- /**
976
- * All filter definitions for properties with preload enabled
977
- */
978
- preloadFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
979
- /**
980
- * Required filter definitions only
981
- */
982
- requiredFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
983
- /**
984
- * Serialize filter values to plain objects (remove signals, functions, etc.)
985
- */
986
- serializeFilters(filters: any): AXPFilterQuery[];
987
- }
988
- declare const AXPEntityPreloadFiltersViewModelResolver: ResolveFn<Promise<AXPEntityPreloadFiltersViewModel>>;
989
-
990
994
  type AXPEntityMasterListCardLayout = NonNullable<NonNullable<AXPEntityMasterListView['layouts']>['card']>;
991
995
  interface AXPEntityModifierContext {
992
996
  readonly entity: AXPEntity;
@@ -1162,6 +1166,52 @@ declare function createModifierContext(entity: AXPEntity): AXPEntityModifierCont
1162
1166
 
1163
1167
  declare const AXP_ENTITY_MODIFIER: InjectionToken<AXPEntityModifierProvider[]>;
1164
1168
 
1169
+ declare class AXPEntityPreloadFiltersViewModel {
1170
+ private injector;
1171
+ private config;
1172
+ readonly entityDef: AXPEntity;
1173
+ private readonly widgetResolver;
1174
+ constructor(injector: Injector, config: AXPEntity);
1175
+ /**
1176
+ * Entity title
1177
+ */
1178
+ title: _angular_core.Signal<string>;
1179
+ /**
1180
+ * Entity description
1181
+ */
1182
+ description: _angular_core.Signal<string | null>;
1183
+ /**
1184
+ * All filter definitions for properties with preload enabled
1185
+ */
1186
+ preloadFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
1187
+ /**
1188
+ * Required filter definitions only
1189
+ */
1190
+ requiredFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
1191
+ /**
1192
+ * Serialize filter values to plain objects (remove signals, functions, etc.)
1193
+ */
1194
+ serializeFilters(filters: any): AXPFilterQuery[];
1195
+ }
1196
+ declare const AXPEntityPreloadFiltersViewModelResolver: ResolveFn<Promise<AXPEntityPreloadFiltersViewModel>>;
1197
+
1198
+ type AXPCollectEntityQuickSearchPathsResolver = (moduleName: string, entityName: string) => Promise<AXPEntity | null>;
1199
+ /**
1200
+ * Lodash-get paths for quick search from a single entity definition: string-like property names
1201
+ * plus lookup `expose[].target` paths (e.g. `brand.title`).
1202
+ */
1203
+ declare function collectQuickSearchPathsFromSingleEntityDefinition(entity: AXPEntity | null | undefined): string[];
1204
+ /**
1205
+ * Adds dotted paths from master columns (`name` or `options.dataPath`), e.g. `person.fullName`, `jobDefinition.title`.
1206
+ */
1207
+ declare function collectNestedFieldPathsFromEntityColumns(entity: AXPEntity | null | undefined): string[];
1208
+ /**
1209
+ * Collects lodash-get field paths used for mock/API quick search (`contains` / OR filters):
1210
+ * host properties and lookup expose targets, dotted column paths, and merge-detail related entities
1211
+ * prefixed with the related entity merge `persistence.dataPath` (e.g. `person.firstName`).
1212
+ */
1213
+ declare function collectEntityQuickSearchFieldPaths(entity: AXPEntity | null | undefined, resolveRelatedDefinition: AXPCollectEntityQuickSearchPathsResolver): Promise<string[]>;
1214
+
1165
1215
  interface AXPEntityPreloadEntity {
1166
1216
  module: string;
1167
1217
  entity: string;
@@ -1570,145 +1620,43 @@ declare class AXPEntityResolver {
1570
1620
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityResolver>;
1571
1621
  }
1572
1622
 
1623
+ declare class AXPAttachmentsPluginModule {
1624
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAttachmentsPluginModule, never>;
1625
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPAttachmentsPluginModule, never, never, never>;
1626
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPAttachmentsPluginModule>;
1627
+ }
1628
+
1629
+ declare class AXPEntityModule {
1630
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
1631
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof AXPAttachmentsPluginModule, typeof i3.AXPWorkflowModule, typeof i4.AXPWidgetCoreModule, typeof i5.LayoutBuilderModule], never>;
1632
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
1633
+ }
1634
+
1573
1635
  /**
1574
- * Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
1575
- * tabs): meta-data-builder attachments documents comments history.
1636
+ * Data accessor for entity operations.
1637
+ * Provides methods to query and execute commands with smart resolution:
1638
+ * 1. Checks entity definition queries/commands first
1639
+ * 2. Falls back to CRUD service if not defined
1576
1640
  */
1577
- type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'documents' | 'comments' | 'history';
1578
- /** Identifies an `entity.pages` entry when skipping its order during recomputation. */
1579
- interface SkipEntityComponentPageRef {
1580
- componentKey: string;
1581
- /** When set, only the page with this `field` is skipped (e.g. attachments / meta-data per field). */
1582
- field?: string;
1583
- }
1584
- interface ResolveEntityPluginDetailPageOrderOptions {
1585
- /** Component key of the page being added or updated (used to count sibling tabs in the same slot). */
1586
- componentKey: string;
1641
+ declare class EntityDataAccessor<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
1642
+ private module;
1643
+ private entity;
1644
+ private entityRegistry;
1645
+ private queryExecutor;
1646
+ private commandService;
1647
+ private crudService;
1648
+ private entityDef;
1649
+ private entityDefPromise;
1650
+ constructor(module: string, entity: string, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService);
1587
1651
  /**
1588
- * Ignore this page when counting siblings / recomputing (the page currently being updated).
1652
+ * Resolves the entity definition lazily and caches it.
1653
+ * @returns The resolved entity definition
1589
1654
  */
1590
- skipPage?: SkipEntityComponentPageRef;
1655
+ private resolveEntityDef;
1591
1656
  /**
1592
- * Field name for multi-page slots (`attachments`, `meta-data-builder`). Omit for single-tab slots.
1593
- */
1594
- field?: string;
1595
- /** Gap between auto-assigned related tab orders. Default: 10. */
1596
- relatedOrderStep?: number;
1597
- /** Minimum start of the plugin zone (after related tabs). Default: 100_000. */
1598
- pluginZoneFloor?: number;
1599
- }
1600
- /**
1601
- * Resolves `layout.order` for a built-in plugin detail tab (`entity.pages`).
1602
- *
1603
- * 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
1604
- * `order` (the composer otherwise treats them as +Infinity).
1605
- * 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
1606
- * comments → history, after all related tabs.
1607
- */
1608
- declare function resolveEntityPluginDetailPageOrder(input: {
1609
- relatedEntities?: AXPRelatedEntity[];
1610
- pages?: Array<AXPEntityPage & {
1611
- field?: string;
1612
- }>;
1613
- }, slot: EntityDetailPluginPageSlot, options: ResolveEntityPluginDetailPageOrderOptions): number;
1614
-
1615
- /**
1616
- * Sort key for entries in `interfaces.master.{create|update|single}.properties`.
1617
- * Uses `layout.order` when set and finite; otherwise the property index in that list.
1618
- */
1619
- declare function getMasterInterfacePropertySortKey(interfaceRow: {
1620
- layout?: AXPEntityPropertyLayoutConfig | undefined;
1621
- } | undefined, indexInMasterInterfaceList: number): number;
1622
-
1623
- /** How to show attachments in entity single/create/update: as a section (default) or as a separate page. */
1624
- type AttachmentsDisplayMode = 'section' | 'page';
1625
- /** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
1626
- declare const ATTACHMENTS_PAGE_COMPONENT_KEY = "entity-attachments-page";
1627
- type AttachmentLocalizedText = string | Record<string, string>;
1628
- type AttachmentSectionOptions = {
1629
- order?: number;
1630
- title?: AttachmentLocalizedText;
1631
- };
1632
- type AttachmentsEditDialogOptions = {
1633
- mode?: 'manual' | 'auto';
1634
- fields?: {
1635
- name?: boolean;
1636
- title?: boolean;
1637
- description?: boolean;
1638
- };
1639
- };
1640
- type AttachmentsPluginOptions = {
1641
- field?: string;
1642
- title?: AttachmentLocalizedText;
1643
- display?: AttachmentsDisplayMode;
1644
- accept?: string;
1645
- multiple?: boolean;
1646
- fileEditable?: boolean;
1647
- /** When true, attachments field and list action run in read-only mode (widget option `readonly`). */
1648
- 'readonly'?: boolean;
1649
- /** When true (default), registers a list column for the attachments field. Set false to hide the column. */
1650
- showListColumn?: boolean;
1651
- /** When true (default), registers the list upload action. Set false to omit the action. */
1652
- showListAction?: boolean;
1653
- /** Section options when display is 'section'. */
1654
- section?: AttachmentSectionOptions;
1655
- /** File edit dialog options. */
1656
- editDialog?: AttachmentsEditDialogOptions;
1657
- plugins?: {
1658
- name: string;
1659
- options?: unknown;
1660
- }[];
1661
- /** Widget option `showBorder`. Default false for attachments (section and page). */
1662
- showBorder?: boolean;
1663
- /** Widget option `showAddItemButton`. Default false when display is `page`, true for section. */
1664
- showAddItemButton?: boolean;
1665
- };
1666
- /**
1667
- * Attachments plugin.
1668
- * - Always ensures an attachments group and property; when display is 'section' (default), adds a section to single/create/update layouts.
1669
- * - When display is 'page', adds a page to entity.pages with ATTACHMENTS_PAGE_COMPONENT_KEY; register a page component with that key via AXP_PAGE_COMPONENT_PROVIDER.
1670
- * - List column and list upload action can be turned off with `showListColumn` / `showListAction` (both default true).
1671
- * - Uses provided accept/multiple/fileEditable; others are fixed.
1672
- */
1673
- declare const attachmentsPlugin: AXPEntityActionPlugin;
1674
-
1675
- declare class AXPAttachmentsPluginModule {
1676
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAttachmentsPluginModule, never>;
1677
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPAttachmentsPluginModule, never, never, never>;
1678
- static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPAttachmentsPluginModule>;
1679
- }
1680
-
1681
- declare class AXPEntityModule {
1682
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
1683
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof AXPAttachmentsPluginModule, typeof i3.AXPWorkflowModule, typeof i4.AXPWidgetCoreModule, typeof i5.LayoutBuilderModule], never>;
1684
- static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
1685
- }
1686
-
1687
- /**
1688
- * Data accessor for entity operations.
1689
- * Provides methods to query and execute commands with smart resolution:
1690
- * 1. Checks entity definition queries/commands first
1691
- * 2. Falls back to CRUD service if not defined
1692
- */
1693
- declare class EntityDataAccessor<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
1694
- private module;
1695
- private entity;
1696
- private entityRegistry;
1697
- private queryExecutor;
1698
- private commandService;
1699
- private crudService;
1700
- private entityDef;
1701
- private entityDefPromise;
1702
- constructor(module: string, entity: string, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService);
1703
- /**
1704
- * Resolves the entity definition lazily and caches it.
1705
- * @returns The resolved entity definition
1706
- */
1707
- private resolveEntityDef;
1708
- /**
1709
- * Gets a single entity by key.
1710
- * @param key - The entity key
1711
- * @returns The entity detail or null if not found
1657
+ * Gets a single entity by key.
1658
+ * @param key - The entity key
1659
+ * @returns The entity detail or null if not found
1712
1660
  */
1713
1661
  byKey(key: TKey): Promise<TDetailDto | null>;
1714
1662
  /**
@@ -1791,6 +1739,58 @@ declare class AXPEntityService {
1791
1739
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityService>;
1792
1740
  }
1793
1741
 
1742
+ /** How to show attachments in entity single/create/update: as a section (default) or as a separate page. */
1743
+ type AttachmentsDisplayMode = 'section' | 'page';
1744
+ /** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
1745
+ declare const ATTACHMENTS_PAGE_COMPONENT_KEY = "entity-attachments-page";
1746
+ type AttachmentLocalizedText = string | Record<string, string>;
1747
+ type AttachmentSectionOptions = {
1748
+ order?: number;
1749
+ title?: AttachmentLocalizedText;
1750
+ };
1751
+ type AttachmentsEditDialogOptions = {
1752
+ mode?: 'manual' | 'auto';
1753
+ fields?: {
1754
+ name?: boolean;
1755
+ title?: boolean;
1756
+ description?: boolean;
1757
+ };
1758
+ };
1759
+ type AttachmentsPluginOptions = {
1760
+ field?: string;
1761
+ title?: AttachmentLocalizedText;
1762
+ display?: AttachmentsDisplayMode;
1763
+ accept?: string;
1764
+ multiple?: boolean;
1765
+ fileEditable?: boolean;
1766
+ /** When true, attachments field and list action run in read-only mode (widget option `readonly`). */
1767
+ 'readonly'?: boolean;
1768
+ /** When true (default), registers a list column for the attachments field. Set false to hide the column. */
1769
+ showListColumn?: boolean;
1770
+ /** When true (default), registers the list upload action. Set false to omit the action. */
1771
+ showListAction?: boolean;
1772
+ /** Section options when display is 'section'. */
1773
+ section?: AttachmentSectionOptions;
1774
+ /** File edit dialog options. */
1775
+ editDialog?: AttachmentsEditDialogOptions;
1776
+ plugins?: {
1777
+ name: string;
1778
+ options?: unknown;
1779
+ }[];
1780
+ /** Widget option `showBorder`. Default false for attachments (section and page). */
1781
+ showBorder?: boolean;
1782
+ /** Widget option `showAddItemButton`. Default false when display is `page`, true for section. */
1783
+ showAddItemButton?: boolean;
1784
+ };
1785
+ /**
1786
+ * Attachments plugin.
1787
+ * - Always ensures an attachments group and property; when display is 'section' (default), adds a section to single/create/update layouts.
1788
+ * - When display is 'page', adds a page to entity.pages with ATTACHMENTS_PAGE_COMPONENT_KEY; register a page component with that key via AXP_PAGE_COMPONENT_PROVIDER.
1789
+ * - List column and list upload action can be turned off with `showListColumn` / `showListAction` (both default true).
1790
+ * - Uses provided accept/multiple/fileEditable; others are fixed.
1791
+ */
1792
+ declare const attachmentsPlugin: AXPEntityActionPlugin;
1793
+
1794
1794
  interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
1795
1795
  op: AXPEntityOp;
1796
1796
  entityName: string;
@@ -2700,71 +2700,320 @@ declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
2700
2700
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPTruncatedBreadcrumbComponent, "axp-truncated-breadcrumb", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "characterLimit": { "alias": "characterLimit"; "required": false; "isSignal": true; }; "sectionLimit": { "alias": "sectionLimit"; "required": false; "isSignal": true; }; "separatorIcon": { "alias": "separatorIcon"; "required": false; "isSignal": true; }; "ellipsisIcon": { "alias": "ellipsisIcon"; "required": false; "isSignal": true; }; "eyeIcon": { "alias": "eyeIcon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2701
2701
  }
2702
2702
 
2703
- declare class AXPEditFileUploaderCommand implements AXPCommand<{
2704
- file: AXPFileListItem;
2705
- plugins?: {
2706
- name: string;
2707
- options?: unknown;
2708
- }[];
2709
- excludePlugins?: string[];
2710
- enableTitleDescription?: boolean;
2711
- isNewFile?: boolean;
2712
- }, AXPFileListItem> {
2713
- private readonly layoutBuilder;
2714
- private readonly translationService;
2715
- private readonly hooks;
2716
- execute(input: {
2717
- file: AXPFileListItem;
2718
- plugins?: {
2719
- name: string;
2720
- options?: unknown;
2721
- }[];
2722
- excludePlugins?: string[];
2723
- enableTitleDescription?: boolean;
2724
- isNewFile?: boolean;
2725
- }): Promise<AXPExecuteCommandResult<AXPFileListItem>>;
2726
- private showEditDialog;
2703
+ declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
2704
+ declare module '@acorex/platform/layout/widget-core' {
2705
+ interface AXPWidgetTypesMap {
2706
+ entityDefinitionProvider: 'entity-definition-provider-editor';
2707
+ }
2708
+ }
2709
+
2710
+ declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
2711
+ private readonly entityRegistry;
2727
2712
  /**
2728
- * Build form fields from hook items (old format parameters)
2713
+ * Last applied module filter (from context) to avoid redundant reloads.
2729
2714
  */
2730
- private buildFormFields;
2715
+ private readonly lastModuleFilterKey;
2731
2716
  /**
2732
- * Build groups/containers from hook groups (old format groups)
2717
+ * Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
2733
2718
  */
2734
- private buildGroups;
2719
+ private readonly reloadWhenModuleContextChanges;
2735
2720
  /**
2736
- * Apply widget configuration to field based on widget type
2721
+ * Options:
2722
+ * - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
2723
+ * - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
2737
2724
  */
2738
- private applyWidget;
2739
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEditFileUploaderCommand, never>;
2740
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEditFileUploaderCommand>;
2725
+ protected loadDataSourceRows(): Promise<Array<{
2726
+ value: string;
2727
+ title: string;
2728
+ }>>;
2729
+ refresh(): void;
2730
+ /**
2731
+ * Reads sibling field from context store data (same shape as `lodash/get` paths).
2732
+ */
2733
+ private readModuleFromContext;
2734
+ /**
2735
+ * Resolves a sibling field path relative to the current widget's parent path.
2736
+ */
2737
+ private resolveSiblingContextPath;
2738
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
2739
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
2741
2740
  }
2742
2741
 
2743
- declare class AXPFileListComponent implements OnInit, OnDestroy {
2744
- private fileTypeService;
2745
- private fileStorageService;
2746
- private commandExecutor;
2747
- private hooks;
2748
- isLoading: _angular_core.WritableSignal<boolean>;
2749
- private fileTypes;
2750
- onRemove: _angular_core.OutputEmitterRef<AXPFileListItem>;
2751
- onRevert: _angular_core.OutputEmitterRef<AXPFileListItem>;
2752
- onRename: _angular_core.OutputEmitterRef<AXPFileListItem>;
2753
- readonly: _angular_core.InputSignal<boolean>;
2754
- fileEditable: _angular_core.InputSignal<boolean>;
2755
- /** When true, edit dialog shows name, title and description fields. Default false. */
2756
- enableTitleDescription: _angular_core.InputSignal<boolean>;
2757
- multiple: _angular_core.InputSignal<boolean>;
2758
- files: _angular_core.InputSignal<AXPFileListItem[]>;
2759
- plugins: _angular_core.InputSignal<{
2760
- name: string;
2761
- options?: unknown;
2762
- }[] | undefined>;
2763
- excludePlugins: _angular_core.InputSignal<string[] | undefined>;
2764
- capabilities: _angular_core.InputSignal<AXCFileUploaderCapabilities | undefined>;
2742
+ declare class AXPEntityListTableService {
2743
+ private readonly workflow;
2744
+ private readonly commandService;
2745
+ private readonly expressionEvaluator;
2746
+ private readonly settings;
2765
2747
  /**
2766
- * All files should be displayed, even those with `deleted` status.
2767
- * The template will handle the visual differences based on the status.
2748
+ * Convert Entity to List Widget Options
2749
+ */
2750
+ convertEntityToListOptions(entity: AXPEntity, options: any, allActions: AXPEntityCommandTriggerViewModel[]): Promise<AXPDataListWidgetComponentOptions>;
2751
+ /**
2752
+ * Create DataSource for Entity
2753
+ */
2754
+ private createDataSource;
2755
+ /**
2756
+ * Convert Properties to Columns
2757
+ */
2758
+ private createColumnsFromProperties;
2759
+ /**
2760
+ * Map EntityTableColumn to ListWidgetColumn
2761
+ */
2762
+ private mapEntityColumnToWidgetColumn;
2763
+ /**
2764
+ * Convert Entity Actions to Row Commands
2765
+ */
2766
+ private createRowCommands;
2767
+ /**
2768
+ * Wraps string values with AXP_ROW_EXPR_PREFIX so widget-renderer does not
2769
+ * evaluate them (it only treats {{ ... }} as expressions). Data-list will
2770
+ * unwrap and evaluate per row with row data. Only used for secondary commands.
2771
+ */
2772
+ private wrapRowExpr;
2773
+ /**
2774
+ * Check if entity has Selected Scope Actions
2775
+ */
2776
+ private hasSelectedScopeActions;
2777
+ private evaluateExpressions;
2778
+ /**
2779
+ * Handle execution of a row command (shared by double-click and command handlers)
2780
+ */
2781
+ private handleRowCommand;
2782
+ /**
2783
+ * When a related entity list declares `excludeProperties`, row commands bypass the details page
2784
+ * `execute()` merge — apply the same exclusions for embedded create/update commands.
2785
+ */
2786
+ private mergeRelatedListFormOptions;
2787
+ /**
2788
+ * Create default events
2789
+ */
2790
+ private createDefaultEvents;
2791
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListTableService, never>;
2792
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListTableService>;
2793
+ }
2794
+
2795
+ interface AXPEntityListToolbarConvertOptions {
2796
+ excludeColumns?: string[];
2797
+ includeColumns?: string[];
2798
+ /** Related list: evaluated `AXPEntityTableColumn[]` from `AXPRelatedEntity.columns` */
2799
+ relatedTableColumns?: AXPEntityTableColumn[];
2800
+ customFilterDefinitions?: Partial<AXPFilterDefinition>[];
2801
+ }
2802
+ declare class AXPEntityListToolbarService {
2803
+ private readonly widgetResolver;
2804
+ /**
2805
+ * Convert Entity to Toolbar Options
2806
+ */
2807
+ convertEntityToolbarOptions(entity: AXPEntity, options: AXPEntityListToolbarConvertOptions | undefined): Promise<{
2808
+ filterDefinitions: AXPFilterDefinition[];
2809
+ columnDefinitions: AXPColumnQuery[];
2810
+ sortDefinitions: AXPSortDefinition[];
2811
+ }>;
2812
+ /**
2813
+ * Merges custom filter definitions into the entity-derived list by `field`.
2814
+ * Matching fields: custom properties are applied on top of the base definition.
2815
+ * Non-matching custom entries are appended.
2816
+ */
2817
+ private mergeFilterDefinitions;
2818
+ private filterFieldKey;
2819
+ private mergeFilterDefinition;
2820
+ /**
2821
+ * Create Filter Definitions for Toolbar
2822
+ */
2823
+ private createFilterDefinitions;
2824
+ /**
2825
+ * Create Column Definitions for Toolbar.
2826
+ * Includes both entity.properties and enriched columns (e.g. person.firstName with showAs).
2827
+ */
2828
+ private createColumnDefinitions;
2829
+ /**
2830
+ * Create Sort Definitions for Toolbar.
2831
+ * Includes entity.properties with sort enabled, plus enriched columns (dotted paths).
2832
+ */
2833
+ private createSortDefinitions;
2834
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
2835
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListToolbarService>;
2836
+ }
2837
+
2838
+ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2839
+ #private;
2840
+ protected entityService: AXPEntityDefinitionRegistryService;
2841
+ protected workflow: AXPWorkflowService;
2842
+ protected entityListTableService: AXPEntityListTableService;
2843
+ protected entityListToolbarService: AXPEntityListToolbarService;
2844
+ protected deviceService: AXPDeviceService;
2845
+ protected commandService: AXPCommandService;
2846
+ protected eventService: AXPBroadcastEventService;
2847
+ private readonly expressionEvaluator;
2848
+ private readonly route;
2849
+ protected isMounted: _angular_core.WritableSignal<boolean>;
2850
+ readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
2851
+ protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
2852
+ protected list: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
2853
+ protected allWidgets: _angular_core.Signal<readonly AXPWidgetRendererDirective[]>;
2854
+ protected listWidget: _angular_core.WritableSignal<AXPWidgetRendererDirective | undefined>;
2855
+ protected toolbarWidget: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
2856
+ protected selectedItems: _angular_core.WritableSignal<any[]>;
2857
+ protected toolbarNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
2858
+ protected destroyed: Subject<void>;
2859
+ protected entitySource: _angular_core.Signal<any>;
2860
+ protected excludeColumns: _angular_core.Signal<string[]>;
2861
+ protected includeColumns: _angular_core.Signal<string[]>;
2862
+ protected relatedTableColumns: _angular_core.Signal<AXPEntityTableColumn[] | undefined>;
2863
+ protected customFilterDefinitions: _angular_core.Signal<Partial<AXPFilterDefinition>[] | undefined>;
2864
+ protected externalActions: _angular_core.Signal<AXPEntityAction[]>;
2865
+ protected maxHeight: _angular_core.Signal<string>;
2866
+ protected showEntityActions: _angular_core.Signal<any>;
2867
+ protected showToolbar: _angular_core.Signal<any>;
2868
+ protected allActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
2869
+ protected primaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
2870
+ protected handleUnselectAll(): void;
2871
+ protected secondaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
2872
+ protected handleActionClick(item: AXPActionMenuItem): void;
2873
+ protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
2874
+ protected execute(commandName: string, _data: unknown): Promise<void>;
2875
+ /**
2876
+ * Resolves toolbar commands including nested dropdown (`items`) actions.
2877
+ */
2878
+ private findToolbarAction;
2879
+ private evaluateToolbarExpressions;
2880
+ /**
2881
+ * Parses the `filters` query param (same shape as standalone entity list routes).
2882
+ */
2883
+ private parseFiltersFromRoute;
2884
+ /**
2885
+ * Route `filters` apply only when the active details `page` matches this list's entity
2886
+ * (e.g. WorkOrder filters must not affect FailureRegister on the same asset layout).
2887
+ */
2888
+ private shouldApplyRouteFilters;
2889
+ /**
2890
+ * Merges route filters into related-entity toolbar filters (route wins per field).
2891
+ */
2892
+ private mergeToolbarFilters;
2893
+ private getMergedToolbarFilters;
2894
+ /**
2895
+ * Applies merged route + parent-scope filters to the widget value and data source.
2896
+ */
2897
+ private applyMergedRouteFiltersToList;
2898
+ /**
2899
+ * Re-evaluates related-entity list filters from the live dialog form context (e.g. after create saves the main row id).
2900
+ */
2901
+ private applyRelatedFiltersFromContext;
2902
+ /**
2903
+ * Pushes current toolbar filters to the embedded list data source when both exist.
2904
+ * Returns false while data-list is still mounting (see deferred listNode.set in ngOnInit).
2905
+ */
2906
+ private pushToolbarFiltersToDataSource;
2907
+ /**
2908
+ * Writes toolbar filters from specs and pushes them onto the data source so refresh/reload keeps the parent scope.
2909
+ */
2910
+ private applyRelatedFiltersFromContextAndDatasource;
2911
+ /**
2912
+ * Refreshes the embedded data list (toolbar / workflow). In wizard mode, `refresh` is patched to re-apply scoped filters first.
2913
+ */
2914
+ private refreshGridWithParentScopedFilters;
2915
+ protected queries: undefined;
2916
+ /**
2917
+ * Validates that all required dependencies are available
2918
+ */
2919
+ private hasRequiredDependencies;
2920
+ /**
2921
+ * Handles all query-related changes (filters, sorts, columns)
2922
+ */
2923
+ private handleQueryChanges;
2924
+ /**
2925
+ * Analyzes what has changed between current and previous queries
2926
+ */
2927
+ private analyzeChanges;
2928
+ /**
2929
+ * Applies filter and sort changes to the data source
2930
+ */
2931
+ private applyDataSourceChanges;
2932
+ /**
2933
+ * Handles list refresh logic based on changes and mount status
2934
+ */
2935
+ private handleListRefresh;
2936
+ /**
2937
+ * Handles column-related changes
2938
+ * TODO: Implement column change logic
2939
+ */
2940
+ private handleColumnChanges;
2941
+ protected context: {};
2942
+ protected previousQueries: any;
2943
+ ngOnInit(): Promise<void>;
2944
+ ngAfterViewInit(): Promise<void>;
2945
+ ngOnDestroy(): void;
2946
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListWidgetViewComponent, never>;
2947
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityListWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
2948
+ }
2949
+
2950
+ declare const AXPEntityListWidget: AXPWidgetConfig;
2951
+
2952
+ declare class AXPEditFileUploaderCommand implements AXPCommand<{
2953
+ file: AXPFileListItem;
2954
+ plugins?: {
2955
+ name: string;
2956
+ options?: unknown;
2957
+ }[];
2958
+ excludePlugins?: string[];
2959
+ enableTitleDescription?: boolean;
2960
+ isNewFile?: boolean;
2961
+ }, AXPFileListItem> {
2962
+ private readonly layoutBuilder;
2963
+ private readonly translationService;
2964
+ private readonly hooks;
2965
+ execute(input: {
2966
+ file: AXPFileListItem;
2967
+ plugins?: {
2968
+ name: string;
2969
+ options?: unknown;
2970
+ }[];
2971
+ excludePlugins?: string[];
2972
+ enableTitleDescription?: boolean;
2973
+ isNewFile?: boolean;
2974
+ }): Promise<AXPExecuteCommandResult<AXPFileListItem>>;
2975
+ private showEditDialog;
2976
+ /**
2977
+ * Build form fields from hook items (old format parameters)
2978
+ */
2979
+ private buildFormFields;
2980
+ /**
2981
+ * Build groups/containers from hook groups (old format groups)
2982
+ */
2983
+ private buildGroups;
2984
+ /**
2985
+ * Apply widget configuration to field based on widget type
2986
+ */
2987
+ private applyWidget;
2988
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEditFileUploaderCommand, never>;
2989
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEditFileUploaderCommand>;
2990
+ }
2991
+
2992
+ declare class AXPFileListComponent implements OnInit, OnDestroy {
2993
+ private fileTypeService;
2994
+ private fileStorageService;
2995
+ private commandExecutor;
2996
+ private hooks;
2997
+ isLoading: _angular_core.WritableSignal<boolean>;
2998
+ private fileTypes;
2999
+ onRemove: _angular_core.OutputEmitterRef<AXPFileListItem>;
3000
+ onRevert: _angular_core.OutputEmitterRef<AXPFileListItem>;
3001
+ onRename: _angular_core.OutputEmitterRef<AXPFileListItem>;
3002
+ readonly: _angular_core.InputSignal<boolean>;
3003
+ fileEditable: _angular_core.InputSignal<boolean>;
3004
+ /** When true, edit dialog shows name, title and description fields. Default false. */
3005
+ enableTitleDescription: _angular_core.InputSignal<boolean>;
3006
+ multiple: _angular_core.InputSignal<boolean>;
3007
+ files: _angular_core.InputSignal<AXPFileListItem[]>;
3008
+ plugins: _angular_core.InputSignal<{
3009
+ name: string;
3010
+ options?: unknown;
3011
+ }[] | undefined>;
3012
+ excludePlugins: _angular_core.InputSignal<string[] | undefined>;
3013
+ capabilities: _angular_core.InputSignal<AXCFileUploaderCapabilities | undefined>;
3014
+ /**
3015
+ * All files should be displayed, even those with `deleted` status.
3016
+ * The template will handle the visual differences based on the status.
2768
3017
  */
2769
3018
  displayFiles: _angular_core.Signal<AXPFileListItem[]>;
2770
3019
  private fileIdToActions;
@@ -3056,255 +3305,6 @@ declare class AXPFileUploaderWidgetService {
3056
3305
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderWidgetService>;
3057
3306
  }
3058
3307
 
3059
- declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
3060
- declare module '@acorex/platform/layout/widget-core' {
3061
- interface AXPWidgetTypesMap {
3062
- entityDefinitionProvider: 'entity-definition-provider-editor';
3063
- }
3064
- }
3065
-
3066
- declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
3067
- private readonly entityRegistry;
3068
- /**
3069
- * Last applied module filter (from context) to avoid redundant reloads.
3070
- */
3071
- private readonly lastModuleFilterKey;
3072
- /**
3073
- * Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
3074
- */
3075
- private readonly reloadWhenModuleContextChanges;
3076
- /**
3077
- * Options:
3078
- * - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
3079
- * - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
3080
- */
3081
- protected loadDataSourceRows(): Promise<Array<{
3082
- value: string;
3083
- title: string;
3084
- }>>;
3085
- refresh(): void;
3086
- /**
3087
- * Reads sibling field from context store data (same shape as `lodash/get` paths).
3088
- */
3089
- private readModuleFromContext;
3090
- /**
3091
- * Resolves a sibling field path relative to the current widget's parent path.
3092
- */
3093
- private resolveSiblingContextPath;
3094
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
3095
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
3096
- }
3097
-
3098
- declare class AXPEntityListTableService {
3099
- private readonly workflow;
3100
- private readonly commandService;
3101
- private readonly expressionEvaluator;
3102
- private readonly settings;
3103
- /**
3104
- * Convert Entity to List Widget Options
3105
- */
3106
- convertEntityToListOptions(entity: AXPEntity, options: any, allActions: AXPEntityCommandTriggerViewModel[]): Promise<AXPDataListWidgetComponentOptions>;
3107
- /**
3108
- * Create DataSource for Entity
3109
- */
3110
- private createDataSource;
3111
- /**
3112
- * Convert Properties to Columns
3113
- */
3114
- private createColumnsFromProperties;
3115
- /**
3116
- * Map EntityTableColumn to ListWidgetColumn
3117
- */
3118
- private mapEntityColumnToWidgetColumn;
3119
- /**
3120
- * Convert Entity Actions to Row Commands
3121
- */
3122
- private createRowCommands;
3123
- /**
3124
- * Wraps string values with AXP_ROW_EXPR_PREFIX so widget-renderer does not
3125
- * evaluate them (it only treats {{ ... }} as expressions). Data-list will
3126
- * unwrap and evaluate per row with row data. Only used for secondary commands.
3127
- */
3128
- private wrapRowExpr;
3129
- /**
3130
- * Check if entity has Selected Scope Actions
3131
- */
3132
- private hasSelectedScopeActions;
3133
- private evaluateExpressions;
3134
- /**
3135
- * Handle execution of a row command (shared by double-click and command handlers)
3136
- */
3137
- private handleRowCommand;
3138
- /**
3139
- * When a related entity list declares `excludeProperties`, row commands bypass the details page
3140
- * `execute()` merge — apply the same exclusions for embedded create/update commands.
3141
- */
3142
- private mergeRelatedListFormOptions;
3143
- /**
3144
- * Create default events
3145
- */
3146
- private createDefaultEvents;
3147
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListTableService, never>;
3148
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListTableService>;
3149
- }
3150
-
3151
- interface AXPEntityListToolbarConvertOptions {
3152
- excludeColumns?: string[];
3153
- includeColumns?: string[];
3154
- /** Related list: evaluated `AXPEntityTableColumn[]` from `AXPRelatedEntity.columns` */
3155
- relatedTableColumns?: AXPEntityTableColumn[];
3156
- customFilterDefinitions?: Partial<AXPFilterDefinition>[];
3157
- }
3158
- declare class AXPEntityListToolbarService {
3159
- private readonly widgetResolver;
3160
- /**
3161
- * Convert Entity to Toolbar Options
3162
- */
3163
- convertEntityToolbarOptions(entity: AXPEntity, options: AXPEntityListToolbarConvertOptions | undefined): Promise<{
3164
- filterDefinitions: AXPFilterDefinition[];
3165
- columnDefinitions: AXPColumnQuery[];
3166
- sortDefinitions: AXPSortDefinition[];
3167
- }>;
3168
- /**
3169
- * Merges custom filter definitions into the entity-derived list by `field`.
3170
- * Matching fields: custom properties are applied on top of the base definition.
3171
- * Non-matching custom entries are appended.
3172
- */
3173
- private mergeFilterDefinitions;
3174
- private filterFieldKey;
3175
- private mergeFilterDefinition;
3176
- /**
3177
- * Create Filter Definitions for Toolbar
3178
- */
3179
- private createFilterDefinitions;
3180
- /**
3181
- * Create Column Definitions for Toolbar.
3182
- * Includes both entity.properties and enriched columns (e.g. person.firstName with showAs).
3183
- */
3184
- private createColumnDefinitions;
3185
- /**
3186
- * Create Sort Definitions for Toolbar.
3187
- * Includes entity.properties with sort enabled, plus enriched columns (dotted paths).
3188
- */
3189
- private createSortDefinitions;
3190
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
3191
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListToolbarService>;
3192
- }
3193
-
3194
- declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3195
- #private;
3196
- protected entityService: AXPEntityDefinitionRegistryService;
3197
- protected workflow: AXPWorkflowService;
3198
- protected entityListTableService: AXPEntityListTableService;
3199
- protected entityListToolbarService: AXPEntityListToolbarService;
3200
- protected deviceService: AXPDeviceService;
3201
- protected commandService: AXPCommandService;
3202
- protected eventService: AXPBroadcastEventService;
3203
- private readonly expressionEvaluator;
3204
- private readonly route;
3205
- protected isMounted: _angular_core.WritableSignal<boolean>;
3206
- readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
3207
- protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
3208
- protected list: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
3209
- protected allWidgets: _angular_core.Signal<readonly AXPWidgetRendererDirective[]>;
3210
- protected listWidget: _angular_core.WritableSignal<AXPWidgetRendererDirective | undefined>;
3211
- protected toolbarWidget: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
3212
- protected selectedItems: _angular_core.WritableSignal<any[]>;
3213
- protected toolbarNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
3214
- protected destroyed: Subject<void>;
3215
- protected entitySource: _angular_core.Signal<any>;
3216
- protected excludeColumns: _angular_core.Signal<string[]>;
3217
- protected includeColumns: _angular_core.Signal<string[]>;
3218
- protected relatedTableColumns: _angular_core.Signal<AXPEntityTableColumn[] | undefined>;
3219
- protected customFilterDefinitions: _angular_core.Signal<Partial<AXPFilterDefinition>[] | undefined>;
3220
- protected externalActions: _angular_core.Signal<AXPEntityAction[]>;
3221
- protected maxHeight: _angular_core.Signal<string>;
3222
- protected showEntityActions: _angular_core.Signal<any>;
3223
- protected showToolbar: _angular_core.Signal<any>;
3224
- protected allActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
3225
- protected primaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
3226
- protected handleUnselectAll(): void;
3227
- protected secondaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
3228
- protected handleActionClick(item: AXPActionMenuItem): void;
3229
- protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
3230
- protected execute(commandName: string, _data: unknown): Promise<void>;
3231
- /**
3232
- * Resolves toolbar commands including nested dropdown (`items`) actions.
3233
- */
3234
- private findToolbarAction;
3235
- private evaluateToolbarExpressions;
3236
- /**
3237
- * Parses the `filters` query param (same shape as standalone entity list routes).
3238
- */
3239
- private parseFiltersFromRoute;
3240
- /**
3241
- * Route `filters` apply only when the active details `page` matches this list's entity
3242
- * (e.g. WorkOrder filters must not affect FailureRegister on the same asset layout).
3243
- */
3244
- private shouldApplyRouteFilters;
3245
- /**
3246
- * Merges route filters into related-entity toolbar filters (route wins per field).
3247
- */
3248
- private mergeToolbarFilters;
3249
- private getMergedToolbarFilters;
3250
- /**
3251
- * Applies merged route + parent-scope filters to the widget value and data source.
3252
- */
3253
- private applyMergedRouteFiltersToList;
3254
- /**
3255
- * Re-evaluates related-entity list filters from the live dialog form context (e.g. after create saves the main row id).
3256
- */
3257
- private applyRelatedFiltersFromContext;
3258
- /**
3259
- * Pushes current toolbar filters to the embedded list data source when both exist.
3260
- * Returns false while data-list is still mounting (see deferred listNode.set in ngOnInit).
3261
- */
3262
- private pushToolbarFiltersToDataSource;
3263
- /**
3264
- * Writes toolbar filters from specs and pushes them onto the data source so refresh/reload keeps the parent scope.
3265
- */
3266
- private applyRelatedFiltersFromContextAndDatasource;
3267
- /**
3268
- * Refreshes the embedded data list (toolbar / workflow). In wizard mode, `refresh` is patched to re-apply scoped filters first.
3269
- */
3270
- private refreshGridWithParentScopedFilters;
3271
- protected queries: undefined;
3272
- /**
3273
- * Validates that all required dependencies are available
3274
- */
3275
- private hasRequiredDependencies;
3276
- /**
3277
- * Handles all query-related changes (filters, sorts, columns)
3278
- */
3279
- private handleQueryChanges;
3280
- /**
3281
- * Analyzes what has changed between current and previous queries
3282
- */
3283
- private analyzeChanges;
3284
- /**
3285
- * Applies filter and sort changes to the data source
3286
- */
3287
- private applyDataSourceChanges;
3288
- /**
3289
- * Handles list refresh logic based on changes and mount status
3290
- */
3291
- private handleListRefresh;
3292
- /**
3293
- * Handles column-related changes
3294
- * TODO: Implement column change logic
3295
- */
3296
- private handleColumnChanges;
3297
- protected context: {};
3298
- protected previousQueries: any;
3299
- ngOnInit(): Promise<void>;
3300
- ngAfterViewInit(): Promise<void>;
3301
- ngOnDestroy(): void;
3302
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListWidgetViewComponent, never>;
3303
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityListWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
3304
- }
3305
-
3306
- declare const AXPEntityListWidget: AXPWidgetConfig;
3307
-
3308
3308
  type AXPLookupWidgetLookType = 'select' | 'lookup';
3309
3309
  /**
3310
3310
  * How the lookup column resolves related items for display in entity lists.