@acorex/platform 21.0.0-next.3 → 21.0.0-next.34

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 (117) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +295 -45
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-zhqNP3xb.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +60 -4
  4. package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +960 -319
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +1352 -832
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +554 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +530 -154
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
  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 +5969 -2347
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +169 -154
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +15380 -9274
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +393 -110
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +511 -450
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.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-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs} +39 -16
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.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-BtZMBxYp.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-BGQqY5Mw.mjs +111 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +6 -6
  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-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +5 -5
  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-Df1BFkSa.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 +7865 -4026
  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 +220 -169
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs} +18 -25
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +1 -0
  53. package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.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-CdCV5ZoA.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 +1717 -66
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.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-9W52W6Nu.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.map +1 -1
  66. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs} +11 -11
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +1 -0
  68. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs} +9 -9
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +1 -0
  70. package/fesm2022/acorex-platform-themes-shared.mjs +563 -561
  71. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  72. package/fesm2022/acorex-platform-workflow.mjs +1735 -1750
  73. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  74. package/fesm2022/acorex-platform.mjs.map +1 -1
  75. package/package.json +31 -31
  76. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +247 -10
  77. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +492 -31
  78. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +606 -392
  79. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +719 -413
  80. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +128 -56
  81. package/types/acorex-platform-layout-components.d.ts +2927 -0
  82. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +9 -3
  83. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +1133 -237
  84. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +90 -31
  85. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +206 -102
  86. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +942 -137
  87. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  88. package/{runtime/index.d.ts → types/acorex-platform-runtime.d.ts} +237 -74
  89. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +113 -5
  90. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +1 -1
  91. package/types/acorex-platform-workflow.d.ts +1806 -0
  92. package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
  93. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
  101. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs +0 -1542
  103. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
  105. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
  109. package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
  110. package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
  112. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
  114. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
  115. package/layout/components/index.d.ts +0 -1669
  116. package/workflow/index.d.ts +0 -2443
  117. /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
@@ -1,43 +1,108 @@
1
- import { AXPExecuteCommandResult, AXPMetaData, AXPGridLayoutOptions, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPUserReference, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity as AXPCategoryEntity$1, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem } from '@acorex/platform/core';
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, AXPMultiLanguageString, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPContextChangeEvent } from '@acorex/platform/core';
2
3
  import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
3
4
  import * as _angular_core from '@angular/core';
4
- import { ElementRef, InjectionToken, Injector, Type, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
5
+ import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
5
6
  import { AXPopoverComponent } from '@acorex/components/popover';
6
7
  import * as i3 from '@acorex/platform/layout/widget-core';
7
8
  import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetRendererDirective } from '@acorex/platform/layout/widget-core';
8
- import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent, AXDataSourceSortOption } from '@acorex/cdk/common';
9
+ import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorAllowCreate, AXPCategoryTreeDataSource } from '@acorex/platform/layout/components';
10
+ import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';
11
+ import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
9
12
  import * as _acorex_platform_common from '@acorex/platform/common';
10
- 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';
11
14
  import * as i1 from '@angular/router';
12
15
  import { ResolveFn } from '@angular/router';
13
16
  import * as rxjs from 'rxjs';
14
17
  import { Subject } from 'rxjs';
18
+ export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
15
19
  import * as i2 from '@acorex/platform/workflow';
16
- import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
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';
17
23
  import { AXPSessionService } from '@acorex/platform/auth';
18
- import { AXTreeViewNode, AXTreeViewComponent, AXTreeViewNodeToggleEvent, AXTreeViewNodeSelectEvent, AXTreeViewSelectionChangeEvent } from '@acorex/components/tree-view';
19
- import { AXTranslationService } from '@acorex/core/translation';
24
+ import { AXTreeViewNode, AXTreeViewComponent, AXTreeViewNodeSelectEvent } from '@acorex/components/tree-view';
20
25
  import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
21
- import { IActionBuilder, IFormFieldBuilder, AXPDialogRef } from '@acorex/platform/layout/builder';
22
26
  import { AXBasePageComponent } from '@acorex/components/page';
23
27
  import { AXFormatService } from '@acorex/core/format';
24
28
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
25
- import { AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
26
- import { AXSelectBoxComponent } from '@acorex/components/select-box';
29
+ import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
27
30
 
28
31
  declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
29
32
  private entityForm;
30
- private settingsService;
31
33
  private entityService;
32
34
  private toastService;
33
35
  private translationService;
34
- private eventService;
36
+ private settingsService;
37
+ private openEntityDetailsCommand;
35
38
  protected context: {};
36
39
  execute(input: any): Promise<AXPExecuteCommandResult<any>>;
37
40
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPCreateEntityCommand, never>;
38
41
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCreateEntityCommand>;
39
42
  }
40
43
 
44
+ /**
45
+ * Merged into AI/tool payloads for `Entity:Create` so post-create navigation does not run from agent flows.
46
+ * Applied in the AI module when normalizing tool arguments (not in the generic command executor).
47
+ */
48
+ declare const axpCreateEntityAiToolInputDefaults: {
49
+ readonly __context__: {
50
+ readonly options: {
51
+ readonly process: {
52
+ readonly redirect: false;
53
+ };
54
+ };
55
+ };
56
+ };
57
+ declare const axpCreateEntityCommandDefinition: {
58
+ key: string;
59
+ title: string;
60
+ description: string;
61
+ executionMode: "frontend";
62
+ inputs: ({
63
+ name: string;
64
+ title: string;
65
+ description: string;
66
+ interface: {
67
+ name: string;
68
+ };
69
+ validations?: undefined;
70
+ } | {
71
+ name: string;
72
+ title: string;
73
+ description: string;
74
+ interface: {
75
+ name: string;
76
+ };
77
+ validations: {
78
+ rule: string;
79
+ }[];
80
+ })[];
81
+ outcomes: {
82
+ mode: "dynamic";
83
+ summary: string;
84
+ derivesFrom: string;
85
+ };
86
+ ai: {
87
+ shortDescription: string;
88
+ usage: {
89
+ whenToUse: string[];
90
+ avoidWhen: string[];
91
+ followUpTools: string[];
92
+ };
93
+ tags: string[];
94
+ toolInputDefaults: {
95
+ __context__: {
96
+ readonly options: {
97
+ readonly process: {
98
+ readonly redirect: false;
99
+ };
100
+ };
101
+ };
102
+ };
103
+ };
104
+ };
105
+
41
106
  declare class AXPUpdateEntityCommand implements AXPCommand<any, any> {
42
107
  private readonly entityForm;
43
108
  private readonly settingsService;
@@ -89,6 +154,7 @@ declare class AXPEntityDetailPopoverComponent {
89
154
  textField: _angular_core.InputSignal<string>;
90
155
  valueField: _angular_core.InputSignal<string>;
91
156
  item: _angular_core.InputSignal<AXPMetaData | undefined>;
157
+ breadcrumb: _angular_core.InputSignal<string | null>;
92
158
  protected detailPopover: _angular_core.Signal<AXPopoverComponent | undefined>;
93
159
  protected entityDetails: _angular_core.WritableSignal<any>;
94
160
  protected isLoadingDetails: _angular_core.WritableSignal<boolean>;
@@ -123,8 +189,13 @@ declare class AXPEntityDetailPopoverComponent {
123
189
  title: string;
124
190
  node: AXPWidgetNode;
125
191
  }>;
192
+ /**
193
+ * Resolves the data path for a property. For lookups with expose, returns the expanded path
194
+ * when data has it (e.g. personTitle). Otherwise returns property name (e.g. personTitleId).
195
+ */
196
+ private resolveDataPath;
126
197
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverComponent, never>;
127
- 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; }; }, {}, never, never, true, never>;
198
+ 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>;
128
199
  }
129
200
 
130
201
  interface AXPEntityDetailPopoverOptions {
@@ -133,6 +204,7 @@ interface AXPEntityDetailPopoverOptions {
133
204
  item: AXPMetaData;
134
205
  textField?: string;
135
206
  valueField?: string;
207
+ breadcrumb?: string;
136
208
  }
137
209
  declare class AXPEntityDetailPopoverService {
138
210
  private readonly applicationRef;
@@ -156,6 +228,25 @@ declare class AXPEntityDetailPopoverService {
156
228
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDetailPopoverService>;
157
229
  }
158
230
 
231
+ declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBaseComponent {
232
+ private readonly route;
233
+ private readonly router;
234
+ private readonly entityService;
235
+ private readonly filterOperatorMiddleware;
236
+ protected readonly noMatchText: _angular_core.WritableSignal<string | null>;
237
+ private vm;
238
+ preloadFiltersDef: _angular_core.Signal<_acorex_platform_core.AXPFilterDefinition[]>;
239
+ hasNoRequiredFilters: _angular_core.Signal<boolean>;
240
+ protected getPageTitle(): string;
241
+ protected getPageDescription(): string | null;
242
+ onApply(event: AXPPreloadFiltersApplyEvent): Promise<void>;
243
+ onShowAll(): Promise<void>;
244
+ private buildPreloadFilterQueries;
245
+ private buildListQueryFilter;
246
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPreloadFiltersContainerComponent, never>;
247
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityPreloadFiltersContainerComponent, "axp-entity-preload-filters-container", never, {}, {}, never, never, true, never>;
248
+ }
249
+
159
250
  interface AXPDataSeeder {
160
251
  seed(): Promise<void>;
161
252
  }
@@ -167,6 +258,15 @@ declare class AXPDataSeederService {
167
258
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataSeederService>;
168
259
  }
169
260
 
261
+ /**
262
+ * Data source definition provider that returns all entity names
263
+ * from entity loaders' list() (const.ts in each module).
264
+ */
265
+ declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefinitionProvider {
266
+ private readonly entityResolver;
267
+ items(): Promise<AXPDataSourceDefinition[]>;
268
+ }
269
+
170
270
  declare class AXPEntityCommandTriggerViewModel {
171
271
  priority: 'primary' | 'secondary';
172
272
  order: number;
@@ -182,7 +282,9 @@ declare class AXPEntityCommandTriggerViewModel {
182
282
  options: any;
183
283
  metadata?: AXPMetaData;
184
284
  default?: boolean;
185
- constructor(entity: AXPEntity, action: AXPEntityAction);
285
+ items?: AXPEntityCommandTriggerViewModel[];
286
+ isChild?: boolean;
287
+ constructor(entity: AXPEntity, action: AXPEntityAction, isChild?: boolean);
186
288
  }
187
289
  declare class AXPEntityListViewColumnViewModel {
188
290
  readonly property: AXPEntityProperty;
@@ -190,7 +292,7 @@ declare class AXPEntityListViewColumnViewModel {
190
292
  constructor(property: AXPEntityProperty, column: AXPEntityTableColumn);
191
293
  name: string;
192
294
  title: string;
193
- visible: boolean;
295
+ visible: string | boolean;
194
296
  dir: "asc" | "desc" | undefined;
195
297
  sortEnabled: boolean | undefined;
196
298
  width: '';
@@ -362,6 +464,7 @@ declare class AXPEntityMasterListViewModel {
362
464
  private readonly destroyed;
363
465
  private lastAppliedSortKey;
364
466
  private lastAppliedFilterKey;
467
+ private hasQueryParamsFilters;
365
468
  events$: Subject<{
366
469
  action: string;
367
470
  meta?: any;
@@ -374,23 +477,58 @@ declare class AXPEntityMasterListViewModel {
374
477
  applySettings(): Promise<void>;
375
478
  saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'filters' | 'sorts', data?: any): Promise<void>;
376
479
  selectedItems: _angular_core.WritableSignal<any[]>;
480
+ /**
481
+ * Selected category from the category sidebar (left panel).
482
+ * Used to set default category when creating new entities via command.
483
+ * Structure: { id: string; title: string } or null when "All Items" is selected.
484
+ */
485
+ selectedCategory: _angular_core.WritableSignal<{
486
+ id: string;
487
+ title: string;
488
+ } | null>;
377
489
  parentKey: _angular_core.Signal<string | undefined>;
378
490
  hasSelectedItems: _angular_core.Signal<boolean>;
379
491
  clearSelection(): void;
492
+ /**
493
+ * Sets the selected category from the category sidebar.
494
+ * Call with null to clear (e.g. when "All Items" is selected).
495
+ */
496
+ setSelectedCategory(category: {
497
+ id: string;
498
+ title: string;
499
+ } | null): void;
380
500
  title: _angular_core.Signal<string>;
381
501
  description: _angular_core.Signal<string | null>;
382
502
  inlineFiltersPlaceholders: _angular_core.Signal<string[]>;
383
503
  hasInlineFilters: _angular_core.Signal<boolean>;
384
504
  beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
385
505
  private allActions;
506
+ /** Flattened actions including children for execute lookup */
507
+ private flattenedActions;
386
508
  getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
387
509
  getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
388
510
  selectedScopeActionsCount: _angular_core.Signal<number>;
389
511
  primaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
390
512
  secondaryRowActions(rowData: any): Promise<AXPEntityCommandTriggerViewModel[]>;
391
513
  filterQueries: _angular_core.WritableSignal<AXPFilterQuery[]>;
514
+ private static readonly URL_FILTER_OPERATOR_TYPES;
392
515
  get properties(): AXPEntityProperty[];
516
+ /**
517
+ * Canonical JSON for the `filters` query param (sorted by field), or null when there are no active value filters.
518
+ */
519
+ filtersQueryParamCanonical(queries: AXPFilterQuery[]): string | null;
520
+ /**
521
+ * Parse a `filters` query string to the same canonical form used by {@link filtersQueryParamCanonical}.
522
+ */
523
+ static parseQueryParamFiltersToCanonical(filtersJson: string | null): string | null;
524
+ private toUrlFilterPayloadItems;
525
+ private static coerceFilterOperatorFromUrl;
526
+ /**
527
+ * Apply filters from query params
528
+ */
529
+ applyFiltersFromQueryParams(filtersJson: string | null): boolean;
393
530
  get filtersDef(): AXPFilterDefinition[];
531
+ get preloadFiltersDef(): AXPFilterDefinition[];
394
532
  applyViewFilters(): Promise<void>;
395
533
  resetFilters(): void;
396
534
  applyFilterAndSort(): Promise<void>;
@@ -414,6 +552,12 @@ declare class AXPEntityMasterListViewModel {
414
552
  resetSorts(): void;
415
553
  applyViewSorts(): void;
416
554
  executeCommand(commandName: string, data?: any): Promise<void>;
555
+ /**
556
+ * Merges default category from selected category in sidebar when executing create command.
557
+ * For Entity:Create and create-entity, if entity has category plugin and a category is selected,
558
+ * pre-fills categoryIds and categories for the create form.
559
+ */
560
+ private mergeDefaultCategoryForCreate;
417
561
  private evaluateExpressions;
418
562
  execute(command: AXPExecuteCommand): Promise<void>;
419
563
  destroy(): void;
@@ -520,6 +664,7 @@ declare class AXPEntityMasterUpdateElementViewModel {
520
664
  title: _angular_core.WritableSignal<string>;
521
665
  description: _angular_core.WritableSignal<string | undefined>;
522
666
  editable: _angular_core.Signal<boolean>;
667
+ isVisible: _angular_core.Signal<string | boolean>;
523
668
  isRequired: _angular_core.Signal<boolean>;
524
669
  layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
525
670
  node: _angular_core.Signal<AXPWidgetNode>;
@@ -553,6 +698,35 @@ declare class AXPEntityMasterUpdateViewModelFactory {
553
698
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMasterUpdateViewModelFactory>;
554
699
  }
555
700
 
701
+ declare class AXPEntityPreloadFiltersViewModel {
702
+ private injector;
703
+ private config;
704
+ readonly entityDef: AXPEntity;
705
+ private readonly widgetResolver;
706
+ constructor(injector: Injector, config: AXPEntity);
707
+ /**
708
+ * Entity title
709
+ */
710
+ title: _angular_core.Signal<string>;
711
+ /**
712
+ * Entity description
713
+ */
714
+ description: _angular_core.Signal<string | null>;
715
+ /**
716
+ * All filter definitions for properties with preload enabled
717
+ */
718
+ preloadFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
719
+ /**
720
+ * Required filter definitions only
721
+ */
722
+ requiredFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
723
+ /**
724
+ * Serialize filter values to plain objects (remove signals, functions, etc.)
725
+ */
726
+ serializeFilters(filters: any): AXPFilterQuery[];
727
+ }
728
+ declare const AXPEntityPreloadFiltersViewModelResolver: ResolveFn<Promise<AXPEntityPreloadFiltersViewModel>>;
729
+
556
730
  interface AXPEntityModifierContext {
557
731
  readonly entity: AXPEntity;
558
732
  title: {
@@ -718,8 +892,7 @@ interface AXPEntityDefinitionPreloader {
718
892
  }
719
893
  declare class AXPEntityDefinitionRegistryService {
720
894
  private middleware;
721
- private moduleProviderLoader;
722
- private manifestRegistry;
895
+ private columnEnrichment;
723
896
  private onChanged;
724
897
  get onChanged$(): rxjs.Observable<{
725
898
  name: string;
@@ -769,12 +942,6 @@ declare class AXPEntityDefinitionRegistryService {
769
942
  */
770
943
  resolve(moduleName: string, entityName: string): Promise<AXPEntity>;
771
944
  exists(moduleName: string, entityName: string): Promise<boolean>;
772
- /**
773
- * Waits for module provider to be loaded if the module exists in manifest but provider isn't registered yet.
774
- * This handles race conditions where entity resolution happens before module providers finish loading.
775
- * Only waits for required modules or waits briefly for non-required modules (which may not be accessible to current user).
776
- */
777
- private waitForModuleProviderIfNeeded;
778
945
  /**
779
946
  * Creates a unique key for an entity based on its module and name.
780
947
  *
@@ -793,7 +960,7 @@ interface AXPAuditEvent {
793
960
  reason?: string;
794
961
  source?: string;
795
962
  }
796
- interface AXPAuditInfo {
963
+ interface AXPRecordAuditInfo {
797
964
  created?: AXPAuditEvent;
798
965
  updated?: AXPAuditEvent;
799
966
  deleted?: AXPAuditEvent;
@@ -807,10 +974,11 @@ interface AXPRecordStateInfo {
807
974
  interface AXPRecordOwnershipInfo {
808
975
  tenantId?: string;
809
976
  applicationId?: string;
977
+ userId?: string;
810
978
  }
811
979
  interface AXPEntityModel<Id> {
812
980
  id: Id;
813
- auditInfo?: AXPAuditInfo;
981
+ auditInfo?: AXPRecordAuditInfo;
814
982
  stateInfo?: AXPRecordStateInfo;
815
983
  ownershipInfo?: AXPRecordOwnershipInfo;
816
984
  }
@@ -912,21 +1080,77 @@ interface AXPEntityConfigs {
912
1080
  };
913
1081
  }
914
1082
  declare const AXP_ENTITY_CONFIG_TOKEN: InjectionToken<AXPEntityConfigs>;
1083
+ /** Raw input from entity loaders' list(). */
1084
+ type AXPEntityListInput = {
1085
+ name: string;
1086
+ module: string;
1087
+ };
1088
+ /** Output from listAll(); fullName is populated by the resolver. */
1089
+ type AXPEntityListEntry = {
1090
+ name: string;
1091
+ module: string;
1092
+ fullName: string;
1093
+ };
915
1094
  interface AXPEntityDefinitionLoader {
916
1095
  get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
1096
+ list(): Promise<AXPEntityListInput[]>;
917
1097
  }
918
1098
  declare const AXP_ENTITY_DEFINITION_LOADER: InjectionToken<AXPEntityDefinitionLoader>;
919
1099
  declare class AXPEntityResolver {
920
1100
  private providers;
921
- private providerRegistry;
1101
+ /** Aggregates list() from all entity loaders (including lazy). Populates fullName. */
1102
+ listAll(): Promise<AXPEntityListEntry[]>;
922
1103
  get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
1104
+ private resolveLoaders;
923
1105
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityResolver, never>;
924
1106
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityResolver>;
925
1107
  }
926
1108
 
1109
+ /**
1110
+ * Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
1111
+ * tabs): meta-data-builder → attachments → documents → comments → history.
1112
+ */
1113
+ type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'documents' | 'comments' | 'history';
1114
+ /** Identifies an `entity.pages` entry when skipping its order during recomputation. */
1115
+ interface SkipEntityComponentPageRef {
1116
+ componentKey: string;
1117
+ /** When set, only the page with this `field` is skipped (e.g. attachments / meta-data per field). */
1118
+ field?: string;
1119
+ }
1120
+ interface ResolveEntityPluginDetailPageOrderOptions {
1121
+ /** Component key of the page being added or updated (used to count sibling tabs in the same slot). */
1122
+ componentKey: string;
1123
+ /**
1124
+ * Ignore this page when counting siblings / recomputing (the page currently being updated).
1125
+ */
1126
+ skipPage?: SkipEntityComponentPageRef;
1127
+ /**
1128
+ * Field name for multi-page slots (`attachments`, `meta-data-builder`). Omit for single-tab slots.
1129
+ */
1130
+ field?: string;
1131
+ /** Gap between auto-assigned related tab orders. Default: 10. */
1132
+ relatedOrderStep?: number;
1133
+ /** Minimum start of the plugin zone (after related tabs). Default: 100_000. */
1134
+ pluginZoneFloor?: number;
1135
+ }
1136
+ /**
1137
+ * Resolves `layout.order` for a built-in plugin detail tab (`entity.pages`).
1138
+ *
1139
+ * 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
1140
+ * `order` (the composer otherwise treats them as +Infinity).
1141
+ * 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
1142
+ * comments → history, after all related tabs.
1143
+ */
1144
+ declare function resolveEntityPluginDetailPageOrder(input: {
1145
+ relatedEntities?: AXPRelatedEntity[];
1146
+ pages?: Array<AXPEntityPage & {
1147
+ field?: string;
1148
+ }>;
1149
+ }, slot: EntityDetailPluginPageSlot, options: ResolveEntityPluginDetailPageOrderOptions): number;
1150
+
927
1151
  declare class AXPEntityModule {
928
1152
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
929
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof i2.AXPWorkflowModule, typeof i3.AXPWidgetCoreModule], never>;
1153
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof i2.AXPWorkflowModule, typeof i3.AXPWidgetCoreModule, typeof i4.LayoutBuilderModule], never>;
930
1154
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
931
1155
  }
932
1156
 
@@ -1037,7 +1261,6 @@ declare class AXPEntityService {
1037
1261
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityService>;
1038
1262
  }
1039
1263
 
1040
- type AXPEntityOp = 'initial' | 'create' | 'update' | 'delete' | 'getOne' | 'getAll' | 'query';
1041
1264
  interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
1042
1265
  op: AXPEntityOp;
1043
1266
  entityName: string;
@@ -1086,28 +1309,35 @@ declare function isAXPMiddlewareAbortError(error: unknown): error is AXPMiddlewa
1086
1309
  declare const eventDispatchMiddleware: AXPEntityStorageMiddleware;
1087
1310
 
1088
1311
  /**
1089
- * Map of column name -> width value
1090
- * Example: { title: '300px', description: '300px' }
1312
+ * Entity modifier that applies column widths using the column width service
1313
+ * Uses the generic column width resolution system from core library
1314
+ * Note: inject() works here because modifiers are executed via runInInjectionContext()
1315
+ */
1316
+ declare const columnWidthMiddleware: AXPEntityModifier;
1317
+ /**
1318
+ * Default provider that applies column width middleware to all entities
1091
1319
  */
1092
- type ColumnWidthConfig = Record<string, string | number>;
1320
+ declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
1321
+
1093
1322
  /**
1094
- * Default widths for common text columns
1323
+ * Default order for common list view columns.
1324
+ * Lower numbers appear first. Columns not in this map get order 500 (middle).
1325
+ * Use high numbers (990+) for columns that should appear at the end.
1095
1326
  */
1096
- declare const DEFAULT_COLUMN_WIDTHS: ColumnWidthConfig;
1327
+ declare const DEFAULT_COLUMN_ORDER: Record<string, number>;
1097
1328
  /**
1098
- * Factory to create a column width middleware using provided config map.
1099
- * Sets width for columns defined in the map if not already defined on the column.
1329
+ * Entity modifier that sorts list view columns by default order.
1330
+ * Similar to layout-ordering for sections/properties, but for list columns.
1100
1331
  */
1101
- declare const columnWidthMiddlewareFactory: (widths: ColumnWidthConfig) => AXPEntityModifier;
1332
+ declare const columnOrderingMiddleware: AXPEntityModifier;
1102
1333
  /**
1103
- * Helper to create a provider for the column width middleware.
1104
- * By default it applies to all entities using the '*' pattern.
1334
+ * Factory to create a column ordering middleware with custom order config
1105
1335
  */
1106
- declare const createColumnWidthMiddlewareProvider: (widths: ColumnWidthConfig, entityName?: string | RegExp) => AXPEntityModifierProvider;
1336
+ declare const createColumnOrderingMiddlewareProvider: (columnOrder?: Record<string, number>, entityName?: string | RegExp) => AXPEntityModifierProvider;
1107
1337
  /**
1108
- * Default provider registered with the default map.
1338
+ * Default provider that applies column ordering to all entities
1109
1339
  */
1110
- declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
1340
+ declare const columnOrderingMiddlewareProvider: AXPEntityModifierProvider;
1111
1341
 
1112
1342
  /**
1113
1343
  * Configuration for section ordering
@@ -1147,6 +1377,44 @@ declare const createLayoutOrderingMiddlewareProvider: (config?: Partial<SectionO
1147
1377
  */
1148
1378
  declare const layoutOrderingMiddlewareProvider: AXPEntityModifierProvider;
1149
1379
 
1380
+ /**
1381
+ * Provides synchronous access to the ApplyLayoutOrdering setting.
1382
+ * Used by layout ordering middleware to avoid async in the modifier and prevent startup deadlocks.
1383
+ * Value is updated on onLoaded/onChanged; first read can trigger a one-time background get (no await).
1384
+ */
1385
+ declare class AXPLayoutOrderingConfigService {
1386
+ private readonly settingsService;
1387
+ private readonly _applyOrdering;
1388
+ private syncScheduled;
1389
+ constructor();
1390
+ getApplyOrdering(): boolean;
1391
+ private syncFromSettings;
1392
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutOrderingConfigService, never>;
1393
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutOrderingConfigService>;
1394
+ }
1395
+
1396
+ /**
1397
+ * Ensures all entities have a searchResult.description.
1398
+ * Uses @{i18nScope}:module.title when missing (guaranteed to exist in i18n).
1399
+ */
1400
+ declare const searchResultDescriptionMiddleware: AXPEntityModifier;
1401
+ declare const searchResultDescriptionMiddlewareProvider: AXPEntityModifierProvider;
1402
+
1403
+ /**
1404
+ * When enabled in regional settings ({@link AXPRegionalSetting.MultiLanguageSupport}), walks each
1405
+ * property's `schema.interface` widget tree and sets `options.multiLanguage` on matching text-like
1406
+ * editors (including nested GridLayout leaves such as `pre.content` / `post.summaryContent`), unless
1407
+ * the node already specifies `multiLanguage` (including explicit false to opt out).
1408
+ */
1409
+ declare const defaultMultiLanguageMiddleware: AXPEntityModifier;
1410
+ declare const defaultMultiLanguageMiddlewareProvider: AXPEntityModifierProvider;
1411
+
1412
+ /**
1413
+ * Registers entity CRUD commands and queries for the given entity keys.
1414
+ * Use in app/module providers; consumes AXPEntityService from this package.
1415
+ */
1416
+ declare function provideEntity(entityKeys: string[]): EnvironmentProviders;
1417
+
1150
1418
  interface AXPGetEntityDetailsQueryInput {
1151
1419
  entity: string;
1152
1420
  id: string;
@@ -1180,9 +1448,14 @@ declare class AXPGetEntityDetailsQuery implements AXPQuery<AXPGetEntityDetailsQu
1180
1448
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPGetEntityDetailsQuery>;
1181
1449
  }
1182
1450
 
1451
+ /**
1452
+ * i18n key for the synthetic root node ("all categories"). Resolve in templates with the translate pipe.
1453
+ */
1454
+ declare const AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY = "@general:terms.interface.selection.all-items";
1183
1455
  interface CategoryQueryEvent {
1184
1456
  skip: number;
1185
1457
  take: number;
1458
+ sort?: AXDataSourceSortOption[];
1186
1459
  filter?: {
1187
1460
  field?: string;
1188
1461
  value?: unknown;
@@ -1212,7 +1485,14 @@ interface CategoryTreeNodeData {
1212
1485
  }
1213
1486
  declare class AXPCategoryTreeService {
1214
1487
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1215
- protected readonly translate: AXTranslationService;
1488
+ private readonly translation;
1489
+ /** Sort field for list queries (backend); matches configured category display field. */
1490
+ private getAlphabeticalSortOptions;
1491
+ /**
1492
+ * Sort tree nodes by resolved display title (locale-aware).
1493
+ * Ensures correct order for multi-language titles when storage order differs from UI order.
1494
+ */
1495
+ private sortTreeNodesByDisplayTitle;
1216
1496
  /**
1217
1497
  * Initialize category tree data source
1218
1498
  */
@@ -1229,6 +1509,11 @@ declare class AXPCategoryTreeService {
1229
1509
  * Load root categories
1230
1510
  */
1231
1511
  loadRootCategories(treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<Record<string, unknown>[] | null>;
1512
+ /**
1513
+ * Fetches a single category item by ID. Uses byKey when available (full item with parent),
1514
+ * otherwise falls back to list query with filter so ancestor chains can be built.
1515
+ */
1516
+ fetchItemById(id: string, treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<Record<string, unknown> | null>;
1232
1517
  /**
1233
1518
  * Load children for a given node
1234
1519
  */
@@ -1245,6 +1530,48 @@ declare class AXPCategoryTreeService {
1245
1530
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCategoryTreeService>;
1246
1531
  }
1247
1532
 
1533
+ declare class AXPRelatedColumnEnrichmentService {
1534
+ private readonly metadataResolver;
1535
+ /**
1536
+ * Enriches entity columns with:
1537
+ * 1. dataPath for FK columns (e.g. fromPersonId) derived from lookup property schema
1538
+ * 2. title and showAs from related entity properties for dotted paths (e.g. person.firstName)
1539
+ */
1540
+ enrich(entity: AXPEntity): Promise<AXPEntity>;
1541
+ /**
1542
+ * Derives dataPath for FK columns from lookup property schema.
1543
+ * Uses expose.target where source matches textField (default 'title').
1544
+ */
1545
+ private deriveDataPathForFkColumn;
1546
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRelatedColumnEnrichmentService, never>;
1547
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnEnrichmentService>;
1548
+ }
1549
+
1550
+ interface AXPRelatedColumnMetadata {
1551
+ title?: string;
1552
+ showAs?: AXPEntityTableColumn['showAs'];
1553
+ }
1554
+ declare class AXPRelatedColumnMetadataResolver {
1555
+ private readonly entityLoader;
1556
+ /**
1557
+ * Resolves title and showAs for a column that references a related entity property via dotted path.
1558
+ * Uses relatedEntities when available; falls back to lookup expose when not.
1559
+ */
1560
+ resolve(entity: AXPEntity, columnName: string): Promise<AXPRelatedColumnMetadata | null>;
1561
+ /**
1562
+ * Finds a lookup property whose expose target matches the dotted path.
1563
+ * Returns the lookup's entity string (e.g. 'PersonCore.Person') or null.
1564
+ */
1565
+ private findLookupEntityByExposeTarget;
1566
+ /**
1567
+ * Derives showAs from source property schema.
1568
+ * Passes through the full interface (type, options, children) for column display.
1569
+ */
1570
+ private deriveShowAs;
1571
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRelatedColumnMetadataResolver, never>;
1572
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnMetadataResolver>;
1573
+ }
1574
+
1248
1575
  interface IEntitySelectorStage {
1249
1576
  /** Select target entity using "module.entity" format */
1250
1577
  entity(fullName: string): IInterfaceSelectorStage;
@@ -1262,6 +1589,8 @@ interface IPropertyFilterStage {
1262
1589
  include(...propertyNames: string[]): IPropertyFilterStage;
1263
1590
  /** Exclude provided property names (by AXPEntityProperty.name). Ignored if include() was already set. */
1264
1591
  exclude(...propertyNames: string[]): IPropertyFilterStage;
1592
+ /** Mark provided property names as readonly. Overrides property schema for display. */
1593
+ readonlyProperties(...propertyNames: string[]): IPropertyFilterStage;
1265
1594
  /** Optionally override dialog title */
1266
1595
  title(text: string): IPropertyFilterStage;
1267
1596
  /** Provide initial dialog context/model data */
@@ -1270,8 +1599,18 @@ interface IPropertyFilterStage {
1270
1599
  size(size: AXPopupSizeType): IPropertyFilterStage;
1271
1600
  /** Configure footer actions (cancel/submit/custom). If not called, defaults to cancel+submit. */
1272
1601
  actions(delegate: (a: IActionBuilder) => void): IPropertyFilterStage;
1602
+ /**
1603
+ * Handler invoked when user clicks an action. Receives AXPDialogRef.
1604
+ * If handler throws, dialog stays open for retry.
1605
+ * If handler returns, dialog closes and show() resolves with the return value.
1606
+ */
1607
+ onAction<T = any>(handler: (dialogRef: AXPDialogRef) => T | Promise<T>): IPropertyFilterStage & {
1608
+ show(): Promise<T>;
1609
+ };
1273
1610
  /** Add an extra field into a specific group, using the original field builder API */
1274
1611
  field(groupId: string, path: string, delegate?: (field: CompatFormFieldBuilder) => void): IPropertyFilterStage;
1612
+ /** Build and return the widget node without showing dialog */
1613
+ build(): Promise<AXPWidgetNode>;
1275
1614
  /** Show dialog */
1276
1615
  show(): Promise<AXPDialogRef>;
1277
1616
  mode(mode: 'edit' | 'view'): IPropertyFilterStage;
@@ -1281,6 +1620,13 @@ declare class AXPEntityFormBuilderService implements IEntitySelectorStage {
1281
1620
  private readonly layoutBuilder;
1282
1621
  private readonly deviceService;
1283
1622
  entity(fullName: string): IInterfaceSelectorStage;
1623
+ /**
1624
+ * Fetches a record by ID for the specified entity.
1625
+ * @param fullName - Entity full name in "module.entity" format
1626
+ * @param id - Record ID to fetch
1627
+ * @returns Promise resolving to the record data, or empty object if not found
1628
+ */
1629
+ getRecordById(fullName: string, id: string): Promise<Record<string, any>>;
1284
1630
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityFormBuilderService, never>;
1285
1631
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityFormBuilderService>;
1286
1632
  }
@@ -1299,6 +1645,8 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
1299
1645
  private readonly backend;
1300
1646
  private readonly allMiddlewares;
1301
1647
  private readonly injector;
1648
+ /** In-flight read requests - identical parallel requests share one execution */
1649
+ private readonly inFlight;
1302
1650
  get dbName(): string;
1303
1651
  private filterMiddlewares;
1304
1652
  private compose;
@@ -1314,11 +1662,13 @@ declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends A
1314
1662
  insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
1315
1663
  getAll(entityName: string): Promise<TListItemDto[]>;
1316
1664
  query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1665
+ private runWithDedup;
1317
1666
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
1318
1667
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
1319
1668
  }
1320
1669
 
1321
1670
  declare function entityMasterCreateAction(): AXPEntityAction;
1671
+ declare function entityMasterEditAction(): AXPEntityAction;
1322
1672
  declare function entityMasterBulkDeleteAction(): AXPEntityAction;
1323
1673
  declare function entityMasterViewAction(): AXPEntityAction;
1324
1674
  declare function entityMasterDeleteAction(): AXPEntityAction;
@@ -1360,13 +1710,19 @@ declare function detectEntityChanges(oldObj: any, newObj: any): AXPEntityChangeS
1360
1710
 
1361
1711
  declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent implements OnInit {
1362
1712
  protected readonly categoryTreeService: AXPCategoryTreeService;
1713
+ /** i18n key for the synthetic "all items" root row; resolved in the template with the translate pipe. */
1714
+ protected readonly categoryTreeRootTitleI18nKey = "@general:terms.interface.selection.all-items";
1363
1715
  private readonly translationService;
1716
+ private readonly mlsResolver;
1364
1717
  protected readonly highlightService: AXHighlightService;
1718
+ private readonly changeDetectorRef;
1365
1719
  entityKey: _angular_core.WritableSignal<string>;
1366
1720
  textField: _angular_core.WritableSignal<string>;
1367
1721
  valueField: _angular_core.WritableSignal<string>;
1368
1722
  allowMultiple: _angular_core.WritableSignal<boolean>;
1369
1723
  selectedValues: _angular_core.WritableSignal<string[]>;
1724
+ /** Optional input for when popup passes selected values via inputs instead of data */
1725
+ selectedValuesInput: _angular_core.WritableSignal<string[]>;
1370
1726
  searchPlaceholder: _angular_core.WritableSignal<string>;
1371
1727
  excludedNodeId: _angular_core.WritableSignal<string | undefined>;
1372
1728
  searchWithChildren: _angular_core.WritableSignal<boolean>;
@@ -1393,9 +1749,19 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1393
1749
  private relevantNodeIds;
1394
1750
  private expandedNodesBeforeSearch;
1395
1751
  private nodesExpandedDuringSearch;
1396
- private isInitializing;
1752
+ private initialExpandSyncDone;
1753
+ constructor();
1397
1754
  ngOnInit(): void;
1398
1755
  private initializeTree;
1756
+ /**
1757
+ * Called when popup data arrives after ngOnInit: load data, set selection, expand and sync.
1758
+ */
1759
+ private runInitialExpandAndSync;
1760
+ /**
1761
+ * Runs expand path + sync selection once the tree viewChild is available.
1762
+ * Uses retry loop so we don't run before the view has rendered the tree.
1763
+ */
1764
+ private runExpandAndSyncWhenTreeReady;
1399
1765
  /**
1400
1766
  * Handles search input value changes - Uses server-side search for efficiency and reliability
1401
1767
  */
@@ -1416,7 +1782,8 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1416
1782
  */
1417
1783
  private collectChildrenRecursively;
1418
1784
  /**
1419
- * Fetches a single item by ID from the server
1785
+ * Fetches a single item by ID. Uses category tree service so byKey is used when available
1786
+ * (returns full item with parent/parentId for building ancestor chains).
1420
1787
  */
1421
1788
  private fetchItemById;
1422
1789
  /**
@@ -1432,13 +1799,20 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1432
1799
  * Resets search state and restores tree to original expanded state
1433
1800
  */
1434
1801
  private resetSearch;
1435
- protected onNodeToggle(event: AXTreeViewNodeToggleEvent): Promise<void>;
1802
+ /**
1803
+ * Restores selection state after tree reload.
1804
+ * Expands ancestor nodes and selects the previously selected leaf nodes.
1805
+ */
1806
+ private restoreSelectionAfterReload;
1436
1807
  protected onNodeSelect(event: AXTreeViewNodeSelectEvent): Promise<void>;
1437
- protected onSelectionChange(event: AXTreeViewSelectionChangeEvent): Promise<void>;
1438
1808
  /** Datasource callback for tree-view component. */
1439
1809
  protected datasource: (id?: string) => Promise<AXTreeViewNode[]>;
1440
1810
  protected onConfirm(): Promise<void>;
1441
1811
  protected onCancel(): Promise<void>;
1812
+ /**
1813
+ * Clears all selected items
1814
+ */
1815
+ protected onClearAll(): void;
1442
1816
  /**
1443
1817
  * Checks if a node matches the current search term
1444
1818
  */
@@ -1448,62 +1822,76 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1448
1822
  */
1449
1823
  protected isNodeSelected(nodeId: string | number | undefined): boolean;
1450
1824
  /**
1451
- * Handles checkbox change event to toggle node selection
1452
- * In multiple mode: recursively selects/deselects children
1453
- * Parent states are handled automatically by tree component's intermediate-nested behavior
1454
- */
1455
- protected handleCheckboxChange(nodeId: string | number | undefined, checked: boolean): Promise<void>;
1456
- /**
1457
- * Selects a node and recursively selects all its children
1825
+ * Expands parent nodes, collects all LEAF descendants, and selects them visually.
1826
+ * If the parent itself is a leaf (no children), it will be added.
1827
+ * When prefetchedChildren is provided, avoids an extra datasource(parentId) call.
1458
1828
  */
1459
- private selectNodeAndChildren;
1829
+ private selectAllLeafDescendants;
1460
1830
  /**
1461
- * Collects all descendant node IDs recursively
1831
+ * Removes all LEAF descendants from selectedNodeIds.
1832
+ * For 'all' node: clears everything and uses tree's deselectAll().
1833
+ * For other nodes: tree handles visual state via user click.
1462
1834
  */
1463
- private collectAllDescendants;
1835
+ private deselectAllLeafDescendants;
1464
1836
  /**
1465
- * Deselects a node and recursively deselects all its children
1837
+ * Recursively expands parent nodes and collects LEAF node IDs.
1838
+ * When treeComponent is provided, expands each parent node before loading children.
1839
+ * When prefetchedChildren is provided, uses it instead of calling datasource(parentId) (one less API call).
1840
+ * Fetches each node's children at most once by passing grandchildren when recursing.
1466
1841
  */
1467
- private deselectNodeAndChildren;
1842
+ private collectLeafNodes;
1468
1843
  /**
1469
- * Recursively deselects all children of a parent node
1844
+ * Checks if a node has children
1470
1845
  */
1471
- private loadAndDeselectChildrenRecursively;
1846
+ private nodeHasChildren;
1472
1847
  /**
1473
- * Updates parent states based on children selection (select/intermediate)
1474
- * Called after a node is selected/deselected to update parent checkbox states
1848
+ * Checks if a node is a leaf (has no children)
1475
1849
  */
1476
- private updateParentStates;
1850
+ private isLeafNodeCheck;
1477
1851
  /**
1478
- * Recursively loads and selects all children of a parent node using the datasource
1479
- * This method directly calls datasource without expanding/collapsing nodes to avoid UI glitches
1852
+ * Caches node data from a tree node
1480
1853
  */
1481
- private loadAndSelectChildrenRecursively;
1482
- private updateSelectedNodes;
1854
+ private cacheNodeFromTreeNode;
1483
1855
  /**
1484
- * Updates all parent states based on their children's selection
1485
- * Used during initialization to ensure proper parent states (select/intermediate)
1856
+ * Builds complete ancestor chains for all selected node IDs.
1857
+ * Returns a Map where key is the selected node ID and value is array of ancestor IDs from root to parent.
1858
+ * Batch-fetches missing node and ancestor data in parallel to minimize API calls.
1486
1859
  */
1487
- private updateAllParentStates;
1860
+ private buildAncestorChains;
1488
1861
  /**
1489
- * Expands parents of selected nodes so they're visible when popup opens
1862
+ * Expands ancestor nodes in order from root to leaf.
1863
+ * This ensures parent nodes are loaded into the tree before selecting children.
1490
1864
  */
1491
- private expandParentsOfSelectedNodes;
1865
+ private expandAncestorNodesInOrder;
1866
+ /** Waits until the node is expanded (tree has loaded children). Polls so deep paths load. */
1867
+ private waitForNodeExpanded;
1492
1868
  /**
1493
- * Selects parents whose all children are selected
1494
- * This ensures that when all children of a parent are selected, the parent also appears selected
1869
+ * Syncs selection state with the tree component.
1870
+ * Selects leaf nodes and manually updates parent states (indeterminate/selected).
1495
1871
  */
1496
- private selectParentsWithAllChildrenSelected;
1872
+ private syncSelectionWithTree;
1497
1873
  /**
1498
- * Syncs selection state with the tree component
1499
- * Handles cases where nodes might not be in the tree structure yet
1874
+ * Updates parent node states (selected/indeterminate) based on children selection.
1875
+ * Called after leaf nodes are selected to properly show parent states.
1876
+ * Works bottom-up from deepest parents to root, tracking states in a Map.
1500
1877
  */
1501
- private syncSelectionWithTree;
1878
+ private updateParentStatesAfterSelection;
1502
1879
  /**
1503
1880
  * Loads node data for IDs that are selected but not yet in the cache.
1504
1881
  * This is critical for pre-selected values in collapsed branches.
1882
+ * Fetches all missing IDs in parallel to minimize API calls and latency.
1505
1883
  */
1506
1884
  private loadMissingNodeData;
1885
+ /**
1886
+ * For each selected id, if cached item has no parent (e.g. batch query returned minimal fields),
1887
+ * re-fetch by id so we have parent/parentId for building ancestor chains.
1888
+ * Fetches all needing refresh in parallel.
1889
+ */
1890
+ private ensureParentDataInCache;
1891
+ /**
1892
+ * Resolves parent ID from node data: supports nested `parent` object or flat parentId/parentKey.
1893
+ */
1894
+ private getParentIdFromNodeData;
1507
1895
  /**
1508
1896
  * Marks nodes as selected in the tree structure based on selectedNodeIds.
1509
1897
  * This ensures pre-selected nodes appear selected when the tree is rendered.
@@ -1522,7 +1910,8 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1522
1910
  */
1523
1911
  private processRootNode;
1524
1912
  /**
1525
- * Processes child nodes: marks excluded as disabled, marks selected, and syncs selection
1913
+ * Processes child nodes: marks excluded as disabled
1914
+ * Selection marking is handled in datasource callback ONLY during initial load
1526
1915
  */
1527
1916
  private processChildNodes;
1528
1917
  /**
@@ -1535,7 +1924,7 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1535
1924
  private cacheNodeDataFromNodes;
1536
1925
  /**
1537
1926
  * Calculate the full path from root to the selected node.
1538
- * Returns an array of strings like ["C", "B"] for node B under parent C.
1927
+ * Returns an array of strings like ["Operations", "IT Operations"] for node "IT Operations" under parent "Operations".
1539
1928
  * Uses tree-view's getNodePath() API when available, otherwise falls back to manual calculation.
1540
1929
  */
1541
1930
  private calculateNodePath;
@@ -1547,14 +1936,6 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
1547
1936
  * Get the display title for a node.
1548
1937
  */
1549
1938
  private getNodeTitle;
1550
- /**
1551
- * Checks if a node is a leaf node (has no children)
1552
- */
1553
- private isLeafNode;
1554
- /**
1555
- * Checks if a node has children by querying the data source
1556
- */
1557
- private checkIfNodeHasChildren;
1558
1939
  private getSelectedItems;
1559
1940
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryTreeSelectorComponent, never>;
1560
1941
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryTreeSelectorComponent, "axp-entity-category-tree-selector", never, {}, {}, never, never, true, never>;
@@ -1564,6 +1945,7 @@ declare class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComp
1564
1945
  protected readonly entityDetailPopoverService: AXPEntityDetailPopoverService;
1565
1946
  protected readonly formatService: AXFormatService;
1566
1947
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1948
+ private readonly categoryBatchResolver;
1567
1949
  private readonly rawValueSignal;
1568
1950
  set rawValueInput(value: any);
1569
1951
  protected entity: _angular_core.Signal<string>;
@@ -1579,12 +1961,21 @@ declare class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComp
1579
1961
  private efEntity;
1580
1962
  private efDisplay;
1581
1963
  protected visibleItems: _angular_core.Signal<any[]>;
1964
+ protected columnItems: _angular_core.Signal<AXPColumnItemListItem[]>;
1582
1965
  protected showItemDetail(item: any, index: number): Promise<void>;
1583
- protected handleItemClick(index: number): void;
1966
+ protected handleItemClick(listItem: AXPColumnItemListItem): void;
1584
1967
  protected getItemPath(item: any): string[];
1585
1968
  protected hasParent(item: any): boolean;
1586
1969
  protected getItemText(item: any): string;
1970
+ protected joinPath(path: string[]): string;
1587
1971
  protected getItemId(item: any): string;
1972
+ protected getBreadcrumbPath(item: any): string;
1973
+ private resolveItemsWithPaths;
1974
+ /**
1975
+ * Build path from categories array when record has full chain (id, parentId, title).
1976
+ * Used when middleware enriches categories on create/update.
1977
+ */
1978
+ private buildItemWithPathFromChain;
1588
1979
  private extractItemWithPath;
1589
1980
  /**
1590
1981
  * Calculate the full path from root to the item.
@@ -1642,6 +2033,11 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
1642
2033
  protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
1643
2034
  protected searchTerm: _angular_core.WritableSignal<string | null>;
1644
2035
  private entityDef;
2036
+ /**
2037
+ * Flag to prevent the value effect from running during internal updates.
2038
+ * This prevents circular dependency when setItems() calls setValue().
2039
+ */
2040
+ private isInternalUpdate;
1645
2041
  protected handleAddClick(e: AXClickEvent): void;
1646
2042
  protected handleValueChange(e: AXValueChangedEvent): void;
1647
2043
  protected handleOnBlur(e: AXFocusEvent): void;
@@ -1656,14 +2052,14 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
1656
2052
  private singleOrMultiple;
1657
2053
  protected getItemLabel(item: any): string;
1658
2054
  /**
1659
- * Get item path as array for breadcrumb component
2055
+ * Get item path as array for breadcrumb component (raw MLS or string per segment).
1660
2056
  */
1661
- protected getItemPath(item: any): string[];
2057
+ protected getItemPath(item: any): AXPMultiLanguageString[];
1662
2058
  /**
1663
2059
  * Join path array with separator.
1664
2060
  * Override this method to customize the separator (e.g., " > ", " -> ", " / ")
1665
2061
  */
1666
- protected joinPath(path: string[]): string;
2062
+ protected joinPath(path: unknown[]): string;
1667
2063
  protected getItemId(item: any): string;
1668
2064
  /**
1669
2065
  * Calculate the full path from root to the item.
@@ -1675,7 +2071,6 @@ declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetCompone
1675
2071
  }
1676
2072
 
1677
2073
  declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetComponent<any> {
1678
- protected readonly formatService: AXFormatService;
1679
2074
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
1680
2075
  protected entity: _angular_core.Signal<string>;
1681
2076
  protected multiple: _angular_core.Signal<boolean>;
@@ -1687,12 +2082,11 @@ declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetCompone
1687
2082
  private entityDef;
1688
2083
  protected displayItems: _angular_core.WritableSignal<{
1689
2084
  id: string;
1690
- text: string;
2085
+ titleRaw: AXPMultiLanguageString | null | undefined;
1691
2086
  }[]>;
1692
2087
  private efEntity;
1693
2088
  private efDisplay;
1694
2089
  private extractItem;
1695
- private getDisplayText;
1696
2090
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetViewComponent, never>;
1697
2091
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetViewComponent, "axp-entity-category-widget-view", never, {}, {}, never, never, true, never>;
1698
2092
  }
@@ -1700,109 +2094,93 @@ declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetCompone
1700
2094
  declare const AXPEntityCategoryWidget: AXPWidgetConfig;
1701
2095
 
1702
2096
  declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
1703
- /**
1704
- * Array of path sections to display
1705
- */
1706
- sections: _angular_core.InputSignal<string[]>;
1707
- /**
1708
- * Maximum number of characters per section.
1709
- * Can be a number or 'auto' to calculate based on available space.
1710
- */
2097
+ private readonly mlsResolver;
2098
+ /** Plain string or locale map per segment; truncation uses resolved text (see {@link resolvedSectionTexts}). */
2099
+ sections: _angular_core.InputSignal<readonly (AXPMultiLanguageString | null | undefined)[]>;
1711
2100
  characterLimit: _angular_core.InputSignal<number | "auto">;
1712
- /**
1713
- * Maximum number of sections to display before showing ellipsis.
1714
- * Can be a number or 'auto' to calculate based on available space.
1715
- */
1716
2101
  sectionLimit: _angular_core.InputSignal<number | "auto">;
1717
- /**
1718
- * Icon class for separator between sections
1719
- */
1720
2102
  separatorIcon: _angular_core.InputSignal<string>;
1721
- /**
1722
- * Icon class for ellipsis
1723
- */
1724
2103
  ellipsisIcon: _angular_core.InputSignal<string>;
1725
- /**
1726
- * Icon class for eye icon (collapse button)
1727
- */
1728
2104
  eyeIcon: _angular_core.InputSignal<string>;
1729
2105
  protected container: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
1730
2106
  protected isExpanded: _angular_core.WritableSignal<boolean>;
1731
2107
  private containerWidth;
1732
2108
  private resizeObserver;
1733
- /**
1734
- * Effective character limit (calculated if 'auto', otherwise uses input value)
1735
- */
2109
+ /** Resolved display strings for length / ellipsis (same rules as the pipe). */
2110
+ protected resolvedSectionTexts: _angular_core.Signal<string[]>;
1736
2111
  protected effectiveCharacterLimit: _angular_core.Signal<number>;
1737
- /**
1738
- * Effective section limit (calculated if 'auto', otherwise uses input value)
1739
- */
1740
2112
  protected effectiveSectionLimit: _angular_core.Signal<number>;
2113
+ protected hasTruncatedText: _angular_core.Signal<boolean>;
2114
+ protected hasHiddenSections: _angular_core.Signal<boolean>;
1741
2115
  /**
1742
- * All sections with truncated text (for collapsed display)
2116
+ * canToggle: If this is false, NO Eye Icon and NO Click events will exist.
1743
2117
  */
1744
- protected allSections: _angular_core.Signal<{
2118
+ protected canToggle: _angular_core.Signal<boolean>;
2119
+ protected allSectionsTruncated: _angular_core.Signal<{
1745
2120
  text: string;
1746
2121
  original: string;
1747
2122
  }[]>;
1748
- /**
1749
- * All sections with full text (for expanded display)
1750
- */
1751
- protected allSectionsFull: _angular_core.Signal<string[]>;
1752
- /**
1753
- * Sections to display (first N sections) when collapsed
1754
- */
1755
2123
  protected displayedSections: _angular_core.Signal<{
1756
2124
  text: string;
1757
2125
  original: string;
1758
2126
  }[]>;
1759
- /**
1760
- * Last section (always shown if there are hidden sections)
1761
- */
1762
2127
  protected lastSection: _angular_core.Signal<{
1763
2128
  text: string;
1764
2129
  original: string;
1765
2130
  }>;
1766
- /**
1767
- * Check if there are hidden sections
1768
- */
1769
- protected hasHiddenSections: _angular_core.Signal<boolean>;
2131
+ protected fullPath: _angular_core.Signal<string>;
1770
2132
  constructor();
1771
2133
  ngOnDestroy(): void;
1772
- /**
1773
- * Handles click on separator icon to expand
1774
- */
1775
2134
  protected handleSeparatorClick(event: Event): void;
1776
- /**
1777
- * Handles click on ellipsis icon to expand
1778
- */
1779
2135
  protected handleEllipsisClick(event: Event): void;
2136
+ protected handleCollapseClick(event: Event): void;
2137
+ private initializeResizeObserver;
2138
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTruncatedBreadcrumbComponent, never>;
2139
+ 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>;
2140
+ }
2141
+
2142
+ declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
2143
+ declare module '@acorex/platform/layout/widget-core' {
2144
+ interface AXPWidgetTypesMap {
2145
+ entityDefinitionProvider: 'entity-definition-provider-editor';
2146
+ }
2147
+ }
2148
+
2149
+ declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
2150
+ private readonly entityRegistry;
1780
2151
  /**
1781
- * Handles click on eye icon to collapse
2152
+ * Last applied module filter (from context) to avoid redundant reloads.
1782
2153
  */
1783
- protected handleCollapseClick(event: Event): void;
2154
+ private readonly lastModuleFilterKey;
1784
2155
  /**
1785
- * Initializes ResizeObserver to track container width
2156
+ * Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
1786
2157
  */
1787
- private initializeResizeObserver;
2158
+ private readonly reloadWhenModuleContextChanges;
1788
2159
  /**
1789
- * Calculates automatic character limit based on available space
2160
+ * Options:
2161
+ * - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
2162
+ * - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
1790
2163
  */
1791
- private calculateAutoCharacterLimit;
2164
+ protected loadDataSourceRows(): Promise<Array<{
2165
+ value: string;
2166
+ title: string;
2167
+ }>>;
2168
+ refresh(): void;
1792
2169
  /**
1793
- * Calculates automatic section limit based on available space
2170
+ * Reads sibling field from context store data (same shape as `lodash/get` paths).
1794
2171
  */
1795
- private calculateAutoSectionLimit;
2172
+ private readModuleFromContext;
1796
2173
  /**
1797
- * Truncates text to character limit with ellipsis
2174
+ * Resolves a sibling field path relative to the current widget's parent path.
1798
2175
  */
1799
- private truncateText;
1800
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTruncatedBreadcrumbComponent, never>;
1801
- 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>;
2176
+ private resolveSiblingContextPath;
2177
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
2178
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
1802
2179
  }
1803
2180
 
1804
2181
  declare class AXPEntityListTableService {
1805
2182
  private readonly workflow;
2183
+ private readonly commandService;
1806
2184
  private readonly expressionEvaluator;
1807
2185
  /**
1808
2186
  * Convert Entity to List Widget Options
@@ -1824,6 +2202,12 @@ declare class AXPEntityListTableService {
1824
2202
  * Convert Entity Actions to Row Commands
1825
2203
  */
1826
2204
  private createRowCommands;
2205
+ /**
2206
+ * Wraps string values with AXP_ROW_EXPR_PREFIX so widget-renderer does not
2207
+ * evaluate them (it only treats {{ ... }} as expressions). Data-list will
2208
+ * unwrap and evaluate per row with row data. Only used for secondary commands.
2209
+ */
2210
+ private wrapRowExpr;
1827
2211
  /**
1828
2212
  * Check if entity has Selected Scope Actions
1829
2213
  */
@@ -1841,26 +2225,43 @@ declare class AXPEntityListTableService {
1841
2225
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListTableService>;
1842
2226
  }
1843
2227
 
2228
+ interface AXPEntityListToolbarConvertOptions {
2229
+ excludeColumns?: string[];
2230
+ includeColumns?: string[];
2231
+ /** Related list: evaluated `AXPEntityTableColumn[]` from `AXPRelatedEntity.columns` */
2232
+ relatedTableColumns?: AXPEntityTableColumn[];
2233
+ customFilterDefinitions?: Partial<AXPFilterDefinition>[];
2234
+ }
1844
2235
  declare class AXPEntityListToolbarService {
1845
2236
  private readonly widgetResolver;
1846
2237
  /**
1847
2238
  * Convert Entity to Toolbar Options
1848
2239
  */
1849
- convertEntityToolbarOptions(entity: AXPEntity, options: any): Promise<{
2240
+ convertEntityToolbarOptions(entity: AXPEntity, options: AXPEntityListToolbarConvertOptions | undefined): Promise<{
1850
2241
  filterDefinitions: AXPFilterDefinition[];
1851
2242
  columnDefinitions: AXPColumnQuery[];
1852
2243
  sortDefinitions: AXPSortDefinition[];
1853
2244
  }>;
2245
+ /**
2246
+ * Merges custom filter definitions into the entity-derived list by `field`.
2247
+ * Matching fields: custom properties are applied on top of the base definition.
2248
+ * Non-matching custom entries are appended.
2249
+ */
2250
+ private mergeFilterDefinitions;
2251
+ private filterFieldKey;
2252
+ private mergeFilterDefinition;
1854
2253
  /**
1855
2254
  * Create Filter Definitions for Toolbar
1856
2255
  */
1857
2256
  private createFilterDefinitions;
1858
2257
  /**
1859
- * Create Column Definitions for Toolbar
2258
+ * Create Column Definitions for Toolbar.
2259
+ * Includes both entity.properties and enriched columns (e.g. person.firstName with showAs).
1860
2260
  */
1861
2261
  private createColumnDefinitions;
1862
2262
  /**
1863
- * Create Sort Definitions for Toolbar
2263
+ * Create Sort Definitions for Toolbar.
2264
+ * Includes entity.properties with sort enabled, plus enriched columns (dotted paths).
1864
2265
  */
1865
2266
  private createSortDefinitions;
1866
2267
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
@@ -1876,6 +2277,7 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
1876
2277
  protected deviceService: AXPDeviceService;
1877
2278
  protected commandService: AXPCommandService;
1878
2279
  protected eventService: AXPBroadcastEventService;
2280
+ private readonly expressionEvaluator;
1879
2281
  protected isMounted: _angular_core.WritableSignal<boolean>;
1880
2282
  readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
1881
2283
  protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
@@ -1889,6 +2291,8 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
1889
2291
  protected entitySource: _angular_core.Signal<any>;
1890
2292
  protected excludeColumns: _angular_core.Signal<string[]>;
1891
2293
  protected includeColumns: _angular_core.Signal<string[]>;
2294
+ protected relatedTableColumns: _angular_core.Signal<AXPEntityTableColumn[] | undefined>;
2295
+ protected customFilterDefinitions: _angular_core.Signal<Partial<AXPFilterDefinition>[] | undefined>;
1892
2296
  protected externalActions: _angular_core.Signal<AXPEntityAction[]>;
1893
2297
  protected maxHeight: _angular_core.Signal<string>;
1894
2298
  protected showEntityActions: _angular_core.Signal<any>;
@@ -1899,7 +2303,8 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
1899
2303
  protected secondaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
1900
2304
  protected handleActionClick(item: AXPActionMenuItem): void;
1901
2305
  protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
1902
- protected execute(commandName: string, data: any): Promise<void>;
2306
+ protected execute(commandName: string, _data: unknown): Promise<void>;
2307
+ private evaluateToolbarExpressions;
1903
2308
  protected queries: undefined;
1904
2309
  /**
1905
2310
  * Validates that all required dependencies are available
@@ -1937,32 +2342,6 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
1937
2342
 
1938
2343
  declare const AXPEntityListWidget: AXPWidgetConfig;
1939
2344
 
1940
- declare class AXPLookupFilterWidgetEditComponent extends AXPValueWidgetComponent<any> {
1941
- #private;
1942
- protected editorPath: string;
1943
- protected lookupWidgetRenderer: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
1944
- protected entity: _angular_core.Signal<string>;
1945
- protected textField: _angular_core.Signal<string>;
1946
- protected valueField: _angular_core.Signal<string>;
1947
- protected customFilter: _angular_core.Signal<AXDataSourceFilterOption>;
1948
- protected multiple: _angular_core.Signal<boolean>;
1949
- protected lookupNode: _angular_core.WritableSignal<AXPWidgetNode>;
1950
- private shouldFocus;
1951
- /**
1952
- * Public focus method to trigger focusing
1953
- */
1954
- focus(): void;
1955
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupFilterWidgetEditComponent, never>;
1956
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupFilterWidgetEditComponent, "ng-component", never, {}, {}, never, never, true, never>;
1957
- }
1958
-
1959
- declare const AXPLookupFilterWidget: AXPWidgetConfig;
1960
- declare module '@acorex/platform/layout/widget-core' {
1961
- interface AXPWidgetTypesMap {
1962
- lookupFilter: 'lookup-filter';
1963
- }
1964
- }
1965
-
1966
2345
  declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any> {
1967
2346
  protected readonly formatService: AXFormatService;
1968
2347
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
@@ -1979,7 +2358,10 @@ declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any>
1979
2358
  private efEntity;
1980
2359
  private efDisplay;
1981
2360
  private extractItem;
1982
- private getDisplayText;
2361
+ /**
2362
+ * Raw label for {@link AXPResolveMultiLanguageStringPipe} (handles {@link AXPMultiLanguageString} and plain strings).
2363
+ */
2364
+ private getDisplayRaw;
1983
2365
  private get __class();
1984
2366
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetViewComponent, never>;
1985
2367
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetViewComponent, "axp-lookup-widget-view", never, {}, {}, never, never, true, never>;
@@ -1996,10 +2378,18 @@ interface AXPEntityDataSelectorOptions {
1996
2378
  name: string;
1997
2379
  dir: 'asc' | 'desc';
1998
2380
  }[];
1999
- allowCreate?: boolean;
2381
+ allowCreate?: AXPDataSelectorAllowCreate;
2000
2382
  searchFields?: string[];
2001
2383
  initialSearchTerm?: string;
2002
2384
  selectedItemIds?: string[] | number[];
2385
+ categoryFilter?: {
2386
+ title: string;
2387
+ dataSource: AXPCategoryTreeDataSource;
2388
+ filterField: string;
2389
+ filterOperator?: 'equal' | 'contains' | 'in';
2390
+ width?: string;
2391
+ };
2392
+ showCategoryFilter?: boolean;
2003
2393
  }
2004
2394
  interface AXPEntityDataSelectorResult {
2005
2395
  items: any[];
@@ -2008,20 +2398,22 @@ declare class AXPEntityDataSelectorService {
2008
2398
  private readonly dataSelectorService;
2009
2399
  private readonly filterOperatorMiddleware;
2010
2400
  private readonly widgetResolver;
2401
+ private readonly entityResolver;
2402
+ private readonly commandService;
2011
2403
  /**
2012
2404
  * Open entity data selector popup
2013
2405
  */
2014
2406
  open(options: AXPEntityDataSelectorOptions): Promise<AXPEntityDataSelectorResult | null>;
2015
2407
  /**
2016
- * Open entity data selector with category filter
2408
+ * Execute Entity:Create and return created item.
2409
+ * Used by lookup widget and data selector for inline create.
2017
2410
  */
2018
- openWithCategoryFilter(options: Omit<AXPEntityDataSelectorOptions, 'allowCreate'>, categoryFilterConfig: {
2019
- title: string;
2020
- dataSource: any;
2021
- filterField: string;
2022
- filterOperator?: 'equal' | 'contains' | 'in';
2023
- width?: string;
2024
- }): Promise<AXPEntityDataSelectorResult | null>;
2411
+ executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick'): Promise<any | null>;
2412
+ /**
2413
+ * Normalize item's phones/emails for expose/display.
2414
+ * Call this when receiving items from any source (create, API, selector).
2415
+ */
2416
+ normalizeItemContactArrays(item: any): any;
2025
2417
  /**
2026
2418
  * Create data selector configuration from entity options
2027
2419
  */
@@ -2039,9 +2431,23 @@ declare class AXPEntityDataSelectorService {
2039
2431
  */
2040
2432
  private getSearchFields;
2041
2433
  /**
2042
- * Check if entity supports create operation
2434
+ * Get allowCreate mode from entity
2435
+ */
2436
+ private getAllowCreate;
2437
+ /**
2438
+ * Execute Entity:Create and return created item
2439
+ */
2440
+ private executeCreate;
2441
+ /**
2442
+ * Normalize phones/emails from repeater form to plain arrays of { value: string }.
2443
+ * Repeater/ContactBox can return nested structure: { value: { label: "", value: "101010" } }
2444
+ * Contact widget expects: { value: "101010", label?: string }
2043
2445
  */
2044
- private canCreate;
2446
+ private normalizeContactArrays;
2447
+ /**
2448
+ * Create category tree data source from category entity key
2449
+ */
2450
+ private createCategoryTreeDataSource;
2045
2451
  /**
2046
2452
  * Merge custom and parent filters into data source query
2047
2453
  */
@@ -2050,6 +2456,16 @@ declare class AXPEntityDataSelectorService {
2050
2456
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDataSelectorService>;
2051
2457
  }
2052
2458
 
2459
+ /**
2460
+ * Base interface for lookup widget look components
2461
+ * All look components should implement this interface to ensure consistency
2462
+ */
2463
+ declare abstract class LookupWidgetLookBase {
2464
+ abstract refresh(): void;
2465
+ abstract focus(): void;
2466
+ abstract clear(): void;
2467
+ }
2468
+
2053
2469
  type AXPLookupWidgetLookType = 'select' | 'lookup';
2054
2470
  interface AXPLookupWidgetOptions {
2055
2471
  disabled?: boolean | AXPExpression;
@@ -2065,62 +2481,47 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2065
2481
  #private;
2066
2482
  protected readonly injector: Injector;
2067
2483
  protected readonly entityResolver: AXPEntityDefinitionRegistryService;
2068
- protected readonly formatService: AXFormatService;
2069
- protected readonly popupService: AXPopupService;
2484
+ protected readonly entityService: AXPEntityService;
2070
2485
  protected readonly entityDataSelectorService: AXPEntityDataSelectorService;
2071
- private readonly translateService;
2072
- protected selectBox: _angular_core.Signal<AXSelectBoxComponent | undefined>;
2073
- protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
2074
- private shouldFocus;
2486
+ private readonly mlsResolver;
2487
+ protected componentLook: _angular_core.Signal<LookupWidgetLookBase | undefined>;
2075
2488
  protected expose: _angular_core.Signal<string | any[] | undefined>;
2076
2489
  protected entity: _angular_core.Signal<string>;
2077
- protected disabled: _angular_core.Signal<string>;
2490
+ protected disabled: _angular_core.Signal<string | boolean>;
2078
2491
  protected columns: _angular_core.Signal<string[]>;
2079
2492
  protected textField: _angular_core.Signal<string>;
2080
2493
  protected hasClearButton: _angular_core.Signal<boolean>;
2081
2494
  protected customFilter: _angular_core.Signal<AXDataSourceFilterOption>;
2495
+ protected filterMode: _angular_core.Signal<boolean>;
2082
2496
  protected multiple: _angular_core.Signal<boolean>;
2083
2497
  protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
2084
- protected allowClear: _angular_core.Signal<boolean>;
2085
2498
  protected defaultTextField: _angular_core.Signal<string>;
2086
2499
  protected displayField: _angular_core.Signal<string>;
2087
- protected selectedItemsText: _angular_core.Signal<string>;
2500
+ protected allowCreate: _angular_core.Signal<"full" | "none" | "quick">;
2088
2501
  protected valueField: _angular_core.Signal<string>;
2089
2502
  protected displayFormat: _angular_core.Signal<string | undefined>;
2090
2503
  protected conditions?: AXPQueryFilter[];
2091
2504
  protected filter: AXDataSourceFilterOption | null;
2092
- private entityDef;
2093
- /**
2094
- * Get default sort order from entity's first list view
2095
- */
2096
- protected defaultSorts: _angular_core.Signal<AXDataSourceSortOption[]>;
2097
- protected dataSource: _angular_core.Signal<AXDataSource<unknown> | null>;
2098
- protected searchTerm: _angular_core.WritableSignal<string | null>;
2505
+ protected entityDef: _angular_core.WritableSignal<AXPEntity | null>;
2099
2506
  protected selectedItems: _angular_core.WritableSignal<any[]>;
2100
- textbox: _angular_core.Signal<AXTagBoxComponent | undefined>;
2507
+ protected initialItems: _angular_core.WritableSignal<boolean>;
2508
+ protected initialized: _angular_core.WritableSignal<boolean>;
2509
+ protected previousValue: _angular_core.WritableSignal<any>;
2101
2510
  protected isLoading: _angular_core.WritableSignal<boolean>;
2102
- protected isOpen: _angular_core.WritableSignal<boolean>;
2103
- private placeholderUpdateToken;
2511
+ private hasValue;
2104
2512
  private findByValue;
2105
- protected handleOnClick(e: AXClickEvent): void;
2106
- private showSelector;
2107
- protected selectBoxValueChange(e: AXValueChangedEvent): void;
2108
- protected handleValueChange(e: AXValueChangedEvent): void;
2109
- protected handleSearchInputChange(e: AXValueChangedEvent): void;
2110
- protected handleOnBlur(e: AXFocusEvent): void;
2111
- protected handleKeyUp(e: AXHtmlEvent): Promise<void>;
2112
- private setItems;
2113
- protected handleClearClick(): void;
2114
- refresh(): void;
2115
- clear(): void;
2116
- clearInput(): void;
2117
- protected getTagLabel(item: any): string;
2118
- private searchByValue;
2119
- private mergeFilter;
2120
- private singleOrMultiple;
2513
+ protected handleComponentValueChanged(items: any[] | null): void;
2514
+ protected handleCreateClick(_e: AXClickEvent): Promise<void>;
2515
+ private executeCreate;
2516
+ protected setLoading: (loading: boolean) => void;
2517
+ protected setItems: (items: any[]) => void;
2121
2518
  /**
2122
- * Public focus method to trigger focusing
2519
+ * Update expose data for empty state
2123
2520
  */
2521
+ private expoesItems;
2522
+ private singleOrMultiple;
2523
+ refresh(): void;
2524
+ clear(): void;
2124
2525
  focus(): void;
2125
2526
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetEditComponent, never>;
2126
2527
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetEditComponent, "axp-lookup-widget-edit", never, {}, {}, never, never, true, never>;
@@ -2128,6 +2529,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2128
2529
 
2129
2530
  declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
2130
2531
  private readonly entityDetailPopoverService;
2532
+ private readonly mlResolver;
2131
2533
  private readonly formatService;
2132
2534
  protected moreButton: _angular_core.Signal<ElementRef<any> | undefined>;
2133
2535
  protected morePopover: _angular_core.Signal<AXPopoverComponent | undefined>;
@@ -2153,13 +2555,507 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
2153
2555
  private openMorePopover;
2154
2556
  private closeMorePopover;
2155
2557
  private extractItem;
2156
- protected getDisplayText(item: any): string;
2558
+ protected getDisplayRaw(item: any): string;
2559
+ private resolveDisplayValue;
2157
2560
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetColumnComponent, never>;
2158
2561
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetColumnComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
2159
2562
  }
2160
2563
 
2161
2564
  declare const AXPLookupWidget: AXPWidgetConfig;
2162
2565
 
2566
+ /**
2567
+ * Unified reference format for all sources
2568
+ */
2569
+ interface AXPMultiSourceRef {
2570
+ /** Source identifier (e.g., 'site-location', 'inline-address', 'employee-user') */
2571
+ sourceKey: string;
2572
+ /** Entity ID if entity source (optional for inline sources) */
2573
+ refId?: string;
2574
+ /** Always present - used for display */
2575
+ displayName: string;
2576
+ /** Full data (for inline sources or denormalized entity data) */
2577
+ data?: any;
2578
+ /** Additional metadata */
2579
+ meta?: Record<string, unknown>;
2580
+ }
2581
+ /**
2582
+ * Stored value type
2583
+ * - Single: AXPMultiSourceRef
2584
+ * - Multiple: AXPMultiSourceRef[]
2585
+ */
2586
+ type AXPMultiSourceValue = AXPMultiSourceRef | AXPMultiSourceRef[];
2587
+ /**
2588
+ * Source type
2589
+ */
2590
+ declare enum AXPMultiSourceType {
2591
+ Entity = "entity",
2592
+ Inline = "inline"
2593
+ }
2594
+ /**
2595
+ * Single source item definition
2596
+ */
2597
+ interface AXPMultiSourceItem {
2598
+ /** Unique identifier for this source */
2599
+ key: string;
2600
+ /** Display information */
2601
+ title: string;
2602
+ icon?: string;
2603
+ badge?: string;
2604
+ description?: string;
2605
+ /** Source type */
2606
+ type: AXPMultiSourceType;
2607
+ /** For entity sources: entity name (e.g., 'LocationManagement.Location') */
2608
+ entity?: string;
2609
+ /** For inline sources: command key to execute for inline creation (e.g., 'Module.Entity:CreateInline') */
2610
+ inlineCreateCommand?: string;
2611
+ /** Optional: Filter/constraints for this source */
2612
+ filters?: AXDataSourceFilterOption;
2613
+ /** Optional: Custom search fields */
2614
+ searchFields?: string[];
2615
+ /** Display format template for results */
2616
+ displayFormat?: string;
2617
+ /** Value transformation (how to store this source) */
2618
+ valueTransform?: (item: any) => AXPMultiSourceRef;
2619
+ }
2620
+ /**
2621
+ * Complete source configuration (from provider)
2622
+ */
2623
+ interface AXPMultiSourceDefinition {
2624
+ /** Provider name */
2625
+ name: string;
2626
+ /** Display title */
2627
+ title: string;
2628
+ /** Sources array */
2629
+ sources: AXPMultiSourceItem[];
2630
+ /** Default search strategy */
2631
+ searchStrategy: 'unified' | 'tabs' | 'grouped';
2632
+ /** Default display format */
2633
+ defaultDisplayFormat?: string;
2634
+ /** Default multiple selection */
2635
+ defaultMultiple?: boolean;
2636
+ }
2637
+ /**
2638
+ * Widget options
2639
+ */
2640
+ interface AXPMultiSourceSelectorWidgetOptions {
2641
+ /** Provider name (required) */
2642
+ providerName: string;
2643
+ /** Override multiple selection (optional, uses provider default if not specified) */
2644
+ multiple?: boolean;
2645
+ /** Override display format (optional, uses provider default if not specified) */
2646
+ displayFormat?: string;
2647
+ /** Additional filters to apply to all sources */
2648
+ filters?: AXDataSourceFilterOption;
2649
+ /** Custom placeholder */
2650
+ placeholder?: string;
2651
+ /** Allow clear */
2652
+ allowClear?: boolean;
2653
+ }
2654
+
2655
+ /**
2656
+ * Injection token for multi-source definition providers
2657
+ */
2658
+ declare const AXP_MULTI_SOURCE_DEFINITION_PROVIDER: InjectionToken<AXPMultiSourceDefinitionProvider[]>;
2659
+ /**
2660
+ * Provider context for building definitions
2661
+ */
2662
+ declare class AXPMultiSourceDefinitionProviderContext {
2663
+ private definitions;
2664
+ addDefinition(definition: AXPMultiSourceDefinition): void;
2665
+ getDefinitions(): AXPMultiSourceDefinition[];
2666
+ findDefinition(name: string): AXPMultiSourceDefinition | undefined;
2667
+ }
2668
+ /**
2669
+ * Provider interface
2670
+ */
2671
+ interface AXPMultiSourceDefinitionProvider {
2672
+ provide(context: AXPMultiSourceDefinitionProviderContext): Promise<void> | void;
2673
+ }
2674
+ /**
2675
+ * Service for managing multi-source definitions
2676
+ */
2677
+ declare class AXPMultiSourceDefinitionProviderService {
2678
+ private readonly providers;
2679
+ private cache;
2680
+ private load;
2681
+ /**
2682
+ * Get definition by name
2683
+ */
2684
+ getDefinition(name: string): Promise<AXPMultiSourceDefinition>;
2685
+ /**
2686
+ * Reload definitions (clear cache)
2687
+ */
2688
+ reload(): Promise<void>;
2689
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceDefinitionProviderService, never>;
2690
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMultiSourceDefinitionProviderService>;
2691
+ }
2692
+
2693
+ declare const AXPMultiSourceSelectorWidget: AXPWidgetConfig;
2694
+
2695
+ /**
2696
+ * Search result item with source information
2697
+ */
2698
+ interface AXPMultiSourceSearchResultItem {
2699
+ source: AXPMultiSourceItem;
2700
+ item: any;
2701
+ }
2702
+ /**
2703
+ * Search result
2704
+ */
2705
+ interface AXPMultiSourceSearchResult {
2706
+ items: AXPMultiSourceSearchResultItem[];
2707
+ total: number;
2708
+ }
2709
+ declare class AXPMultiSourceFederatedSearchService {
2710
+ private readonly entityResolver;
2711
+ /**
2712
+ * Search across all enabled sources
2713
+ */
2714
+ search(definition: AXPMultiSourceDefinition, searchTerm: string, filters?: AXDataSourceFilterOption): Promise<AXPMultiSourceSearchResult>;
2715
+ /**
2716
+ * Search single source
2717
+ */
2718
+ searchSource(source: AXPMultiSourceItem, searchTerm: string, filters?: AXDataSourceFilterOption): Promise<{
2719
+ items: any[];
2720
+ total: number;
2721
+ }>;
2722
+ /**
2723
+ * Resolve entity from entity name string (e.g., 'LocationManagement.Location')
2724
+ */
2725
+ private resolveEntity;
2726
+ /**
2727
+ * Search entity using entity queries
2728
+ */
2729
+ private searchEntity;
2730
+ /**
2731
+ * Build search filters from search term
2732
+ */
2733
+ private buildSearchFilters;
2734
+ /**
2735
+ * Get default searchable fields from entity
2736
+ */
2737
+ private getDefaultSearchFields;
2738
+ /**
2739
+ * Merge multiple filters
2740
+ */
2741
+ private mergeFilters;
2742
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceFederatedSearchService, never>;
2743
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMultiSourceFederatedSearchService>;
2744
+ }
2745
+
2746
+ /**
2747
+ * Selector open configuration
2748
+ */
2749
+ interface AXPMultiSourceSelectorOpenConfig {
2750
+ definition: AXPMultiSourceDefinition;
2751
+ multiple: boolean;
2752
+ selectedValues?: AXPMultiSourceValue;
2753
+ filters?: AXDataSourceFilterOption;
2754
+ title?: string;
2755
+ }
2756
+ /**
2757
+ * Selector result
2758
+ */
2759
+ interface AXPMultiSourceSelectorResult {
2760
+ items: AXPMultiSourceRef[];
2761
+ }
2762
+ declare class AXPMultiSourceSelectorService {
2763
+ private readonly popupService;
2764
+ private readonly definitionService;
2765
+ /**
2766
+ * Open selector popup by provider name
2767
+ */
2768
+ openByProviderName(providerName: string, config: {
2769
+ multiple: boolean;
2770
+ selectedValues?: AXPMultiSourceValue;
2771
+ filters?: AXDataSourceFilterOption;
2772
+ title?: string;
2773
+ }): Promise<AXPMultiSourceSelectorResult | null>;
2774
+ /**
2775
+ * Open selector popup
2776
+ */
2777
+ open(config: AXPMultiSourceSelectorOpenConfig): Promise<AXPMultiSourceSelectorResult | null>;
2778
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorService, never>;
2779
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMultiSourceSelectorService>;
2780
+ }
2781
+
2782
+ /**
2783
+ * Multi-source selector popup component
2784
+ */
2785
+ declare class AXPMultiSourceSelectorComponent extends AXBasePageComponent {
2786
+ private readonly entityDataSelectorService;
2787
+ private readonly entityResolver;
2788
+ private readonly translationService;
2789
+ protected config: _angular_core.WritableSignal<AXPMultiSourceSelectorOpenConfig>;
2790
+ protected definition: _angular_core.Signal<AXPMultiSourceDefinition>;
2791
+ protected activeTabKey: _angular_core.WritableSignal<string | null>;
2792
+ protected activeSource: _angular_core.Signal<AXPMultiSourceItem | null>;
2793
+ protected selectedItems: _angular_core.WritableSignal<AXPMultiSourceRef[]>;
2794
+ protected readonly AXPMultiSourceType: typeof AXPMultiSourceType;
2795
+ protected ngOnInit(): void;
2796
+ protected handleTabClick(source: AXPMultiSourceItem): void;
2797
+ protected handleSelectFromSource(source: AXPMultiSourceItem): Promise<void>;
2798
+ protected handleCancel(): void;
2799
+ protected handleConfirm(): void;
2800
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorComponent, never>;
2801
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMultiSourceSelectorComponent, "axp-multi-source-selector", never, {}, {}, never, never, true, never>;
2802
+ }
2803
+
2804
+ declare class AXPMultiSourceSelectorWidgetEditComponent extends AXPValueWidgetComponent<any> {
2805
+ protected readonly popupService: AXPopupService;
2806
+ protected readonly definitionService: AXPMultiSourceDefinitionProviderService;
2807
+ protected readonly selectorService: AXPMultiSourceSelectorService;
2808
+ protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
2809
+ protected providerName: _angular_core.Signal<string>;
2810
+ protected disabled: _angular_core.Signal<boolean>;
2811
+ protected multiple: _angular_core.Signal<boolean>;
2812
+ protected allowClear: _angular_core.Signal<boolean>;
2813
+ protected placeholderText: _angular_core.Signal<string>;
2814
+ protected searchTerm: _angular_core.WritableSignal<string | null>;
2815
+ protected selectedItems: _angular_core.WritableSignal<AXPMultiSourceRef[]>;
2816
+ protected isLoading: _angular_core.WritableSignal<boolean>;
2817
+ protected isOpen: _angular_core.WritableSignal<boolean>;
2818
+ protected definition: _angular_core.WritableSignal<AXPMultiSourceDefinition | null>;
2819
+ private efProvider;
2820
+ private efValue;
2821
+ protected handleOnClick(e: AXClickEvent): void;
2822
+ protected handleValueChange(e: AXValueChangedEvent): void;
2823
+ protected handleSearchInputChange(e: AXValueChangedEvent): void;
2824
+ protected handleOnBlur(e: AXFocusEvent): void;
2825
+ protected handleKeyUp(e: AXHtmlEvent): Promise<void>;
2826
+ protected handleClearClick(): void;
2827
+ private findByValue;
2828
+ private normalizeToRef;
2829
+ private showSelector;
2830
+ private setItems;
2831
+ refresh(): void;
2832
+ clear(): void;
2833
+ private clearInput;
2834
+ protected getTagLabel(item: AXPMultiSourceRef): string;
2835
+ private singleOrMultiple;
2836
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorWidgetEditComponent, never>;
2837
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMultiSourceSelectorWidgetEditComponent, "axp-multi-source-selector-widget-edit", never, {}, {}, never, never, true, never>;
2838
+ }
2839
+
2840
+ declare class AXPMultiSourceSelectorWidgetViewComponent extends AXPValueWidgetComponent<any> {
2841
+ protected readonly formatService: AXFormatService;
2842
+ protected readonly definitionService: AXPMultiSourceDefinitionProviderService;
2843
+ protected providerName: _angular_core.Signal<string>;
2844
+ protected multiple: _angular_core.Signal<boolean>;
2845
+ protected badgeClass: _angular_core.Signal<string>;
2846
+ protected displayFormat: _angular_core.Signal<string | undefined>;
2847
+ protected loading: _angular_core.WritableSignal<boolean>;
2848
+ private definition;
2849
+ protected displayItems: _angular_core.WritableSignal<{
2850
+ id: string;
2851
+ text: string;
2852
+ }[]>;
2853
+ private efProvider;
2854
+ private efDisplay;
2855
+ private extractDisplayItem;
2856
+ private getDisplayText;
2857
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorWidgetViewComponent, never>;
2858
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMultiSourceSelectorWidgetViewComponent, "axp-multi-source-selector-widget-view", never, {}, {}, never, never, true, never>;
2859
+ }
2860
+
2861
+ declare class AXPMultiSourceSelectorWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
2862
+ private readonly formatService;
2863
+ private readonly definitionService;
2864
+ protected providerName: string;
2865
+ protected columnName: string;
2866
+ protected maxVisible: number;
2867
+ protected displayFormat: _angular_core.Signal<string | undefined>;
2868
+ private definition;
2869
+ constructor();
2870
+ protected displayItems: _angular_core.Signal<{
2871
+ id: string;
2872
+ text: string;
2873
+ }[]>;
2874
+ protected allItems: _angular_core.Signal<{
2875
+ id: string;
2876
+ text: string;
2877
+ }[]>;
2878
+ protected visibleItems: _angular_core.Signal<{
2879
+ id: string;
2880
+ text: string;
2881
+ }[]>;
2882
+ protected hasMoreItems: _angular_core.Signal<boolean>;
2883
+ protected remainingItemsCount: _angular_core.Signal<number>;
2884
+ private loadDefinition;
2885
+ private extractDisplayItem;
2886
+ private getDisplayText;
2887
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorWidgetColumnComponent, never>;
2888
+ 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>;
2889
+ }
2890
+
2891
+ declare class AXPSelectorStructureWidgetColumnComponent extends AXPValueWidgetComponent {
2892
+ protected identityField: _angular_core.Signal<string>;
2893
+ protected textField: _angular_core.Signal<string>;
2894
+ protected valueField: _angular_core.Signal<string>;
2895
+ protected previewIcon: _angular_core.Signal<string>;
2896
+ protected cellText: _angular_core.Signal<string>;
2897
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetColumnComponent, never>;
2898
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetColumnComponent, "axp-selector-structure-widget-column", never, {}, {}, never, never, true, never>;
2899
+ }
2900
+
2901
+ type AXPSelectorStructureSelectorMode = 'select' | 'lookup';
2902
+ type AXPSelectorStructureStructureMode = 'schema' | 'freeform';
2903
+ type AXPSelectorStructureIdentityDisplay = 'readonly' | 'hidden';
2904
+ /** UI layout: standard = global multi-select + collapse rows; compactPanel = per-row select (address-style). */
2905
+ type AXPSelectorStructurePresentationMode = 'standard' | 'compactPanel';
2906
+ interface AXPSelectorStructureFieldDef {
2907
+ name: string;
2908
+ title: string;
2909
+ widgetType: string;
2910
+ options?: Record<string, unknown>;
2911
+ }
2912
+ declare const AXPSelectorStructureWidget: AXPWidgetConfig;
2913
+ interface AXPSelectorStructureWidgetDesignerOptions {
2914
+ selectorMode?: AXPSelectorStructureSelectorMode;
2915
+ structureMode?: AXPSelectorStructureStructureMode;
2916
+ presentation?: AXPSelectorStructurePresentationMode;
2917
+ previewIcon?: string;
2918
+ placeholder?: string;
2919
+ contextSiblingPath?: string;
2920
+ identityField?: string;
2921
+ identityDisplay?: AXPSelectorStructureIdentityDisplay;
2922
+ valueField?: string;
2923
+ textField?: string;
2924
+ dataSource?: unknown;
2925
+ multiple?: boolean;
2926
+ lookup?: {
2927
+ entity?: string;
2928
+ look?: 'select' | 'lookup';
2929
+ filter?: unknown;
2930
+ hasClearButton?: boolean;
2931
+ };
2932
+ structureFields?: AXPSelectorStructureFieldDef[];
2933
+ freeformPath?: string;
2934
+ }
2935
+ interface AXPSelectorStructureWidgetViewOptions extends AXPSelectorStructureWidgetDesignerOptions {
2936
+ }
2937
+ interface AXPSelectorStructureWidgetEditOptions extends AXPSelectorStructureWidgetDesignerOptions {
2938
+ }
2939
+ interface AXPSelectorStructureWidgetColumnOptions {
2940
+ identityField?: string;
2941
+ textField?: string;
2942
+ previewIcon?: string;
2943
+ }
2944
+ interface AXPSelectorStructureWidgetPrintOptions {
2945
+ }
2946
+ interface AXPSelectorStructureWidgetOptions {
2947
+ designer: AXPSelectorStructureWidgetDesignerOptions;
2948
+ view: AXPSelectorStructureWidgetViewOptions;
2949
+ edit: AXPSelectorStructureWidgetEditOptions;
2950
+ print: AXPSelectorStructureWidgetPrintOptions;
2951
+ column: AXPSelectorStructureWidgetColumnOptions;
2952
+ }
2953
+
2954
+ declare class AXPSelectorStructureWidgetEditComponent extends AXPValueWidgetComponent {
2955
+ #private;
2956
+ private readonly entityRegistry;
2957
+ protected selectorMode: _angular_core.Signal<"select" | "lookup">;
2958
+ protected structureMode: _angular_core.Signal<"schema" | "freeform">;
2959
+ protected contextSiblingPath: _angular_core.Signal<string>;
2960
+ protected identityField: _angular_core.Signal<string>;
2961
+ protected identityDisplay: _angular_core.Signal<"readonly" | "hidden">;
2962
+ protected valueField: _angular_core.Signal<string>;
2963
+ protected textField: _angular_core.Signal<string>;
2964
+ protected multiple: _angular_core.Signal<boolean>;
2965
+ protected freeformPath: _angular_core.Signal<string>;
2966
+ protected lookupEntityKey: _angular_core.Signal<string | undefined>;
2967
+ protected lookupHasClearButton: _angular_core.Signal<boolean>;
2968
+ protected lookupCustomFilter: _angular_core.Signal<AXDataSourceFilterOption | undefined>;
2969
+ protected disabled: _angular_core.Signal<boolean>;
2970
+ protected presentationMode: _angular_core.Signal<"standard" | "compactPanel">;
2971
+ /** Compact panel (address-style) applies only to sibling select mode; lookup falls back to standard layout. */
2972
+ protected useCompactLayout: _angular_core.Signal<boolean>;
2973
+ protected previewIcon: _angular_core.Signal<string>;
2974
+ protected placeholder: _angular_core.Signal<string>;
2975
+ protected compactSelectPlaceholder: _angular_core.Signal<string>;
2976
+ protected addCompactItemLabel: _angular_core.Signal<string>;
2977
+ protected clearRowTitle: _angular_core.Signal<string>;
2978
+ protected removeRowTitle: _angular_core.Signal<string>;
2979
+ protected resolvedSiblingPath(): string;
2980
+ /**
2981
+ * Items shown in the selector: sibling context array when path is set, otherwise optional static `dataSource` array.
2982
+ */
2983
+ protected contextItems: _angular_core.Signal<unknown[]>;
2984
+ protected contextSelectDataSource: _angular_core.Signal<AXDataSource<unknown>>;
2985
+ protected selectedSourceItems: _angular_core.WritableSignal<unknown[]>;
2986
+ protected compactRowDataSources: _angular_core.Signal<AXDataSource<unknown>[]>;
2987
+ protected compactRowSelectedItems: _angular_core.Signal<unknown[][]>;
2988
+ protected lookupEntityDef: _angular_core.WritableSignal<AXPEntity | null>;
2989
+ protected defaultLookupSorts: _angular_core.Signal<AXDataSourceSortOption[]>;
2990
+ protected lookupDataSource: _angular_core.Signal<AXDataSource<unknown> | null>;
2991
+ protected lookupTextField: _angular_core.Signal<string>;
2992
+ protected lookupSelectedItems: _angular_core.WritableSignal<unknown[]>;
2993
+ protected rows: _angular_core.Signal<Record<string, unknown>[]>;
2994
+ protected structureFields: _angular_core.Signal<AXPSelectorStructureFieldDef[]>;
2995
+ protected structureFieldNodes: _angular_core.Signal<{
2996
+ name: string;
2997
+ title: string;
2998
+ node: AXPWidgetNode;
2999
+ }[]>;
3000
+ protected identityLabel: _angular_core.Signal<string>;
3001
+ protected identityNode: _angular_core.Signal<AXPWidgetNode | null>;
3002
+ protected freeformHeading: _angular_core.Signal<string>;
3003
+ protected keyPlaceholder: _angular_core.Signal<string>;
3004
+ protected valuePlaceholder: _angular_core.Signal<string>;
3005
+ protected addPairLabel: _angular_core.Signal<string>;
3006
+ protected removePairTitle: _angular_core.Signal<string>;
3007
+ protected disabledHint: _angular_core.Signal<string>;
3008
+ protected trackRow(row: Record<string, unknown>): unknown;
3009
+ protected rowCaption(row: Record<string, unknown>): string;
3010
+ protected isDraftRow(row: Record<string, unknown>): boolean;
3011
+ protected isRowSelectLocked(row: Record<string, unknown>): boolean;
3012
+ /**
3013
+ * Items available for row `index`: all source items minus keys already chosen on other committed rows;
3014
+ * always includes the current row's selected item so the select can display it.
3015
+ */
3016
+ protected exclusiveItemsForRow(index: number): unknown[];
3017
+ private newRowUid;
3018
+ protected handleCompactSelectChange(index: number, e: AXValueChangedEvent): void;
3019
+ protected applyCompactRowFromItem(index: number, rawItem: unknown | undefined): void;
3020
+ protected clearCompactRow(index: number): void;
3021
+ protected removeCompactRow(index: number): void;
3022
+ protected addCompactRow(): void;
3023
+ protected handleSelectValueChange(e: AXValueChangedEvent): void;
3024
+ protected handleLookupValueChange(e: AXValueChangedEvent): void;
3025
+ protected applyRowsFromSourceItems(items: unknown[]): void;
3026
+ protected handleSchemaContextChange(rowKey: unknown, e: AXPContextChangeEvent): void;
3027
+ protected freeformEntries(row: Record<string, unknown>): {
3028
+ key: string;
3029
+ value: string;
3030
+ index: number;
3031
+ }[];
3032
+ private serializeFreeformValue;
3033
+ protected onFreeformKeyInput(row: Record<string, unknown>, entry: {
3034
+ key: string;
3035
+ value: string;
3036
+ index: number;
3037
+ }, nextKey: string): void;
3038
+ protected patchFreeformValue(row: Record<string, unknown>, key: string, raw: string): void;
3039
+ protected removeFreeformKey(row: Record<string, unknown>, key: string): void;
3040
+ protected addFreeformPair(row: Record<string, unknown>): void;
3041
+ private renameFreeformKey;
3042
+ private patchFreeformMap;
3043
+ private tryParseFreeformString;
3044
+ private mergeListFilter;
3045
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetEditComponent, never>;
3046
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetEditComponent, "axp-selector-structure-widget-edit", never, {}, {}, never, never, true, never>;
3047
+ }
3048
+
3049
+ declare class AXPSelectorStructureWidgetViewComponent extends AXPValueWidgetComponent {
3050
+ protected identityField: _angular_core.Signal<string>;
3051
+ protected textField: _angular_core.Signal<string>;
3052
+ protected valueField: _angular_core.Signal<string>;
3053
+ protected previewIcon: _angular_core.Signal<string>;
3054
+ protected summaries: _angular_core.Signal<string[]>;
3055
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetViewComponent, never>;
3056
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetViewComponent, "axp-selector-structure-widget-view", never, {}, {}, never, never, true, never>;
3057
+ }
3058
+
2163
3059
  declare const AXPEntityCreateEvent: {
2164
3060
  (payload: {
2165
3061
  entity: string;
@@ -2290,5 +3186,5 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
2290
3186
  }
2291
3187
  declare const AXPShowListViewWorkflow: AXPWorkflow;
2292
3188
 
2293
- export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorService, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListTableService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPGetEntityDetailsQuery, AXPLookupFilterWidget, AXPLookupFilterWidgetEditComponent, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, 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, DEFAULT_COLUMN_WIDTHS, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, EntityBuilder, EntityDataAccessor, actionExists, cloneLayoutArrays, columnWidthMiddlewareFactory, columnWidthMiddlewareProvider, createColumnWidthMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, isAXPMiddlewareAbortError, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider };
2294
- export type { AXPAuditEvent, AXPAuditInfo, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOp, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPOpenEntityDetailsCommandInput, AXPRecordOwnershipInfo, AXPRecordStateInfo, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, ColumnWidthConfig, SectionOrderConfig };
3189
+ 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, 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_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, EntityBuilder, EntityDataAccessor, actionExists, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, isAXPMiddlewareAbortError, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, provideEntity, resolveEntityPluginDetailPageOrder, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider };
3190
+ export type { AXPAuditEvent, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListToolbarConvertOptions, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, ResolveEntityPluginDetailPageOrderOptions, SectionOrderConfig, SkipEntityComponentPageRef };