@acorex/platform 20.8.8 → 20.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +125 -27
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-DqdSjjp6.mjs → acorex-platform-common-common-settings.provider-Bi1RYif5.mjs} +49 -27
  4. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +712 -205
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +420 -127
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +557 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +634 -114
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs} +9 -9
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +3365 -880
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +456 -204
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +15129 -10185
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +413 -171
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +507 -441
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs → acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs} +21 -76
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs +116 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +5 -5
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +4 -4
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +6578 -4314
  42. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-native.mjs +8 -7
  44. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-runtime.mjs +391 -166
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +16 -23
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
  53. package/fesm2022/{acorex-platform-themes-default-error-401.component-53VB-PS_.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
  55. package/fesm2022/{acorex-platform-themes-default-error-404.component-DVF9soT5.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1784 -61
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs} +24 -25
  66. package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
  68. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
  70. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-themes-shared.mjs +408 -305
  72. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  73. package/fesm2022/acorex-platform-workflow.mjs +359 -100
  74. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  75. package/fesm2022/acorex-platform.mjs.map +1 -1
  76. package/package.json +31 -31
  77. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +14 -2
  78. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +304 -31
  79. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +188 -44
  80. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
  81. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +160 -38
  82. package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +854 -125
  83. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
  84. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +926 -65
  85. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +80 -47
  86. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +274 -197
  87. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +608 -122
  88. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  89. package/types/acorex-platform-runtime.d.ts +571 -0
  90. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +113 -4
  91. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +5 -4
  92. package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +162 -81
  93. package/fesm2022/acorex-platform-common-common-settings.provider-DqdSjjp6.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +0 -111
  100. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +0 -160
  105. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DZeByyDy.mjs +0 -1610
  107. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DZeByyDy.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +0 -120
  109. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +0 -1
  110. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +0 -1
  112. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +0 -19
  114. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +0 -1
  116. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +0 -65
  119. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +0 -1
  120. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +0 -64
  121. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +0 -1
  122. package/runtime/index.d.ts +0 -307
  123. /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
@@ -1,31 +1,33 @@
1
1
  import * as _acorex_platform_core from '@acorex/platform/core';
2
- import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPUserReference, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem } from '@acorex/platform/core';
2
+ import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPMultiLanguageString, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, 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
- import { ElementRef, InjectionToken, Injector, Type, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
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 i3 from '@acorex/platform/layout/widget-core';
8
8
  import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetRendererDirective } from '@acorex/platform/layout/widget-core';
9
- import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPCategoryTreeDataSource } from '@acorex/platform/layout/components';
9
+ import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorAllowCreate, AXPCategoryTreeDataSource } from '@acorex/platform/layout/components';
10
10
  import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';
11
- import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
11
+ import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
12
12
  import * as _acorex_platform_common from '@acorex/platform/common';
13
- import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPRelatedEntity, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPQueryFilter } from '@acorex/platform/common';
13
+ import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPRelatedEntity, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPEntityPage, AXPQueryFilter } from '@acorex/platform/common';
14
14
  import * as i1 from '@angular/router';
15
15
  import { ResolveFn } from '@angular/router';
16
16
  import * as rxjs from 'rxjs';
17
17
  import { Subject } from 'rxjs';
18
+ export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
18
19
  import * as i2 from '@acorex/platform/workflow';
19
20
  import { AXPWorkflowService, AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';
21
+ import * as i4 from '@acorex/platform/layout/builder';
22
+ import { IActionBuilder, AXPDialogRef, IFormFieldBuilder } from '@acorex/platform/layout/builder';
20
23
  import { AXPSessionService } from '@acorex/platform/auth';
21
24
  import { AXTreeViewNode, AXTreeViewComponent, AXTreeViewNodeSelectEvent } from '@acorex/components/tree-view';
22
- import { AXTranslationService } from '@acorex/core/translation';
23
25
  import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
24
- import { IActionBuilder, AXPDialogRef, IFormFieldBuilder } from '@acorex/platform/layout/builder';
25
26
  import { AXBasePageComponent } from '@acorex/components/page';
26
27
  import { AXFormatService } from '@acorex/core/format';
27
28
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
28
- import { AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
29
+ import * as _acorex_core_translation from '@acorex/core/translation';
30
+ import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
29
31
 
30
32
  declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
31
33
  private entityForm;
@@ -40,6 +42,70 @@ declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
40
42
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCreateEntityCommand>;
41
43
  }
42
44
 
45
+ /**
46
+ * Merged into AI/tool payloads for `Entity:Create` so post-create navigation does not run from agent flows.
47
+ * Applied in the AI module when normalizing tool arguments (not in the generic command executor).
48
+ */
49
+ declare const axpCreateEntityAiToolInputDefaults: {
50
+ readonly __context__: {
51
+ readonly options: {
52
+ readonly process: {
53
+ readonly redirect: false;
54
+ };
55
+ };
56
+ };
57
+ };
58
+ declare const axpCreateEntityCommandDefinition: {
59
+ key: string;
60
+ title: string;
61
+ description: string;
62
+ executionMode: "frontend";
63
+ inputs: ({
64
+ name: string;
65
+ title: string;
66
+ description: string;
67
+ interface: {
68
+ name: string;
69
+ };
70
+ validations?: undefined;
71
+ } | {
72
+ name: string;
73
+ title: string;
74
+ description: string;
75
+ interface: {
76
+ name: string;
77
+ };
78
+ validations: {
79
+ rule: string;
80
+ }[];
81
+ })[];
82
+ outcomes: {
83
+ mode: "dynamic";
84
+ summary: string;
85
+ derivesFrom: string;
86
+ };
87
+ capabilities: "ai"[];
88
+ ai: {
89
+ shortDescription: string;
90
+ usage: {
91
+ whenToUse: string[];
92
+ avoidWhen: string[];
93
+ followUpTools: string[];
94
+ };
95
+ tags: string[];
96
+ toolInputDefaults: {
97
+ __context__: {
98
+ readonly options: {
99
+ readonly process: {
100
+ readonly redirect: false;
101
+ };
102
+ };
103
+ };
104
+ };
105
+ };
106
+ categories: _acorex_platform_core.AXPDefinitionCategory[];
107
+ };
108
+
43
109
  declare class AXPUpdateEntityCommand implements AXPCommand<any, any> {
44
110
  private readonly entityForm;
45
111
  private readonly settingsService;
@@ -96,6 +162,15 @@ declare class AXPEntityDetailPopoverComponent {
96
162
  protected entityDetails: _angular_core.WritableSignal<any>;
97
163
  protected isLoadingDetails: _angular_core.WritableSignal<boolean>;
98
164
  protected isDetailPopoverOpen: _angular_core.WritableSignal<boolean>;
165
+ /**
166
+ * Stable list of property widgets for the template. Must be a signal (computed), not a method:
167
+ * calling a method from the template rebuilds nodes every CD cycle and can make the widget renderer loop.
168
+ */
169
+ protected readonly entityPropertiesWithWidgets: _angular_core.Signal<{
170
+ name: string;
171
+ title: string;
172
+ node: AXPWidgetNode;
173
+ }[]>;
99
174
  /**
100
175
  * Show the entity detail popover
101
176
  */
@@ -121,11 +196,12 @@ declare class AXPEntityDetailPopoverComponent {
121
196
  * Name priority MUST come before widget-type priority.
122
197
  */
123
198
  private getNameImportanceScore;
124
- protected getEntityPropertiesWithWidgets(): Array<{
125
- name: string;
126
- title: string;
127
- node: AXPWidgetNode;
128
- }>;
199
+ private buildEntityPropertiesWithWidgets;
200
+ /**
201
+ * Resolves the data path for a property. For lookups with expose, returns the expanded path
202
+ * when data has it (e.g. personTitle). Otherwise returns property name (e.g. personTitleId).
203
+ */
204
+ private resolveDataPath;
129
205
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverComponent, never>;
130
206
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDetailPopoverComponent, "axp-entity-detail-popover", never, { "entity": { "alias": "entity"; "required": true; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
131
207
  }
@@ -200,7 +276,7 @@ declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefini
200
276
  }
201
277
 
202
278
  declare class AXPEntityCommandTriggerViewModel {
203
- priority: 'primary' | 'secondary';
279
+ priority: 'primary' | 'secondary' | 'none';
204
280
  order: number;
205
281
  color: AXStyleColorType;
206
282
  icon: string;
@@ -214,7 +290,9 @@ declare class AXPEntityCommandTriggerViewModel {
214
290
  options: any;
215
291
  metadata?: AXPMetaData;
216
292
  default?: boolean;
217
- constructor(entity: AXPEntity, action: AXPEntityAction);
293
+ items?: AXPEntityCommandTriggerViewModel[];
294
+ isChild?: boolean;
295
+ constructor(entity: AXPEntity, action: AXPEntityAction, isChild?: boolean);
218
296
  }
219
297
  declare class AXPEntityListViewColumnViewModel {
220
298
  readonly property: AXPEntityProperty;
@@ -289,6 +367,49 @@ declare const AXPEntityEventsKeys: {
289
367
  REFRESH_DATA: string;
290
368
  };
291
369
 
370
+ interface AXPEntityListExpandRowRef {
371
+ data: Record<string, unknown>;
372
+ }
373
+ /**
374
+ * Resolves a stable row id from entity list row data.
375
+ */
376
+ declare function getEntityListRowId(data: Record<string, unknown>, key?: string): string;
377
+ /**
378
+ * Finds row data in a hierarchical grid tree (root rows and nested children).
379
+ */
380
+ declare function findEntityListRowDataInTree(items: unknown[], id: string, key: string): Record<string, unknown> | null;
381
+ /**
382
+ * Restores expanded rows after data load (parents before children).
383
+ */
384
+ declare function restoreEntityListExpandedRows(options: {
385
+ expandedRowIds: string[];
386
+ rowKey: string;
387
+ getDisplayedRows: () => unknown[];
388
+ expandRow: (row: AXPEntityListExpandRowRef) => Promise<void>;
389
+ }): Promise<void>;
390
+
391
+ interface AXPEntityListPagingState {
392
+ take: number;
393
+ skip: number;
394
+ }
395
+ /**
396
+ * Applies take/skip to the data source without triggering {@link AXDataSource.load}.
397
+ */
398
+ declare function applyDataSourcePagingWithoutLoad(dataSource: AXDataSource, paging: AXPEntityListPagingState): void;
399
+ declare function getDataSourcePageIndex(dataSource: AXDataSource): number;
400
+ declare function normalizeListPaging(paging: Partial<AXPEntityListPagingState> | undefined, defaultTake: number): AXPEntityListPagingState;
401
+
402
+ /** How entity list UI state (columns, filters, paging, etc.) is persisted for the user. */
403
+ type AXPEntityListPersistenceMode = 'none' | 'persistent' | 'route';
404
+ declare const AXPEntityListPersistenceModeDefault: AXPEntityListPersistenceMode;
405
+ declare function normalizeEntityListPersistenceMode(value: unknown): AXPEntityListPersistenceMode;
406
+ declare function canPersistEntityListState(mode: AXPEntityListPersistenceMode): boolean;
407
+ /** `none` never reads list state from user settings. */
408
+ declare function shouldLoadEntityListStateFromStorage(mode: AXPEntityListPersistenceMode): boolean;
409
+ /** `route` clears stored list state when the route entity (module + name) changes. */
410
+ declare function shouldResetEntityListStateOnRouteEntry(mode: AXPEntityListPersistenceMode): boolean;
411
+ declare const ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY = "axp-entity-list-route-context";
412
+
292
413
  /**
293
414
  * Entity Event Dispatcher - A wrapper for entity-specific events
294
415
  * Handles pattern-based dispatching for entity operations with wildcard support
@@ -402,6 +523,15 @@ declare class AXPEntityMasterListViewModel {
402
523
  private lastAppliedSortKey;
403
524
  private lastAppliedFilterKey;
404
525
  private hasQueryParamsFilters;
526
+ /** Persisted expanded row ids for hierarchical lists (per view). */
527
+ private readonly expandedRowIds;
528
+ /** When true, row expand/collapse is not written to user settings (restore in progress). */
529
+ skipExpandedRowPersistence: boolean;
530
+ /** Resolved take/skip for the current view (null until loaded from settings). */
531
+ private readonly resolvedListPaging;
532
+ /** When true, pager changes are not persisted (programmatic UI sync). */
533
+ skipListPagingPersistence: boolean;
534
+ private listPersistenceMode;
405
535
  events$: Subject<{
406
536
  action: string;
407
537
  meta?: any;
@@ -422,8 +552,29 @@ declare class AXPEntityMasterListViewModel {
422
552
  dataSource: AXDataSource<any>;
423
553
  constructor(injector: Injector, config: AXPEntity);
424
554
  private syncShowRowIndexColumnSetting;
555
+ /**
556
+ * Applies {@link AXPCommonSettings.EntityListPersistenceMode} for this list instance.
557
+ * Call once when the list view model is created (before loading list UI state).
558
+ */
559
+ initializeListPersistence(): Promise<void>;
560
+ getListPersistenceMode(): Promise<AXPEntityListPersistenceMode>;
561
+ shouldLoadPersistedListState(): Promise<boolean>;
562
+ shouldPersistListState(): Promise<boolean>;
563
+ private clearEntityListSettings;
425
564
  applySettings(): Promise<void>;
426
- saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'filters' | 'sorts', data?: any): Promise<void>;
565
+ ensureListPagingResolved(): Promise<void>;
566
+ getResolvedListPaging(): AXPEntityListPagingState;
567
+ applyPagingToDataSourceWithoutLoad(): void;
568
+ saveListPaging(take: number, skip: number): void;
569
+ resetListPagingSkip(): void;
570
+ private loadListPagingFromViewSettings;
571
+ getExpandedRowIds(): string[];
572
+ /**
573
+ * Updates persisted expanded row ids when the user expands or collapses a tree row.
574
+ */
575
+ updateExpandedRowId(rowId: string, expanded: boolean): void;
576
+ handleRowExpandChange(rowData: Record<string, unknown>): void;
577
+ saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'listPaging' | 'filters' | 'sorts' | 'expandedRows', data?: unknown): Promise<void>;
427
578
  selectedItems: _angular_core.WritableSignal<any[]>;
428
579
  /**
429
580
  * Selected category from the category sidebar (left panel).
@@ -451,6 +602,8 @@ declare class AXPEntityMasterListViewModel {
451
602
  hasInlineFilters: _angular_core.Signal<boolean>;
452
603
  beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
453
604
  private allActions;
605
+ /** Flattened actions including children for execute lookup */
606
+ private flattenedActions;
454
607
  getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
455
608
  getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
456
609
  selectedScopeActionsCount: _angular_core.Signal<number>;
@@ -504,6 +657,11 @@ declare class AXPEntityMasterListViewModel {
504
657
  * pre-fills categoryIds and categories for the create form.
505
658
  */
506
659
  private mergeDefaultCategoryForCreate;
660
+ /**
661
+ * Seeds create payloads with fixed list-view conditions (e.g. scope=T on the tenant dashboards view)
662
+ * so new rows match the view context and downstream queries (such as home dashboard) can find them.
663
+ */
664
+ private mergeViewConditionsForCreate;
507
665
  private evaluateExpressions;
508
666
  execute(command: AXPExecuteCommand): Promise<void>;
509
667
  destroy(): void;
@@ -644,6 +802,23 @@ declare class AXPEntityMasterUpdateViewModelFactory {
644
802
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMasterUpdateViewModelFactory>;
645
803
  }
646
804
 
805
+ type AXPCollectEntityQuickSearchPathsResolver = (moduleName: string, entityName: string) => Promise<AXPEntity | null>;
806
+ /**
807
+ * Lodash-get paths for quick search from a single entity definition: string-like property names
808
+ * plus lookup `expose[].target` paths (e.g. `brand.title`).
809
+ */
810
+ declare function collectQuickSearchPathsFromSingleEntityDefinition(entity: AXPEntity | null | undefined): string[];
811
+ /**
812
+ * Adds dotted paths from master columns (`name` or `options.dataPath`), e.g. `person.fullName`, `jobDefinition.title`.
813
+ */
814
+ declare function collectNestedFieldPathsFromEntityColumns(entity: AXPEntity | null | undefined): string[];
815
+ /**
816
+ * Collects lodash-get field paths used for mock/API quick search (`contains` / OR filters):
817
+ * host properties and lookup expose targets, dotted column paths, and merge-detail related entities
818
+ * prefixed with the related entity merge `persistence.dataPath` (e.g. `person.firstName`).
819
+ */
820
+ declare function collectEntityQuickSearchFieldPaths(entity: AXPEntity | null | undefined, resolveRelatedDefinition: AXPCollectEntityQuickSearchPathsResolver): Promise<string[]>;
821
+
647
822
  declare class AXPEntityPreloadFiltersViewModel {
648
823
  private injector;
649
824
  private config;
@@ -786,6 +961,7 @@ type AXPEntityModifier = (context: AXPEntityModifierContext) => void;
786
961
  interface AXPEntityModifierProvider {
787
962
  entityName: string | RegExp;
788
963
  modifier: AXPEntityModifier;
964
+ order?: number;
789
965
  }
790
966
 
791
967
  declare function ensureListActions(ctx: AXPEntityModifierContext): void;
@@ -826,8 +1002,10 @@ declare class AXPEntityMiddleware {
826
1002
  protected providedActionPlugins: AXPEntityActionPlugin[];
827
1003
  protected injector: Injector;
828
1004
  constructor();
829
- register(entityName: string | RegExp, modifier: AXPEntityModifier): void;
1005
+ register(entityName: string | RegExp, modifier: AXPEntityModifier, order?: number): void;
830
1006
  process(entity: AXPEntity): Promise<AXPEntity>;
1007
+ private createModifierStep;
1008
+ private createPluginStep;
831
1009
  private wildcardToRegExp;
832
1010
  private normalizeRegExp;
833
1011
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMiddleware, never>;
@@ -847,6 +1025,7 @@ interface AXPEntityDefinitionPreloader {
847
1025
  }
848
1026
  declare class AXPEntityDefinitionRegistryService {
849
1027
  private middleware;
1028
+ private columnEnrichment;
850
1029
  private onChanged;
851
1030
  get onChanged$(): rxjs.Observable<{
852
1031
  name: string;
@@ -908,28 +1087,142 @@ declare class AXPEntityDefinitionRegistryService {
908
1087
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDefinitionRegistryService>;
909
1088
  }
910
1089
 
1090
+ type AXPEntityAggregateReducerType = 'count' | 'sum' | 'min' | 'max' | 'avg';
1091
+ interface AXPEntityAggregateMeasure {
1092
+ reducer: AXPEntityAggregateReducerType;
1093
+ /** Required for sum, min, max, and avg. Ignored for count (rows per group). */
1094
+ field?: string;
1095
+ /** Result column name; defaults are derived from the reducer and field. */
1096
+ alias?: string;
1097
+ }
1098
+ /**
1099
+ * Aggregate stored rows after the same filter/sort pipeline as {@link AXPQueryRequest}.
1100
+ * Group keys use dotted field paths (same as lodash-style getters).
1101
+ */
1102
+ interface AXPEntityAggregateRequest extends Pick<AXPQueryRequest, 'filter' | 'sort'> {
1103
+ groupBy: string[];
1104
+ measures: AXPEntityAggregateMeasure[];
1105
+ }
1106
+ interface AXPEntityAggregateResult {
1107
+ rows: Record<string, unknown>[];
1108
+ }
1109
+ interface AXPEntityQueryAllOptions {
1110
+ /**
1111
+ * Page size for backends that read page-by-page (HTTP API).
1112
+ * In-memory backends load the filtered set once and ignore this.
1113
+ */
1114
+ pageSize?: number;
1115
+ /** Maximum rows to return or scan (safety cap). */
1116
+ maxRows?: number;
1117
+ }
1118
+ interface AXPEntityQueryAllResult<T> {
1119
+ items: T[];
1120
+ /** Row count matching filter/sort before applying maxRows. */
1121
+ total: number;
1122
+ /** True when maxRows prevented returning every matching row. */
1123
+ truncated: boolean;
1124
+ }
1125
+ interface AXPEntityAggregateOptions {
1126
+ /** Maximum rows to load for aggregation when the backend pages remotely (default 50_000). */
1127
+ maxRows?: number;
1128
+ /** Page size for remote paging during aggregate (default 500). */
1129
+ pageSize?: number;
1130
+ }
1131
+
1132
+ /**
1133
+ * Pure aggregation over already-filtered plain rows (e.g. outputs of {@link filterSortEntityRows}).
1134
+ */
1135
+ declare function computeEntityAggregates<T extends Record<string, unknown>>(rows: T[], request: AXPEntityAggregateRequest): Record<string, unknown>[];
1136
+
1137
+ interface RunEntityQueryAdapters<T = unknown> {
1138
+ getRawAll(entityName: string): Promise<T[]>;
1139
+ getDirectChildCount(categoryId: string, entityName: string): Promise<number>;
1140
+ getAllChildCategoryIds(categoryId: string, entityName: string): Promise<string[]>;
1141
+ }
1142
+ /**
1143
+ * Check if the entity is a category entity (ends with 'Category').
1144
+ */
1145
+ declare function isCategoryEntity(entityName: string): boolean;
1146
+ /**
1147
+ * Check if the filter is a category filter (contains operator on categoryIds field).
1148
+ * Handles both simple filters and compound filters.
1149
+ */
1150
+ declare function isCategoryFilter(filter: any): boolean;
1151
+ /**
1152
+ * Loads raw rows for an entity and applies the same sorting and filtering as {@link runEntityQuery},
1153
+ * without pagination.
1154
+ */
1155
+ declare function filterSortEntityRows<T = unknown>(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, adapters: RunEntityQueryAdapters<T>): Promise<T[]>;
1156
+ /**
1157
+ * Shared entity query logic: sort, filter (including recursive category filter), childrenCount, pagination.
1158
+ */
1159
+ declare function runEntityQuery<T = unknown>(entityName: string, request: AXPQueryRequest, adapters: RunEntityQueryAdapters<T>): Promise<AXPPagedListResult<T>>;
1160
+
1161
+ /**
1162
+ * One audit point in time for a record lifecycle event.
1163
+ *
1164
+ * Used inside {@link AXPRecordAuditInfo} (`created`, `updated`, `deleted`).
1165
+ * Backends and mock middleware typically set `at` and `by`; `reason` and `source`
1166
+ * (for example `api`, `system`, `import`) are optional diagnostic fields.
1167
+ */
911
1168
  interface AXPAuditEvent {
912
1169
  at?: Date;
913
1170
  by?: AXPUserReference;
1171
+ /** Optional business or technical reason for the event. */
914
1172
  reason?: string;
1173
+ /** Optional origin of the change (for example `api`, `system`, `import`). */
915
1174
  source?: string;
916
1175
  }
1176
+ /**
1177
+ * Aggregated audit trail for a persisted row.
1178
+ *
1179
+ * Filled by APIs or connectivity mock middleware when creating, updating, or
1180
+ * soft-deleting records. UI surfaces may show these via the history plugin or
1181
+ * custom columns. Version snapshot pipelines often **omit** this object from
1182
+ * stored snapshots while still applying it to live payloads.
1183
+ *
1184
+ * @remarks Fields are optional today; callers should tolerate partial data.
1185
+ */
917
1186
  interface AXPRecordAuditInfo {
918
1187
  created?: AXPAuditEvent;
919
1188
  updated?: AXPAuditEvent;
920
1189
  deleted?: AXPAuditEvent;
921
1190
  }
1191
+ /**
1192
+ * Cross-cutting flags that are not part of the domain schema but affect how a
1193
+ * row is shown or edited (visibility, built-in/system rows, immutability).
1194
+ *
1195
+ * Module entity models sometimes expose only this slice (for example
1196
+ * `stateInfo` on business units) when the rest of the row uses a bespoke shape.
1197
+ *
1198
+ * @remarks Entity list/detail flows should honor these flags where applicable.
1199
+ */
922
1200
  interface AXPRecordStateInfo {
923
1201
  isHidden?: boolean;
924
1202
  isSystem?: boolean;
925
1203
  isImmutable?: boolean;
1204
+ /** @deprecated Prefer explicit domain modeling over this flag. */
926
1205
  isDistributed?: boolean;
927
1206
  }
1207
+ /**
1208
+ * Tenancy and actor scope for a row in a multi-tenant application.
1209
+ *
1210
+ * Used to associate a record with a tenant, application instance, or owning
1211
+ * user when the API returns ownership metadata alongside domain fields.
1212
+ */
928
1213
  interface AXPRecordOwnershipInfo {
929
1214
  tenantId?: string;
930
1215
  applicationId?: string;
931
1216
  userId?: string;
932
1217
  }
1218
+ /**
1219
+ * Base shape for **entity row** TypeScript models across modules: a stable
1220
+ * identifier plus optional platform metadata.
1221
+ *
1222
+ * Module-specific interfaces extend this with domain properties
1223
+ * (`extends AXPEntityModel<string>` / `AXPEntityModel<Id>`) while reusing
1224
+ * `auditInfo`, `stateInfo`, and `ownershipInfo` when the backend sends them.
1225
+ */
933
1226
  interface AXPEntityModel<Id> {
934
1227
  id: Id;
935
1228
  auditInfo?: AXPRecordAuditInfo;
@@ -961,6 +1254,14 @@ declare abstract class AXPEntityStorageService<TKey, TDetailDto extends AXPEntit
961
1254
  abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
962
1255
  abstract getAll(entityName: string): Promise<TListItemDto[]>;
963
1256
  abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1257
+ abstract count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1258
+ abstract queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1259
+ abstract getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
1260
+ abstract exists(entityName: string, id: TKey): Promise<boolean>;
1261
+ abstract upsertOne(entityName: string, entity: TCreateDto, options?: {
1262
+ merge?: boolean;
1263
+ }): Promise<TKey>;
1264
+ abstract aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
964
1265
  }
965
1266
  declare abstract class AXPEntityDataProvider<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
966
1267
  abstract get entityName(): string;
@@ -971,6 +1272,14 @@ declare abstract class AXPEntityDataProvider<TKey, TDetailDto extends AXPEntityD
971
1272
  abstract deleteOne(id: TKey): Promise<void>;
972
1273
  abstract insertOne(entity: TCreateDto): Promise<TKey>;
973
1274
  abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1275
+ abstract count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1276
+ abstract queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1277
+ abstract getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
1278
+ abstract exists(id: TKey): Promise<boolean>;
1279
+ abstract upsertOne(entity: TCreateDto, options?: {
1280
+ merge?: boolean;
1281
+ }): Promise<TKey>;
1282
+ abstract aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
974
1283
  }
975
1284
  declare class AXPEntityDataProviderImpl<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> implements AXPEntityDataProvider<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
976
1285
  private storageService;
@@ -983,6 +1292,14 @@ declare class AXPEntityDataProviderImpl<TKey, TDetailDto extends AXPEntityDetail
983
1292
  updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
984
1293
  deleteOne(id: TKey): Promise<void>;
985
1294
  insertOne(entity: TCreateDto): Promise<TKey>;
1295
+ count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1296
+ queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1297
+ getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
1298
+ exists(id: TKey): Promise<boolean>;
1299
+ upsertOne(entity: TCreateDto, options?: {
1300
+ merge?: boolean;
1301
+ }): Promise<TKey>;
1302
+ aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
986
1303
  }
987
1304
  declare abstract class AXMEntityCrudService<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
988
1305
  abstract insertOne(request: TCreateDto): Promise<TKey>;
@@ -1015,6 +1332,14 @@ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailD
1015
1332
  }): Promise<AXPPagedListResult<TListItemDto>>;
1016
1333
  getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity$1<TKey>>>;
1017
1334
  get storageService(): AXPEntityStorageService<any, any, any, any, any>;
1335
+ count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1336
+ queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1337
+ getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
1338
+ exists(id: TKey): Promise<boolean>;
1339
+ upsertOne(entity: TCreateDto, options?: {
1340
+ merge?: boolean;
1341
+ }): Promise<TKey>;
1342
+ aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
1018
1343
  custom<Req, Res>(request: Req): Promise<void>;
1019
1344
  }
1020
1345
 
@@ -1060,9 +1385,59 @@ declare class AXPEntityResolver {
1060
1385
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityResolver>;
1061
1386
  }
1062
1387
 
1388
+ /**
1389
+ * Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
1390
+ * tabs): meta-data-builder → attachments → documents → comments → history.
1391
+ */
1392
+ type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'documents' | 'comments' | 'history';
1393
+ /** Identifies an `entity.pages` entry when skipping its order during recomputation. */
1394
+ interface SkipEntityComponentPageRef {
1395
+ componentKey: string;
1396
+ /** When set, only the page with this `field` is skipped (e.g. attachments / meta-data per field). */
1397
+ field?: string;
1398
+ }
1399
+ interface ResolveEntityPluginDetailPageOrderOptions {
1400
+ /** Component key of the page being added or updated (used to count sibling tabs in the same slot). */
1401
+ componentKey: string;
1402
+ /**
1403
+ * Ignore this page when counting siblings / recomputing (the page currently being updated).
1404
+ */
1405
+ skipPage?: SkipEntityComponentPageRef;
1406
+ /**
1407
+ * Field name for multi-page slots (`attachments`, `meta-data-builder`). Omit for single-tab slots.
1408
+ */
1409
+ field?: string;
1410
+ /** Gap between auto-assigned related tab orders. Default: 10. */
1411
+ relatedOrderStep?: number;
1412
+ /** Minimum start of the plugin zone (after related tabs). Default: 100_000. */
1413
+ pluginZoneFloor?: number;
1414
+ }
1415
+ /**
1416
+ * Resolves `layout.order` for a built-in plugin detail tab (`entity.pages`).
1417
+ *
1418
+ * 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
1419
+ * `order` (the composer otherwise treats them as +Infinity).
1420
+ * 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
1421
+ * comments → history, after all related tabs.
1422
+ */
1423
+ declare function resolveEntityPluginDetailPageOrder(input: {
1424
+ relatedEntities?: AXPRelatedEntity[];
1425
+ pages?: Array<AXPEntityPage & {
1426
+ field?: string;
1427
+ }>;
1428
+ }, slot: EntityDetailPluginPageSlot, options: ResolveEntityPluginDetailPageOrderOptions): number;
1429
+
1430
+ /**
1431
+ * Sort key for entries in `interfaces.master.{create|update|single}.properties`.
1432
+ * Uses `layout.order` when set and finite; otherwise the property index in that list.
1433
+ */
1434
+ declare function getMasterInterfacePropertySortKey(interfaceRow: {
1435
+ layout?: AXPEntityPropertyLayoutConfig | undefined;
1436
+ } | undefined, indexInMasterInterfaceList: number): number;
1437
+
1063
1438
  declare class AXPEntityModule {
1064
1439
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
1065
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof i2.AXPWorkflowModule, typeof i3.AXPWidgetCoreModule], never>;
1440
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof i2.AXPWorkflowModule, typeof i3.AXPWidgetCoreModule, typeof i4.LayoutBuilderModule], never>;
1066
1441
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
1067
1442
  }
1068
1443
 
@@ -1186,7 +1561,16 @@ interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetail
1186
1561
  getOne: (entityName: string, id: TKey) => Promise<TDetailDto>;
1187
1562
  insertOne: (entityName: string, entity: TCreateDto) => Promise<TKey>;
1188
1563
  query: (entityName: string, request: AXPQueryRequest) => Promise<AXPPagedListResult<TListItemDto>>;
1189
- updateOne: (entityName: string, id: TKey, data: Partial<TUpdateDto>) => Promise<void>;
1564
+ updateOne: (entityName: string, id: TKey, data: Partial<TUpdateDto>) => Promise<TDetailDto>;
1565
+ deleteOne: (entityName: string, id: TKey) => Promise<void>;
1566
+ count: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>) => Promise<number>;
1567
+ queryAll: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions) => Promise<AXPEntityQueryAllResult<TListItemDto>>;
1568
+ getMany: (entityName: string, ids: TKey[]) => Promise<(TListItemDto | null)[]>;
1569
+ exists: (entityName: string, id: TKey) => Promise<boolean>;
1570
+ upsertOne: (entityName: string, entity: TCreateDto, options?: {
1571
+ merge?: boolean;
1572
+ }) => Promise<TKey>;
1573
+ aggregate: (entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions) => Promise<AXPEntityAggregateResult>;
1190
1574
  };
1191
1575
  }
1192
1576
  interface AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
@@ -1232,41 +1616,57 @@ declare const columnWidthMiddleware: AXPEntityModifier;
1232
1616
  declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
1233
1617
 
1234
1618
  /**
1235
- * Configuration for section ordering
1619
+ * Default order for common list view columns.
1620
+ * Lower numbers appear first. Columns not in this map get order 500 (middle).
1621
+ * Use high numbers (990+) for columns that should appear at the end.
1622
+ */
1623
+ declare const DEFAULT_COLUMN_ORDER: Record<string, number>;
1624
+ /**
1625
+ * Entity modifier that sorts list view columns by default order.
1626
+ * Similar to layout-ordering for sections/properties, but for list columns.
1627
+ */
1628
+ declare const columnOrderingMiddleware: AXPEntityModifier;
1629
+ /**
1630
+ * Factory to create a column ordering middleware with custom order config
1631
+ */
1632
+ declare const createColumnOrderingMiddlewareProvider: (columnOrder?: Record<string, number>, entityName?: string | RegExp) => AXPEntityModifierProvider;
1633
+ /**
1634
+ * Default provider that applies column ordering to all entities
1635
+ */
1636
+ declare const columnOrderingMiddlewareProvider: AXPEntityModifierProvider;
1637
+
1638
+ /**
1639
+ * Default colSpans for two properties in one section (`md` / `lg`).
1640
+ * Missing `positions[*].colSpan` are filled only; entities keep full control.
1236
1641
  */
1642
+ interface PairSpanRule {
1643
+ first: string;
1644
+ second: string;
1645
+ /** Col span applied to {@link first} */
1646
+ firstSpan: number;
1647
+ /** Col span applied to {@link second} */
1648
+ secondSpan: number;
1649
+ breakpoints?: readonly ('sm' | 'md' | 'lg')[];
1650
+ }
1237
1651
  interface SectionOrderConfig {
1238
- /**
1239
- * Default order for common sections
1240
- * Lower numbers appear first
1241
- */
1242
1652
  sections: Record<string, number>;
1653
+ properties: Record<string, number>;
1243
1654
  /**
1244
- * Default order for properties within sections
1245
- * Key format: 'sectionId.propertyName' or just 'propertyName' for any section
1655
+ * Defaults for pairing two columns (e.g. code + title). Replace or extend defaults.
1656
+ * - `undefined`: use {@link DEFAULT_PAIR_SPAN_RULES}
1657
+ * - `false`: do not apply any pair spans
1658
+ * - `[...]` + spread `DEFAULT_PAIR_SPAN_RULES` when you want to append custom pairs
1246
1659
  */
1247
- properties: Record<string, number>;
1660
+ pairSpanRules?: PairSpanRule[] | false;
1248
1661
  }
1249
1662
  /**
1250
- * Default order for common sections
1663
+ * Default shipped rules: narrow identifier + wider title on `md` / `lg`.
1251
1664
  */
1665
+ declare const DEFAULT_PAIR_SPAN_RULES: readonly PairSpanRule[];
1252
1666
  declare const DEFAULT_SECTION_ORDER: Record<string, number>;
1253
- /**
1254
- * Default order for common properties
1255
- * Format: 'sectionId.propertyName' for section-specific or 'propertyName' for any section
1256
- */
1257
1667
  declare const DEFAULT_PROPERTY_ORDER: Record<string, number>;
1258
- /**
1259
- * Factory to create a layout ordering middleware
1260
- */
1261
1668
  declare const layoutOrderingMiddlewareFactory: (config: SectionOrderConfig) => AXPEntityModifier;
1262
- /**
1263
- * Helper to create a provider for the layout ordering middleware
1264
- * By default it applies to all entities using the '*' pattern
1265
- */
1266
1669
  declare const createLayoutOrderingMiddlewareProvider: (config?: Partial<SectionOrderConfig>, entityName?: string | RegExp) => AXPEntityModifierProvider;
1267
- /**
1268
- * Default provider registered with the default configuration
1269
- */
1270
1670
  declare const layoutOrderingMiddlewareProvider: AXPEntityModifierProvider;
1271
1671
 
1272
1672
  /**
@@ -1285,6 +1685,28 @@ declare class AXPLayoutOrderingConfigService {
1285
1685
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutOrderingConfigService>;
1286
1686
  }
1287
1687
 
1688
+ /**
1689
+ * Ensures all entities have a searchResult.description.
1690
+ * Uses @{i18nScope}:module.title when missing (guaranteed to exist in i18n).
1691
+ */
1692
+ declare const searchResultDescriptionMiddleware: AXPEntityModifier;
1693
+ declare const searchResultDescriptionMiddlewareProvider: AXPEntityModifierProvider;
1694
+
1695
+ /**
1696
+ * When enabled in regional settings ({@link AXPRegionalSetting.MultiLanguageSupport}), walks each
1697
+ * property's `schema.interface` widget tree and sets `options.multiLanguage` on matching text-like
1698
+ * editors (including nested GridLayout leaves such as `pre.content` / `post.summaryContent`), unless
1699
+ * the node already specifies `multiLanguage` (including explicit false to opt out).
1700
+ */
1701
+ declare const defaultMultiLanguageMiddleware: AXPEntityModifier;
1702
+ declare const defaultMultiLanguageMiddlewareProvider: AXPEntityModifierProvider;
1703
+
1704
+ /**
1705
+ * Registers entity CRUD commands and queries for the given entity keys.
1706
+ * Use in app/module providers; consumes AXPEntityService from this package.
1707
+ */
1708
+ declare function provideEntity(entityKeys: string[]): EnvironmentProviders;
1709
+
1288
1710
  interface AXPGetEntityDetailsQueryInput {
1289
1711
  entity: string;
1290
1712
  id: string;
@@ -1318,9 +1740,14 @@ declare class AXPGetEntityDetailsQuery implements AXPQuery<AXPGetEntityDetailsQu
1318
1740
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPGetEntityDetailsQuery>;
1319
1741
  }
1320
1742
 
1743
+ /**
1744
+ * i18n key for the synthetic root node ("all categories"). Resolve in templates with the translate pipe.
1745
+ */
1746
+ declare const AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY = "@general:terms.interface.selection.all-items";
1321
1747
  interface CategoryQueryEvent {
1322
1748
  skip: number;
1323
1749
  take: number;
1750
+ sort?: AXDataSourceSortOption[];
1324
1751
  filter?: {
1325
1752
  field?: string;
1326
1753
  value?: unknown;
@@ -1350,7 +1777,14 @@ interface CategoryTreeNodeData {
1350
1777
  }
1351
1778
  declare class AXPCategoryTreeService {
1352
1779
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1353
- protected readonly translate: AXTranslationService;
1780
+ private readonly translation;
1781
+ /** Sort field for list queries (backend); matches configured category display field. */
1782
+ private getAlphabeticalSortOptions;
1783
+ /**
1784
+ * Sort tree nodes by resolved display title (locale-aware).
1785
+ * Ensures correct order for multi-language titles when storage order differs from UI order.
1786
+ */
1787
+ private sortTreeNodesByDisplayTitle;
1354
1788
  /**
1355
1789
  * Initialize category tree data source
1356
1790
  */
@@ -1388,6 +1822,48 @@ declare class AXPCategoryTreeService {
1388
1822
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCategoryTreeService>;
1389
1823
  }
1390
1824
 
1825
+ declare class AXPRelatedColumnEnrichmentService {
1826
+ private readonly metadataResolver;
1827
+ /**
1828
+ * Enriches entity columns with:
1829
+ * 1. dataPath for FK columns (e.g. fromPersonId) derived from lookup property schema
1830
+ * 2. title and showAs from related entity properties for dotted paths (e.g. person.firstName)
1831
+ */
1832
+ enrich(entity: AXPEntity): Promise<AXPEntity>;
1833
+ /**
1834
+ * Derives dataPath for FK columns from lookup property schema.
1835
+ * Uses expose.target where source matches textField (default 'title').
1836
+ */
1837
+ private deriveDataPathForFkColumn;
1838
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRelatedColumnEnrichmentService, never>;
1839
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnEnrichmentService>;
1840
+ }
1841
+
1842
+ interface AXPRelatedColumnMetadata {
1843
+ title?: string;
1844
+ showAs?: AXPEntityTableColumn['showAs'];
1845
+ }
1846
+ declare class AXPRelatedColumnMetadataResolver {
1847
+ private readonly entityLoader;
1848
+ /**
1849
+ * Resolves title and showAs for a column that references a related entity property via dotted path.
1850
+ * Uses relatedEntities when available; falls back to lookup expose when not.
1851
+ */
1852
+ resolve(entity: AXPEntity, columnName: string): Promise<AXPRelatedColumnMetadata | null>;
1853
+ /**
1854
+ * Finds a lookup property whose expose target matches the dotted path.
1855
+ * Returns the lookup's entity string (e.g. 'PersonCore.Person') or null.
1856
+ */
1857
+ private findLookupEntityByExposeTarget;
1858
+ /**
1859
+ * Derives showAs from source property schema.
1860
+ * Passes through the full interface (type, options, children) for column display.
1861
+ */
1862
+ private deriveShowAs;
1863
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRelatedColumnMetadataResolver, never>;
1864
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnMetadataResolver>;
1865
+ }
1866
+
1391
1867
  interface IEntitySelectorStage {
1392
1868
  /** Select target entity using "module.entity" format */
1393
1869
  entity(fullName: string): IInterfaceSelectorStage;
@@ -1405,6 +1881,8 @@ interface IPropertyFilterStage {
1405
1881
  include(...propertyNames: string[]): IPropertyFilterStage;
1406
1882
  /** Exclude provided property names (by AXPEntityProperty.name). Ignored if include() was already set. */
1407
1883
  exclude(...propertyNames: string[]): IPropertyFilterStage;
1884
+ /** Mark provided property names as readonly. Overrides property schema for display. */
1885
+ readonlyProperties(...propertyNames: string[]): IPropertyFilterStage;
1408
1886
  /** Optionally override dialog title */
1409
1887
  title(text: string): IPropertyFilterStage;
1410
1888
  /** Provide initial dialog context/model data */
@@ -1433,6 +1911,7 @@ declare class AXPEntityFormBuilderService implements IEntitySelectorStage {
1433
1911
  private readonly entityRegistry;
1434
1912
  private readonly layoutBuilder;
1435
1913
  private readonly deviceService;
1914
+ private readonly expressionEvaluator;
1436
1915
  entity(fullName: string): IInterfaceSelectorStage;
1437
1916
  /**
1438
1917
  * Fetches a record by ID for the specified entity.
@@ -1476,6 +1955,14 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
1476
1955
  insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
1477
1956
  getAll(entityName: string): Promise<TListItemDto[]>;
1478
1957
  query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1958
+ count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1959
+ queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1960
+ getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
1961
+ exists(entityName: string, id: TKey): Promise<boolean>;
1962
+ upsertOne(entityName: string, entity: TCreateDto, options?: {
1963
+ merge?: boolean;
1964
+ }): Promise<TKey>;
1965
+ aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
1479
1966
  private runWithDedup;
1480
1967
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
1481
1968
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
@@ -1494,12 +1981,23 @@ declare function entityMasterCrudActions(options?: {
1494
1981
  }): AXPEntityAction[];
1495
1982
  declare function entityMasterRecordActions(): AXPEntityAction[];
1496
1983
  declare function entityDetailsCreateActions(parentId: string): AXPEntityAction;
1984
+ /**
1985
+ * Type-level Create with empty `process.data`; the FK is supplied from `relatedEntity.persistence.foreignKeyField`
1986
+ * when the related list is built (see `mergeForeignKeyFieldIntoCreateActions`).
1987
+ */
1988
+ declare function entityDetailsCreateActionsDeferredParent(): AXPEntityAction;
1989
+ /**
1990
+ * Ensures each type-level `Entity:Create` action includes `process.data[foreignKeyField]` bound to the parent row id.
1991
+ */
1992
+ declare function mergeForeignKeyFieldIntoCreateActions(foreignKeyField: string | undefined, actions: AXPEntityAction[] | undefined): AXPEntityAction[];
1993
+ /** Property names hidden on nested Create from a related list (`excludeProperties` plus `foreignKeyField` when set). */
1994
+ declare function collectNestedCreateHiddenProperties(relatedEntity: AXPRelatedEntity): string[] | undefined;
1497
1995
  declare function entityDetailsSimpleCondition(fk: string): AXPQueryFilter;
1498
1996
  declare function entityDetailsReferenceCondition(type: string): AXPQueryFilter[];
1499
1997
  declare function entityDetailsEditAction(): AXPEntityAction;
1500
1998
  declare function entityDetailsNewEditAction(): AXPEntityAction;
1501
1999
  declare function entityOverrideDetailsViewAction(): AXPEntityAction;
1502
- declare function entityDetailsCrudActions(parentId: string, options?: {
2000
+ declare function entityDetailsCrudActions(parentId?: string, options?: {
1503
2001
  create?: boolean;
1504
2002
  delete?: boolean;
1505
2003
  view?: boolean;
@@ -1524,6 +2022,8 @@ declare function detectEntityChanges(oldObj: any, newObj: any): AXPEntityChangeS
1524
2022
 
1525
2023
  declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent implements OnInit {
1526
2024
  protected readonly categoryTreeService: AXPCategoryTreeService;
2025
+ /** i18n key for the synthetic "all items" root row; resolved in the template with the translate pipe. */
2026
+ protected readonly categoryTreeRootTitleI18nKey = "@general:terms.interface.selection.all-items";
1527
2027
  private readonly translationService;
1528
2028
  protected readonly highlightService: AXHighlightService;
1529
2029
  private readonly changeDetectorRef;
@@ -1863,14 +2363,14 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
1863
2363
  private singleOrMultiple;
1864
2364
  protected getItemLabel(item: any): string;
1865
2365
  /**
1866
- * Get item path as array for breadcrumb component
2366
+ * Get item path as array for breadcrumb component (raw MLS or string per segment).
1867
2367
  */
1868
- protected getItemPath(item: any): string[];
2368
+ protected getItemPath(item: any): AXPMultiLanguageString[];
1869
2369
  /**
1870
2370
  * Join path array with separator.
1871
2371
  * Override this method to customize the separator (e.g., " > ", " -> ", " / ")
1872
2372
  */
1873
- protected joinPath(path: string[]): string;
2373
+ protected joinPath(path: unknown[]): string;
1874
2374
  protected getItemId(item: any): string;
1875
2375
  /**
1876
2376
  * Calculate the full path from root to the item.
@@ -1882,7 +2382,6 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
1882
2382
  }
1883
2383
 
1884
2384
  declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetComponent<any> {
1885
- protected readonly formatService: AXFormatService;
1886
2385
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1887
2386
  protected entity: _angular_core.Signal<string>;
1888
2387
  protected multiple: _angular_core.Signal<boolean>;
@@ -1894,12 +2393,11 @@ declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetCompone
1894
2393
  private entityDef;
1895
2394
  protected displayItems: _angular_core.WritableSignal<{
1896
2395
  id: string;
1897
- text: string;
2396
+ titleRaw: AXPMultiLanguageString | null | undefined;
1898
2397
  }[]>;
1899
2398
  private efEntity;
1900
2399
  private efDisplay;
1901
2400
  private extractItem;
1902
- private getDisplayText;
1903
2401
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetViewComponent, never>;
1904
2402
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetViewComponent, "axp-entity-category-widget-view", never, {}, {}, never, never, true, never>;
1905
2403
  }
@@ -1907,7 +2405,9 @@ declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetCompone
1907
2405
  declare const AXPEntityCategoryWidget: AXPWidgetConfig;
1908
2406
 
1909
2407
  declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
1910
- sections: _angular_core.InputSignal<string[]>;
2408
+ private readonly mlsResolver;
2409
+ /** Plain string or locale map per segment; truncation uses resolved text (see {@link resolvedSectionTexts}). */
2410
+ sections: _angular_core.InputSignal<readonly (_acorex_core_translation.AXMultiLanguageString | null | undefined)[]>;
1911
2411
  characterLimit: _angular_core.InputSignal<number | "auto">;
1912
2412
  sectionLimit: _angular_core.InputSignal<number | "auto">;
1913
2413
  separatorIcon: _angular_core.InputSignal<string>;
@@ -1917,6 +2417,8 @@ declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
1917
2417
  protected isExpanded: _angular_core.WritableSignal<boolean>;
1918
2418
  private containerWidth;
1919
2419
  private resizeObserver;
2420
+ /** Resolved display strings for length / ellipsis (same rules as the pipe). */
2421
+ protected resolvedSectionTexts: _angular_core.Signal<string[]>;
1920
2422
  protected effectiveCharacterLimit: _angular_core.Signal<number>;
1921
2423
  protected effectiveSectionLimit: _angular_core.Signal<number>;
1922
2424
  protected hasTruncatedText: _angular_core.Signal<boolean>;
@@ -1948,6 +2450,45 @@ declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
1948
2450
  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>;
1949
2451
  }
1950
2452
 
2453
+ declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
2454
+ declare module '@acorex/platform/layout/widget-core' {
2455
+ interface AXPWidgetTypesMap {
2456
+ entityDefinitionProvider: 'entity-definition-provider-editor';
2457
+ }
2458
+ }
2459
+
2460
+ declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
2461
+ private readonly entityRegistry;
2462
+ /**
2463
+ * Last applied module filter (from context) to avoid redundant reloads.
2464
+ */
2465
+ private readonly lastModuleFilterKey;
2466
+ /**
2467
+ * Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
2468
+ */
2469
+ private readonly reloadWhenModuleContextChanges;
2470
+ /**
2471
+ * Options:
2472
+ * - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
2473
+ * - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
2474
+ */
2475
+ protected loadDataSourceRows(): Promise<Array<{
2476
+ value: string;
2477
+ title: string;
2478
+ }>>;
2479
+ refresh(): void;
2480
+ /**
2481
+ * Reads sibling field from context store data (same shape as `lodash/get` paths).
2482
+ */
2483
+ private readModuleFromContext;
2484
+ /**
2485
+ * Resolves a sibling field path relative to the current widget's parent path.
2486
+ */
2487
+ private resolveSiblingContextPath;
2488
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
2489
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
2490
+ }
2491
+
1951
2492
  declare class AXPEntityListTableService {
1952
2493
  private readonly workflow;
1953
2494
  private readonly commandService;
@@ -1988,6 +2529,11 @@ declare class AXPEntityListTableService {
1988
2529
  * Handle execution of a row command (shared by double-click and command handlers)
1989
2530
  */
1990
2531
  private handleRowCommand;
2532
+ /**
2533
+ * When a related entity list declares `excludeProperties`, row commands bypass the details page
2534
+ * `execute()` merge — apply the same exclusions for embedded create/update commands.
2535
+ */
2536
+ private mergeRelatedListFormOptions;
1991
2537
  /**
1992
2538
  * Create default events
1993
2539
  */
@@ -2026,11 +2572,13 @@ declare class AXPEntityListToolbarService {
2026
2572
  */
2027
2573
  private createFilterDefinitions;
2028
2574
  /**
2029
- * Create Column Definitions for Toolbar
2575
+ * Create Column Definitions for Toolbar.
2576
+ * Includes both entity.properties and enriched columns (e.g. person.firstName with showAs).
2030
2577
  */
2031
2578
  private createColumnDefinitions;
2032
2579
  /**
2033
- * Create Sort Definitions for Toolbar
2580
+ * Create Sort Definitions for Toolbar.
2581
+ * Includes entity.properties with sort enabled, plus enriched columns (dotted paths).
2034
2582
  */
2035
2583
  private createSortDefinitions;
2036
2584
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
@@ -2047,6 +2595,7 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2047
2595
  protected commandService: AXPCommandService;
2048
2596
  protected eventService: AXPBroadcastEventService;
2049
2597
  private readonly expressionEvaluator;
2598
+ private readonly route;
2050
2599
  protected isMounted: _angular_core.WritableSignal<boolean>;
2051
2600
  readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
2052
2601
  protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
@@ -2073,7 +2622,46 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2073
2622
  protected handleActionClick(item: AXPActionMenuItem): void;
2074
2623
  protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
2075
2624
  protected execute(commandName: string, _data: unknown): Promise<void>;
2625
+ /**
2626
+ * Resolves toolbar commands including nested dropdown (`items`) actions.
2627
+ */
2628
+ private findToolbarAction;
2076
2629
  private evaluateToolbarExpressions;
2630
+ /**
2631
+ * Parses the `filters` query param (same shape as standalone entity list routes).
2632
+ */
2633
+ private parseFiltersFromRoute;
2634
+ /**
2635
+ * Route `filters` apply only when the active details `page` matches this list's entity
2636
+ * (e.g. WorkOrder filters must not affect FailureRegister on the same asset layout).
2637
+ */
2638
+ private shouldApplyRouteFilters;
2639
+ /**
2640
+ * Merges route filters into related-entity toolbar filters (route wins per field).
2641
+ */
2642
+ private mergeToolbarFilters;
2643
+ private getMergedToolbarFilters;
2644
+ /**
2645
+ * Applies merged route + parent-scope filters to the widget value and data source.
2646
+ */
2647
+ private applyMergedRouteFiltersToList;
2648
+ /**
2649
+ * Re-evaluates related-entity list filters from the live dialog form context (e.g. after create saves the main row id).
2650
+ */
2651
+ private applyRelatedFiltersFromContext;
2652
+ /**
2653
+ * Pushes current toolbar filters to the embedded list data source when both exist.
2654
+ * Returns false while data-list is still mounting (see deferred listNode.set in ngOnInit).
2655
+ */
2656
+ private pushToolbarFiltersToDataSource;
2657
+ /**
2658
+ * Writes toolbar filters from specs and pushes them onto the data source so refresh/reload keeps the parent scope.
2659
+ */
2660
+ private applyRelatedFiltersFromContextAndDatasource;
2661
+ /**
2662
+ * Refreshes the embedded data list (toolbar / workflow). In wizard mode, `refresh` is patched to re-apply scoped filters first.
2663
+ */
2664
+ private refreshGridWithParentScopedFilters;
2077
2665
  protected queries: undefined;
2078
2666
  /**
2079
2667
  * Validates that all required dependencies are available
@@ -2127,7 +2715,7 @@ declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any>
2127
2715
  private efEntity;
2128
2716
  private efDisplay;
2129
2717
  private extractItem;
2130
- private getDisplayText;
2718
+ private getDisplayRaw;
2131
2719
  private get __class();
2132
2720
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetViewComponent, never>;
2133
2721
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetViewComponent, "axp-lookup-widget-view", never, {}, {}, never, never, true, never>;
@@ -2144,7 +2732,7 @@ interface AXPEntityDataSelectorOptions {
2144
2732
  name: string;
2145
2733
  dir: 'asc' | 'desc';
2146
2734
  }[];
2147
- allowCreate?: boolean;
2735
+ allowCreate?: AXPDataSelectorAllowCreate;
2148
2736
  searchFields?: string[];
2149
2737
  initialSearchTerm?: string;
2150
2738
  selectedItemIds?: string[] | number[];
@@ -2165,10 +2753,21 @@ declare class AXPEntityDataSelectorService {
2165
2753
  private readonly filterOperatorMiddleware;
2166
2754
  private readonly widgetResolver;
2167
2755
  private readonly entityResolver;
2756
+ private readonly commandService;
2168
2757
  /**
2169
2758
  * Open entity data selector popup
2170
2759
  */
2171
2760
  open(options: AXPEntityDataSelectorOptions): Promise<AXPEntityDataSelectorResult | null>;
2761
+ /**
2762
+ * Execute Entity:Create and return created item.
2763
+ * Used by lookup widget and data selector for inline create.
2764
+ */
2765
+ executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick'): Promise<any | null>;
2766
+ /**
2767
+ * Normalize item's phones/emails for expose/display.
2768
+ * Call this when receiving items from any source (create, API, selector).
2769
+ */
2770
+ normalizeItemContactArrays(item: any): any;
2172
2771
  /**
2173
2772
  * Create data selector configuration from entity options
2174
2773
  */
@@ -2186,9 +2785,19 @@ declare class AXPEntityDataSelectorService {
2186
2785
  */
2187
2786
  private getSearchFields;
2188
2787
  /**
2189
- * Check if entity supports create operation
2788
+ * Get allowCreate mode from entity
2789
+ */
2790
+ private getAllowCreate;
2791
+ /**
2792
+ * Execute Entity:Create and return created item
2793
+ */
2794
+ private executeCreate;
2795
+ /**
2796
+ * Normalize phones/emails from repeater form to plain arrays of { value: string }.
2797
+ * Repeater/ContactBox can return nested structure: { value: { label: "", value: "101010" } }
2798
+ * Contact widget expects: { value: "101010", label?: string }
2190
2799
  */
2191
- private canCreate;
2800
+ private normalizeContactArrays;
2192
2801
  /**
2193
2802
  * Create category tree data source from category entity key
2194
2803
  */
@@ -2212,6 +2821,37 @@ declare abstract class LookupWidgetLookBase {
2212
2821
  }
2213
2822
 
2214
2823
  type AXPLookupWidgetLookType = 'select' | 'lookup';
2824
+ /**
2825
+ * How the lookup column resolves related items for display in entity lists.
2826
+ * - `hydrated`: titles (and optional ids) are already on the row; inline preview + overflow popover use row data only.
2827
+ * - `idsWithCount`: ids and optional count live on the row; the cell shows a count summary and loads titles via entity `byKey` when the popover opens.
2828
+ * - `countOnly`: only a count is on the row; the popover loads ids/titles via a registered `AXPQuery` when opened.
2829
+ */
2830
+ type AXPLookupColumnResolveStrategy = 'hydrated' | 'idsWithCount' | 'countOnly';
2831
+ /**
2832
+ * Column list only: controls how the lookup column loads and displays related items in grids.
2833
+ * Omitted or empty strategy defaults to `hydrated` at runtime.
2834
+ */
2835
+ interface AXPLookupColumnResolveOptions {
2836
+ /** Default `hydrated` when omitted. */
2837
+ strategy?: AXPLookupColumnResolveStrategy;
2838
+ /** Lodash-style path on `rowData` for the displayed count (e.g. `rolesCount`). */
2839
+ countFieldPath?: string;
2840
+ /** Lodash-style path on `rowData` for the related id list (`idsWithCount`). If omitted, the column `rawValue` is used. */
2841
+ idsPath?: string;
2842
+ /** Registered query key for `AXPQueryExecutor.fetch` when using `countOnly`. */
2843
+ queryKey?: string;
2844
+ /**
2845
+ * Maps query input property names to lodash-style paths on `rowData` (e.g. `{ "userId": "id" }`).
2846
+ * May be a JSON string when set from the layout designer text field.
2847
+ */
2848
+ queryParams?: Record<string, string> | string;
2849
+ /**
2850
+ * Dot path into the named query result for the items array. Defaults to `items` when the result is an object.
2851
+ * If the query returns an array directly, leave unset and handle at runtime.
2852
+ */
2853
+ queryResultItemsPath?: string;
2854
+ }
2215
2855
  interface AXPLookupWidgetOptions {
2216
2856
  disabled?: boolean | AXPExpression;
2217
2857
  readonly?: boolean | AXPExpression;
@@ -2220,6 +2860,8 @@ interface AXPLookupWidgetOptions {
2220
2860
  look?: AXPLookupWidgetLookType;
2221
2861
  allowClear?: boolean;
2222
2862
  displayFormat?: string;
2863
+ /** Column list: lazy resolve and summary behavior. */
2864
+ columnResolve?: AXPLookupColumnResolveOptions;
2223
2865
  }
2224
2866
 
2225
2867
  declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any> {
@@ -2228,6 +2870,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2228
2870
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
2229
2871
  protected readonly entityService: AXPEntityService;
2230
2872
  protected readonly entityDataSelectorService: AXPEntityDataSelectorService;
2873
+ private readonly mlsResolver;
2231
2874
  protected componentLook: _angular_core.Signal<LookupWidgetLookBase | undefined>;
2232
2875
  protected expose: _angular_core.Signal<string | any[] | undefined>;
2233
2876
  protected entity: _angular_core.Signal<string>;
@@ -2236,11 +2879,13 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2236
2879
  protected textField: _angular_core.Signal<string>;
2237
2880
  protected hasClearButton: _angular_core.Signal<boolean>;
2238
2881
  protected customFilter: _angular_core.Signal<AXDataSourceFilterOption>;
2882
+ protected placeholder: _angular_core.Signal<string>;
2239
2883
  protected filterMode: _angular_core.Signal<boolean>;
2240
2884
  protected multiple: _angular_core.Signal<boolean>;
2241
2885
  protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
2242
2886
  protected defaultTextField: _angular_core.Signal<string>;
2243
2887
  protected displayField: _angular_core.Signal<string>;
2888
+ protected allowCreate: _angular_core.Signal<"none" | "full" | "quick">;
2244
2889
  protected valueField: _angular_core.Signal<string>;
2245
2890
  protected displayFormat: _angular_core.Signal<string | undefined>;
2246
2891
  protected conditions?: AXPQueryFilter[];
@@ -2254,10 +2899,15 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2254
2899
  private hasValue;
2255
2900
  private findByValue;
2256
2901
  protected handleComponentValueChanged(items: any[] | null): void;
2902
+ protected handleCreateClick(_e: AXClickEvent): Promise<void>;
2903
+ private executeCreate;
2257
2904
  protected setLoading: (loading: boolean) => void;
2258
2905
  protected setItems: (items: any[]) => void;
2259
2906
  /**
2260
- * Update expose data for empty state
2907
+ * Writes expose targets into context using per-path updates.
2908
+ * Avoids `contextService.patch()` with nested objects: patch shallow-merges top-level keys only,
2909
+ * so e.g. `{ person: { educationLevel: { id, title } } }` would replace the entire `person`
2910
+ * object and drop sibling fields like `person.educationLevelId`, causing a value/effect loop.
2261
2911
  */
2262
2912
  private expoesItems;
2263
2913
  outputs(): (string | {
@@ -2273,8 +2923,12 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2273
2923
 
2274
2924
  declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
2275
2925
  private readonly entityDetailPopoverService;
2926
+ private readonly translation;
2276
2927
  private readonly formatService;
2928
+ private readonly entityService;
2929
+ private readonly queryExecutor;
2277
2930
  protected moreButton: _angular_core.Signal<ElementRef<any> | undefined>;
2931
+ protected lazyTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
2278
2932
  protected morePopover: _angular_core.Signal<AXPopoverComponent | undefined>;
2279
2933
  protected host: ElementRef<any>;
2280
2934
  protected valueField: string;
@@ -2284,21 +2938,51 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
2284
2938
  protected maxVisible: number;
2285
2939
  protected displayFormat: _angular_core.Signal<string | undefined>;
2286
2940
  protected displayField: _angular_core.Signal<string>;
2941
+ protected columnResolve: _angular_core.Signal<AXPLookupColumnResolveOptions | undefined>;
2942
+ protected resolveStrategy: _angular_core.Signal<AXPLookupColumnResolveStrategy>;
2943
+ protected isHydratedStrategy: _angular_core.Signal<boolean>;
2287
2944
  protected isMorePopoverOpen: _angular_core.WritableSignal<boolean>;
2288
2945
  protected selectedItemIndex: _angular_core.WritableSignal<number>;
2946
+ protected resolvedPopoverItems: _angular_core.WritableSignal<any[]>;
2947
+ protected resolveStatus: _angular_core.WritableSignal<"error" | "idle" | "loading" | "ready">;
2948
+ protected resolveError: _angular_core.WritableSignal<string | null>;
2949
+ protected summaryLabel: _angular_core.WritableSignal<string>;
2950
+ protected popoverHeader: _angular_core.WritableSignal<string>;
2289
2951
  protected displayItems: _angular_core.Signal<any[]>;
2290
2952
  protected allItems: _angular_core.Signal<any[]>;
2291
2953
  protected visibleItems: _angular_core.Signal<any[]>;
2292
2954
  protected hasMoreItems: _angular_core.Signal<boolean>;
2293
- protected remainingItemsCount: _angular_core.Signal<number>;
2955
+ protected idsFromRow: _angular_core.Signal<any[]>;
2956
+ protected displayCount: _angular_core.Signal<number>;
2957
+ protected popoverListItems: _angular_core.Signal<any[]>;
2958
+ /** Avoid resetting lazy cache on every CD when `rowData` is a new object reference for the same row. */
2959
+ private previousLazyRowId;
2960
+ constructor();
2294
2961
  protected showMoreItems(): void;
2295
- protected onMorePopoverOpenChange(event: any): void;
2962
+ protected openLazyPopover(): void;
2963
+ protected onPopoverOpenChange(event: unknown): void;
2296
2964
  protected showItemDetail(item: any, index: number): Promise<void>;
2297
2965
  protected handleItemClick(index: number): void;
2298
- private openMorePopover;
2966
+ protected handleResolvedItemClick(index: number): void;
2967
+ protected handlePopoverItemClick(index: number): void;
2968
+ protected getDisplayRaw(item: any): string;
2969
+ private refreshSummaryLabel;
2970
+ private refreshPopoverHeader;
2971
+ private resetLazyState;
2972
+ private openPopoverFromRef;
2299
2973
  private closeMorePopover;
2974
+ private ensureLazyItemsLoaded;
2975
+ /**
2976
+ * ax-popover may emit a boolean, CustomEvent with detail, or a DOM Event depending on version.
2977
+ */
2978
+ private coercePopoverOpenEvent;
2979
+ private loadByIds;
2980
+ private loadByNamedQuery;
2981
+ private buildNamedQueryInput;
2982
+ private parseQueryParamsMap;
2983
+ private extractItemsFromQueryResult;
2300
2984
  private extractItem;
2301
- protected getDisplayText(item: any): string;
2985
+ private resolveDisplayValue;
2302
2986
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetColumnComponent, never>;
2303
2987
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetColumnComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
2304
2988
  }
@@ -2630,6 +3314,174 @@ declare class AXPMultiSourceSelectorWidgetColumnComponent extends AXPColumnWidge
2630
3314
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMultiSourceSelectorWidgetColumnComponent, "axp-multi-source-selector-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
2631
3315
  }
2632
3316
 
3317
+ declare class AXPSelectorStructureWidgetColumnComponent extends AXPValueWidgetComponent {
3318
+ protected identityField: _angular_core.Signal<string>;
3319
+ protected textField: _angular_core.Signal<string>;
3320
+ protected valueField: _angular_core.Signal<string>;
3321
+ protected previewIcon: _angular_core.Signal<string>;
3322
+ protected cellText: _angular_core.Signal<string>;
3323
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetColumnComponent, never>;
3324
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetColumnComponent, "axp-selector-structure-widget-column", never, {}, {}, never, never, true, never>;
3325
+ }
3326
+
3327
+ type AXPSelectorStructureSelectorMode = 'select' | 'lookup';
3328
+ type AXPSelectorStructureStructureMode = 'schema' | 'freeform';
3329
+ type AXPSelectorStructureIdentityDisplay = 'readonly' | 'hidden';
3330
+ /** UI layout: standard = global multi-select + collapse rows; compactPanel = per-row select (address-style). */
3331
+ type AXPSelectorStructurePresentationMode = 'standard' | 'compactPanel';
3332
+ interface AXPSelectorStructureFieldDef {
3333
+ name: string;
3334
+ title: string;
3335
+ widgetType: string;
3336
+ options?: Record<string, unknown>;
3337
+ }
3338
+ declare const AXPSelectorStructureWidget: AXPWidgetConfig;
3339
+ interface AXPSelectorStructureWidgetDesignerOptions {
3340
+ selectorMode?: AXPSelectorStructureSelectorMode;
3341
+ structureMode?: AXPSelectorStructureStructureMode;
3342
+ presentation?: AXPSelectorStructurePresentationMode;
3343
+ previewIcon?: string;
3344
+ placeholder?: string;
3345
+ contextSiblingPath?: string;
3346
+ identityField?: string;
3347
+ identityDisplay?: AXPSelectorStructureIdentityDisplay;
3348
+ valueField?: string;
3349
+ textField?: string;
3350
+ dataSource?: unknown;
3351
+ multiple?: boolean;
3352
+ lookup?: {
3353
+ entity?: string;
3354
+ look?: 'select' | 'lookup';
3355
+ filter?: unknown;
3356
+ hasClearButton?: boolean;
3357
+ };
3358
+ structureFields?: AXPSelectorStructureFieldDef[];
3359
+ freeformPath?: string;
3360
+ }
3361
+ interface AXPSelectorStructureWidgetViewOptions extends AXPSelectorStructureWidgetDesignerOptions {
3362
+ }
3363
+ interface AXPSelectorStructureWidgetEditOptions extends AXPSelectorStructureWidgetDesignerOptions {
3364
+ }
3365
+ interface AXPSelectorStructureWidgetColumnOptions {
3366
+ identityField?: string;
3367
+ textField?: string;
3368
+ previewIcon?: string;
3369
+ }
3370
+ interface AXPSelectorStructureWidgetPrintOptions {
3371
+ }
3372
+ interface AXPSelectorStructureWidgetOptions {
3373
+ designer: AXPSelectorStructureWidgetDesignerOptions;
3374
+ view: AXPSelectorStructureWidgetViewOptions;
3375
+ edit: AXPSelectorStructureWidgetEditOptions;
3376
+ print: AXPSelectorStructureWidgetPrintOptions;
3377
+ column: AXPSelectorStructureWidgetColumnOptions;
3378
+ }
3379
+
3380
+ declare class AXPSelectorStructureWidgetEditComponent extends AXPValueWidgetComponent {
3381
+ #private;
3382
+ private readonly entityRegistry;
3383
+ protected selectorMode: _angular_core.Signal<"select" | "lookup">;
3384
+ protected structureMode: _angular_core.Signal<"schema" | "freeform">;
3385
+ protected contextSiblingPath: _angular_core.Signal<string>;
3386
+ protected identityField: _angular_core.Signal<string>;
3387
+ protected identityDisplay: _angular_core.Signal<"readonly" | "hidden">;
3388
+ protected valueField: _angular_core.Signal<string>;
3389
+ protected textField: _angular_core.Signal<string>;
3390
+ protected multiple: _angular_core.Signal<boolean>;
3391
+ protected freeformPath: _angular_core.Signal<string>;
3392
+ protected lookupEntityKey: _angular_core.Signal<string | undefined>;
3393
+ protected lookupHasClearButton: _angular_core.Signal<boolean>;
3394
+ protected lookupCustomFilter: _angular_core.Signal<AXDataSourceFilterOption | undefined>;
3395
+ protected disabled: _angular_core.Signal<boolean>;
3396
+ protected presentationMode: _angular_core.Signal<"standard" | "compactPanel">;
3397
+ /** Compact panel (address-style) applies only to sibling select mode; lookup falls back to standard layout. */
3398
+ protected useCompactLayout: _angular_core.Signal<boolean>;
3399
+ protected previewIcon: _angular_core.Signal<string>;
3400
+ protected placeholder: _angular_core.Signal<string>;
3401
+ protected compactSelectPlaceholder: _angular_core.Signal<string>;
3402
+ protected addCompactItemLabel: _angular_core.Signal<string>;
3403
+ protected clearRowTitle: _angular_core.Signal<string>;
3404
+ protected removeRowTitle: _angular_core.Signal<string>;
3405
+ protected resolvedSiblingPath(): string;
3406
+ /**
3407
+ * Items shown in the selector: sibling context array when path is set, otherwise optional static `dataSource` array.
3408
+ */
3409
+ protected contextItems: _angular_core.Signal<unknown[]>;
3410
+ protected contextSelectDataSource: _angular_core.Signal<AXDataSource<unknown>>;
3411
+ protected selectedSourceItems: _angular_core.WritableSignal<unknown[]>;
3412
+ protected compactRowDataSources: _angular_core.Signal<AXDataSource<unknown>[]>;
3413
+ protected compactRowSelectedItems: _angular_core.Signal<unknown[][]>;
3414
+ protected lookupEntityDef: _angular_core.WritableSignal<AXPEntity | null>;
3415
+ protected defaultLookupSorts: _angular_core.Signal<AXDataSourceSortOption[]>;
3416
+ protected lookupDataSource: _angular_core.Signal<AXDataSource<unknown> | null>;
3417
+ protected lookupTextField: _angular_core.Signal<string>;
3418
+ protected lookupSelectedItems: _angular_core.WritableSignal<unknown[]>;
3419
+ protected rows: _angular_core.Signal<Record<string, unknown>[]>;
3420
+ protected structureFields: _angular_core.Signal<AXPSelectorStructureFieldDef[]>;
3421
+ protected structureFieldNodes: _angular_core.Signal<{
3422
+ name: string;
3423
+ title: string;
3424
+ node: AXPWidgetNode;
3425
+ }[]>;
3426
+ protected identityLabel: _angular_core.Signal<string>;
3427
+ protected identityNode: _angular_core.Signal<AXPWidgetNode | null>;
3428
+ protected freeformHeading: _angular_core.Signal<string>;
3429
+ protected keyPlaceholder: _angular_core.Signal<string>;
3430
+ protected valuePlaceholder: _angular_core.Signal<string>;
3431
+ protected addPairLabel: _angular_core.Signal<string>;
3432
+ protected removePairTitle: _angular_core.Signal<string>;
3433
+ protected disabledHint: _angular_core.Signal<string>;
3434
+ protected trackRow(row: Record<string, unknown>): unknown;
3435
+ protected rowCaption(row: Record<string, unknown>): string;
3436
+ protected isDraftRow(row: Record<string, unknown>): boolean;
3437
+ protected isRowSelectLocked(row: Record<string, unknown>): boolean;
3438
+ /**
3439
+ * Items available for row `index`: all source items minus keys already chosen on other committed rows;
3440
+ * always includes the current row's selected item so the select can display it.
3441
+ */
3442
+ protected exclusiveItemsForRow(index: number): unknown[];
3443
+ private newRowUid;
3444
+ protected handleCompactSelectChange(index: number, e: AXValueChangedEvent): void;
3445
+ protected applyCompactRowFromItem(index: number, rawItem: unknown | undefined): void;
3446
+ protected clearCompactRow(index: number): void;
3447
+ protected removeCompactRow(index: number): void;
3448
+ protected addCompactRow(): void;
3449
+ protected handleSelectValueChange(e: AXValueChangedEvent): void;
3450
+ protected handleLookupValueChange(e: AXValueChangedEvent): void;
3451
+ protected applyRowsFromSourceItems(items: unknown[]): void;
3452
+ protected handleSchemaContextChange(rowKey: unknown, e: AXPContextChangeEvent): void;
3453
+ protected freeformEntries(row: Record<string, unknown>): {
3454
+ key: string;
3455
+ value: string;
3456
+ index: number;
3457
+ }[];
3458
+ private serializeFreeformValue;
3459
+ protected onFreeformKeyInput(row: Record<string, unknown>, entry: {
3460
+ key: string;
3461
+ value: string;
3462
+ index: number;
3463
+ }, nextKey: string): void;
3464
+ protected patchFreeformValue(row: Record<string, unknown>, key: string, raw: string): void;
3465
+ protected removeFreeformKey(row: Record<string, unknown>, key: string): void;
3466
+ protected addFreeformPair(row: Record<string, unknown>): void;
3467
+ private renameFreeformKey;
3468
+ private patchFreeformMap;
3469
+ private tryParseFreeformString;
3470
+ private mergeListFilter;
3471
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetEditComponent, never>;
3472
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetEditComponent, "axp-selector-structure-widget-edit", never, {}, {}, never, never, true, never>;
3473
+ }
3474
+
3475
+ declare class AXPSelectorStructureWidgetViewComponent extends AXPValueWidgetComponent {
3476
+ protected identityField: _angular_core.Signal<string>;
3477
+ protected textField: _angular_core.Signal<string>;
3478
+ protected valueField: _angular_core.Signal<string>;
3479
+ protected previewIcon: _angular_core.Signal<string>;
3480
+ protected summaries: _angular_core.Signal<string[]>;
3481
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetViewComponent, never>;
3482
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetViewComponent, "axp-selector-structure-widget-view", never, {}, {}, never, never, true, never>;
3483
+ }
3484
+
2633
3485
  declare const AXPEntityCreateEvent: {
2634
3486
  (payload: {
2635
3487
  entity: string;
@@ -2751,14 +3603,23 @@ declare class AXPShowDetailViewAction extends AXPWorkflowAction {
2751
3603
  }
2752
3604
  declare const AXPShowDetailsViewWorkflow: AXPWorkflow;
2753
3605
 
3606
+ /** Optional list filters passed into `show-list-view` (e.g. from `Entity:List` with `conditions`). */
3607
+ interface AXPShowListViewCondition {
3608
+ name?: string;
3609
+ field?: string;
3610
+ operator?: {
3611
+ type: string;
3612
+ };
3613
+ value?: unknown;
3614
+ }
2754
3615
  declare class AXPShowListViewAction extends AXPWorkflowAction {
2755
3616
  private navigation;
2756
3617
  private sessionService;
2757
- execute(context?: any): Promise<void>;
3618
+ execute(context: AXPWorkflowContext): Promise<void>;
2758
3619
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowListViewAction, never>;
2759
3620
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowListViewAction>;
2760
3621
  }
2761
3622
  declare const AXPShowListViewWorkflow: AXPWorkflow;
2762
3623
 
2763
- export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, EntityBuilder, EntityDataAccessor, actionExists, cloneLayoutArrays, columnWidthMiddleware, columnWidthMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, isAXPMiddlewareAbortError, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider };
2764
- export type { AXPAuditEvent, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListToolbarConvertOptions, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, SectionOrderConfig };
3624
+ export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, canPersistEntityListState, cloneLayoutArrays, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, 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, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, isAXPMiddlewareAbortError, isCategoryEntity, isCategoryFilter, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mergeForeignKeyFieldIntoCreateActions, normalizeEntityListPersistenceMode, normalizeListPaging, provideEntity, resolveEntityPluginDetailPageOrder, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
3625
+ export type { AXPAuditEvent, AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowListViewCondition, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };