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