@acorex/platform 20.8.9 → 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-DVvuLUfF.mjs → acorex-platform-common-common-settings.provider-Bi1RYif5.mjs} +30 -32
  4. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +711 -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 +18667 -14048
  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} +302 -30
  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} +848 -63
  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-DVvuLUfF.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-D2CtNrSn.mjs +0 -1716
  107. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.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;
@@ -524,6 +602,8 @@ declare class AXPEntityMasterListViewModel {
524
602
  hasInlineFilters: _angular_core.Signal<boolean>;
525
603
  beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
526
604
  private allActions;
605
+ /** Flattened actions including children for execute lookup */
606
+ private flattenedActions;
527
607
  getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
528
608
  getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
529
609
  selectedScopeActionsCount: _angular_core.Signal<number>;
@@ -577,6 +657,11 @@ declare class AXPEntityMasterListViewModel {
577
657
  * pre-fills categoryIds and categories for the create form.
578
658
  */
579
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;
580
665
  private evaluateExpressions;
581
666
  execute(command: AXPExecuteCommand): Promise<void>;
582
667
  destroy(): void;
@@ -717,6 +802,23 @@ declare class AXPEntityMasterUpdateViewModelFactory {
717
802
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMasterUpdateViewModelFactory>;
718
803
  }
719
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
+
720
822
  declare class AXPEntityPreloadFiltersViewModel {
721
823
  private injector;
722
824
  private config;
@@ -923,6 +1025,7 @@ interface AXPEntityDefinitionPreloader {
923
1025
  }
924
1026
  declare class AXPEntityDefinitionRegistryService {
925
1027
  private middleware;
1028
+ private columnEnrichment;
926
1029
  private onChanged;
927
1030
  get onChanged$(): rxjs.Observable<{
928
1031
  name: string;
@@ -984,28 +1087,142 @@ declare class AXPEntityDefinitionRegistryService {
984
1087
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDefinitionRegistryService>;
985
1088
  }
986
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
+ */
987
1168
  interface AXPAuditEvent {
988
1169
  at?: Date;
989
1170
  by?: AXPUserReference;
1171
+ /** Optional business or technical reason for the event. */
990
1172
  reason?: string;
1173
+ /** Optional origin of the change (for example `api`, `system`, `import`). */
991
1174
  source?: string;
992
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
+ */
993
1186
  interface AXPRecordAuditInfo {
994
1187
  created?: AXPAuditEvent;
995
1188
  updated?: AXPAuditEvent;
996
1189
  deleted?: AXPAuditEvent;
997
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
+ */
998
1200
  interface AXPRecordStateInfo {
999
1201
  isHidden?: boolean;
1000
1202
  isSystem?: boolean;
1001
1203
  isImmutable?: boolean;
1204
+ /** @deprecated Prefer explicit domain modeling over this flag. */
1002
1205
  isDistributed?: boolean;
1003
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
+ */
1004
1213
  interface AXPRecordOwnershipInfo {
1005
1214
  tenantId?: string;
1006
1215
  applicationId?: string;
1007
1216
  userId?: string;
1008
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
+ */
1009
1226
  interface AXPEntityModel<Id> {
1010
1227
  id: Id;
1011
1228
  auditInfo?: AXPRecordAuditInfo;
@@ -1037,6 +1254,14 @@ declare abstract class AXPEntityStorageService<TKey, TDetailDto extends AXPEntit
1037
1254
  abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
1038
1255
  abstract getAll(entityName: string): Promise<TListItemDto[]>;
1039
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>;
1040
1265
  }
1041
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> {
1042
1267
  abstract get entityName(): string;
@@ -1047,6 +1272,14 @@ declare abstract class AXPEntityDataProvider<TKey, TDetailDto extends AXPEntityD
1047
1272
  abstract deleteOne(id: TKey): Promise<void>;
1048
1273
  abstract insertOne(entity: TCreateDto): Promise<TKey>;
1049
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>;
1050
1283
  }
1051
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> {
1052
1285
  private storageService;
@@ -1059,6 +1292,14 @@ declare class AXPEntityDataProviderImpl<TKey, TDetailDto extends AXPEntityDetail
1059
1292
  updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
1060
1293
  deleteOne(id: TKey): Promise<void>;
1061
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>;
1062
1303
  }
1063
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> {
1064
1305
  abstract insertOne(request: TCreateDto): Promise<TKey>;
@@ -1091,6 +1332,14 @@ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailD
1091
1332
  }): Promise<AXPPagedListResult<TListItemDto>>;
1092
1333
  getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity$1<TKey>>>;
1093
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>;
1094
1343
  custom<Req, Res>(request: Req): Promise<void>;
1095
1344
  }
1096
1345
 
@@ -1136,9 +1385,59 @@ declare class AXPEntityResolver {
1136
1385
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityResolver>;
1137
1386
  }
1138
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
+
1139
1438
  declare class AXPEntityModule {
1140
1439
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
1141
- 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>;
1142
1441
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
1143
1442
  }
1144
1443
 
@@ -1262,7 +1561,16 @@ interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetail
1262
1561
  getOne: (entityName: string, id: TKey) => Promise<TDetailDto>;
1263
1562
  insertOne: (entityName: string, entity: TCreateDto) => Promise<TKey>;
1264
1563
  query: (entityName: string, request: AXPQueryRequest) => Promise<AXPPagedListResult<TListItemDto>>;
1265
- 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>;
1266
1574
  };
1267
1575
  }
1268
1576
  interface AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
@@ -1308,41 +1616,57 @@ declare const columnWidthMiddleware: AXPEntityModifier;
1308
1616
  declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
1309
1617
 
1310
1618
  /**
1311
- * 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.
1312
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.
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
+ }
1313
1651
  interface SectionOrderConfig {
1314
- /**
1315
- * Default order for common sections
1316
- * Lower numbers appear first
1317
- */
1318
1652
  sections: Record<string, number>;
1653
+ properties: Record<string, number>;
1319
1654
  /**
1320
- * Default order for properties within sections
1321
- * 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
1322
1659
  */
1323
- properties: Record<string, number>;
1660
+ pairSpanRules?: PairSpanRule[] | false;
1324
1661
  }
1325
1662
  /**
1326
- * Default order for common sections
1663
+ * Default shipped rules: narrow identifier + wider title on `md` / `lg`.
1327
1664
  */
1665
+ declare const DEFAULT_PAIR_SPAN_RULES: readonly PairSpanRule[];
1328
1666
  declare const DEFAULT_SECTION_ORDER: Record<string, number>;
1329
- /**
1330
- * Default order for common properties
1331
- * Format: 'sectionId.propertyName' for section-specific or 'propertyName' for any section
1332
- */
1333
1667
  declare const DEFAULT_PROPERTY_ORDER: Record<string, number>;
1334
- /**
1335
- * Factory to create a layout ordering middleware
1336
- */
1337
1668
  declare const layoutOrderingMiddlewareFactory: (config: SectionOrderConfig) => AXPEntityModifier;
1338
- /**
1339
- * Helper to create a provider for the layout ordering middleware
1340
- * By default it applies to all entities using the '*' pattern
1341
- */
1342
1669
  declare const createLayoutOrderingMiddlewareProvider: (config?: Partial<SectionOrderConfig>, entityName?: string | RegExp) => AXPEntityModifierProvider;
1343
- /**
1344
- * Default provider registered with the default configuration
1345
- */
1346
1670
  declare const layoutOrderingMiddlewareProvider: AXPEntityModifierProvider;
1347
1671
 
1348
1672
  /**
@@ -1361,6 +1685,28 @@ declare class AXPLayoutOrderingConfigService {
1361
1685
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutOrderingConfigService>;
1362
1686
  }
1363
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
+
1364
1710
  interface AXPGetEntityDetailsQueryInput {
1365
1711
  entity: string;
1366
1712
  id: string;
@@ -1394,9 +1740,14 @@ declare class AXPGetEntityDetailsQuery implements AXPQuery<AXPGetEntityDetailsQu
1394
1740
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPGetEntityDetailsQuery>;
1395
1741
  }
1396
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";
1397
1747
  interface CategoryQueryEvent {
1398
1748
  skip: number;
1399
1749
  take: number;
1750
+ sort?: AXDataSourceSortOption[];
1400
1751
  filter?: {
1401
1752
  field?: string;
1402
1753
  value?: unknown;
@@ -1426,7 +1777,14 @@ interface CategoryTreeNodeData {
1426
1777
  }
1427
1778
  declare class AXPCategoryTreeService {
1428
1779
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1429
- 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;
1430
1788
  /**
1431
1789
  * Initialize category tree data source
1432
1790
  */
@@ -1464,6 +1822,48 @@ declare class AXPCategoryTreeService {
1464
1822
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCategoryTreeService>;
1465
1823
  }
1466
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
+
1467
1867
  interface IEntitySelectorStage {
1468
1868
  /** Select target entity using "module.entity" format */
1469
1869
  entity(fullName: string): IInterfaceSelectorStage;
@@ -1481,6 +1881,8 @@ interface IPropertyFilterStage {
1481
1881
  include(...propertyNames: string[]): IPropertyFilterStage;
1482
1882
  /** Exclude provided property names (by AXPEntityProperty.name). Ignored if include() was already set. */
1483
1883
  exclude(...propertyNames: string[]): IPropertyFilterStage;
1884
+ /** Mark provided property names as readonly. Overrides property schema for display. */
1885
+ readonlyProperties(...propertyNames: string[]): IPropertyFilterStage;
1484
1886
  /** Optionally override dialog title */
1485
1887
  title(text: string): IPropertyFilterStage;
1486
1888
  /** Provide initial dialog context/model data */
@@ -1509,6 +1911,7 @@ declare class AXPEntityFormBuilderService implements IEntitySelectorStage {
1509
1911
  private readonly entityRegistry;
1510
1912
  private readonly layoutBuilder;
1511
1913
  private readonly deviceService;
1914
+ private readonly expressionEvaluator;
1512
1915
  entity(fullName: string): IInterfaceSelectorStage;
1513
1916
  /**
1514
1917
  * Fetches a record by ID for the specified entity.
@@ -1552,6 +1955,14 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
1552
1955
  insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
1553
1956
  getAll(entityName: string): Promise<TListItemDto[]>;
1554
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>;
1555
1966
  private runWithDedup;
1556
1967
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
1557
1968
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
@@ -1570,12 +1981,23 @@ declare function entityMasterCrudActions(options?: {
1570
1981
  }): AXPEntityAction[];
1571
1982
  declare function entityMasterRecordActions(): AXPEntityAction[];
1572
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;
1573
1995
  declare function entityDetailsSimpleCondition(fk: string): AXPQueryFilter;
1574
1996
  declare function entityDetailsReferenceCondition(type: string): AXPQueryFilter[];
1575
1997
  declare function entityDetailsEditAction(): AXPEntityAction;
1576
1998
  declare function entityDetailsNewEditAction(): AXPEntityAction;
1577
1999
  declare function entityOverrideDetailsViewAction(): AXPEntityAction;
1578
- declare function entityDetailsCrudActions(parentId: string, options?: {
2000
+ declare function entityDetailsCrudActions(parentId?: string, options?: {
1579
2001
  create?: boolean;
1580
2002
  delete?: boolean;
1581
2003
  view?: boolean;
@@ -1600,6 +2022,8 @@ declare function detectEntityChanges(oldObj: any, newObj: any): AXPEntityChangeS
1600
2022
 
1601
2023
  declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent implements OnInit {
1602
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";
1603
2027
  private readonly translationService;
1604
2028
  protected readonly highlightService: AXHighlightService;
1605
2029
  private readonly changeDetectorRef;
@@ -1939,14 +2363,14 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
1939
2363
  private singleOrMultiple;
1940
2364
  protected getItemLabel(item: any): string;
1941
2365
  /**
1942
- * Get item path as array for breadcrumb component
2366
+ * Get item path as array for breadcrumb component (raw MLS or string per segment).
1943
2367
  */
1944
- protected getItemPath(item: any): string[];
2368
+ protected getItemPath(item: any): AXPMultiLanguageString[];
1945
2369
  /**
1946
2370
  * Join path array with separator.
1947
2371
  * Override this method to customize the separator (e.g., " > ", " -> ", " / ")
1948
2372
  */
1949
- protected joinPath(path: string[]): string;
2373
+ protected joinPath(path: unknown[]): string;
1950
2374
  protected getItemId(item: any): string;
1951
2375
  /**
1952
2376
  * Calculate the full path from root to the item.
@@ -1958,7 +2382,6 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
1958
2382
  }
1959
2383
 
1960
2384
  declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetComponent<any> {
1961
- protected readonly formatService: AXFormatService;
1962
2385
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1963
2386
  protected entity: _angular_core.Signal<string>;
1964
2387
  protected multiple: _angular_core.Signal<boolean>;
@@ -1970,12 +2393,11 @@ declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetCompone
1970
2393
  private entityDef;
1971
2394
  protected displayItems: _angular_core.WritableSignal<{
1972
2395
  id: string;
1973
- text: string;
2396
+ titleRaw: AXPMultiLanguageString | null | undefined;
1974
2397
  }[]>;
1975
2398
  private efEntity;
1976
2399
  private efDisplay;
1977
2400
  private extractItem;
1978
- private getDisplayText;
1979
2401
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetViewComponent, never>;
1980
2402
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetViewComponent, "axp-entity-category-widget-view", never, {}, {}, never, never, true, never>;
1981
2403
  }
@@ -1983,7 +2405,9 @@ declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetCompone
1983
2405
  declare const AXPEntityCategoryWidget: AXPWidgetConfig;
1984
2406
 
1985
2407
  declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
1986
- 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)[]>;
1987
2411
  characterLimit: _angular_core.InputSignal<number | "auto">;
1988
2412
  sectionLimit: _angular_core.InputSignal<number | "auto">;
1989
2413
  separatorIcon: _angular_core.InputSignal<string>;
@@ -1993,6 +2417,8 @@ declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
1993
2417
  protected isExpanded: _angular_core.WritableSignal<boolean>;
1994
2418
  private containerWidth;
1995
2419
  private resizeObserver;
2420
+ /** Resolved display strings for length / ellipsis (same rules as the pipe). */
2421
+ protected resolvedSectionTexts: _angular_core.Signal<string[]>;
1996
2422
  protected effectiveCharacterLimit: _angular_core.Signal<number>;
1997
2423
  protected effectiveSectionLimit: _angular_core.Signal<number>;
1998
2424
  protected hasTruncatedText: _angular_core.Signal<boolean>;
@@ -2024,6 +2450,45 @@ declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
2024
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>;
2025
2451
  }
2026
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
+
2027
2492
  declare class AXPEntityListTableService {
2028
2493
  private readonly workflow;
2029
2494
  private readonly commandService;
@@ -2064,6 +2529,11 @@ declare class AXPEntityListTableService {
2064
2529
  * Handle execution of a row command (shared by double-click and command handlers)
2065
2530
  */
2066
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;
2067
2537
  /**
2068
2538
  * Create default events
2069
2539
  */
@@ -2102,11 +2572,13 @@ declare class AXPEntityListToolbarService {
2102
2572
  */
2103
2573
  private createFilterDefinitions;
2104
2574
  /**
2105
- * 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).
2106
2577
  */
2107
2578
  private createColumnDefinitions;
2108
2579
  /**
2109
- * Create Sort Definitions for Toolbar
2580
+ * Create Sort Definitions for Toolbar.
2581
+ * Includes entity.properties with sort enabled, plus enriched columns (dotted paths).
2110
2582
  */
2111
2583
  private createSortDefinitions;
2112
2584
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
@@ -2123,6 +2595,7 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2123
2595
  protected commandService: AXPCommandService;
2124
2596
  protected eventService: AXPBroadcastEventService;
2125
2597
  private readonly expressionEvaluator;
2598
+ private readonly route;
2126
2599
  protected isMounted: _angular_core.WritableSignal<boolean>;
2127
2600
  readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
2128
2601
  protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
@@ -2149,7 +2622,46 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2149
2622
  protected handleActionClick(item: AXPActionMenuItem): void;
2150
2623
  protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
2151
2624
  protected execute(commandName: string, _data: unknown): Promise<void>;
2625
+ /**
2626
+ * Resolves toolbar commands including nested dropdown (`items`) actions.
2627
+ */
2628
+ private findToolbarAction;
2152
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;
2153
2665
  protected queries: undefined;
2154
2666
  /**
2155
2667
  * Validates that all required dependencies are available
@@ -2203,7 +2715,7 @@ declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any>
2203
2715
  private efEntity;
2204
2716
  private efDisplay;
2205
2717
  private extractItem;
2206
- private getDisplayText;
2718
+ private getDisplayRaw;
2207
2719
  private get __class();
2208
2720
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetViewComponent, never>;
2209
2721
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetViewComponent, "axp-lookup-widget-view", never, {}, {}, never, never, true, never>;
@@ -2220,7 +2732,7 @@ interface AXPEntityDataSelectorOptions {
2220
2732
  name: string;
2221
2733
  dir: 'asc' | 'desc';
2222
2734
  }[];
2223
- allowCreate?: boolean;
2735
+ allowCreate?: AXPDataSelectorAllowCreate;
2224
2736
  searchFields?: string[];
2225
2737
  initialSearchTerm?: string;
2226
2738
  selectedItemIds?: string[] | number[];
@@ -2241,10 +2753,21 @@ declare class AXPEntityDataSelectorService {
2241
2753
  private readonly filterOperatorMiddleware;
2242
2754
  private readonly widgetResolver;
2243
2755
  private readonly entityResolver;
2756
+ private readonly commandService;
2244
2757
  /**
2245
2758
  * Open entity data selector popup
2246
2759
  */
2247
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;
2248
2771
  /**
2249
2772
  * Create data selector configuration from entity options
2250
2773
  */
@@ -2262,9 +2785,19 @@ declare class AXPEntityDataSelectorService {
2262
2785
  */
2263
2786
  private getSearchFields;
2264
2787
  /**
2265
- * 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 }
2266
2799
  */
2267
- private canCreate;
2800
+ private normalizeContactArrays;
2268
2801
  /**
2269
2802
  * Create category tree data source from category entity key
2270
2803
  */
@@ -2288,6 +2821,37 @@ declare abstract class LookupWidgetLookBase {
2288
2821
  }
2289
2822
 
2290
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
+ }
2291
2855
  interface AXPLookupWidgetOptions {
2292
2856
  disabled?: boolean | AXPExpression;
2293
2857
  readonly?: boolean | AXPExpression;
@@ -2296,6 +2860,8 @@ interface AXPLookupWidgetOptions {
2296
2860
  look?: AXPLookupWidgetLookType;
2297
2861
  allowClear?: boolean;
2298
2862
  displayFormat?: string;
2863
+ /** Column list: lazy resolve and summary behavior. */
2864
+ columnResolve?: AXPLookupColumnResolveOptions;
2299
2865
  }
2300
2866
 
2301
2867
  declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any> {
@@ -2304,6 +2870,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2304
2870
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
2305
2871
  protected readonly entityService: AXPEntityService;
2306
2872
  protected readonly entityDataSelectorService: AXPEntityDataSelectorService;
2873
+ private readonly mlsResolver;
2307
2874
  protected componentLook: _angular_core.Signal<LookupWidgetLookBase | undefined>;
2308
2875
  protected expose: _angular_core.Signal<string | any[] | undefined>;
2309
2876
  protected entity: _angular_core.Signal<string>;
@@ -2312,11 +2879,13 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2312
2879
  protected textField: _angular_core.Signal<string>;
2313
2880
  protected hasClearButton: _angular_core.Signal<boolean>;
2314
2881
  protected customFilter: _angular_core.Signal<AXDataSourceFilterOption>;
2882
+ protected placeholder: _angular_core.Signal<string>;
2315
2883
  protected filterMode: _angular_core.Signal<boolean>;
2316
2884
  protected multiple: _angular_core.Signal<boolean>;
2317
2885
  protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
2318
2886
  protected defaultTextField: _angular_core.Signal<string>;
2319
2887
  protected displayField: _angular_core.Signal<string>;
2888
+ protected allowCreate: _angular_core.Signal<"none" | "full" | "quick">;
2320
2889
  protected valueField: _angular_core.Signal<string>;
2321
2890
  protected displayFormat: _angular_core.Signal<string | undefined>;
2322
2891
  protected conditions?: AXPQueryFilter[];
@@ -2330,10 +2899,15 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2330
2899
  private hasValue;
2331
2900
  private findByValue;
2332
2901
  protected handleComponentValueChanged(items: any[] | null): void;
2902
+ protected handleCreateClick(_e: AXClickEvent): Promise<void>;
2903
+ private executeCreate;
2333
2904
  protected setLoading: (loading: boolean) => void;
2334
2905
  protected setItems: (items: any[]) => void;
2335
2906
  /**
2336
- * 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.
2337
2911
  */
2338
2912
  private expoesItems;
2339
2913
  outputs(): (string | {
@@ -2349,8 +2923,12 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2349
2923
 
2350
2924
  declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
2351
2925
  private readonly entityDetailPopoverService;
2926
+ private readonly translation;
2352
2927
  private readonly formatService;
2928
+ private readonly entityService;
2929
+ private readonly queryExecutor;
2353
2930
  protected moreButton: _angular_core.Signal<ElementRef<any> | undefined>;
2931
+ protected lazyTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
2354
2932
  protected morePopover: _angular_core.Signal<AXPopoverComponent | undefined>;
2355
2933
  protected host: ElementRef<any>;
2356
2934
  protected valueField: string;
@@ -2360,21 +2938,51 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
2360
2938
  protected maxVisible: number;
2361
2939
  protected displayFormat: _angular_core.Signal<string | undefined>;
2362
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>;
2363
2944
  protected isMorePopoverOpen: _angular_core.WritableSignal<boolean>;
2364
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>;
2365
2951
  protected displayItems: _angular_core.Signal<any[]>;
2366
2952
  protected allItems: _angular_core.Signal<any[]>;
2367
2953
  protected visibleItems: _angular_core.Signal<any[]>;
2368
2954
  protected hasMoreItems: _angular_core.Signal<boolean>;
2369
- 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();
2370
2961
  protected showMoreItems(): void;
2371
- protected onMorePopoverOpenChange(event: any): void;
2962
+ protected openLazyPopover(): void;
2963
+ protected onPopoverOpenChange(event: unknown): void;
2372
2964
  protected showItemDetail(item: any, index: number): Promise<void>;
2373
2965
  protected handleItemClick(index: number): void;
2374
- 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;
2375
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;
2376
2984
  private extractItem;
2377
- protected getDisplayText(item: any): string;
2985
+ private resolveDisplayValue;
2378
2986
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetColumnComponent, never>;
2379
2987
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetColumnComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
2380
2988
  }
@@ -2706,6 +3314,174 @@ declare class AXPMultiSourceSelectorWidgetColumnComponent extends AXPColumnWidge
2706
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>;
2707
3315
  }
2708
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
+
2709
3485
  declare const AXPEntityCreateEvent: {
2710
3486
  (payload: {
2711
3487
  entity: string;
@@ -2827,14 +3603,23 @@ declare class AXPShowDetailViewAction extends AXPWorkflowAction {
2827
3603
  }
2828
3604
  declare const AXPShowDetailsViewWorkflow: AXPWorkflow;
2829
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
+ }
2830
3615
  declare class AXPShowListViewAction extends AXPWorkflowAction {
2831
3616
  private navigation;
2832
3617
  private sessionService;
2833
- execute(context?: any): Promise<void>;
3618
+ execute(context: AXPWorkflowContext): Promise<void>;
2834
3619
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowListViewAction, never>;
2835
3620
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowListViewAction>;
2836
3621
  }
2837
3622
  declare const AXPShowListViewWorkflow: AXPWorkflow;
2838
3623
 
2839
- 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, 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, 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, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, canPersistEntityListState, 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, findEntityListRowDataInTree, getDataSourcePageIndex, getEntityListRowId, isAXPMiddlewareAbortError, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, normalizeEntityListPersistenceMode, normalizeListPaging, restoreEntityListExpandedRows, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
2840
- export type { AXPAuditEvent, AXPDataSeeder, AXPEntityActionPlugin, 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, 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 };