@acorex/platform 0.0.0-ACOREX
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/README.md +7 -0
- package/auth/README.md +3 -0
- package/common/README.md +3 -0
- package/core/README.md +4 -0
- package/fesm2022/acorex-platform-auth.mjs +1362 -0
- package/fesm2022/acorex-platform-auth.mjs.map +1 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs +127 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +4601 -0
- package/fesm2022/acorex-platform-common.mjs.map +1 -0
- package/fesm2022/acorex-platform-core.mjs +4374 -0
- package/fesm2022/acorex-platform-core.mjs.map +1 -0
- package/fesm2022/acorex-platform-domain.mjs +3234 -0
- package/fesm2022/acorex-platform-domain.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-builder.mjs +2847 -0
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +8583 -0
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-designer.mjs +2474 -0
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +19150 -0
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-views.mjs +1468 -0
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widget-core.mjs +2950 -0
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs +72 -0
- 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-9uCkMxcc.mjs +158 -0
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs +29 -0
- 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-D10yO28c.mjs +172 -0
- 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-BGQqY5Mw.mjs +111 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGQqY5Mw.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs +274 -0
- 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-BNG_588B.mjs +64 -0
- 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-Vo4fWHtX.mjs +34 -0
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +29791 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -0
- package/fesm2022/acorex-platform-native.mjs +155 -0
- package/fesm2022/acorex-platform-native.mjs.map +1 -0
- package/fesm2022/acorex-platform-runtime-catalog-command-definition.mjs +20 -0
- package/fesm2022/acorex-platform-runtime-catalog-command-definition.mjs.map +1 -0
- package/fesm2022/acorex-platform-runtime-catalog-query-definition.mjs +20 -0
- package/fesm2022/acorex-platform-runtime-catalog-query-definition.mjs.map +1 -0
- package/fesm2022/acorex-platform-runtime.mjs +899 -0
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs +237 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs +31 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs +25 -0
- 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 +2589 -0
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs +55 -0
- 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-BOTuLdWN.mjs +57 -0
- 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 +168 -0
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs +65 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs +64 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +2125 -0
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -0
- package/fesm2022/acorex-platform-workflow.mjs +2501 -0
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -0
- package/fesm2022/acorex-platform.mjs +6 -0
- package/fesm2022/acorex-platform.mjs.map +1 -0
- package/layout/builder/README.md +1578 -0
- package/layout/components/README.md +3 -0
- package/layout/designer/README.md +4 -0
- package/layout/entity/README.md +4 -0
- package/layout/views/README.md +3 -0
- package/layout/widget-core/README.md +4 -0
- package/layout/widgets/README.md +3 -0
- package/native/README.md +4 -0
- package/package.json +103 -0
- package/runtime/README.md +3 -0
- package/themes/default/README.md +3 -0
- package/themes/shared/README.md +3 -0
- package/types/acorex-platform-auth.d.ts +680 -0
- package/types/acorex-platform-common.d.ts +2926 -0
- package/types/acorex-platform-core.d.ts +2896 -0
- package/types/acorex-platform-domain.d.ts +2353 -0
- package/types/acorex-platform-layout-builder.d.ts +926 -0
- package/types/acorex-platform-layout-components.d.ts +2903 -0
- package/types/acorex-platform-layout-designer.d.ts +422 -0
- package/types/acorex-platform-layout-entity.d.ts +3189 -0
- package/types/acorex-platform-layout-views.d.ts +667 -0
- package/types/acorex-platform-layout-widget-core.d.ts +1086 -0
- package/types/acorex-platform-layout-widgets.d.ts +5478 -0
- package/types/acorex-platform-native.d.ts +28 -0
- package/types/acorex-platform-runtime-catalog-command-definition.d.ts +137 -0
- package/types/acorex-platform-runtime-catalog-query-definition.d.ts +125 -0
- package/types/acorex-platform-runtime.d.ts +470 -0
- package/types/acorex-platform-themes-default.d.ts +573 -0
- package/types/acorex-platform-themes-shared.d.ts +170 -0
- package/types/acorex-platform-workflow.d.ts +1806 -0
- package/types/acorex-platform.d.ts +2 -0
- package/workflow/README.md +4 -0
|
@@ -0,0 +1,3189 @@
|
|
|
1
|
+
import * as _acorex_platform_core from '@acorex/platform/core';
|
|
2
|
+
import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPUserReference, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPMultiLanguageString, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPContextChangeEvent } from '@acorex/platform/core';
|
|
3
|
+
import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
|
|
4
|
+
import * as _angular_core from '@angular/core';
|
|
5
|
+
import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
|
|
6
|
+
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
7
|
+
import * as i3 from '@acorex/platform/layout/widget-core';
|
|
8
|
+
import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetRendererDirective } from '@acorex/platform/layout/widget-core';
|
|
9
|
+
import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorAllowCreate, AXPCategoryTreeDataSource } from '@acorex/platform/layout/components';
|
|
10
|
+
import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';
|
|
11
|
+
import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
|
|
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, AXPEntityPage, AXPQueryFilter } from '@acorex/platform/common';
|
|
14
|
+
import * as i1 from '@angular/router';
|
|
15
|
+
import { ResolveFn } from '@angular/router';
|
|
16
|
+
import * as rxjs from 'rxjs';
|
|
17
|
+
import { Subject } from 'rxjs';
|
|
18
|
+
export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
|
|
19
|
+
import * as i2 from '@acorex/platform/workflow';
|
|
20
|
+
import { AXPWorkflowService, AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';
|
|
21
|
+
import * as i4 from '@acorex/platform/layout/builder';
|
|
22
|
+
import { IActionBuilder, AXPDialogRef, IFormFieldBuilder } from '@acorex/platform/layout/builder';
|
|
23
|
+
import { AXPSessionService } from '@acorex/platform/auth';
|
|
24
|
+
import { AXTreeViewNode, AXTreeViewComponent, AXTreeViewNodeSelectEvent } from '@acorex/components/tree-view';
|
|
25
|
+
import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
|
|
26
|
+
import { AXBasePageComponent } from '@acorex/components/page';
|
|
27
|
+
import { AXFormatService } from '@acorex/core/format';
|
|
28
|
+
import { AXTagBoxComponent } from '@acorex/components/tag-box';
|
|
29
|
+
import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
|
|
30
|
+
|
|
31
|
+
declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
|
|
32
|
+
private entityForm;
|
|
33
|
+
private entityService;
|
|
34
|
+
private toastService;
|
|
35
|
+
private translationService;
|
|
36
|
+
private settingsService;
|
|
37
|
+
private openEntityDetailsCommand;
|
|
38
|
+
protected context: {};
|
|
39
|
+
execute(input: any): Promise<AXPExecuteCommandResult<any>>;
|
|
40
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPCreateEntityCommand, never>;
|
|
41
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCreateEntityCommand>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Merged into AI/tool payloads for `Entity:Create` so post-create navigation does not run from agent flows.
|
|
46
|
+
* Applied in the AI module when normalizing tool arguments (not in the generic command executor).
|
|
47
|
+
*/
|
|
48
|
+
declare const axpCreateEntityAiToolInputDefaults: {
|
|
49
|
+
readonly __context__: {
|
|
50
|
+
readonly options: {
|
|
51
|
+
readonly process: {
|
|
52
|
+
readonly redirect: false;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
declare const axpCreateEntityCommandDefinition: {
|
|
58
|
+
key: string;
|
|
59
|
+
title: string;
|
|
60
|
+
description: string;
|
|
61
|
+
executionMode: "frontend";
|
|
62
|
+
inputs: ({
|
|
63
|
+
name: string;
|
|
64
|
+
title: string;
|
|
65
|
+
description: string;
|
|
66
|
+
interface: {
|
|
67
|
+
name: string;
|
|
68
|
+
};
|
|
69
|
+
validations?: undefined;
|
|
70
|
+
} | {
|
|
71
|
+
name: string;
|
|
72
|
+
title: string;
|
|
73
|
+
description: string;
|
|
74
|
+
interface: {
|
|
75
|
+
name: string;
|
|
76
|
+
};
|
|
77
|
+
validations: {
|
|
78
|
+
rule: string;
|
|
79
|
+
}[];
|
|
80
|
+
})[];
|
|
81
|
+
outcomes: {
|
|
82
|
+
mode: "dynamic";
|
|
83
|
+
summary: string;
|
|
84
|
+
derivesFrom: string;
|
|
85
|
+
};
|
|
86
|
+
ai: {
|
|
87
|
+
shortDescription: string;
|
|
88
|
+
usage: {
|
|
89
|
+
whenToUse: string[];
|
|
90
|
+
avoidWhen: string[];
|
|
91
|
+
followUpTools: string[];
|
|
92
|
+
};
|
|
93
|
+
tags: string[];
|
|
94
|
+
toolInputDefaults: {
|
|
95
|
+
__context__: {
|
|
96
|
+
readonly options: {
|
|
97
|
+
readonly process: {
|
|
98
|
+
readonly redirect: false;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
declare class AXPUpdateEntityCommand implements AXPCommand<any, any> {
|
|
107
|
+
private readonly entityForm;
|
|
108
|
+
private readonly settingsService;
|
|
109
|
+
private readonly entityService;
|
|
110
|
+
private readonly toastService;
|
|
111
|
+
private readonly translationService;
|
|
112
|
+
private readonly eventService;
|
|
113
|
+
execute(input: any): Promise<AXPExecuteCommandResult<any>>;
|
|
114
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPUpdateEntityCommand, never>;
|
|
115
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPUpdateEntityCommand>;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
declare class AXPViewEntityDetailsCommand implements AXPCommand<any, any> {
|
|
119
|
+
private readonly entityForm;
|
|
120
|
+
private readonly entityService;
|
|
121
|
+
private readonly translationService;
|
|
122
|
+
execute(input: any): Promise<AXPExecuteCommandResult<any>>;
|
|
123
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPViewEntityDetailsCommand, never>;
|
|
124
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPViewEntityDetailsCommand>;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
interface AXPOpenEntityDetailsCommandInput {
|
|
128
|
+
entity: string;
|
|
129
|
+
data: {
|
|
130
|
+
id: string;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Generic command to open entity details view
|
|
135
|
+
* Can be used by any entity to navigate to its detail page
|
|
136
|
+
*/
|
|
137
|
+
declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput, AXPExecuteCommandResult> {
|
|
138
|
+
private readonly router;
|
|
139
|
+
private readonly sessionService;
|
|
140
|
+
/**
|
|
141
|
+
* Execute the command to navigate to entity details
|
|
142
|
+
* @param input - Command input containing entity and data information
|
|
143
|
+
*/
|
|
144
|
+
execute(input: AXPOpenEntityDetailsCommandInput): Promise<AXPExecuteCommandResult>;
|
|
145
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityDetailsCommand, never>;
|
|
146
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
declare class AXPEntityDetailPopoverComponent {
|
|
150
|
+
private readonly commandService;
|
|
151
|
+
private readonly queryService;
|
|
152
|
+
entity: _angular_core.InputSignal<string>;
|
|
153
|
+
entityId: _angular_core.InputSignal<string | number>;
|
|
154
|
+
textField: _angular_core.InputSignal<string>;
|
|
155
|
+
valueField: _angular_core.InputSignal<string>;
|
|
156
|
+
item: _angular_core.InputSignal<AXPMetaData | undefined>;
|
|
157
|
+
breadcrumb: _angular_core.InputSignal<string | null>;
|
|
158
|
+
protected detailPopover: _angular_core.Signal<AXPopoverComponent | undefined>;
|
|
159
|
+
protected entityDetails: _angular_core.WritableSignal<any>;
|
|
160
|
+
protected isLoadingDetails: _angular_core.WritableSignal<boolean>;
|
|
161
|
+
protected isDetailPopoverOpen: _angular_core.WritableSignal<boolean>;
|
|
162
|
+
/**
|
|
163
|
+
* Show the entity detail popover
|
|
164
|
+
*/
|
|
165
|
+
show(target: ElementRef | HTMLElement): Promise<void>;
|
|
166
|
+
/**
|
|
167
|
+
* Hide the entity detail popover
|
|
168
|
+
*/
|
|
169
|
+
hide(): void;
|
|
170
|
+
protected onDetailPopoverOpenChange(event: any): void;
|
|
171
|
+
protected navigateToDetails(): Promise<void>;
|
|
172
|
+
/**
|
|
173
|
+
* Returns true if a value is meaningful for display (non-empty/non-null).
|
|
174
|
+
*/
|
|
175
|
+
private hasMeaningfulValue;
|
|
176
|
+
/**
|
|
177
|
+
* Calculates an importance score for a property based on its widget type,
|
|
178
|
+
* whether it currently has a meaningful value, and metadata like title.
|
|
179
|
+
*/
|
|
180
|
+
private getPropertyImportanceScore;
|
|
181
|
+
/**
|
|
182
|
+
* Calculates a name-based importance score to prioritize common key fields
|
|
183
|
+
* like title, description, status, and important dates.
|
|
184
|
+
* Name priority MUST come before widget-type priority.
|
|
185
|
+
*/
|
|
186
|
+
private getNameImportanceScore;
|
|
187
|
+
protected getEntityPropertiesWithWidgets(): Array<{
|
|
188
|
+
name: string;
|
|
189
|
+
title: string;
|
|
190
|
+
node: AXPWidgetNode;
|
|
191
|
+
}>;
|
|
192
|
+
/**
|
|
193
|
+
* Resolves the data path for a property. For lookups with expose, returns the expanded path
|
|
194
|
+
* when data has it (e.g. personTitle). Otherwise returns property name (e.g. personTitleId).
|
|
195
|
+
*/
|
|
196
|
+
private resolveDataPath;
|
|
197
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverComponent, never>;
|
|
198
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDetailPopoverComponent, "axp-entity-detail-popover", never, { "entity": { "alias": "entity"; "required": true; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
interface AXPEntityDetailPopoverOptions {
|
|
202
|
+
entity: string;
|
|
203
|
+
id: string | number;
|
|
204
|
+
item: AXPMetaData;
|
|
205
|
+
textField?: string;
|
|
206
|
+
valueField?: string;
|
|
207
|
+
breadcrumb?: string;
|
|
208
|
+
}
|
|
209
|
+
declare class AXPEntityDetailPopoverService {
|
|
210
|
+
private readonly applicationRef;
|
|
211
|
+
private readonly environmentInjector;
|
|
212
|
+
private activePopoverRef;
|
|
213
|
+
/**
|
|
214
|
+
* Show entity detail popover
|
|
215
|
+
* @param target - The target element to position the popover
|
|
216
|
+
* @param options - Configuration options for the popover
|
|
217
|
+
*/
|
|
218
|
+
show(target: ElementRef | HTMLElement, options: AXPEntityDetailPopoverOptions): Promise<void>;
|
|
219
|
+
/**
|
|
220
|
+
* Hide the active popover
|
|
221
|
+
*/
|
|
222
|
+
hide(): void;
|
|
223
|
+
/**
|
|
224
|
+
* Check if a popover is currently active
|
|
225
|
+
*/
|
|
226
|
+
get isActive(): boolean;
|
|
227
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverService, never>;
|
|
228
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDetailPopoverService>;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBaseComponent {
|
|
232
|
+
private readonly route;
|
|
233
|
+
private readonly router;
|
|
234
|
+
private readonly entityService;
|
|
235
|
+
private readonly filterOperatorMiddleware;
|
|
236
|
+
protected readonly noMatchText: _angular_core.WritableSignal<string | null>;
|
|
237
|
+
private vm;
|
|
238
|
+
preloadFiltersDef: _angular_core.Signal<_acorex_platform_core.AXPFilterDefinition[]>;
|
|
239
|
+
hasNoRequiredFilters: _angular_core.Signal<boolean>;
|
|
240
|
+
protected getPageTitle(): string;
|
|
241
|
+
protected getPageDescription(): string | null;
|
|
242
|
+
onApply(event: AXPPreloadFiltersApplyEvent): Promise<void>;
|
|
243
|
+
onShowAll(): Promise<void>;
|
|
244
|
+
private buildPreloadFilterQueries;
|
|
245
|
+
private buildListQueryFilter;
|
|
246
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPreloadFiltersContainerComponent, never>;
|
|
247
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityPreloadFiltersContainerComponent, "axp-entity-preload-filters-container", never, {}, {}, never, never, true, never>;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
interface AXPDataSeeder {
|
|
251
|
+
seed(): Promise<void>;
|
|
252
|
+
}
|
|
253
|
+
declare const AXP_DATA_SEEDER_TOKEN: InjectionToken<AXPDataSeeder[]>;
|
|
254
|
+
declare class AXPDataSeederService {
|
|
255
|
+
private loaders;
|
|
256
|
+
seed(): Promise<void>;
|
|
257
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSeederService, never>;
|
|
258
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataSeederService>;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Data source definition provider that returns all entity names
|
|
263
|
+
* from entity loaders' list() (const.ts in each module).
|
|
264
|
+
*/
|
|
265
|
+
declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefinitionProvider {
|
|
266
|
+
private readonly entityResolver;
|
|
267
|
+
items(): Promise<AXPDataSourceDefinition[]>;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
declare class AXPEntityCommandTriggerViewModel {
|
|
271
|
+
priority: 'primary' | 'secondary';
|
|
272
|
+
order: number;
|
|
273
|
+
color: AXStyleColorType;
|
|
274
|
+
icon: string;
|
|
275
|
+
title: string;
|
|
276
|
+
name: string;
|
|
277
|
+
key?: string;
|
|
278
|
+
separated: boolean;
|
|
279
|
+
scope: AXPEntityCommandScope;
|
|
280
|
+
disabled: boolean | string;
|
|
281
|
+
hidden: boolean | string;
|
|
282
|
+
options: any;
|
|
283
|
+
metadata?: AXPMetaData;
|
|
284
|
+
default?: boolean;
|
|
285
|
+
items?: AXPEntityCommandTriggerViewModel[];
|
|
286
|
+
isChild?: boolean;
|
|
287
|
+
constructor(entity: AXPEntity, action: AXPEntityAction, isChild?: boolean);
|
|
288
|
+
}
|
|
289
|
+
declare class AXPEntityListViewColumnViewModel {
|
|
290
|
+
readonly property: AXPEntityProperty;
|
|
291
|
+
readonly column: AXPEntityTableColumn;
|
|
292
|
+
constructor(property: AXPEntityProperty, column: AXPEntityTableColumn);
|
|
293
|
+
name: string;
|
|
294
|
+
title: string;
|
|
295
|
+
visible: string | boolean;
|
|
296
|
+
dir: "asc" | "desc" | undefined;
|
|
297
|
+
sortEnabled: boolean | undefined;
|
|
298
|
+
width: '';
|
|
299
|
+
node: _angular_core.Signal<AXPWidgetColumnNode>;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
declare class AXPEntityDetailListViewModel {
|
|
303
|
+
private injector;
|
|
304
|
+
private detailEntityConfig;
|
|
305
|
+
private parent;
|
|
306
|
+
private detailEntity;
|
|
307
|
+
private formatService;
|
|
308
|
+
private workflow;
|
|
309
|
+
private filterOperatorMiddleware;
|
|
310
|
+
private expressionEvaluator;
|
|
311
|
+
private queryExecutor;
|
|
312
|
+
dataSource: AXDataSource<any>;
|
|
313
|
+
parentKey: _angular_core.Signal<string | undefined>;
|
|
314
|
+
constructor(injector: Injector, detailEntityConfig: AXPRelatedEntity, parent: {
|
|
315
|
+
entity: AXPEntity;
|
|
316
|
+
data: any;
|
|
317
|
+
});
|
|
318
|
+
initialize(): Promise<void>;
|
|
319
|
+
selectedItems: _angular_core.WritableSignal<any[]>;
|
|
320
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
321
|
+
clearSelection(): void;
|
|
322
|
+
title: _angular_core.Signal<string>;
|
|
323
|
+
hidden: _angular_core.Signal<Promise<boolean>>;
|
|
324
|
+
inlineFiltersPlaceholders: _angular_core.Signal<string[]>;
|
|
325
|
+
hasInlineFilters: _angular_core.Signal<boolean>;
|
|
326
|
+
private allActions;
|
|
327
|
+
selectedScopeActionsCount: _angular_core.Signal<number>;
|
|
328
|
+
primaryActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
329
|
+
secondaryActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
330
|
+
primaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
331
|
+
secondaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
332
|
+
private inlineFilters;
|
|
333
|
+
applyInlineFilter(value: string): void;
|
|
334
|
+
applyFilterAndSort(): Promise<void>;
|
|
335
|
+
columns: _angular_core.Signal<AXPEntityListViewColumnViewModel[]>;
|
|
336
|
+
executeCommand(commandName: string, data?: any): Promise<void>;
|
|
337
|
+
evaluateExpressions: (actionData: {
|
|
338
|
+
[key: string]: string;
|
|
339
|
+
} | string) => Promise<any>;
|
|
340
|
+
/**
|
|
341
|
+
* Evaluate hidden/disabled expressions for primary actions and return the visible list.
|
|
342
|
+
*/
|
|
343
|
+
getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
344
|
+
/**
|
|
345
|
+
* Evaluate hidden/disabled expressions for secondary actions and return the visible list.
|
|
346
|
+
*/
|
|
347
|
+
getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
declare const AXPEntityEventsKeys: {
|
|
351
|
+
REFRESH_LAYOUT: string;
|
|
352
|
+
REFRESH_DATA: string;
|
|
353
|
+
};
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Entity Event Dispatcher - A wrapper for entity-specific events
|
|
357
|
+
* Handles pattern-based dispatching for entity operations with wildcard support
|
|
358
|
+
*/
|
|
359
|
+
declare class AXPEntityEventDispatcherService {
|
|
360
|
+
private readonly eventService;
|
|
361
|
+
dispatchEntityEvent(operation: 'inserted' | 'updated' | 'deleted', entityName: string, data: any): Promise<void>;
|
|
362
|
+
private getAllMatchingEventKeys;
|
|
363
|
+
private findMatchingWildcardKeys;
|
|
364
|
+
private matchesEntityPattern;
|
|
365
|
+
private generateEventKeys;
|
|
366
|
+
dispatchInserted(entityName: string, data: any): Promise<void>;
|
|
367
|
+
dispatchUpdated(entityName: string, data: any): Promise<void>;
|
|
368
|
+
dispatchDeleted(entityName: string, data: any): Promise<void>;
|
|
369
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityEventDispatcherService, never>;
|
|
370
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
declare class AXPEntityCreateViewSectionViewModel {
|
|
374
|
+
private entity;
|
|
375
|
+
private section;
|
|
376
|
+
constructor(entity: AXPEntity, section: AXPEntitySectionView);
|
|
377
|
+
group: _acorex_platform_common.AXPEntityPropertyGroup;
|
|
378
|
+
name: _angular_core.WritableSignal<string>;
|
|
379
|
+
title: _angular_core.Signal<string>;
|
|
380
|
+
description: _angular_core.Signal<string | null | undefined>;
|
|
381
|
+
layout: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
382
|
+
elements: _angular_core.Signal<AXPEntityCreateViewElementViewModel[]>;
|
|
383
|
+
}
|
|
384
|
+
declare class AXPEntityCreateViewElementViewModel {
|
|
385
|
+
private entity;
|
|
386
|
+
private section;
|
|
387
|
+
private property;
|
|
388
|
+
private createProp;
|
|
389
|
+
constructor(entity: AXPEntity, section: AXPEntityCreateViewSectionViewModel, property: AXPEntityProperty, createProp: AXPEntityPropertyCreateView);
|
|
390
|
+
name: _angular_core.WritableSignal<string>;
|
|
391
|
+
title: _angular_core.WritableSignal<string>;
|
|
392
|
+
description: _angular_core.WritableSignal<string | undefined>;
|
|
393
|
+
editable: _angular_core.Signal<boolean>;
|
|
394
|
+
isVisible: _angular_core.Signal<string | boolean>;
|
|
395
|
+
isRequired: _angular_core.Signal<boolean>;
|
|
396
|
+
layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
|
|
397
|
+
node: _angular_core.Signal<AXPWidgetNode>;
|
|
398
|
+
}
|
|
399
|
+
declare class AXPEntityMasterCreateViewModel {
|
|
400
|
+
private readonly injector;
|
|
401
|
+
private readonly config;
|
|
402
|
+
private readonly initialData;
|
|
403
|
+
private readonly commandOptions;
|
|
404
|
+
private entityDef;
|
|
405
|
+
private workflow;
|
|
406
|
+
private expressionEvaluator;
|
|
407
|
+
builder: AXPWidgetCoreService;
|
|
408
|
+
constructor(injector: Injector, config: AXPEntity, initialData: any | undefined, commandOptions: any);
|
|
409
|
+
context: _angular_core.WritableSignal<any>;
|
|
410
|
+
options: _angular_core.WritableSignal<any>;
|
|
411
|
+
isInProgress: _angular_core.WritableSignal<boolean>;
|
|
412
|
+
canCreateNewOne: _angular_core.WritableSignal<boolean>;
|
|
413
|
+
redirect: _angular_core.WritableSignal<boolean>;
|
|
414
|
+
sections: _angular_core.Signal<AXPEntityCreateViewSectionViewModel[]>;
|
|
415
|
+
save(): Promise<any | void>;
|
|
416
|
+
createNewOne(): Promise<void>;
|
|
417
|
+
}
|
|
418
|
+
declare class AXPEntityCreateViewModelFactory {
|
|
419
|
+
private entityService;
|
|
420
|
+
private layout;
|
|
421
|
+
private injector;
|
|
422
|
+
create(moduleName: string, entityName: string, initialData?: any, options?: {
|
|
423
|
+
canCreateNewOne: boolean;
|
|
424
|
+
redirect: boolean;
|
|
425
|
+
}): Promise<AXPEntityMasterCreateViewModel>;
|
|
426
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreateViewModelFactory, never>;
|
|
427
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreateViewModelFactory>;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
interface AXPEntityMasterListViewSortPropViewModel {
|
|
431
|
+
name: string;
|
|
432
|
+
title: string;
|
|
433
|
+
dir?: string;
|
|
434
|
+
}
|
|
435
|
+
declare class AXPEntityMasterListViewQueryViewModel {
|
|
436
|
+
private entity;
|
|
437
|
+
private section;
|
|
438
|
+
private view;
|
|
439
|
+
constructor(entity: AXPEntity, section: AXPEntityMasterListViewModel, view: AXPQueryView);
|
|
440
|
+
name: string;
|
|
441
|
+
title: string;
|
|
442
|
+
sorts: _acorex_platform_common.AXPQuerySort[];
|
|
443
|
+
columns: string[];
|
|
444
|
+
conditions: _acorex_platform_common.AXPQueryFilter[];
|
|
445
|
+
indexCol: boolean | undefined;
|
|
446
|
+
pageSize: number | undefined;
|
|
447
|
+
}
|
|
448
|
+
declare class AXPEntityMasterListViewModel {
|
|
449
|
+
private injector;
|
|
450
|
+
private config;
|
|
451
|
+
readonly entityDef: AXPEntity;
|
|
452
|
+
private readonly _viewDef;
|
|
453
|
+
private readonly formatService;
|
|
454
|
+
private readonly session;
|
|
455
|
+
private readonly workflow;
|
|
456
|
+
private readonly settings;
|
|
457
|
+
private readonly widgetResolver;
|
|
458
|
+
private readonly expressionEvaluator;
|
|
459
|
+
private readonly commandService;
|
|
460
|
+
private readonly eventService;
|
|
461
|
+
private readonly queryExecutor;
|
|
462
|
+
private readonly filterOperatorMiddleware;
|
|
463
|
+
private settingEntityKey;
|
|
464
|
+
private readonly destroyed;
|
|
465
|
+
private lastAppliedSortKey;
|
|
466
|
+
private lastAppliedFilterKey;
|
|
467
|
+
private hasQueryParamsFilters;
|
|
468
|
+
events$: Subject<{
|
|
469
|
+
action: string;
|
|
470
|
+
meta?: any;
|
|
471
|
+
}>;
|
|
472
|
+
views: _angular_core.Signal<AXPEntityMasterListViewQueryViewModel[]>;
|
|
473
|
+
view: _angular_core.WritableSignal<AXPEntityMasterListViewQueryViewModel>;
|
|
474
|
+
setView(viewName?: string | null): Promise<void>;
|
|
475
|
+
dataSource: AXDataSource<any>;
|
|
476
|
+
constructor(injector: Injector, config: AXPEntity);
|
|
477
|
+
applySettings(): Promise<void>;
|
|
478
|
+
saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'filters' | 'sorts', data?: any): Promise<void>;
|
|
479
|
+
selectedItems: _angular_core.WritableSignal<any[]>;
|
|
480
|
+
/**
|
|
481
|
+
* Selected category from the category sidebar (left panel).
|
|
482
|
+
* Used to set default category when creating new entities via command.
|
|
483
|
+
* Structure: { id: string; title: string } or null when "All Items" is selected.
|
|
484
|
+
*/
|
|
485
|
+
selectedCategory: _angular_core.WritableSignal<{
|
|
486
|
+
id: string;
|
|
487
|
+
title: string;
|
|
488
|
+
} | null>;
|
|
489
|
+
parentKey: _angular_core.Signal<string | undefined>;
|
|
490
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
491
|
+
clearSelection(): void;
|
|
492
|
+
/**
|
|
493
|
+
* Sets the selected category from the category sidebar.
|
|
494
|
+
* Call with null to clear (e.g. when "All Items" is selected).
|
|
495
|
+
*/
|
|
496
|
+
setSelectedCategory(category: {
|
|
497
|
+
id: string;
|
|
498
|
+
title: string;
|
|
499
|
+
} | null): void;
|
|
500
|
+
title: _angular_core.Signal<string>;
|
|
501
|
+
description: _angular_core.Signal<string | null>;
|
|
502
|
+
inlineFiltersPlaceholders: _angular_core.Signal<string[]>;
|
|
503
|
+
hasInlineFilters: _angular_core.Signal<boolean>;
|
|
504
|
+
beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
|
|
505
|
+
private allActions;
|
|
506
|
+
/** Flattened actions including children for execute lookup */
|
|
507
|
+
private flattenedActions;
|
|
508
|
+
getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
509
|
+
getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
510
|
+
selectedScopeActionsCount: _angular_core.Signal<number>;
|
|
511
|
+
primaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
512
|
+
secondaryRowActions(rowData: any): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
513
|
+
filterQueries: _angular_core.WritableSignal<AXPFilterQuery[]>;
|
|
514
|
+
private static readonly URL_FILTER_OPERATOR_TYPES;
|
|
515
|
+
get properties(): AXPEntityProperty[];
|
|
516
|
+
/**
|
|
517
|
+
* Canonical JSON for the `filters` query param (sorted by field), or null when there are no active value filters.
|
|
518
|
+
*/
|
|
519
|
+
filtersQueryParamCanonical(queries: AXPFilterQuery[]): string | null;
|
|
520
|
+
/**
|
|
521
|
+
* Parse a `filters` query string to the same canonical form used by {@link filtersQueryParamCanonical}.
|
|
522
|
+
*/
|
|
523
|
+
static parseQueryParamFiltersToCanonical(filtersJson: string | null): string | null;
|
|
524
|
+
private toUrlFilterPayloadItems;
|
|
525
|
+
private static coerceFilterOperatorFromUrl;
|
|
526
|
+
/**
|
|
527
|
+
* Apply filters from query params
|
|
528
|
+
*/
|
|
529
|
+
applyFiltersFromQueryParams(filtersJson: string | null): boolean;
|
|
530
|
+
get filtersDef(): AXPFilterDefinition[];
|
|
531
|
+
get preloadFiltersDef(): AXPFilterDefinition[];
|
|
532
|
+
applyViewFilters(): Promise<void>;
|
|
533
|
+
resetFilters(): void;
|
|
534
|
+
applyFilterAndSort(): Promise<void>;
|
|
535
|
+
private allAvailableColumns;
|
|
536
|
+
visibleColumnCount: () => number;
|
|
537
|
+
columns: _angular_core.WritableSignal<AXPEntityListViewColumnViewModel[]>;
|
|
538
|
+
resetColumns(): void;
|
|
539
|
+
onColumnsChanged(columns: AXPEntityListViewColumnViewModel[]): Promise<void>;
|
|
540
|
+
applyViewColumns(): void;
|
|
541
|
+
onColumnsOrderChanged(event: any): void;
|
|
542
|
+
sortableFields: () => {
|
|
543
|
+
name: string;
|
|
544
|
+
title: string;
|
|
545
|
+
dir: undefined;
|
|
546
|
+
}[];
|
|
547
|
+
sortableFieldsCount: () => number;
|
|
548
|
+
canSort: () => boolean;
|
|
549
|
+
canAddMoreSort: () => boolean;
|
|
550
|
+
sortedCount: () => number;
|
|
551
|
+
sortedFields: _angular_core.WritableSignal<AXPEntityMasterListViewSortPropViewModel[]>;
|
|
552
|
+
resetSorts(): void;
|
|
553
|
+
applyViewSorts(): void;
|
|
554
|
+
executeCommand(commandName: string, data?: any): Promise<void>;
|
|
555
|
+
/**
|
|
556
|
+
* Merges default category from selected category in sidebar when executing create command.
|
|
557
|
+
* For Entity:Create and create-entity, if entity has category plugin and a category is selected,
|
|
558
|
+
* pre-fills categoryIds and categories for the create form.
|
|
559
|
+
*/
|
|
560
|
+
private mergeDefaultCategoryForCreate;
|
|
561
|
+
private evaluateExpressions;
|
|
562
|
+
execute(command: AXPExecuteCommand): Promise<void>;
|
|
563
|
+
destroy(): void;
|
|
564
|
+
}
|
|
565
|
+
declare class AXPEntityListViewModelFactory {
|
|
566
|
+
private entityService;
|
|
567
|
+
private layout;
|
|
568
|
+
private injector;
|
|
569
|
+
create(moduleName: string, entityName: string): Promise<AXPEntityMasterListViewModel>;
|
|
570
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListViewModelFactory, never>;
|
|
571
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListViewModelFactory>;
|
|
572
|
+
}
|
|
573
|
+
declare const AXPEntityListViewModelResolver: ResolveFn<Promise<AXPEntityMasterListViewModel>>;
|
|
574
|
+
|
|
575
|
+
declare class AXPEntityMasterSingleViewGroupViewModel {
|
|
576
|
+
private entity;
|
|
577
|
+
private section;
|
|
578
|
+
constructor(entity: AXPEntity, section: AXPEntitySectionView);
|
|
579
|
+
group: _acorex_platform_common.AXPEntityPropertyGroup;
|
|
580
|
+
name: _angular_core.WritableSignal<string>;
|
|
581
|
+
isLoading: _angular_core.WritableSignal<boolean>;
|
|
582
|
+
title: _angular_core.Signal<string>;
|
|
583
|
+
description: _angular_core.Signal<string | null | undefined>;
|
|
584
|
+
layout: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
585
|
+
props: _angular_core.Signal<AXPEntityMasterSingleElementViewModel[]>;
|
|
586
|
+
editableProps: _angular_core.Signal<AXPEntityMasterSingleElementViewModel[]>;
|
|
587
|
+
editable: _angular_core.Signal<boolean>;
|
|
588
|
+
}
|
|
589
|
+
declare class AXPEntityMasterSingleElementViewModel {
|
|
590
|
+
private entity;
|
|
591
|
+
private section;
|
|
592
|
+
private propertyView;
|
|
593
|
+
constructor(entity: AXPEntity, section: AXPEntityMasterSingleViewGroupViewModel, propertyView: AXPEntityPropertyView);
|
|
594
|
+
private property;
|
|
595
|
+
name: _angular_core.WritableSignal<string>;
|
|
596
|
+
path: _angular_core.WritableSignal<string>;
|
|
597
|
+
title: _angular_core.WritableSignal<string>;
|
|
598
|
+
showLabel: _angular_core.WritableSignal<boolean>;
|
|
599
|
+
description: _angular_core.WritableSignal<string | undefined>;
|
|
600
|
+
layout: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
601
|
+
node: _angular_core.Signal<AXPWidgetNode>;
|
|
602
|
+
}
|
|
603
|
+
declare class AXPEntityMasterSingleViewModel {
|
|
604
|
+
private injector;
|
|
605
|
+
private config;
|
|
606
|
+
private entityData;
|
|
607
|
+
entityDef: AXPEntity;
|
|
608
|
+
private readonly _viewDef;
|
|
609
|
+
private readonly session;
|
|
610
|
+
private readonly formatService;
|
|
611
|
+
private readonly workflow;
|
|
612
|
+
private readonly commandService;
|
|
613
|
+
private readonly destroyed;
|
|
614
|
+
private translateService;
|
|
615
|
+
private entityService;
|
|
616
|
+
private expressionEvaluator;
|
|
617
|
+
private entityDefinitionRegistryService;
|
|
618
|
+
private _updateTrigger;
|
|
619
|
+
readonly updateTrigger: _angular_core.Signal<number>;
|
|
620
|
+
constructor(injector: Injector, config: AXPEntity, entityData: any);
|
|
621
|
+
context: _angular_core.WritableSignal<any>;
|
|
622
|
+
private actions;
|
|
623
|
+
primaryActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
624
|
+
secondaryActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
625
|
+
sections: _angular_core.Signal<AXPEntityMasterSingleViewGroupViewModel[]>;
|
|
626
|
+
navigateToUp(): void;
|
|
627
|
+
title: _angular_core.Signal<string>;
|
|
628
|
+
description: _angular_core.Signal<string | null>;
|
|
629
|
+
beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
|
|
630
|
+
evaluateExpressions: (options: {
|
|
631
|
+
[key: string]: string;
|
|
632
|
+
}, data: any) => Promise<any>;
|
|
633
|
+
relatedEntities: _angular_core.Signal<Promise<AXPEntityDetailListViewModel[]>>;
|
|
634
|
+
executeCommand(commandName: string, data?: any): Promise<void>;
|
|
635
|
+
execute(command: AXPExecuteCommand): Promise<void>;
|
|
636
|
+
destroy(): void;
|
|
637
|
+
}
|
|
638
|
+
declare class AXPEntityDetailViewModelFactory {
|
|
639
|
+
private entityService;
|
|
640
|
+
private layout;
|
|
641
|
+
private injector;
|
|
642
|
+
create(moduleName: string, entityName: string, id: string): Promise<AXPEntityMasterSingleViewModel>;
|
|
643
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailViewModelFactory, never>;
|
|
644
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDetailViewModelFactory>;
|
|
645
|
+
}
|
|
646
|
+
declare const AXPEntityDetailViewModelResolver: ResolveFn<Promise<AXPEntityMasterSingleViewModel>>;
|
|
647
|
+
|
|
648
|
+
declare class AXPEntityUpdateViewSectionViewModel {
|
|
649
|
+
private entity;
|
|
650
|
+
private section;
|
|
651
|
+
constructor(entity: AXPEntity, section: AXPEntitySectionView);
|
|
652
|
+
group: _acorex_platform_common.AXPEntityPropertyGroup;
|
|
653
|
+
name: _angular_core.WritableSignal<string>;
|
|
654
|
+
title: _angular_core.Signal<string>;
|
|
655
|
+
description: _angular_core.Signal<string | null | undefined>;
|
|
656
|
+
layout: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
657
|
+
elements: _angular_core.Signal<AXPEntityMasterUpdateElementViewModel[]>;
|
|
658
|
+
}
|
|
659
|
+
declare class AXPEntityMasterUpdateElementViewModel {
|
|
660
|
+
private entity;
|
|
661
|
+
private property;
|
|
662
|
+
constructor(entity: AXPEntity, property: AXPEntityProperty);
|
|
663
|
+
name: _angular_core.WritableSignal<string>;
|
|
664
|
+
title: _angular_core.WritableSignal<string>;
|
|
665
|
+
description: _angular_core.WritableSignal<string | undefined>;
|
|
666
|
+
editable: _angular_core.Signal<boolean>;
|
|
667
|
+
isVisible: _angular_core.Signal<string | boolean>;
|
|
668
|
+
isRequired: _angular_core.Signal<boolean>;
|
|
669
|
+
layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
|
|
670
|
+
node: _angular_core.Signal<AXPWidgetNode>;
|
|
671
|
+
}
|
|
672
|
+
declare class AXPEntityMasterUpdateViewModel {
|
|
673
|
+
private injector;
|
|
674
|
+
private config;
|
|
675
|
+
private entityData;
|
|
676
|
+
private props;
|
|
677
|
+
private entityDef;
|
|
678
|
+
private workflow;
|
|
679
|
+
private sessionService;
|
|
680
|
+
private get moduleName();
|
|
681
|
+
private get entityName();
|
|
682
|
+
private get entityId();
|
|
683
|
+
builder: AXPWidgetCoreService;
|
|
684
|
+
constructor(injector: Injector, config: AXPEntity, entityData: any, props: string[]);
|
|
685
|
+
isInProgress: _angular_core.WritableSignal<boolean>;
|
|
686
|
+
context: _angular_core.WritableSignal<any>;
|
|
687
|
+
elements: _angular_core.Signal<AXPEntityMasterUpdateElementViewModel[]>;
|
|
688
|
+
sections: _angular_core.Signal<AXPEntityUpdateViewSectionViewModel[]>;
|
|
689
|
+
save(): Promise<any>;
|
|
690
|
+
reset(): void;
|
|
691
|
+
}
|
|
692
|
+
declare class AXPEntityMasterUpdateViewModelFactory {
|
|
693
|
+
private entityService;
|
|
694
|
+
private layout;
|
|
695
|
+
private injector;
|
|
696
|
+
create(moduleName: string, entityName: string, id: string, props: string[]): Promise<AXPEntityMasterUpdateViewModel>;
|
|
697
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMasterUpdateViewModelFactory, never>;
|
|
698
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMasterUpdateViewModelFactory>;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
declare class AXPEntityPreloadFiltersViewModel {
|
|
702
|
+
private injector;
|
|
703
|
+
private config;
|
|
704
|
+
readonly entityDef: AXPEntity;
|
|
705
|
+
private readonly widgetResolver;
|
|
706
|
+
constructor(injector: Injector, config: AXPEntity);
|
|
707
|
+
/**
|
|
708
|
+
* Entity title
|
|
709
|
+
*/
|
|
710
|
+
title: _angular_core.Signal<string>;
|
|
711
|
+
/**
|
|
712
|
+
* Entity description
|
|
713
|
+
*/
|
|
714
|
+
description: _angular_core.Signal<string | null>;
|
|
715
|
+
/**
|
|
716
|
+
* All filter definitions for properties with preload enabled
|
|
717
|
+
*/
|
|
718
|
+
preloadFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
|
|
719
|
+
/**
|
|
720
|
+
* Required filter definitions only
|
|
721
|
+
*/
|
|
722
|
+
requiredFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
|
|
723
|
+
/**
|
|
724
|
+
* Serialize filter values to plain objects (remove signals, functions, etc.)
|
|
725
|
+
*/
|
|
726
|
+
serializeFilters(filters: any): AXPFilterQuery[];
|
|
727
|
+
}
|
|
728
|
+
declare const AXPEntityPreloadFiltersViewModelResolver: ResolveFn<Promise<AXPEntityPreloadFiltersViewModel>>;
|
|
729
|
+
|
|
730
|
+
interface AXPEntityModifierContext {
|
|
731
|
+
readonly entity: AXPEntity;
|
|
732
|
+
title: {
|
|
733
|
+
get(): string;
|
|
734
|
+
set(newTitle: string): AXPEntityModifierContext;
|
|
735
|
+
};
|
|
736
|
+
module: {
|
|
737
|
+
get(): string;
|
|
738
|
+
set(newModule: string): AXPEntityModifierContext;
|
|
739
|
+
};
|
|
740
|
+
name: {
|
|
741
|
+
get(): string;
|
|
742
|
+
set(newName: string): AXPEntityModifierContext;
|
|
743
|
+
};
|
|
744
|
+
parentKey: {
|
|
745
|
+
get(): string | undefined;
|
|
746
|
+
set(newKey: string | undefined): AXPEntityModifierContext;
|
|
747
|
+
};
|
|
748
|
+
category: {
|
|
749
|
+
get(): AXPCategoryEntity | undefined;
|
|
750
|
+
update(updater: (cat: AXPCategoryEntity | undefined) => AXPCategoryEntity): AXPEntityModifierContext;
|
|
751
|
+
};
|
|
752
|
+
properties: {
|
|
753
|
+
list(): AXPEntityProperty[];
|
|
754
|
+
add(...props: AXPEntityProperty[]): AXPEntityModifierContext;
|
|
755
|
+
remove(predicate: (p: AXPEntityProperty) => boolean): AXPEntityModifierContext;
|
|
756
|
+
find(name: string): {
|
|
757
|
+
get(): AXPEntityProperty | undefined;
|
|
758
|
+
update(updater: (p: AXPEntityProperty) => AXPEntityProperty): AXPEntityModifierContext;
|
|
759
|
+
};
|
|
760
|
+
};
|
|
761
|
+
columns: {
|
|
762
|
+
list(): AXPEntityTableColumn[] | undefined;
|
|
763
|
+
add(...cols: AXPEntityTableColumn[]): AXPEntityModifierContext;
|
|
764
|
+
remove(predicate: (c: AXPEntityTableColumn) => boolean): AXPEntityModifierContext;
|
|
765
|
+
find(name: string): {
|
|
766
|
+
get(): AXPEntityTableColumn | undefined;
|
|
767
|
+
update(updater: (c: AXPEntityTableColumn) => AXPEntityTableColumn): AXPEntityModifierContext;
|
|
768
|
+
};
|
|
769
|
+
};
|
|
770
|
+
formats: {
|
|
771
|
+
get(): AXPEntity['formats'];
|
|
772
|
+
update(updater: (formats: AXPEntity['formats']) => AXPEntity['formats']): AXPEntityModifierContext;
|
|
773
|
+
};
|
|
774
|
+
relatedEntities: {
|
|
775
|
+
list(): AXPRelatedEntity[] | undefined;
|
|
776
|
+
add(...related: AXPRelatedEntity[]): AXPEntityModifierContext;
|
|
777
|
+
remove(predicate: (r: AXPRelatedEntity) => boolean): AXPEntityModifierContext;
|
|
778
|
+
};
|
|
779
|
+
groups: {
|
|
780
|
+
list(): AXPEntityPropertyGroup[] | undefined;
|
|
781
|
+
add(...groups: AXPEntityPropertyGroup[]): AXPEntityModifierContext;
|
|
782
|
+
remove(predicate: (g: AXPEntityPropertyGroup) => boolean): AXPEntityModifierContext;
|
|
783
|
+
};
|
|
784
|
+
commands: {
|
|
785
|
+
get(): AXPEntity['commands'] | undefined;
|
|
786
|
+
update(updater: (c: AXPEntity['commands'] | undefined) => AXPEntity['commands']): AXPEntityModifierContext;
|
|
787
|
+
};
|
|
788
|
+
queries: {
|
|
789
|
+
get(): AXPEntity['queries'];
|
|
790
|
+
update(updater: (q: AXPEntity['queries']) => AXPEntity['queries']): AXPEntityModifierContext;
|
|
791
|
+
};
|
|
792
|
+
validations: {
|
|
793
|
+
get(): AXPEntity['validations'] | undefined;
|
|
794
|
+
update(updater: (v: AXPEntity['validations'] | undefined) => AXPEntity['validations']): AXPEntityModifierContext;
|
|
795
|
+
};
|
|
796
|
+
interfaces: {
|
|
797
|
+
get(): AXPEntity['interfaces'] | undefined;
|
|
798
|
+
update(updater: (i: AXPEntity['interfaces'] | undefined) => AXPEntity['interfaces']): AXPEntityModifierContext;
|
|
799
|
+
master: {
|
|
800
|
+
get(): NonNullable<AXPEntity['interfaces']>['master'] | undefined;
|
|
801
|
+
update(updater: (m: NonNullable<AXPEntity['interfaces']>['master'] | undefined) => NonNullable<AXPEntity['interfaces']>['master']): AXPEntityModifierContext;
|
|
802
|
+
create: {
|
|
803
|
+
get(): AXPEntityMasterCreateLayoutView | undefined;
|
|
804
|
+
update(updater: (c: AXPEntityMasterCreateLayoutView | undefined) => AXPEntityMasterCreateLayoutView): AXPEntityModifierContext;
|
|
805
|
+
};
|
|
806
|
+
modify: {
|
|
807
|
+
get(): AXPEntityMasterUpdateLayoutView | undefined;
|
|
808
|
+
update(updater: (c: AXPEntityMasterUpdateLayoutView | undefined) => AXPEntityMasterUpdateLayoutView): AXPEntityModifierContext;
|
|
809
|
+
};
|
|
810
|
+
single: {
|
|
811
|
+
get(): AXPEntityMasterSingleLayoutView | undefined;
|
|
812
|
+
update(updater: (c: AXPEntityMasterSingleLayoutView | undefined) => AXPEntityMasterSingleLayoutView): AXPEntityModifierContext;
|
|
813
|
+
};
|
|
814
|
+
list: {
|
|
815
|
+
get(): AXPEntityMasterListView | undefined;
|
|
816
|
+
update(updater: (c: AXPEntityMasterListView | undefined) => AXPEntityMasterListView): AXPEntityModifierContext;
|
|
817
|
+
};
|
|
818
|
+
};
|
|
819
|
+
detail: {
|
|
820
|
+
get(): NonNullable<AXPEntity['interfaces']>['detail'] | undefined;
|
|
821
|
+
update(updater: (d: NonNullable<AXPEntity['interfaces']>['detail'] | undefined) => NonNullable<AXPEntity['interfaces']>['detail']): AXPEntityModifierContext;
|
|
822
|
+
list: {
|
|
823
|
+
get(): AXPEntityDetailListView | undefined;
|
|
824
|
+
update(updater: (l: AXPEntityDetailListView | undefined) => AXPEntityDetailListView): AXPEntityModifierContext;
|
|
825
|
+
};
|
|
826
|
+
};
|
|
827
|
+
};
|
|
828
|
+
toEntity(): AXPEntity;
|
|
829
|
+
}
|
|
830
|
+
type AXPEntityModifier = (context: AXPEntityModifierContext) => void;
|
|
831
|
+
interface AXPEntityModifierProvider {
|
|
832
|
+
entityName: string | RegExp;
|
|
833
|
+
modifier: AXPEntityModifier;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
declare function ensureListActions(ctx: AXPEntityModifierContext): void;
|
|
837
|
+
declare function actionExists(actions: any[] | undefined, commandName: string, name?: string): boolean;
|
|
838
|
+
interface AXPEntityLayoutSectionLike {
|
|
839
|
+
id: string;
|
|
840
|
+
}
|
|
841
|
+
interface AXPEntityLayoutPropertyLike {
|
|
842
|
+
name: string;
|
|
843
|
+
}
|
|
844
|
+
interface AXPEntityLayoutLike<TSection extends AXPEntityLayoutSectionLike = AXPEntityLayoutSectionLike, TProperty extends AXPEntityLayoutPropertyLike = AXPEntityLayoutPropertyLike> {
|
|
845
|
+
sections: TSection[];
|
|
846
|
+
properties?: TProperty[];
|
|
847
|
+
}
|
|
848
|
+
/**
|
|
849
|
+
* Clones `sections` and `properties` arrays to prevent accidental cross-interface mutations.
|
|
850
|
+
* Many entity definitions reuse the same array instances across create/update/single interfaces.
|
|
851
|
+
*/
|
|
852
|
+
declare function cloneLayoutArrays<TLayout extends AXPEntityLayoutLike>(layout: TLayout): TLayout & {
|
|
853
|
+
properties: NonNullable<TLayout['properties']>;
|
|
854
|
+
};
|
|
855
|
+
declare function ensureLayoutSection<TLayout extends AXPEntityLayoutLike>(layout: TLayout, section: TLayout['sections'][number]): void;
|
|
856
|
+
declare function ensureLayoutPropertyView<TLayout extends AXPEntityLayoutLike>(layout: TLayout & {
|
|
857
|
+
properties: NonNullable<TLayout['properties']>;
|
|
858
|
+
}, prop: NonNullable<TLayout['properties']>[number]): void;
|
|
859
|
+
|
|
860
|
+
interface AXPEntityActionPlugin {
|
|
861
|
+
name: string;
|
|
862
|
+
order?: number;
|
|
863
|
+
apply: (ctx: AXPEntityModifierContext, options?: any) => Promise<void> | void;
|
|
864
|
+
}
|
|
865
|
+
declare const AXP_ENTITY_ACTION_PLUGIN: InjectionToken<AXPEntityActionPlugin[]>;
|
|
866
|
+
|
|
867
|
+
declare class AXPEntityMiddleware {
|
|
868
|
+
private exactModifiers;
|
|
869
|
+
private patternModifiers;
|
|
870
|
+
protected providedModifiers: AXPEntityModifierProvider[];
|
|
871
|
+
protected providedActionPlugins: AXPEntityActionPlugin[];
|
|
872
|
+
protected injector: Injector;
|
|
873
|
+
constructor();
|
|
874
|
+
register(entityName: string | RegExp, modifier: AXPEntityModifier): void;
|
|
875
|
+
process(entity: AXPEntity): Promise<AXPEntity>;
|
|
876
|
+
private wildcardToRegExp;
|
|
877
|
+
private normalizeRegExp;
|
|
878
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMiddleware, never>;
|
|
879
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMiddleware>;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
declare function createModifierContext(entity: AXPEntity): AXPEntityModifierContext;
|
|
883
|
+
|
|
884
|
+
declare const AXP_ENTITY_MODIFIER: InjectionToken<AXPEntityModifierProvider[]>;
|
|
885
|
+
|
|
886
|
+
interface AXPEntityPreloadEntity {
|
|
887
|
+
module: string;
|
|
888
|
+
entity: string;
|
|
889
|
+
}
|
|
890
|
+
interface AXPEntityDefinitionPreloader {
|
|
891
|
+
preload(): AXPEntityPreloadEntity[];
|
|
892
|
+
}
|
|
893
|
+
declare class AXPEntityDefinitionRegistryService {
|
|
894
|
+
private middleware;
|
|
895
|
+
private columnEnrichment;
|
|
896
|
+
private onChanged;
|
|
897
|
+
get onChanged$(): rxjs.Observable<{
|
|
898
|
+
name: string;
|
|
899
|
+
}>;
|
|
900
|
+
private entities;
|
|
901
|
+
private entityResolver;
|
|
902
|
+
/**
|
|
903
|
+
* Force re-load and re-process entity definitions, then re-register them.
|
|
904
|
+
* Overloads:
|
|
905
|
+
* - refresh(): refresh all registered entities
|
|
906
|
+
* - refresh(fullName: string): refresh by fully-qualified name `<module>.<entity>`
|
|
907
|
+
* - refresh(moduleName: string, entityName: string): refresh by parts
|
|
908
|
+
*/
|
|
909
|
+
refresh(): Promise<void>;
|
|
910
|
+
refresh(fullName: string): Promise<void>;
|
|
911
|
+
refresh(moduleName: string, entityName: string): Promise<void>;
|
|
912
|
+
/** Executes the actual refresh for a single entity */
|
|
913
|
+
private refreshOne;
|
|
914
|
+
/**
|
|
915
|
+
* Registers a new entity configuration. Entities are identified uniquely by a combination
|
|
916
|
+
* of their module and name.
|
|
917
|
+
*
|
|
918
|
+
* @param config The configuration object of the entity to be registered.
|
|
919
|
+
*/
|
|
920
|
+
register(config: AXPEntity): void;
|
|
921
|
+
/**
|
|
922
|
+
* Returns an array of all registered entity configurations.
|
|
923
|
+
*
|
|
924
|
+
* @returns An array of AXPEntity objects.
|
|
925
|
+
*/
|
|
926
|
+
getAll(): AXPEntity[];
|
|
927
|
+
/**
|
|
928
|
+
* Clear all registered entity configurations.
|
|
929
|
+
* Should be called when modules are cleared to prevent stale entity data.
|
|
930
|
+
* @param preserveModules Optional list of module names whose entities should be preserved
|
|
931
|
+
*/
|
|
932
|
+
clear(preserveModules?: string[]): void;
|
|
933
|
+
/**
|
|
934
|
+
* Resolves an entity configuration based on module and entity name. If the configuration
|
|
935
|
+
* is not already registered, attempts to load it dynamically. Throws an error if the
|
|
936
|
+
* entity cannot be found or loaded.
|
|
937
|
+
*
|
|
938
|
+
* @param moduleName The module name of the entity.
|
|
939
|
+
* @param entityName The name of the entity.
|
|
940
|
+
* @returns A promise resolving to the entity configuration.
|
|
941
|
+
* @throws Error if the entity configuration cannot be resolved.
|
|
942
|
+
*/
|
|
943
|
+
resolve(moduleName: string, entityName: string): Promise<AXPEntity>;
|
|
944
|
+
exists(moduleName: string, entityName: string): Promise<boolean>;
|
|
945
|
+
/**
|
|
946
|
+
* Creates a unique key for an entity based on its module and name.
|
|
947
|
+
*
|
|
948
|
+
* @param moduleName The module name of the entity.
|
|
949
|
+
* @param entityName The name of the entity.
|
|
950
|
+
* @returns The unique key for the entity.
|
|
951
|
+
*/
|
|
952
|
+
private createEntityKey;
|
|
953
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionRegistryService, never>;
|
|
954
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDefinitionRegistryService>;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
interface AXPAuditEvent {
|
|
958
|
+
at?: Date;
|
|
959
|
+
by?: AXPUserReference;
|
|
960
|
+
reason?: string;
|
|
961
|
+
source?: string;
|
|
962
|
+
}
|
|
963
|
+
interface AXPRecordAuditInfo {
|
|
964
|
+
created?: AXPAuditEvent;
|
|
965
|
+
updated?: AXPAuditEvent;
|
|
966
|
+
deleted?: AXPAuditEvent;
|
|
967
|
+
}
|
|
968
|
+
interface AXPRecordStateInfo {
|
|
969
|
+
isHidden?: boolean;
|
|
970
|
+
isSystem?: boolean;
|
|
971
|
+
isImmutable?: boolean;
|
|
972
|
+
isDistributed?: boolean;
|
|
973
|
+
}
|
|
974
|
+
interface AXPRecordOwnershipInfo {
|
|
975
|
+
tenantId?: string;
|
|
976
|
+
applicationId?: string;
|
|
977
|
+
userId?: string;
|
|
978
|
+
}
|
|
979
|
+
interface AXPEntityModel<Id> {
|
|
980
|
+
id: Id;
|
|
981
|
+
auditInfo?: AXPRecordAuditInfo;
|
|
982
|
+
stateInfo?: AXPRecordStateInfo;
|
|
983
|
+
ownershipInfo?: AXPRecordOwnershipInfo;
|
|
984
|
+
}
|
|
985
|
+
interface AXPEntityCreateDto {
|
|
986
|
+
}
|
|
987
|
+
interface AXPEntityUpdateDto<Id> {
|
|
988
|
+
id: Id;
|
|
989
|
+
}
|
|
990
|
+
interface AXPEntityOutputDto<Id> {
|
|
991
|
+
id: Id;
|
|
992
|
+
}
|
|
993
|
+
interface AXPEntityDetailDto<Id> extends AXPEntityOutputDto<Id> {
|
|
994
|
+
}
|
|
995
|
+
interface AXPEntityListItemDto<Id> extends AXPEntityOutputDto<Id> {
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
declare abstract class AXPEntityStorageService<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
|
|
999
|
+
abstract get dbName(): string;
|
|
1000
|
+
abstract initial(entityName: string, collection: TCreateDto[], options?: {
|
|
1001
|
+
mergeType?: 'merge' | 'replace';
|
|
1002
|
+
uniqueKeys?: string[];
|
|
1003
|
+
}): Promise<TCreateDto[]>;
|
|
1004
|
+
abstract getOne(entityName: string, id: TKey): Promise<TDetailDto>;
|
|
1005
|
+
abstract updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1006
|
+
abstract deleteOne(entityName: string, id: TKey): Promise<void>;
|
|
1007
|
+
abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
|
|
1008
|
+
abstract getAll(entityName: string): Promise<TListItemDto[]>;
|
|
1009
|
+
abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1010
|
+
}
|
|
1011
|
+
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> {
|
|
1012
|
+
abstract get entityName(): string;
|
|
1013
|
+
abstract initial(collection: TCreateDto[]): Promise<void>;
|
|
1014
|
+
abstract getOne(id: TKey): Promise<TDetailDto>;
|
|
1015
|
+
abstract getAll(): Promise<TListItemDto[]>;
|
|
1016
|
+
abstract updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1017
|
+
abstract deleteOne(id: TKey): Promise<void>;
|
|
1018
|
+
abstract insertOne(entity: TCreateDto): Promise<TKey>;
|
|
1019
|
+
abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1020
|
+
}
|
|
1021
|
+
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> {
|
|
1022
|
+
private storageService;
|
|
1023
|
+
entityName: string;
|
|
1024
|
+
constructor(storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, entityName: string);
|
|
1025
|
+
initial(collection: TCreateDto[]): Promise<void>;
|
|
1026
|
+
getOne(id: TKey): Promise<TDetailDto>;
|
|
1027
|
+
getAll(): Promise<TListItemDto[]>;
|
|
1028
|
+
query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1029
|
+
updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1030
|
+
deleteOne(id: TKey): Promise<void>;
|
|
1031
|
+
insertOne(entity: TCreateDto): Promise<TKey>;
|
|
1032
|
+
}
|
|
1033
|
+
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> {
|
|
1034
|
+
abstract insertOne(request: TCreateDto): Promise<TKey>;
|
|
1035
|
+
abstract getOne(id: TKey): Promise<TDetailDto>;
|
|
1036
|
+
abstract deleteOne(id: TKey): Promise<void>;
|
|
1037
|
+
abstract updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1038
|
+
abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1039
|
+
}
|
|
1040
|
+
declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
|
|
1041
|
+
private entityName;
|
|
1042
|
+
private _storageService;
|
|
1043
|
+
private entityRegistery;
|
|
1044
|
+
private _entityDataProvider;
|
|
1045
|
+
private _entityCategoryDataProvider;
|
|
1046
|
+
constructor(entityName: string);
|
|
1047
|
+
insertOne(request: TCreateDto): Promise<TKey>;
|
|
1048
|
+
getOne(id: TKey): Promise<TDetailDto>;
|
|
1049
|
+
deleteOne(id: TKey): Promise<void>;
|
|
1050
|
+
updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1051
|
+
query(request?: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1052
|
+
findOne(filter: AXDataSourceFilterOption): Promise<TListItemDto>;
|
|
1053
|
+
getRoots(request: {}): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1054
|
+
getChildren(request: {
|
|
1055
|
+
parentId: TKey;
|
|
1056
|
+
parentKey?: string;
|
|
1057
|
+
}): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1058
|
+
getByCategory(request: {
|
|
1059
|
+
categoryId: TKey;
|
|
1060
|
+
categoryKey?: string;
|
|
1061
|
+
}): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1062
|
+
getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity$1<TKey>>>;
|
|
1063
|
+
get storageService(): AXPEntityStorageService<any, any, any, any, any>;
|
|
1064
|
+
custom<Req, Res>(request: Req): Promise<void>;
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
interface AXPEntityConfigs {
|
|
1068
|
+
viewers: {
|
|
1069
|
+
root: () => Type<any> | Promise<Type<any>>;
|
|
1070
|
+
detail: {
|
|
1071
|
+
list: () => Type<any> | Promise<Type<any>>;
|
|
1072
|
+
};
|
|
1073
|
+
master: {
|
|
1074
|
+
single: () => Type<any> | Promise<Type<any>>;
|
|
1075
|
+
details: () => Type<any> | Promise<Type<any>>;
|
|
1076
|
+
create: () => Type<any> | Promise<Type<any>>;
|
|
1077
|
+
modify: () => Type<any> | Promise<Type<any>>;
|
|
1078
|
+
list: () => Type<any> | Promise<Type<any>>;
|
|
1079
|
+
};
|
|
1080
|
+
};
|
|
1081
|
+
}
|
|
1082
|
+
declare const AXP_ENTITY_CONFIG_TOKEN: InjectionToken<AXPEntityConfigs>;
|
|
1083
|
+
/** Raw input from entity loaders' list(). */
|
|
1084
|
+
type AXPEntityListInput = {
|
|
1085
|
+
name: string;
|
|
1086
|
+
module: string;
|
|
1087
|
+
};
|
|
1088
|
+
/** Output from listAll(); fullName is populated by the resolver. */
|
|
1089
|
+
type AXPEntityListEntry = {
|
|
1090
|
+
name: string;
|
|
1091
|
+
module: string;
|
|
1092
|
+
fullName: string;
|
|
1093
|
+
};
|
|
1094
|
+
interface AXPEntityDefinitionLoader {
|
|
1095
|
+
get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
|
|
1096
|
+
list(): Promise<AXPEntityListInput[]>;
|
|
1097
|
+
}
|
|
1098
|
+
declare const AXP_ENTITY_DEFINITION_LOADER: InjectionToken<AXPEntityDefinitionLoader>;
|
|
1099
|
+
declare class AXPEntityResolver {
|
|
1100
|
+
private providers;
|
|
1101
|
+
/** Aggregates list() from all entity loaders (including lazy). Populates fullName. */
|
|
1102
|
+
listAll(): Promise<AXPEntityListEntry[]>;
|
|
1103
|
+
get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
|
|
1104
|
+
private resolveLoaders;
|
|
1105
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityResolver, never>;
|
|
1106
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityResolver>;
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
/**
|
|
1110
|
+
* Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
|
|
1111
|
+
* tabs): meta-data-builder → attachments → documents → comments → history.
|
|
1112
|
+
*/
|
|
1113
|
+
type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'documents' | 'comments' | 'history';
|
|
1114
|
+
/** Identifies an `entity.pages` entry when skipping its order during recomputation. */
|
|
1115
|
+
interface SkipEntityComponentPageRef {
|
|
1116
|
+
componentKey: string;
|
|
1117
|
+
/** When set, only the page with this `field` is skipped (e.g. attachments / meta-data per field). */
|
|
1118
|
+
field?: string;
|
|
1119
|
+
}
|
|
1120
|
+
interface ResolveEntityPluginDetailPageOrderOptions {
|
|
1121
|
+
/** Component key of the page being added or updated (used to count sibling tabs in the same slot). */
|
|
1122
|
+
componentKey: string;
|
|
1123
|
+
/**
|
|
1124
|
+
* Ignore this page when counting siblings / recomputing (the page currently being updated).
|
|
1125
|
+
*/
|
|
1126
|
+
skipPage?: SkipEntityComponentPageRef;
|
|
1127
|
+
/**
|
|
1128
|
+
* Field name for multi-page slots (`attachments`, `meta-data-builder`). Omit for single-tab slots.
|
|
1129
|
+
*/
|
|
1130
|
+
field?: string;
|
|
1131
|
+
/** Gap between auto-assigned related tab orders. Default: 10. */
|
|
1132
|
+
relatedOrderStep?: number;
|
|
1133
|
+
/** Minimum start of the plugin zone (after related tabs). Default: 100_000. */
|
|
1134
|
+
pluginZoneFloor?: number;
|
|
1135
|
+
}
|
|
1136
|
+
/**
|
|
1137
|
+
* Resolves `layout.order` for a built-in plugin detail tab (`entity.pages`).
|
|
1138
|
+
*
|
|
1139
|
+
* 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
|
|
1140
|
+
* `order` (the composer otherwise treats them as +Infinity).
|
|
1141
|
+
* 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
|
|
1142
|
+
* comments → history, after all related tabs.
|
|
1143
|
+
*/
|
|
1144
|
+
declare function resolveEntityPluginDetailPageOrder(input: {
|
|
1145
|
+
relatedEntities?: AXPRelatedEntity[];
|
|
1146
|
+
pages?: Array<AXPEntityPage & {
|
|
1147
|
+
field?: string;
|
|
1148
|
+
}>;
|
|
1149
|
+
}, slot: EntityDetailPluginPageSlot, options: ResolveEntityPluginDetailPageOrderOptions): number;
|
|
1150
|
+
|
|
1151
|
+
declare class AXPEntityModule {
|
|
1152
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
|
|
1153
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof i2.AXPWorkflowModule, typeof i3.AXPWidgetCoreModule, typeof i4.LayoutBuilderModule], never>;
|
|
1154
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
/**
|
|
1158
|
+
* Data accessor for entity operations.
|
|
1159
|
+
* Provides methods to query and execute commands with smart resolution:
|
|
1160
|
+
* 1. Checks entity definition queries/commands first
|
|
1161
|
+
* 2. Falls back to CRUD service if not defined
|
|
1162
|
+
*/
|
|
1163
|
+
declare class EntityDataAccessor<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
|
|
1164
|
+
private module;
|
|
1165
|
+
private entity;
|
|
1166
|
+
private entityRegistry;
|
|
1167
|
+
private queryExecutor;
|
|
1168
|
+
private commandService;
|
|
1169
|
+
private crudService;
|
|
1170
|
+
private entityDef;
|
|
1171
|
+
private entityDefPromise;
|
|
1172
|
+
constructor(module: string, entity: string, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService);
|
|
1173
|
+
/**
|
|
1174
|
+
* Resolves the entity definition lazily and caches it.
|
|
1175
|
+
* @returns The resolved entity definition
|
|
1176
|
+
*/
|
|
1177
|
+
private resolveEntityDef;
|
|
1178
|
+
/**
|
|
1179
|
+
* Gets a single entity by key.
|
|
1180
|
+
* @param key - The entity key
|
|
1181
|
+
* @returns The entity detail or null if not found
|
|
1182
|
+
*/
|
|
1183
|
+
byKey(key: TKey): Promise<TDetailDto | null>;
|
|
1184
|
+
/**
|
|
1185
|
+
* Queries a list of entities.
|
|
1186
|
+
* @param request - The query request (optional)
|
|
1187
|
+
* @returns The paged list result
|
|
1188
|
+
*/
|
|
1189
|
+
query(request?: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1190
|
+
/**
|
|
1191
|
+
* Creates a new entity.
|
|
1192
|
+
* @param data - The entity data to create
|
|
1193
|
+
* @returns The created entity key
|
|
1194
|
+
*/
|
|
1195
|
+
create(data: TCreateDto): Promise<TKey>;
|
|
1196
|
+
/**
|
|
1197
|
+
* Updates an existing entity.
|
|
1198
|
+
* @param id - The entity key
|
|
1199
|
+
* @param data - The entity data to update
|
|
1200
|
+
* @returns The updated entity
|
|
1201
|
+
*/
|
|
1202
|
+
update(id: TKey, data: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1203
|
+
/**
|
|
1204
|
+
* Deletes an entity.
|
|
1205
|
+
* @param id - The entity key
|
|
1206
|
+
*/
|
|
1207
|
+
delete(id: TKey): Promise<void>;
|
|
1208
|
+
}
|
|
1209
|
+
/**
|
|
1210
|
+
* Builder class for entity operations.
|
|
1211
|
+
* Provides methods to create paths and access entity data.
|
|
1212
|
+
*/
|
|
1213
|
+
declare class EntityBuilder {
|
|
1214
|
+
private sessionService;
|
|
1215
|
+
private entityRegistry;
|
|
1216
|
+
private queryExecutor;
|
|
1217
|
+
private commandService;
|
|
1218
|
+
readonly module: string;
|
|
1219
|
+
readonly entity: string;
|
|
1220
|
+
constructor(module: string, entity: string, sessionService: AXPSessionService, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService);
|
|
1221
|
+
/**
|
|
1222
|
+
* Creates a path for the entity.
|
|
1223
|
+
* @param path - The path segment (defaults to 'list')
|
|
1224
|
+
* @returns The full path string
|
|
1225
|
+
*/
|
|
1226
|
+
createPath(path?: string): string;
|
|
1227
|
+
/**
|
|
1228
|
+
* Gets the data accessor for the entity with generic type support.
|
|
1229
|
+
* Entity definition is resolved lazily on first method call.
|
|
1230
|
+
* @returns An EntityDataAccessor instance
|
|
1231
|
+
*/
|
|
1232
|
+
data<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto>(): EntityDataAccessor<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>;
|
|
1233
|
+
}
|
|
1234
|
+
declare class AXPEntityService {
|
|
1235
|
+
private sessionService;
|
|
1236
|
+
private entityRegistry;
|
|
1237
|
+
private queryExecutor;
|
|
1238
|
+
private commandService;
|
|
1239
|
+
/**
|
|
1240
|
+
* @deprecated Use `withEntity(module, entity).createPath(path)` instead.
|
|
1241
|
+
* This method will be removed in a future version.
|
|
1242
|
+
*/
|
|
1243
|
+
createPath(module: string, entity: string, path?: string): string;
|
|
1244
|
+
/**
|
|
1245
|
+
* Creates a builder for entity operations.
|
|
1246
|
+
* Entity definition is resolved lazily when data accessor methods are called.
|
|
1247
|
+
* @param module - The module name
|
|
1248
|
+
* @param entity - The entity name
|
|
1249
|
+
* @returns An EntityBuilder instance
|
|
1250
|
+
*/
|
|
1251
|
+
withEntity(module: string, entity: string): EntityBuilder;
|
|
1252
|
+
/**
|
|
1253
|
+
* Creates a builder for entity operations using dot notation.
|
|
1254
|
+
* Entity definition is resolved lazily when data accessor methods are called.
|
|
1255
|
+
* @param entityKey - The entity key in format "module.entity"
|
|
1256
|
+
* @returns An EntityBuilder instance
|
|
1257
|
+
* @throws Error if the entity key format is invalid
|
|
1258
|
+
*/
|
|
1259
|
+
withEntity(entityKey: string): EntityBuilder;
|
|
1260
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityService, never>;
|
|
1261
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityService>;
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
|
|
1265
|
+
op: AXPEntityOp;
|
|
1266
|
+
entityName: string;
|
|
1267
|
+
id?: TKey;
|
|
1268
|
+
data?: TCreateDto | Omit<Partial<TUpdateDto>, 'id'>;
|
|
1269
|
+
request?: AXPQueryRequest;
|
|
1270
|
+
previous?: TDetailDto;
|
|
1271
|
+
result?: any;
|
|
1272
|
+
locals: Map<string, unknown>;
|
|
1273
|
+
backend: {
|
|
1274
|
+
getOne: (entityName: string, id: TKey) => Promise<TDetailDto>;
|
|
1275
|
+
insertOne: (entityName: string, entity: TCreateDto) => Promise<TKey>;
|
|
1276
|
+
query: (entityName: string, request: AXPQueryRequest) => Promise<AXPPagedListResult<TListItemDto>>;
|
|
1277
|
+
updateOne: (entityName: string, id: TKey, data: Partial<TUpdateDto>) => Promise<void>;
|
|
1278
|
+
};
|
|
1279
|
+
}
|
|
1280
|
+
interface AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
|
|
1281
|
+
target?: {
|
|
1282
|
+
ops?: AXPEntityOp[];
|
|
1283
|
+
entity?: string | RegExp;
|
|
1284
|
+
predicate?: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => boolean;
|
|
1285
|
+
order?: number;
|
|
1286
|
+
};
|
|
1287
|
+
execute: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, next: () => Promise<void>) => Promise<void>;
|
|
1288
|
+
}
|
|
1289
|
+
/**
|
|
1290
|
+
* Error type that can be thrown by middlewares to abort the chain with a structured payload.
|
|
1291
|
+
*/
|
|
1292
|
+
declare class AXPMiddlewareAbortError extends Error {
|
|
1293
|
+
readonly message: string;
|
|
1294
|
+
readonly options: {
|
|
1295
|
+
code?: string;
|
|
1296
|
+
status?: number;
|
|
1297
|
+
details?: any;
|
|
1298
|
+
};
|
|
1299
|
+
constructor(message: string, options?: {
|
|
1300
|
+
code?: string;
|
|
1301
|
+
status?: number;
|
|
1302
|
+
details?: any;
|
|
1303
|
+
});
|
|
1304
|
+
toResponse(): AXPMiddlewareErrorResponse;
|
|
1305
|
+
}
|
|
1306
|
+
/** Type guard for AXPMiddlewareAbortError */
|
|
1307
|
+
declare function isAXPMiddlewareAbortError(error: unknown): error is AXPMiddlewareAbortError;
|
|
1308
|
+
|
|
1309
|
+
declare const eventDispatchMiddleware: AXPEntityStorageMiddleware;
|
|
1310
|
+
|
|
1311
|
+
/**
|
|
1312
|
+
* Entity modifier that applies column widths using the column width service
|
|
1313
|
+
* Uses the generic column width resolution system from core library
|
|
1314
|
+
* Note: inject() works here because modifiers are executed via runInInjectionContext()
|
|
1315
|
+
*/
|
|
1316
|
+
declare const columnWidthMiddleware: AXPEntityModifier;
|
|
1317
|
+
/**
|
|
1318
|
+
* Default provider that applies column width middleware to all entities
|
|
1319
|
+
*/
|
|
1320
|
+
declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
|
|
1321
|
+
|
|
1322
|
+
/**
|
|
1323
|
+
* Default order for common list view columns.
|
|
1324
|
+
* Lower numbers appear first. Columns not in this map get order 500 (middle).
|
|
1325
|
+
* Use high numbers (990+) for columns that should appear at the end.
|
|
1326
|
+
*/
|
|
1327
|
+
declare const DEFAULT_COLUMN_ORDER: Record<string, number>;
|
|
1328
|
+
/**
|
|
1329
|
+
* Entity modifier that sorts list view columns by default order.
|
|
1330
|
+
* Similar to layout-ordering for sections/properties, but for list columns.
|
|
1331
|
+
*/
|
|
1332
|
+
declare const columnOrderingMiddleware: AXPEntityModifier;
|
|
1333
|
+
/**
|
|
1334
|
+
* Factory to create a column ordering middleware with custom order config
|
|
1335
|
+
*/
|
|
1336
|
+
declare const createColumnOrderingMiddlewareProvider: (columnOrder?: Record<string, number>, entityName?: string | RegExp) => AXPEntityModifierProvider;
|
|
1337
|
+
/**
|
|
1338
|
+
* Default provider that applies column ordering to all entities
|
|
1339
|
+
*/
|
|
1340
|
+
declare const columnOrderingMiddlewareProvider: AXPEntityModifierProvider;
|
|
1341
|
+
|
|
1342
|
+
/**
|
|
1343
|
+
* Configuration for section ordering
|
|
1344
|
+
*/
|
|
1345
|
+
interface SectionOrderConfig {
|
|
1346
|
+
/**
|
|
1347
|
+
* Default order for common sections
|
|
1348
|
+
* Lower numbers appear first
|
|
1349
|
+
*/
|
|
1350
|
+
sections: Record<string, number>;
|
|
1351
|
+
/**
|
|
1352
|
+
* Default order for properties within sections
|
|
1353
|
+
* Key format: 'sectionId.propertyName' or just 'propertyName' for any section
|
|
1354
|
+
*/
|
|
1355
|
+
properties: Record<string, number>;
|
|
1356
|
+
}
|
|
1357
|
+
/**
|
|
1358
|
+
* Default order for common sections
|
|
1359
|
+
*/
|
|
1360
|
+
declare const DEFAULT_SECTION_ORDER: Record<string, number>;
|
|
1361
|
+
/**
|
|
1362
|
+
* Default order for common properties
|
|
1363
|
+
* Format: 'sectionId.propertyName' for section-specific or 'propertyName' for any section
|
|
1364
|
+
*/
|
|
1365
|
+
declare const DEFAULT_PROPERTY_ORDER: Record<string, number>;
|
|
1366
|
+
/**
|
|
1367
|
+
* Factory to create a layout ordering middleware
|
|
1368
|
+
*/
|
|
1369
|
+
declare const layoutOrderingMiddlewareFactory: (config: SectionOrderConfig) => AXPEntityModifier;
|
|
1370
|
+
/**
|
|
1371
|
+
* Helper to create a provider for the layout ordering middleware
|
|
1372
|
+
* By default it applies to all entities using the '*' pattern
|
|
1373
|
+
*/
|
|
1374
|
+
declare const createLayoutOrderingMiddlewareProvider: (config?: Partial<SectionOrderConfig>, entityName?: string | RegExp) => AXPEntityModifierProvider;
|
|
1375
|
+
/**
|
|
1376
|
+
* Default provider registered with the default configuration
|
|
1377
|
+
*/
|
|
1378
|
+
declare const layoutOrderingMiddlewareProvider: AXPEntityModifierProvider;
|
|
1379
|
+
|
|
1380
|
+
/**
|
|
1381
|
+
* Provides synchronous access to the ApplyLayoutOrdering setting.
|
|
1382
|
+
* Used by layout ordering middleware to avoid async in the modifier and prevent startup deadlocks.
|
|
1383
|
+
* Value is updated on onLoaded/onChanged; first read can trigger a one-time background get (no await).
|
|
1384
|
+
*/
|
|
1385
|
+
declare class AXPLayoutOrderingConfigService {
|
|
1386
|
+
private readonly settingsService;
|
|
1387
|
+
private readonly _applyOrdering;
|
|
1388
|
+
private syncScheduled;
|
|
1389
|
+
constructor();
|
|
1390
|
+
getApplyOrdering(): boolean;
|
|
1391
|
+
private syncFromSettings;
|
|
1392
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutOrderingConfigService, never>;
|
|
1393
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutOrderingConfigService>;
|
|
1394
|
+
}
|
|
1395
|
+
|
|
1396
|
+
/**
|
|
1397
|
+
* Ensures all entities have a searchResult.description.
|
|
1398
|
+
* Uses @{i18nScope}:module.title when missing (guaranteed to exist in i18n).
|
|
1399
|
+
*/
|
|
1400
|
+
declare const searchResultDescriptionMiddleware: AXPEntityModifier;
|
|
1401
|
+
declare const searchResultDescriptionMiddlewareProvider: AXPEntityModifierProvider;
|
|
1402
|
+
|
|
1403
|
+
/**
|
|
1404
|
+
* When enabled in regional settings ({@link AXPRegionalSetting.MultiLanguageSupport}), walks each
|
|
1405
|
+
* property's `schema.interface` widget tree and sets `options.multiLanguage` on matching text-like
|
|
1406
|
+
* editors (including nested GridLayout leaves such as `pre.content` / `post.summaryContent`), unless
|
|
1407
|
+
* the node already specifies `multiLanguage` (including explicit false to opt out).
|
|
1408
|
+
*/
|
|
1409
|
+
declare const defaultMultiLanguageMiddleware: AXPEntityModifier;
|
|
1410
|
+
declare const defaultMultiLanguageMiddlewareProvider: AXPEntityModifierProvider;
|
|
1411
|
+
|
|
1412
|
+
/**
|
|
1413
|
+
* Registers entity CRUD commands and queries for the given entity keys.
|
|
1414
|
+
* Use in app/module providers; consumes AXPEntityService from this package.
|
|
1415
|
+
*/
|
|
1416
|
+
declare function provideEntity(entityKeys: string[]): EnvironmentProviders;
|
|
1417
|
+
|
|
1418
|
+
interface AXPGetEntityDetailsQueryInput {
|
|
1419
|
+
entity: string;
|
|
1420
|
+
id: string;
|
|
1421
|
+
}
|
|
1422
|
+
interface AXPGetEntityDetailsQueryResult {
|
|
1423
|
+
success: boolean;
|
|
1424
|
+
entityDefinition?: AXPEntity;
|
|
1425
|
+
entityData?: any;
|
|
1426
|
+
error?: string;
|
|
1427
|
+
}
|
|
1428
|
+
/**
|
|
1429
|
+
* Generic query to get entity details including entity definition and entity data
|
|
1430
|
+
* Can be used by any entity to retrieve its definition and data by ID
|
|
1431
|
+
*/
|
|
1432
|
+
declare class AXPGetEntityDetailsQuery implements AXPQuery<AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult> {
|
|
1433
|
+
private readonly entityDefinitionRegistry;
|
|
1434
|
+
private readonly injector;
|
|
1435
|
+
/**
|
|
1436
|
+
* Execute the query to fetch entity definition and data
|
|
1437
|
+
* @param input - Query input containing entity and ID information
|
|
1438
|
+
*/
|
|
1439
|
+
fetch(input: AXPGetEntityDetailsQueryInput): Promise<AXPGetEntityDetailsQueryResult>;
|
|
1440
|
+
/**
|
|
1441
|
+
* Get entity data using the entity's CRUD service
|
|
1442
|
+
* @param entity - Full entity path (ModuleName.EntityName)
|
|
1443
|
+
* @param id - Entity ID
|
|
1444
|
+
* @returns Promise resolving to entity data
|
|
1445
|
+
*/
|
|
1446
|
+
private getEntityData;
|
|
1447
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPGetEntityDetailsQuery, never>;
|
|
1448
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPGetEntityDetailsQuery>;
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
/**
|
|
1452
|
+
* i18n key for the synthetic root node ("all categories"). Resolve in templates with the translate pipe.
|
|
1453
|
+
*/
|
|
1454
|
+
declare const AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY = "@general:terms.interface.selection.all-items";
|
|
1455
|
+
interface CategoryQueryEvent {
|
|
1456
|
+
skip: number;
|
|
1457
|
+
take: number;
|
|
1458
|
+
sort?: AXDataSourceSortOption[];
|
|
1459
|
+
filter?: {
|
|
1460
|
+
field?: string;
|
|
1461
|
+
value?: unknown;
|
|
1462
|
+
operator?: {
|
|
1463
|
+
type: string;
|
|
1464
|
+
};
|
|
1465
|
+
filters?: unknown[];
|
|
1466
|
+
logic?: string;
|
|
1467
|
+
};
|
|
1468
|
+
}
|
|
1469
|
+
interface CategoryQueryResult {
|
|
1470
|
+
items: Record<string, unknown>[];
|
|
1471
|
+
total?: number;
|
|
1472
|
+
totalCount?: number;
|
|
1473
|
+
}
|
|
1474
|
+
type CategoryQueryFunction = (event: CategoryQueryEvent) => Promise<CategoryQueryResult>;
|
|
1475
|
+
interface CategoryTreeConfig {
|
|
1476
|
+
entityKey: string;
|
|
1477
|
+
textField?: string;
|
|
1478
|
+
valueField?: string;
|
|
1479
|
+
parentKey?: string;
|
|
1480
|
+
}
|
|
1481
|
+
interface CategoryTreeNodeData {
|
|
1482
|
+
categoryEntityDef: AXPEntity | null;
|
|
1483
|
+
categoryEntityQueryFunc: CategoryQueryFunction | null;
|
|
1484
|
+
basicQueryEvent: CategoryQueryEvent;
|
|
1485
|
+
}
|
|
1486
|
+
declare class AXPCategoryTreeService {
|
|
1487
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
1488
|
+
private readonly translation;
|
|
1489
|
+
/** Sort field for list queries (backend); matches configured category display field. */
|
|
1490
|
+
private getAlphabeticalSortOptions;
|
|
1491
|
+
/**
|
|
1492
|
+
* Sort tree nodes by resolved display title (locale-aware).
|
|
1493
|
+
* Ensures correct order for multi-language titles when storage order differs from UI order.
|
|
1494
|
+
*/
|
|
1495
|
+
private sortTreeNodesByDisplayTitle;
|
|
1496
|
+
/**
|
|
1497
|
+
* Initialize category tree data source
|
|
1498
|
+
*/
|
|
1499
|
+
initializeCategoryTree(config: CategoryTreeConfig): Promise<CategoryTreeNodeData | null>;
|
|
1500
|
+
/**
|
|
1501
|
+
* Create root node with children from items
|
|
1502
|
+
*/
|
|
1503
|
+
createRootNode(items: Record<string, unknown>[], config: CategoryTreeConfig): Promise<AXTreeViewNode>;
|
|
1504
|
+
/**
|
|
1505
|
+
* Convert entity item to AXTreeViewNode format
|
|
1506
|
+
*/
|
|
1507
|
+
convertToTreeNode(item: Record<string, unknown>, config: CategoryTreeConfig): AXTreeViewNode;
|
|
1508
|
+
/**
|
|
1509
|
+
* Load root categories
|
|
1510
|
+
*/
|
|
1511
|
+
loadRootCategories(treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<Record<string, unknown>[] | null>;
|
|
1512
|
+
/**
|
|
1513
|
+
* Fetches a single category item by ID. Uses byKey when available (full item with parent),
|
|
1514
|
+
* otherwise falls back to list query with filter so ancestor chains can be built.
|
|
1515
|
+
*/
|
|
1516
|
+
fetchItemById(id: string, treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<Record<string, unknown> | null>;
|
|
1517
|
+
/**
|
|
1518
|
+
* Load children for a given node
|
|
1519
|
+
*/
|
|
1520
|
+
loadChildren(node: AXTreeViewNode, treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<AXTreeViewNode[]>;
|
|
1521
|
+
/**
|
|
1522
|
+
* Search categories recursively (all levels)
|
|
1523
|
+
*/
|
|
1524
|
+
searchCategories(searchValue: string, treeData: CategoryTreeNodeData, config: CategoryTreeConfig): Promise<Record<string, unknown>[] | null>;
|
|
1525
|
+
/**
|
|
1526
|
+
* Update children at a specific node in the tree
|
|
1527
|
+
*/
|
|
1528
|
+
updateChildrenAtPath(nodes: AXTreeViewNode[], targetId: string, childNodes: AXTreeViewNode[]): AXTreeViewNode[];
|
|
1529
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPCategoryTreeService, never>;
|
|
1530
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCategoryTreeService>;
|
|
1531
|
+
}
|
|
1532
|
+
|
|
1533
|
+
declare class AXPRelatedColumnEnrichmentService {
|
|
1534
|
+
private readonly metadataResolver;
|
|
1535
|
+
/**
|
|
1536
|
+
* Enriches entity columns with:
|
|
1537
|
+
* 1. dataPath for FK columns (e.g. fromPersonId) derived from lookup property schema
|
|
1538
|
+
* 2. title and showAs from related entity properties for dotted paths (e.g. person.firstName)
|
|
1539
|
+
*/
|
|
1540
|
+
enrich(entity: AXPEntity): Promise<AXPEntity>;
|
|
1541
|
+
/**
|
|
1542
|
+
* Derives dataPath for FK columns from lookup property schema.
|
|
1543
|
+
* Uses expose.target where source matches textField (default 'title').
|
|
1544
|
+
*/
|
|
1545
|
+
private deriveDataPathForFkColumn;
|
|
1546
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRelatedColumnEnrichmentService, never>;
|
|
1547
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnEnrichmentService>;
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
interface AXPRelatedColumnMetadata {
|
|
1551
|
+
title?: string;
|
|
1552
|
+
showAs?: AXPEntityTableColumn['showAs'];
|
|
1553
|
+
}
|
|
1554
|
+
declare class AXPRelatedColumnMetadataResolver {
|
|
1555
|
+
private readonly entityLoader;
|
|
1556
|
+
/**
|
|
1557
|
+
* Resolves title and showAs for a column that references a related entity property via dotted path.
|
|
1558
|
+
* Uses relatedEntities when available; falls back to lookup expose when not.
|
|
1559
|
+
*/
|
|
1560
|
+
resolve(entity: AXPEntity, columnName: string): Promise<AXPRelatedColumnMetadata | null>;
|
|
1561
|
+
/**
|
|
1562
|
+
* Finds a lookup property whose expose target matches the dotted path.
|
|
1563
|
+
* Returns the lookup's entity string (e.g. 'PersonCore.Person') or null.
|
|
1564
|
+
*/
|
|
1565
|
+
private findLookupEntityByExposeTarget;
|
|
1566
|
+
/**
|
|
1567
|
+
* Derives showAs from source property schema.
|
|
1568
|
+
* Passes through the full interface (type, options, children) for column display.
|
|
1569
|
+
*/
|
|
1570
|
+
private deriveShowAs;
|
|
1571
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRelatedColumnMetadataResolver, never>;
|
|
1572
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnMetadataResolver>;
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
interface IEntitySelectorStage {
|
|
1576
|
+
/** Select target entity using "module.entity" format */
|
|
1577
|
+
entity(fullName: string): IInterfaceSelectorStage;
|
|
1578
|
+
}
|
|
1579
|
+
interface IInterfaceSelectorStage {
|
|
1580
|
+
/** Use master.create interface */
|
|
1581
|
+
create(initialData?: any): IPropertyFilterStage;
|
|
1582
|
+
/** Use master.update interface. Accepts id (string) or full record data (object). */
|
|
1583
|
+
update(data: string | Record<string, any>): IPropertyFilterStage;
|
|
1584
|
+
/** Use master.single interface (read-only view). Accepts id (string) or full record data (object). */
|
|
1585
|
+
single(data: string | Record<string, any>): IPropertyFilterStage;
|
|
1586
|
+
}
|
|
1587
|
+
interface IPropertyFilterStage {
|
|
1588
|
+
/** Only include provided property names (by AXPEntityProperty.name). Mutually exclusive with exclude(). */
|
|
1589
|
+
include(...propertyNames: string[]): IPropertyFilterStage;
|
|
1590
|
+
/** Exclude provided property names (by AXPEntityProperty.name). Ignored if include() was already set. */
|
|
1591
|
+
exclude(...propertyNames: string[]): IPropertyFilterStage;
|
|
1592
|
+
/** Mark provided property names as readonly. Overrides property schema for display. */
|
|
1593
|
+
readonlyProperties(...propertyNames: string[]): IPropertyFilterStage;
|
|
1594
|
+
/** Optionally override dialog title */
|
|
1595
|
+
title(text: string): IPropertyFilterStage;
|
|
1596
|
+
/** Provide initial dialog context/model data */
|
|
1597
|
+
context(context: any): IPropertyFilterStage;
|
|
1598
|
+
/** Override dialog size (e.g., 'sm' | 'md' | 'lg' | 'xl' | 'full') */
|
|
1599
|
+
size(size: AXPopupSizeType): IPropertyFilterStage;
|
|
1600
|
+
/** Configure footer actions (cancel/submit/custom). If not called, defaults to cancel+submit. */
|
|
1601
|
+
actions(delegate: (a: IActionBuilder) => void): IPropertyFilterStage;
|
|
1602
|
+
/**
|
|
1603
|
+
* Handler invoked when user clicks an action. Receives AXPDialogRef.
|
|
1604
|
+
* If handler throws, dialog stays open for retry.
|
|
1605
|
+
* If handler returns, dialog closes and show() resolves with the return value.
|
|
1606
|
+
*/
|
|
1607
|
+
onAction<T = any>(handler: (dialogRef: AXPDialogRef) => T | Promise<T>): IPropertyFilterStage & {
|
|
1608
|
+
show(): Promise<T>;
|
|
1609
|
+
};
|
|
1610
|
+
/** Add an extra field into a specific group, using the original field builder API */
|
|
1611
|
+
field(groupId: string, path: string, delegate?: (field: CompatFormFieldBuilder) => void): IPropertyFilterStage;
|
|
1612
|
+
/** Build and return the widget node without showing dialog */
|
|
1613
|
+
build(): Promise<AXPWidgetNode>;
|
|
1614
|
+
/** Show dialog */
|
|
1615
|
+
show(): Promise<AXPDialogRef>;
|
|
1616
|
+
mode(mode: 'edit' | 'view'): IPropertyFilterStage;
|
|
1617
|
+
}
|
|
1618
|
+
declare class AXPEntityFormBuilderService implements IEntitySelectorStage {
|
|
1619
|
+
private readonly entityRegistry;
|
|
1620
|
+
private readonly layoutBuilder;
|
|
1621
|
+
private readonly deviceService;
|
|
1622
|
+
entity(fullName: string): IInterfaceSelectorStage;
|
|
1623
|
+
/**
|
|
1624
|
+
* Fetches a record by ID for the specified entity.
|
|
1625
|
+
* @param fullName - Entity full name in "module.entity" format
|
|
1626
|
+
* @param id - Record ID to fetch
|
|
1627
|
+
* @returns Promise resolving to the record data, or empty object if not found
|
|
1628
|
+
*/
|
|
1629
|
+
getRecordById(fullName: string, id: string): Promise<Record<string, any>>;
|
|
1630
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityFormBuilderService, never>;
|
|
1631
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityFormBuilderService>;
|
|
1632
|
+
}
|
|
1633
|
+
type CompatFormFieldBuilder = {
|
|
1634
|
+
path(path: string): any;
|
|
1635
|
+
layout(config: any): any;
|
|
1636
|
+
visible(condition: boolean | string): any;
|
|
1637
|
+
readonly(condition: boolean | string): any;
|
|
1638
|
+
customWidget(type: string, options?: any): any;
|
|
1639
|
+
} & Partial<IFormFieldBuilder>;
|
|
1640
|
+
|
|
1641
|
+
declare const AXP_ENTITY_STORAGE_BACKEND: InjectionToken<AXPEntityStorageService<any, any, any, any, any>>;
|
|
1642
|
+
declare const AXP_ENTITY_STORAGE_MIDDLEWARE: InjectionToken<AXPEntityStorageMiddleware<any, any, any, any, any>[]>;
|
|
1643
|
+
|
|
1644
|
+
declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> extends AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
|
|
1645
|
+
private readonly backend;
|
|
1646
|
+
private readonly allMiddlewares;
|
|
1647
|
+
private readonly injector;
|
|
1648
|
+
/** In-flight read requests - identical parallel requests share one execution */
|
|
1649
|
+
private readonly inFlight;
|
|
1650
|
+
get dbName(): string;
|
|
1651
|
+
private filterMiddlewares;
|
|
1652
|
+
private compose;
|
|
1653
|
+
private run;
|
|
1654
|
+
private createCtx;
|
|
1655
|
+
initial(entityName: string, collection: TCreateDto[], options?: {
|
|
1656
|
+
mergeType?: 'merge' | 'replace';
|
|
1657
|
+
uniqueKeys?: string[];
|
|
1658
|
+
}): Promise<TCreateDto[]>;
|
|
1659
|
+
getOne(entityName: string, id: TKey): Promise<TDetailDto>;
|
|
1660
|
+
updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1661
|
+
deleteOne(entityName: string, id: TKey): Promise<void>;
|
|
1662
|
+
insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
|
|
1663
|
+
getAll(entityName: string): Promise<TListItemDto[]>;
|
|
1664
|
+
query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1665
|
+
private runWithDedup;
|
|
1666
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
|
|
1667
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
|
|
1668
|
+
}
|
|
1669
|
+
|
|
1670
|
+
declare function entityMasterCreateAction(): AXPEntityAction;
|
|
1671
|
+
declare function entityMasterEditAction(): AXPEntityAction;
|
|
1672
|
+
declare function entityMasterBulkDeleteAction(): AXPEntityAction;
|
|
1673
|
+
declare function entityMasterViewAction(): AXPEntityAction;
|
|
1674
|
+
declare function entityMasterDeleteAction(): AXPEntityAction;
|
|
1675
|
+
declare function entityMasterCrudActions(options?: {
|
|
1676
|
+
create?: boolean;
|
|
1677
|
+
delete?: boolean;
|
|
1678
|
+
view?: boolean;
|
|
1679
|
+
edit?: boolean;
|
|
1680
|
+
}): AXPEntityAction[];
|
|
1681
|
+
declare function entityMasterRecordActions(): AXPEntityAction[];
|
|
1682
|
+
declare function entityDetailsCreateActions(parentId: string): AXPEntityAction;
|
|
1683
|
+
declare function entityDetailsSimpleCondition(fk: string): AXPQueryFilter;
|
|
1684
|
+
declare function entityDetailsReferenceCondition(type: string): AXPQueryFilter[];
|
|
1685
|
+
declare function entityDetailsEditAction(): AXPEntityAction;
|
|
1686
|
+
declare function entityDetailsNewEditAction(): AXPEntityAction;
|
|
1687
|
+
declare function entityOverrideDetailsViewAction(): AXPEntityAction;
|
|
1688
|
+
declare function entityDetailsCrudActions(parentId: string, options?: {
|
|
1689
|
+
create?: boolean;
|
|
1690
|
+
delete?: boolean;
|
|
1691
|
+
view?: boolean;
|
|
1692
|
+
edit?: boolean;
|
|
1693
|
+
}): AXPEntityAction[];
|
|
1694
|
+
declare function entityDetailsReferenceCreateActions(type: string): AXPEntityAction[];
|
|
1695
|
+
type AXPEntityChangeSet = {
|
|
1696
|
+
[key: string]: {
|
|
1697
|
+
oldValue: any;
|
|
1698
|
+
newValue: any;
|
|
1699
|
+
added?: any[];
|
|
1700
|
+
removed?: any[];
|
|
1701
|
+
};
|
|
1702
|
+
};
|
|
1703
|
+
/**
|
|
1704
|
+
* Computes a diff between two plain objects with array-aware semantics.
|
|
1705
|
+
* - For arrays of objects with an id field, computes added/removed by id.
|
|
1706
|
+
* - For arrays of primitives or objects without id, uses deep equality.
|
|
1707
|
+
* - For scalars/objects, reports oldValue/newValue when changed.
|
|
1708
|
+
*/
|
|
1709
|
+
declare function detectEntityChanges(oldObj: any, newObj: any): AXPEntityChangeSet;
|
|
1710
|
+
|
|
1711
|
+
declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent implements OnInit {
|
|
1712
|
+
protected readonly categoryTreeService: AXPCategoryTreeService;
|
|
1713
|
+
/** i18n key for the synthetic "all items" root row; resolved in the template with the translate pipe. */
|
|
1714
|
+
protected readonly categoryTreeRootTitleI18nKey = "@general:terms.interface.selection.all-items";
|
|
1715
|
+
private readonly translationService;
|
|
1716
|
+
private readonly mlsResolver;
|
|
1717
|
+
protected readonly highlightService: AXHighlightService;
|
|
1718
|
+
private readonly changeDetectorRef;
|
|
1719
|
+
entityKey: _angular_core.WritableSignal<string>;
|
|
1720
|
+
textField: _angular_core.WritableSignal<string>;
|
|
1721
|
+
valueField: _angular_core.WritableSignal<string>;
|
|
1722
|
+
allowMultiple: _angular_core.WritableSignal<boolean>;
|
|
1723
|
+
selectedValues: _angular_core.WritableSignal<string[]>;
|
|
1724
|
+
/** Optional input for when popup passes selected values via inputs instead of data */
|
|
1725
|
+
selectedValuesInput: _angular_core.WritableSignal<string[]>;
|
|
1726
|
+
searchPlaceholder: _angular_core.WritableSignal<string>;
|
|
1727
|
+
excludedNodeId: _angular_core.WritableSignal<string | undefined>;
|
|
1728
|
+
searchWithChildren: _angular_core.WritableSignal<boolean>;
|
|
1729
|
+
protected tree: _angular_core.Signal<AXTreeViewComponent | undefined>;
|
|
1730
|
+
protected loading: _angular_core.WritableSignal<boolean>;
|
|
1731
|
+
protected selectedNodeIds: _angular_core.WritableSignal<string[]>;
|
|
1732
|
+
protected searchValue: _angular_core.WritableSignal<string>;
|
|
1733
|
+
protected searchResultCount: _angular_core.WritableSignal<number>;
|
|
1734
|
+
protected isSearching: _angular_core.WritableSignal<boolean>;
|
|
1735
|
+
protected resultsFoundText: _angular_core.WritableSignal<string>;
|
|
1736
|
+
protected noRecordsTitle: _angular_core.WritableSignal<string>;
|
|
1737
|
+
private currentSearchTerm;
|
|
1738
|
+
private isRefreshing;
|
|
1739
|
+
private isUpdatingSelection;
|
|
1740
|
+
/**
|
|
1741
|
+
* Computed property to check if we should show the "no search results" empty state.
|
|
1742
|
+
* Returns true when search is active, not searching, and no results found.
|
|
1743
|
+
*/
|
|
1744
|
+
protected readonly showNoSearchResults: _angular_core.Signal<boolean>;
|
|
1745
|
+
protected treeData: CategoryTreeNodeData | null;
|
|
1746
|
+
private treeConfig;
|
|
1747
|
+
private nodeDataCache;
|
|
1748
|
+
private matchingNodeIds;
|
|
1749
|
+
private relevantNodeIds;
|
|
1750
|
+
private expandedNodesBeforeSearch;
|
|
1751
|
+
private nodesExpandedDuringSearch;
|
|
1752
|
+
private initialExpandSyncDone;
|
|
1753
|
+
constructor();
|
|
1754
|
+
ngOnInit(): void;
|
|
1755
|
+
private initializeTree;
|
|
1756
|
+
/**
|
|
1757
|
+
* Called when popup data arrives after ngOnInit: load data, set selection, expand and sync.
|
|
1758
|
+
*/
|
|
1759
|
+
private runInitialExpandAndSync;
|
|
1760
|
+
/**
|
|
1761
|
+
* Runs expand path + sync selection once the tree viewChild is available.
|
|
1762
|
+
* Uses retry loop so we don't run before the view has rendered the tree.
|
|
1763
|
+
*/
|
|
1764
|
+
private runExpandAndSyncWhenTreeReady;
|
|
1765
|
+
/**
|
|
1766
|
+
* Handles search input value changes - Uses server-side search for efficiency and reliability
|
|
1767
|
+
*/
|
|
1768
|
+
handleSearchChange(event: AXValueChangedEvent<string>): Promise<void>;
|
|
1769
|
+
/**
|
|
1770
|
+
* Collects all parent IDs for the given search results
|
|
1771
|
+
* Handles both nested 'parent' object and 'parentId' field in search results
|
|
1772
|
+
* Recursively fetches parent nodes to build the full parent chain
|
|
1773
|
+
*/
|
|
1774
|
+
private collectParentIds;
|
|
1775
|
+
/**
|
|
1776
|
+
* Collects children IDs for matching search results recursively
|
|
1777
|
+
* Adds all descendants (children, grandchildren, etc.) to relevantNodeIds so they appear in the filtered tree
|
|
1778
|
+
*/
|
|
1779
|
+
private collectChildrenIds;
|
|
1780
|
+
/**
|
|
1781
|
+
* Recursively collects all descendant IDs for a given node
|
|
1782
|
+
*/
|
|
1783
|
+
private collectChildrenRecursively;
|
|
1784
|
+
/**
|
|
1785
|
+
* Fetches a single item by ID. Uses category tree service so byKey is used when available
|
|
1786
|
+
* (returns full item with parent/parentId for building ancestor chains).
|
|
1787
|
+
*/
|
|
1788
|
+
private fetchItemById;
|
|
1789
|
+
/**
|
|
1790
|
+
* Sorts parent IDs by their depth (root first, leaves last)
|
|
1791
|
+
* Optimized to use cached data and batch fetch missing items
|
|
1792
|
+
*/
|
|
1793
|
+
private sortParentsByDepth;
|
|
1794
|
+
/**
|
|
1795
|
+
* Updates translated messages for search results
|
|
1796
|
+
*/
|
|
1797
|
+
private updateTranslatedMessages;
|
|
1798
|
+
/**
|
|
1799
|
+
* Resets search state and restores tree to original expanded state
|
|
1800
|
+
*/
|
|
1801
|
+
private resetSearch;
|
|
1802
|
+
/**
|
|
1803
|
+
* Restores selection state after tree reload.
|
|
1804
|
+
* Expands ancestor nodes and selects the previously selected leaf nodes.
|
|
1805
|
+
*/
|
|
1806
|
+
private restoreSelectionAfterReload;
|
|
1807
|
+
protected onNodeSelect(event: AXTreeViewNodeSelectEvent): Promise<void>;
|
|
1808
|
+
/** Datasource callback for tree-view component. */
|
|
1809
|
+
protected datasource: (id?: string) => Promise<AXTreeViewNode[]>;
|
|
1810
|
+
protected onConfirm(): Promise<void>;
|
|
1811
|
+
protected onCancel(): Promise<void>;
|
|
1812
|
+
/**
|
|
1813
|
+
* Clears all selected items
|
|
1814
|
+
*/
|
|
1815
|
+
protected onClearAll(): void;
|
|
1816
|
+
/**
|
|
1817
|
+
* Checks if a node matches the current search term
|
|
1818
|
+
*/
|
|
1819
|
+
protected isMatchingNode(nodeId: string): boolean;
|
|
1820
|
+
/**
|
|
1821
|
+
* Checks if a node is currently selected
|
|
1822
|
+
*/
|
|
1823
|
+
protected isNodeSelected(nodeId: string | number | undefined): boolean;
|
|
1824
|
+
/**
|
|
1825
|
+
* Expands parent nodes, collects all LEAF descendants, and selects them visually.
|
|
1826
|
+
* If the parent itself is a leaf (no children), it will be added.
|
|
1827
|
+
* When prefetchedChildren is provided, avoids an extra datasource(parentId) call.
|
|
1828
|
+
*/
|
|
1829
|
+
private selectAllLeafDescendants;
|
|
1830
|
+
/**
|
|
1831
|
+
* Removes all LEAF descendants from selectedNodeIds.
|
|
1832
|
+
* For 'all' node: clears everything and uses tree's deselectAll().
|
|
1833
|
+
* For other nodes: tree handles visual state via user click.
|
|
1834
|
+
*/
|
|
1835
|
+
private deselectAllLeafDescendants;
|
|
1836
|
+
/**
|
|
1837
|
+
* Recursively expands parent nodes and collects LEAF node IDs.
|
|
1838
|
+
* When treeComponent is provided, expands each parent node before loading children.
|
|
1839
|
+
* When prefetchedChildren is provided, uses it instead of calling datasource(parentId) (one less API call).
|
|
1840
|
+
* Fetches each node's children at most once by passing grandchildren when recursing.
|
|
1841
|
+
*/
|
|
1842
|
+
private collectLeafNodes;
|
|
1843
|
+
/**
|
|
1844
|
+
* Checks if a node has children
|
|
1845
|
+
*/
|
|
1846
|
+
private nodeHasChildren;
|
|
1847
|
+
/**
|
|
1848
|
+
* Checks if a node is a leaf (has no children)
|
|
1849
|
+
*/
|
|
1850
|
+
private isLeafNodeCheck;
|
|
1851
|
+
/**
|
|
1852
|
+
* Caches node data from a tree node
|
|
1853
|
+
*/
|
|
1854
|
+
private cacheNodeFromTreeNode;
|
|
1855
|
+
/**
|
|
1856
|
+
* Builds complete ancestor chains for all selected node IDs.
|
|
1857
|
+
* Returns a Map where key is the selected node ID and value is array of ancestor IDs from root to parent.
|
|
1858
|
+
* Batch-fetches missing node and ancestor data in parallel to minimize API calls.
|
|
1859
|
+
*/
|
|
1860
|
+
private buildAncestorChains;
|
|
1861
|
+
/**
|
|
1862
|
+
* Expands ancestor nodes in order from root to leaf.
|
|
1863
|
+
* This ensures parent nodes are loaded into the tree before selecting children.
|
|
1864
|
+
*/
|
|
1865
|
+
private expandAncestorNodesInOrder;
|
|
1866
|
+
/** Waits until the node is expanded (tree has loaded children). Polls so deep paths load. */
|
|
1867
|
+
private waitForNodeExpanded;
|
|
1868
|
+
/**
|
|
1869
|
+
* Syncs selection state with the tree component.
|
|
1870
|
+
* Selects leaf nodes and manually updates parent states (indeterminate/selected).
|
|
1871
|
+
*/
|
|
1872
|
+
private syncSelectionWithTree;
|
|
1873
|
+
/**
|
|
1874
|
+
* Updates parent node states (selected/indeterminate) based on children selection.
|
|
1875
|
+
* Called after leaf nodes are selected to properly show parent states.
|
|
1876
|
+
* Works bottom-up from deepest parents to root, tracking states in a Map.
|
|
1877
|
+
*/
|
|
1878
|
+
private updateParentStatesAfterSelection;
|
|
1879
|
+
/**
|
|
1880
|
+
* Loads node data for IDs that are selected but not yet in the cache.
|
|
1881
|
+
* This is critical for pre-selected values in collapsed branches.
|
|
1882
|
+
* Fetches all missing IDs in parallel to minimize API calls and latency.
|
|
1883
|
+
*/
|
|
1884
|
+
private loadMissingNodeData;
|
|
1885
|
+
/**
|
|
1886
|
+
* For each selected id, if cached item has no parent (e.g. batch query returned minimal fields),
|
|
1887
|
+
* re-fetch by id so we have parent/parentId for building ancestor chains.
|
|
1888
|
+
* Fetches all needing refresh in parallel.
|
|
1889
|
+
*/
|
|
1890
|
+
private ensureParentDataInCache;
|
|
1891
|
+
/**
|
|
1892
|
+
* Resolves parent ID from node data: supports nested `parent` object or flat parentId/parentKey.
|
|
1893
|
+
*/
|
|
1894
|
+
private getParentIdFromNodeData;
|
|
1895
|
+
/**
|
|
1896
|
+
* Marks nodes as selected in the tree structure based on selectedNodeIds.
|
|
1897
|
+
* This ensures pre-selected nodes appear selected when the tree is rendered.
|
|
1898
|
+
*/
|
|
1899
|
+
private markNodesAsSelected;
|
|
1900
|
+
/**
|
|
1901
|
+
* Marks a single node as selected if it's in the selectedNodeIds list.
|
|
1902
|
+
*/
|
|
1903
|
+
private markNodeAsSelectedIfNeeded;
|
|
1904
|
+
/**
|
|
1905
|
+
* Marks a node and its children as disabled if the node ID matches the excluded ID.
|
|
1906
|
+
*/
|
|
1907
|
+
private markNodeAsDisabled;
|
|
1908
|
+
/**
|
|
1909
|
+
* Processes root node: marks excluded as disabled, marks selected, and syncs selection with tree component
|
|
1910
|
+
*/
|
|
1911
|
+
private processRootNode;
|
|
1912
|
+
/**
|
|
1913
|
+
* Processes child nodes: marks excluded as disabled
|
|
1914
|
+
* Selection marking is handled in datasource callback ONLY during initial load
|
|
1915
|
+
*/
|
|
1916
|
+
private processChildNodes;
|
|
1917
|
+
/**
|
|
1918
|
+
* Caches node data from items array
|
|
1919
|
+
*/
|
|
1920
|
+
private cacheNodeData;
|
|
1921
|
+
/**
|
|
1922
|
+
* Caches node data from tree nodes
|
|
1923
|
+
*/
|
|
1924
|
+
private cacheNodeDataFromNodes;
|
|
1925
|
+
/**
|
|
1926
|
+
* Calculate the full path from root to the selected node.
|
|
1927
|
+
* Returns an array of strings like ["Operations", "IT Operations"] for node "IT Operations" under parent "Operations".
|
|
1928
|
+
* Uses tree-view's getNodePath() API when available, otherwise falls back to manual calculation.
|
|
1929
|
+
*/
|
|
1930
|
+
private calculateNodePath;
|
|
1931
|
+
/**
|
|
1932
|
+
* Manual path calculation fallback
|
|
1933
|
+
*/
|
|
1934
|
+
private calculateNodePathManually;
|
|
1935
|
+
/**
|
|
1936
|
+
* Get the display title for a node.
|
|
1937
|
+
*/
|
|
1938
|
+
private getNodeTitle;
|
|
1939
|
+
private getSelectedItems;
|
|
1940
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryTreeSelectorComponent, never>;
|
|
1941
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryTreeSelectorComponent, "axp-entity-category-tree-selector", never, {}, {}, never, never, true, never>;
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
declare class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
|
|
1945
|
+
protected readonly entityDetailPopoverService: AXPEntityDetailPopoverService;
|
|
1946
|
+
protected readonly formatService: AXFormatService;
|
|
1947
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
1948
|
+
private readonly categoryBatchResolver;
|
|
1949
|
+
private readonly rawValueSignal;
|
|
1950
|
+
set rawValueInput(value: any);
|
|
1951
|
+
protected entity: _angular_core.Signal<string>;
|
|
1952
|
+
protected valueField: _angular_core.Signal<string>;
|
|
1953
|
+
protected textField: _angular_core.Signal<string>;
|
|
1954
|
+
protected columnName: _angular_core.Signal<string>;
|
|
1955
|
+
protected defaultTextField: _angular_core.Signal<string>;
|
|
1956
|
+
protected displayField: _angular_core.Signal<string>;
|
|
1957
|
+
protected host: ElementRef<any>;
|
|
1958
|
+
private entityDef;
|
|
1959
|
+
protected displayItems: _angular_core.WritableSignal<any[]>;
|
|
1960
|
+
protected selectedItemIndex: _angular_core.WritableSignal<number>;
|
|
1961
|
+
private efEntity;
|
|
1962
|
+
private efDisplay;
|
|
1963
|
+
protected visibleItems: _angular_core.Signal<any[]>;
|
|
1964
|
+
protected columnItems: _angular_core.Signal<AXPColumnItemListItem[]>;
|
|
1965
|
+
protected showItemDetail(item: any, index: number): Promise<void>;
|
|
1966
|
+
protected handleItemClick(listItem: AXPColumnItemListItem): void;
|
|
1967
|
+
protected getItemPath(item: any): string[];
|
|
1968
|
+
protected hasParent(item: any): boolean;
|
|
1969
|
+
protected getItemText(item: any): string;
|
|
1970
|
+
protected joinPath(path: string[]): string;
|
|
1971
|
+
protected getItemId(item: any): string;
|
|
1972
|
+
protected getBreadcrumbPath(item: any): string;
|
|
1973
|
+
private resolveItemsWithPaths;
|
|
1974
|
+
/**
|
|
1975
|
+
* Build path from categories array when record has full chain (id, parentId, title).
|
|
1976
|
+
* Used when middleware enriches categories on create/update.
|
|
1977
|
+
*/
|
|
1978
|
+
private buildItemWithPathFromChain;
|
|
1979
|
+
private extractItemWithPath;
|
|
1980
|
+
/**
|
|
1981
|
+
* Calculate the full path from root to the item.
|
|
1982
|
+
* Returns an array of strings like ["C", "B"] for item B under parent C.
|
|
1983
|
+
*/
|
|
1984
|
+
private calculateItemPath;
|
|
1985
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetColumnComponent, never>;
|
|
1986
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetColumnComponent, "axp-entity-category-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "rawValueInput": { "alias": "rawValue"; "required": false; }; }, {}, never, never, true, never>;
|
|
1987
|
+
}
|
|
1988
|
+
|
|
1989
|
+
interface AXPEntityCategoryWidgetOptions {
|
|
1990
|
+
disabled?: boolean | AXPExpression;
|
|
1991
|
+
readonly?: boolean | AXPExpression;
|
|
1992
|
+
placeholder?: string;
|
|
1993
|
+
entity?: string;
|
|
1994
|
+
multiple?: boolean;
|
|
1995
|
+
textField?: string;
|
|
1996
|
+
valueField?: string;
|
|
1997
|
+
parentKey?: string;
|
|
1998
|
+
expose?: Array<{
|
|
1999
|
+
source: string;
|
|
2000
|
+
target: string;
|
|
2001
|
+
}>;
|
|
2002
|
+
allowClear?: boolean;
|
|
2003
|
+
look?: 'select' | 'lookup';
|
|
2004
|
+
maxVisible?: number;
|
|
2005
|
+
characterLimit?: number | 'auto';
|
|
2006
|
+
sectionLimit?: number | 'auto';
|
|
2007
|
+
}
|
|
2008
|
+
|
|
2009
|
+
declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetComponent<any, AXPEntityCategoryWidgetOptions> {
|
|
2010
|
+
#private;
|
|
2011
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
2012
|
+
protected readonly popupService: AXPopupService;
|
|
2013
|
+
private readonly translateService;
|
|
2014
|
+
protected readonly cdr: ChangeDetectorRef;
|
|
2015
|
+
protected entity: _angular_core.Signal<string>;
|
|
2016
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
2017
|
+
protected disabled: _angular_core.Signal<boolean>;
|
|
2018
|
+
protected textField: _angular_core.Signal<string>;
|
|
2019
|
+
protected valueField: _angular_core.Signal<string>;
|
|
2020
|
+
protected expose: _angular_core.Signal<{
|
|
2021
|
+
source: string;
|
|
2022
|
+
target: string;
|
|
2023
|
+
}[] | undefined>;
|
|
2024
|
+
protected allowClear: _angular_core.Signal<boolean>;
|
|
2025
|
+
protected characterLimit: _angular_core.Signal<number | "auto">;
|
|
2026
|
+
protected sectionLimit: _angular_core.Signal<number | "auto">;
|
|
2027
|
+
protected defaultTextField: _angular_core.Signal<string>;
|
|
2028
|
+
protected displayField: _angular_core.Signal<string>;
|
|
2029
|
+
protected searchPlaceholderText: _angular_core.WritableSignal<string>;
|
|
2030
|
+
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
2031
|
+
protected isLoading: _angular_core.WritableSignal<boolean>;
|
|
2032
|
+
protected isOpen: _angular_core.WritableSignal<boolean>;
|
|
2033
|
+
protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
|
|
2034
|
+
protected searchTerm: _angular_core.WritableSignal<string | null>;
|
|
2035
|
+
private entityDef;
|
|
2036
|
+
/**
|
|
2037
|
+
* Flag to prevent the value effect from running during internal updates.
|
|
2038
|
+
* This prevents circular dependency when setItems() calls setValue().
|
|
2039
|
+
*/
|
|
2040
|
+
private isInternalUpdate;
|
|
2041
|
+
protected handleAddClick(e: AXClickEvent): void;
|
|
2042
|
+
protected handleValueChange(e: AXValueChangedEvent): void;
|
|
2043
|
+
protected handleOnBlur(e: AXFocusEvent): void;
|
|
2044
|
+
protected handleKeyUp(e: AXHtmlEvent): Promise<void>;
|
|
2045
|
+
protected handleClearClick(): void;
|
|
2046
|
+
protected handleRemoveItem(event: Event, index: number): Promise<void>;
|
|
2047
|
+
clearInput(): void;
|
|
2048
|
+
private showTreeSelector;
|
|
2049
|
+
clear(): void;
|
|
2050
|
+
private findByValue;
|
|
2051
|
+
private setItems;
|
|
2052
|
+
private singleOrMultiple;
|
|
2053
|
+
protected getItemLabel(item: any): string;
|
|
2054
|
+
/**
|
|
2055
|
+
* Get item path as array for breadcrumb component (raw MLS or string per segment).
|
|
2056
|
+
*/
|
|
2057
|
+
protected getItemPath(item: any): AXPMultiLanguageString[];
|
|
2058
|
+
/**
|
|
2059
|
+
* Join path array with separator.
|
|
2060
|
+
* Override this method to customize the separator (e.g., " > ", " -> ", " / ")
|
|
2061
|
+
*/
|
|
2062
|
+
protected joinPath(path: unknown[]): string;
|
|
2063
|
+
protected getItemId(item: any): string;
|
|
2064
|
+
/**
|
|
2065
|
+
* Calculate the full path from root to the item.
|
|
2066
|
+
* Returns an array of strings like ["C", "B"] for item B under parent C.
|
|
2067
|
+
*/
|
|
2068
|
+
private calculateItemPath;
|
|
2069
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetEditComponent, never>;
|
|
2070
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetEditComponent, "axp-entity-category-widget-edit", never, {}, {}, never, never, true, never>;
|
|
2071
|
+
}
|
|
2072
|
+
|
|
2073
|
+
declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetComponent<any> {
|
|
2074
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
2075
|
+
protected entity: _angular_core.Signal<string>;
|
|
2076
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
2077
|
+
protected valueField: _angular_core.Signal<string>;
|
|
2078
|
+
protected textField: _angular_core.Signal<string>;
|
|
2079
|
+
protected badgeClass: _angular_core.Signal<string>;
|
|
2080
|
+
protected displayField: _angular_core.Signal<string>;
|
|
2081
|
+
protected loading: _angular_core.WritableSignal<boolean>;
|
|
2082
|
+
private entityDef;
|
|
2083
|
+
protected displayItems: _angular_core.WritableSignal<{
|
|
2084
|
+
id: string;
|
|
2085
|
+
titleRaw: AXPMultiLanguageString | null | undefined;
|
|
2086
|
+
}[]>;
|
|
2087
|
+
private efEntity;
|
|
2088
|
+
private efDisplay;
|
|
2089
|
+
private extractItem;
|
|
2090
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetViewComponent, never>;
|
|
2091
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetViewComponent, "axp-entity-category-widget-view", never, {}, {}, never, never, true, never>;
|
|
2092
|
+
}
|
|
2093
|
+
|
|
2094
|
+
declare const AXPEntityCategoryWidget: AXPWidgetConfig;
|
|
2095
|
+
|
|
2096
|
+
declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
|
|
2097
|
+
private readonly mlsResolver;
|
|
2098
|
+
/** Plain string or locale map per segment; truncation uses resolved text (see {@link resolvedSectionTexts}). */
|
|
2099
|
+
sections: _angular_core.InputSignal<readonly (AXPMultiLanguageString | null | undefined)[]>;
|
|
2100
|
+
characterLimit: _angular_core.InputSignal<number | "auto">;
|
|
2101
|
+
sectionLimit: _angular_core.InputSignal<number | "auto">;
|
|
2102
|
+
separatorIcon: _angular_core.InputSignal<string>;
|
|
2103
|
+
ellipsisIcon: _angular_core.InputSignal<string>;
|
|
2104
|
+
eyeIcon: _angular_core.InputSignal<string>;
|
|
2105
|
+
protected container: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
2106
|
+
protected isExpanded: _angular_core.WritableSignal<boolean>;
|
|
2107
|
+
private containerWidth;
|
|
2108
|
+
private resizeObserver;
|
|
2109
|
+
/** Resolved display strings for length / ellipsis (same rules as the pipe). */
|
|
2110
|
+
protected resolvedSectionTexts: _angular_core.Signal<string[]>;
|
|
2111
|
+
protected effectiveCharacterLimit: _angular_core.Signal<number>;
|
|
2112
|
+
protected effectiveSectionLimit: _angular_core.Signal<number>;
|
|
2113
|
+
protected hasTruncatedText: _angular_core.Signal<boolean>;
|
|
2114
|
+
protected hasHiddenSections: _angular_core.Signal<boolean>;
|
|
2115
|
+
/**
|
|
2116
|
+
* canToggle: If this is false, NO Eye Icon and NO Click events will exist.
|
|
2117
|
+
*/
|
|
2118
|
+
protected canToggle: _angular_core.Signal<boolean>;
|
|
2119
|
+
protected allSectionsTruncated: _angular_core.Signal<{
|
|
2120
|
+
text: string;
|
|
2121
|
+
original: string;
|
|
2122
|
+
}[]>;
|
|
2123
|
+
protected displayedSections: _angular_core.Signal<{
|
|
2124
|
+
text: string;
|
|
2125
|
+
original: string;
|
|
2126
|
+
}[]>;
|
|
2127
|
+
protected lastSection: _angular_core.Signal<{
|
|
2128
|
+
text: string;
|
|
2129
|
+
original: string;
|
|
2130
|
+
}>;
|
|
2131
|
+
protected fullPath: _angular_core.Signal<string>;
|
|
2132
|
+
constructor();
|
|
2133
|
+
ngOnDestroy(): void;
|
|
2134
|
+
protected handleSeparatorClick(event: Event): void;
|
|
2135
|
+
protected handleEllipsisClick(event: Event): void;
|
|
2136
|
+
protected handleCollapseClick(event: Event): void;
|
|
2137
|
+
private initializeResizeObserver;
|
|
2138
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTruncatedBreadcrumbComponent, never>;
|
|
2139
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPTruncatedBreadcrumbComponent, "axp-truncated-breadcrumb", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "characterLimit": { "alias": "characterLimit"; "required": false; "isSignal": true; }; "sectionLimit": { "alias": "sectionLimit"; "required": false; "isSignal": true; }; "separatorIcon": { "alias": "separatorIcon"; "required": false; "isSignal": true; }; "ellipsisIcon": { "alias": "ellipsisIcon"; "required": false; "isSignal": true; }; "eyeIcon": { "alias": "eyeIcon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2140
|
+
}
|
|
2141
|
+
|
|
2142
|
+
declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
|
|
2143
|
+
declare module '@acorex/platform/layout/widget-core' {
|
|
2144
|
+
interface AXPWidgetTypesMap {
|
|
2145
|
+
entityDefinitionProvider: 'entity-definition-provider-editor';
|
|
2146
|
+
}
|
|
2147
|
+
}
|
|
2148
|
+
|
|
2149
|
+
declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
|
|
2150
|
+
private readonly entityRegistry;
|
|
2151
|
+
/**
|
|
2152
|
+
* Last applied module filter (from context) to avoid redundant reloads.
|
|
2153
|
+
*/
|
|
2154
|
+
private readonly lastModuleFilterKey;
|
|
2155
|
+
/**
|
|
2156
|
+
* Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
|
|
2157
|
+
*/
|
|
2158
|
+
private readonly reloadWhenModuleContextChanges;
|
|
2159
|
+
/**
|
|
2160
|
+
* Options:
|
|
2161
|
+
* - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
|
|
2162
|
+
* - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
|
|
2163
|
+
*/
|
|
2164
|
+
protected loadDataSourceRows(): Promise<Array<{
|
|
2165
|
+
value: string;
|
|
2166
|
+
title: string;
|
|
2167
|
+
}>>;
|
|
2168
|
+
refresh(): void;
|
|
2169
|
+
/**
|
|
2170
|
+
* Reads sibling field from context store data (same shape as `lodash/get` paths).
|
|
2171
|
+
*/
|
|
2172
|
+
private readModuleFromContext;
|
|
2173
|
+
/**
|
|
2174
|
+
* Resolves a sibling field path relative to the current widget's parent path.
|
|
2175
|
+
*/
|
|
2176
|
+
private resolveSiblingContextPath;
|
|
2177
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
|
|
2178
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2181
|
+
declare class AXPEntityListTableService {
|
|
2182
|
+
private readonly workflow;
|
|
2183
|
+
private readonly commandService;
|
|
2184
|
+
private readonly expressionEvaluator;
|
|
2185
|
+
/**
|
|
2186
|
+
* Convert Entity to List Widget Options
|
|
2187
|
+
*/
|
|
2188
|
+
convertEntityToListOptions(entity: AXPEntity, options: any, allActions: AXPEntityCommandTriggerViewModel[]): Promise<AXPDataListWidgetComponentOptions>;
|
|
2189
|
+
/**
|
|
2190
|
+
* Create DataSource for Entity
|
|
2191
|
+
*/
|
|
2192
|
+
private createDataSource;
|
|
2193
|
+
/**
|
|
2194
|
+
* Convert Properties to Columns
|
|
2195
|
+
*/
|
|
2196
|
+
private createColumnsFromProperties;
|
|
2197
|
+
/**
|
|
2198
|
+
* Map EntityTableColumn to ListWidgetColumn
|
|
2199
|
+
*/
|
|
2200
|
+
private mapEntityColumnToWidgetColumn;
|
|
2201
|
+
/**
|
|
2202
|
+
* Convert Entity Actions to Row Commands
|
|
2203
|
+
*/
|
|
2204
|
+
private createRowCommands;
|
|
2205
|
+
/**
|
|
2206
|
+
* Wraps string values with AXP_ROW_EXPR_PREFIX so widget-renderer does not
|
|
2207
|
+
* evaluate them (it only treats {{ ... }} as expressions). Data-list will
|
|
2208
|
+
* unwrap and evaluate per row with row data. Only used for secondary commands.
|
|
2209
|
+
*/
|
|
2210
|
+
private wrapRowExpr;
|
|
2211
|
+
/**
|
|
2212
|
+
* Check if entity has Selected Scope Actions
|
|
2213
|
+
*/
|
|
2214
|
+
private hasSelectedScopeActions;
|
|
2215
|
+
private evaluateExpressions;
|
|
2216
|
+
/**
|
|
2217
|
+
* Handle execution of a row command (shared by double-click and command handlers)
|
|
2218
|
+
*/
|
|
2219
|
+
private handleRowCommand;
|
|
2220
|
+
/**
|
|
2221
|
+
* Create default events
|
|
2222
|
+
*/
|
|
2223
|
+
private createDefaultEvents;
|
|
2224
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListTableService, never>;
|
|
2225
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListTableService>;
|
|
2226
|
+
}
|
|
2227
|
+
|
|
2228
|
+
interface AXPEntityListToolbarConvertOptions {
|
|
2229
|
+
excludeColumns?: string[];
|
|
2230
|
+
includeColumns?: string[];
|
|
2231
|
+
/** Related list: evaluated `AXPEntityTableColumn[]` from `AXPRelatedEntity.columns` */
|
|
2232
|
+
relatedTableColumns?: AXPEntityTableColumn[];
|
|
2233
|
+
customFilterDefinitions?: Partial<AXPFilterDefinition>[];
|
|
2234
|
+
}
|
|
2235
|
+
declare class AXPEntityListToolbarService {
|
|
2236
|
+
private readonly widgetResolver;
|
|
2237
|
+
/**
|
|
2238
|
+
* Convert Entity to Toolbar Options
|
|
2239
|
+
*/
|
|
2240
|
+
convertEntityToolbarOptions(entity: AXPEntity, options: AXPEntityListToolbarConvertOptions | undefined): Promise<{
|
|
2241
|
+
filterDefinitions: AXPFilterDefinition[];
|
|
2242
|
+
columnDefinitions: AXPColumnQuery[];
|
|
2243
|
+
sortDefinitions: AXPSortDefinition[];
|
|
2244
|
+
}>;
|
|
2245
|
+
/**
|
|
2246
|
+
* Merges custom filter definitions into the entity-derived list by `field`.
|
|
2247
|
+
* Matching fields: custom properties are applied on top of the base definition.
|
|
2248
|
+
* Non-matching custom entries are appended.
|
|
2249
|
+
*/
|
|
2250
|
+
private mergeFilterDefinitions;
|
|
2251
|
+
private filterFieldKey;
|
|
2252
|
+
private mergeFilterDefinition;
|
|
2253
|
+
/**
|
|
2254
|
+
* Create Filter Definitions for Toolbar
|
|
2255
|
+
*/
|
|
2256
|
+
private createFilterDefinitions;
|
|
2257
|
+
/**
|
|
2258
|
+
* Create Column Definitions for Toolbar.
|
|
2259
|
+
* Includes both entity.properties and enriched columns (e.g. person.firstName with showAs).
|
|
2260
|
+
*/
|
|
2261
|
+
private createColumnDefinitions;
|
|
2262
|
+
/**
|
|
2263
|
+
* Create Sort Definitions for Toolbar.
|
|
2264
|
+
* Includes entity.properties with sort enabled, plus enriched columns (dotted paths).
|
|
2265
|
+
*/
|
|
2266
|
+
private createSortDefinitions;
|
|
2267
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
|
|
2268
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListToolbarService>;
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
|
|
2272
|
+
#private;
|
|
2273
|
+
protected entityService: AXPEntityDefinitionRegistryService;
|
|
2274
|
+
protected workflow: AXPWorkflowService;
|
|
2275
|
+
protected entityListTableService: AXPEntityListTableService;
|
|
2276
|
+
protected entityListToolbarService: AXPEntityListToolbarService;
|
|
2277
|
+
protected deviceService: AXPDeviceService;
|
|
2278
|
+
protected commandService: AXPCommandService;
|
|
2279
|
+
protected eventService: AXPBroadcastEventService;
|
|
2280
|
+
private readonly expressionEvaluator;
|
|
2281
|
+
protected isMounted: _angular_core.WritableSignal<boolean>;
|
|
2282
|
+
readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
|
|
2283
|
+
protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
2284
|
+
protected list: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
|
|
2285
|
+
protected allWidgets: _angular_core.Signal<readonly AXPWidgetRendererDirective[]>;
|
|
2286
|
+
protected listWidget: _angular_core.WritableSignal<AXPWidgetRendererDirective | undefined>;
|
|
2287
|
+
protected toolbarWidget: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
|
|
2288
|
+
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
2289
|
+
protected toolbarNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
2290
|
+
protected destroyed: Subject<void>;
|
|
2291
|
+
protected entitySource: _angular_core.Signal<any>;
|
|
2292
|
+
protected excludeColumns: _angular_core.Signal<string[]>;
|
|
2293
|
+
protected includeColumns: _angular_core.Signal<string[]>;
|
|
2294
|
+
protected relatedTableColumns: _angular_core.Signal<AXPEntityTableColumn[] | undefined>;
|
|
2295
|
+
protected customFilterDefinitions: _angular_core.Signal<Partial<AXPFilterDefinition>[] | undefined>;
|
|
2296
|
+
protected externalActions: _angular_core.Signal<AXPEntityAction[]>;
|
|
2297
|
+
protected maxHeight: _angular_core.Signal<string>;
|
|
2298
|
+
protected showEntityActions: _angular_core.Signal<any>;
|
|
2299
|
+
protected showToolbar: _angular_core.Signal<any>;
|
|
2300
|
+
protected allActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
2301
|
+
protected primaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
2302
|
+
protected handleUnselectAll(): void;
|
|
2303
|
+
protected secondaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
2304
|
+
protected handleActionClick(item: AXPActionMenuItem): void;
|
|
2305
|
+
protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
|
|
2306
|
+
protected execute(commandName: string, _data: unknown): Promise<void>;
|
|
2307
|
+
private evaluateToolbarExpressions;
|
|
2308
|
+
protected queries: undefined;
|
|
2309
|
+
/**
|
|
2310
|
+
* Validates that all required dependencies are available
|
|
2311
|
+
*/
|
|
2312
|
+
private hasRequiredDependencies;
|
|
2313
|
+
/**
|
|
2314
|
+
* Handles all query-related changes (filters, sorts, columns)
|
|
2315
|
+
*/
|
|
2316
|
+
private handleQueryChanges;
|
|
2317
|
+
/**
|
|
2318
|
+
* Analyzes what has changed between current and previous queries
|
|
2319
|
+
*/
|
|
2320
|
+
private analyzeChanges;
|
|
2321
|
+
/**
|
|
2322
|
+
* Applies filter and sort changes to the data source
|
|
2323
|
+
*/
|
|
2324
|
+
private applyDataSourceChanges;
|
|
2325
|
+
/**
|
|
2326
|
+
* Handles list refresh logic based on changes and mount status
|
|
2327
|
+
*/
|
|
2328
|
+
private handleListRefresh;
|
|
2329
|
+
/**
|
|
2330
|
+
* Handles column-related changes
|
|
2331
|
+
* TODO: Implement column change logic
|
|
2332
|
+
*/
|
|
2333
|
+
private handleColumnChanges;
|
|
2334
|
+
protected context: {};
|
|
2335
|
+
protected previousQueries: any;
|
|
2336
|
+
ngOnInit(): Promise<void>;
|
|
2337
|
+
ngAfterViewInit(): Promise<void>;
|
|
2338
|
+
ngOnDestroy(): void;
|
|
2339
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListWidgetViewComponent, never>;
|
|
2340
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityListWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
|
2341
|
+
}
|
|
2342
|
+
|
|
2343
|
+
declare const AXPEntityListWidget: AXPWidgetConfig;
|
|
2344
|
+
|
|
2345
|
+
declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any> {
|
|
2346
|
+
protected readonly formatService: AXFormatService;
|
|
2347
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
2348
|
+
protected entity: _angular_core.Signal<string>;
|
|
2349
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
2350
|
+
protected valueField: _angular_core.Signal<string>;
|
|
2351
|
+
protected textField: _angular_core.Signal<string>;
|
|
2352
|
+
protected badgeClass: _angular_core.Signal<string>;
|
|
2353
|
+
protected displayFormat: _angular_core.Signal<string | undefined>;
|
|
2354
|
+
protected displayField: _angular_core.Signal<string>;
|
|
2355
|
+
protected loading: _angular_core.WritableSignal<boolean>;
|
|
2356
|
+
private entityDef;
|
|
2357
|
+
protected displayItems: _angular_core.WritableSignal<any[]>;
|
|
2358
|
+
private efEntity;
|
|
2359
|
+
private efDisplay;
|
|
2360
|
+
private extractItem;
|
|
2361
|
+
/**
|
|
2362
|
+
* Raw label for {@link AXPResolveMultiLanguageStringPipe} (handles {@link AXPMultiLanguageString} and plain strings).
|
|
2363
|
+
*/
|
|
2364
|
+
private getDisplayRaw;
|
|
2365
|
+
private get __class();
|
|
2366
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetViewComponent, never>;
|
|
2367
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetViewComponent, "axp-lookup-widget-view", never, {}, {}, never, never, true, never>;
|
|
2368
|
+
}
|
|
2369
|
+
|
|
2370
|
+
interface AXPEntityDataSelectorOptions {
|
|
2371
|
+
entity: AXPEntity;
|
|
2372
|
+
title: string;
|
|
2373
|
+
allowMultiple?: boolean;
|
|
2374
|
+
filters?: AXDataSourceFilterOption | null;
|
|
2375
|
+
parentFilters?: AXDataSourceFilterOption | null;
|
|
2376
|
+
columns?: string[];
|
|
2377
|
+
sortedFields?: {
|
|
2378
|
+
name: string;
|
|
2379
|
+
dir: 'asc' | 'desc';
|
|
2380
|
+
}[];
|
|
2381
|
+
allowCreate?: AXPDataSelectorAllowCreate;
|
|
2382
|
+
searchFields?: string[];
|
|
2383
|
+
initialSearchTerm?: string;
|
|
2384
|
+
selectedItemIds?: string[] | number[];
|
|
2385
|
+
categoryFilter?: {
|
|
2386
|
+
title: string;
|
|
2387
|
+
dataSource: AXPCategoryTreeDataSource;
|
|
2388
|
+
filterField: string;
|
|
2389
|
+
filterOperator?: 'equal' | 'contains' | 'in';
|
|
2390
|
+
width?: string;
|
|
2391
|
+
};
|
|
2392
|
+
showCategoryFilter?: boolean;
|
|
2393
|
+
}
|
|
2394
|
+
interface AXPEntityDataSelectorResult {
|
|
2395
|
+
items: any[];
|
|
2396
|
+
}
|
|
2397
|
+
declare class AXPEntityDataSelectorService {
|
|
2398
|
+
private readonly dataSelectorService;
|
|
2399
|
+
private readonly filterOperatorMiddleware;
|
|
2400
|
+
private readonly widgetResolver;
|
|
2401
|
+
private readonly entityResolver;
|
|
2402
|
+
private readonly commandService;
|
|
2403
|
+
/**
|
|
2404
|
+
* Open entity data selector popup
|
|
2405
|
+
*/
|
|
2406
|
+
open(options: AXPEntityDataSelectorOptions): Promise<AXPEntityDataSelectorResult | null>;
|
|
2407
|
+
/**
|
|
2408
|
+
* Execute Entity:Create and return created item.
|
|
2409
|
+
* Used by lookup widget and data selector for inline create.
|
|
2410
|
+
*/
|
|
2411
|
+
executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick'): Promise<any | null>;
|
|
2412
|
+
/**
|
|
2413
|
+
* Normalize item's phones/emails for expose/display.
|
|
2414
|
+
* Call this when receiving items from any source (create, API, selector).
|
|
2415
|
+
*/
|
|
2416
|
+
normalizeItemContactArrays(item: any): any;
|
|
2417
|
+
/**
|
|
2418
|
+
* Create data selector configuration from entity options
|
|
2419
|
+
*/
|
|
2420
|
+
private createDataSelectorConfig;
|
|
2421
|
+
/**
|
|
2422
|
+
* Create data source from entity definition
|
|
2423
|
+
*/
|
|
2424
|
+
private createDataSource;
|
|
2425
|
+
/**
|
|
2426
|
+
* Create columns configuration from entity definition
|
|
2427
|
+
*/
|
|
2428
|
+
private createColumns;
|
|
2429
|
+
/**
|
|
2430
|
+
* Get searchable fields from entity properties
|
|
2431
|
+
*/
|
|
2432
|
+
private getSearchFields;
|
|
2433
|
+
/**
|
|
2434
|
+
* Get allowCreate mode from entity
|
|
2435
|
+
*/
|
|
2436
|
+
private getAllowCreate;
|
|
2437
|
+
/**
|
|
2438
|
+
* Execute Entity:Create and return created item
|
|
2439
|
+
*/
|
|
2440
|
+
private executeCreate;
|
|
2441
|
+
/**
|
|
2442
|
+
* Normalize phones/emails from repeater form to plain arrays of { value: string }.
|
|
2443
|
+
* Repeater/ContactBox can return nested structure: { value: { label: "", value: "101010" } }
|
|
2444
|
+
* Contact widget expects: { value: "101010", label?: string }
|
|
2445
|
+
*/
|
|
2446
|
+
private normalizeContactArrays;
|
|
2447
|
+
/**
|
|
2448
|
+
* Create category tree data source from category entity key
|
|
2449
|
+
*/
|
|
2450
|
+
private createCategoryTreeDataSource;
|
|
2451
|
+
/**
|
|
2452
|
+
* Merge custom and parent filters into data source query
|
|
2453
|
+
*/
|
|
2454
|
+
private mergeFilters;
|
|
2455
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDataSelectorService, never>;
|
|
2456
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDataSelectorService>;
|
|
2457
|
+
}
|
|
2458
|
+
|
|
2459
|
+
/**
|
|
2460
|
+
* Base interface for lookup widget look components
|
|
2461
|
+
* All look components should implement this interface to ensure consistency
|
|
2462
|
+
*/
|
|
2463
|
+
declare abstract class LookupWidgetLookBase {
|
|
2464
|
+
abstract refresh(): void;
|
|
2465
|
+
abstract focus(): void;
|
|
2466
|
+
abstract clear(): void;
|
|
2467
|
+
}
|
|
2468
|
+
|
|
2469
|
+
type AXPLookupWidgetLookType = 'select' | 'lookup';
|
|
2470
|
+
interface AXPLookupWidgetOptions {
|
|
2471
|
+
disabled?: boolean | AXPExpression;
|
|
2472
|
+
readonly?: boolean | AXPExpression;
|
|
2473
|
+
placeholder?: string;
|
|
2474
|
+
expose?: string | string[];
|
|
2475
|
+
look?: AXPLookupWidgetLookType;
|
|
2476
|
+
allowClear?: boolean;
|
|
2477
|
+
displayFormat?: string;
|
|
2478
|
+
}
|
|
2479
|
+
|
|
2480
|
+
declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any> {
|
|
2481
|
+
#private;
|
|
2482
|
+
protected readonly injector: Injector;
|
|
2483
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
2484
|
+
protected readonly entityService: AXPEntityService;
|
|
2485
|
+
protected readonly entityDataSelectorService: AXPEntityDataSelectorService;
|
|
2486
|
+
private readonly mlsResolver;
|
|
2487
|
+
protected componentLook: _angular_core.Signal<LookupWidgetLookBase | undefined>;
|
|
2488
|
+
protected expose: _angular_core.Signal<string | any[] | undefined>;
|
|
2489
|
+
protected entity: _angular_core.Signal<string>;
|
|
2490
|
+
protected disabled: _angular_core.Signal<string | boolean>;
|
|
2491
|
+
protected columns: _angular_core.Signal<string[]>;
|
|
2492
|
+
protected textField: _angular_core.Signal<string>;
|
|
2493
|
+
protected hasClearButton: _angular_core.Signal<boolean>;
|
|
2494
|
+
protected customFilter: _angular_core.Signal<AXDataSourceFilterOption>;
|
|
2495
|
+
protected filterMode: _angular_core.Signal<boolean>;
|
|
2496
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
2497
|
+
protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
|
|
2498
|
+
protected defaultTextField: _angular_core.Signal<string>;
|
|
2499
|
+
protected displayField: _angular_core.Signal<string>;
|
|
2500
|
+
protected allowCreate: _angular_core.Signal<"full" | "none" | "quick">;
|
|
2501
|
+
protected valueField: _angular_core.Signal<string>;
|
|
2502
|
+
protected displayFormat: _angular_core.Signal<string | undefined>;
|
|
2503
|
+
protected conditions?: AXPQueryFilter[];
|
|
2504
|
+
protected filter: AXDataSourceFilterOption | null;
|
|
2505
|
+
protected entityDef: _angular_core.WritableSignal<AXPEntity | null>;
|
|
2506
|
+
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
2507
|
+
protected initialItems: _angular_core.WritableSignal<boolean>;
|
|
2508
|
+
protected initialized: _angular_core.WritableSignal<boolean>;
|
|
2509
|
+
protected previousValue: _angular_core.WritableSignal<any>;
|
|
2510
|
+
protected isLoading: _angular_core.WritableSignal<boolean>;
|
|
2511
|
+
private hasValue;
|
|
2512
|
+
private findByValue;
|
|
2513
|
+
protected handleComponentValueChanged(items: any[] | null): void;
|
|
2514
|
+
protected handleCreateClick(_e: AXClickEvent): Promise<void>;
|
|
2515
|
+
private executeCreate;
|
|
2516
|
+
protected setLoading: (loading: boolean) => void;
|
|
2517
|
+
protected setItems: (items: any[]) => void;
|
|
2518
|
+
/**
|
|
2519
|
+
* Update expose data for empty state
|
|
2520
|
+
*/
|
|
2521
|
+
private expoesItems;
|
|
2522
|
+
private singleOrMultiple;
|
|
2523
|
+
refresh(): void;
|
|
2524
|
+
clear(): void;
|
|
2525
|
+
focus(): void;
|
|
2526
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetEditComponent, never>;
|
|
2527
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetEditComponent, "axp-lookup-widget-edit", never, {}, {}, never, never, true, never>;
|
|
2528
|
+
}
|
|
2529
|
+
|
|
2530
|
+
declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
|
|
2531
|
+
private readonly entityDetailPopoverService;
|
|
2532
|
+
private readonly mlResolver;
|
|
2533
|
+
private readonly formatService;
|
|
2534
|
+
protected moreButton: _angular_core.Signal<ElementRef<any> | undefined>;
|
|
2535
|
+
protected morePopover: _angular_core.Signal<AXPopoverComponent | undefined>;
|
|
2536
|
+
protected host: ElementRef<any>;
|
|
2537
|
+
protected valueField: string;
|
|
2538
|
+
protected textField: string;
|
|
2539
|
+
protected entity: string;
|
|
2540
|
+
protected columnName: string;
|
|
2541
|
+
protected maxVisible: number;
|
|
2542
|
+
protected displayFormat: _angular_core.Signal<string | undefined>;
|
|
2543
|
+
protected displayField: _angular_core.Signal<string>;
|
|
2544
|
+
protected isMorePopoverOpen: _angular_core.WritableSignal<boolean>;
|
|
2545
|
+
protected selectedItemIndex: _angular_core.WritableSignal<number>;
|
|
2546
|
+
protected displayItems: _angular_core.Signal<any[]>;
|
|
2547
|
+
protected allItems: _angular_core.Signal<any[]>;
|
|
2548
|
+
protected visibleItems: _angular_core.Signal<any[]>;
|
|
2549
|
+
protected hasMoreItems: _angular_core.Signal<boolean>;
|
|
2550
|
+
protected remainingItemsCount: _angular_core.Signal<number>;
|
|
2551
|
+
protected showMoreItems(): void;
|
|
2552
|
+
protected onMorePopoverOpenChange(event: any): void;
|
|
2553
|
+
protected showItemDetail(item: any, index: number): Promise<void>;
|
|
2554
|
+
protected handleItemClick(index: number): void;
|
|
2555
|
+
private openMorePopover;
|
|
2556
|
+
private closeMorePopover;
|
|
2557
|
+
private extractItem;
|
|
2558
|
+
protected getDisplayRaw(item: any): string;
|
|
2559
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetColumnComponent, never>;
|
|
2560
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetColumnComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
declare const AXPLookupWidget: AXPWidgetConfig;
|
|
2564
|
+
|
|
2565
|
+
/**
|
|
2566
|
+
* Unified reference format for all sources
|
|
2567
|
+
*/
|
|
2568
|
+
interface AXPMultiSourceRef {
|
|
2569
|
+
/** Source identifier (e.g., 'site-location', 'inline-address', 'employee-user') */
|
|
2570
|
+
sourceKey: string;
|
|
2571
|
+
/** Entity ID if entity source (optional for inline sources) */
|
|
2572
|
+
refId?: string;
|
|
2573
|
+
/** Always present - used for display */
|
|
2574
|
+
displayName: string;
|
|
2575
|
+
/** Full data (for inline sources or denormalized entity data) */
|
|
2576
|
+
data?: any;
|
|
2577
|
+
/** Additional metadata */
|
|
2578
|
+
meta?: Record<string, unknown>;
|
|
2579
|
+
}
|
|
2580
|
+
/**
|
|
2581
|
+
* Stored value type
|
|
2582
|
+
* - Single: AXPMultiSourceRef
|
|
2583
|
+
* - Multiple: AXPMultiSourceRef[]
|
|
2584
|
+
*/
|
|
2585
|
+
type AXPMultiSourceValue = AXPMultiSourceRef | AXPMultiSourceRef[];
|
|
2586
|
+
/**
|
|
2587
|
+
* Source type
|
|
2588
|
+
*/
|
|
2589
|
+
declare enum AXPMultiSourceType {
|
|
2590
|
+
Entity = "entity",
|
|
2591
|
+
Inline = "inline"
|
|
2592
|
+
}
|
|
2593
|
+
/**
|
|
2594
|
+
* Single source item definition
|
|
2595
|
+
*/
|
|
2596
|
+
interface AXPMultiSourceItem {
|
|
2597
|
+
/** Unique identifier for this source */
|
|
2598
|
+
key: string;
|
|
2599
|
+
/** Display information */
|
|
2600
|
+
title: string;
|
|
2601
|
+
icon?: string;
|
|
2602
|
+
badge?: string;
|
|
2603
|
+
description?: string;
|
|
2604
|
+
/** Source type */
|
|
2605
|
+
type: AXPMultiSourceType;
|
|
2606
|
+
/** For entity sources: entity name (e.g., 'LocationManagement.Location') */
|
|
2607
|
+
entity?: string;
|
|
2608
|
+
/** For inline sources: command key to execute for inline creation (e.g., 'Module.Entity:CreateInline') */
|
|
2609
|
+
inlineCreateCommand?: string;
|
|
2610
|
+
/** Optional: Filter/constraints for this source */
|
|
2611
|
+
filters?: AXDataSourceFilterOption;
|
|
2612
|
+
/** Optional: Custom search fields */
|
|
2613
|
+
searchFields?: string[];
|
|
2614
|
+
/** Display format template for results */
|
|
2615
|
+
displayFormat?: string;
|
|
2616
|
+
/** Value transformation (how to store this source) */
|
|
2617
|
+
valueTransform?: (item: any) => AXPMultiSourceRef;
|
|
2618
|
+
}
|
|
2619
|
+
/**
|
|
2620
|
+
* Complete source configuration (from provider)
|
|
2621
|
+
*/
|
|
2622
|
+
interface AXPMultiSourceDefinition {
|
|
2623
|
+
/** Provider name */
|
|
2624
|
+
name: string;
|
|
2625
|
+
/** Display title */
|
|
2626
|
+
title: string;
|
|
2627
|
+
/** Sources array */
|
|
2628
|
+
sources: AXPMultiSourceItem[];
|
|
2629
|
+
/** Default search strategy */
|
|
2630
|
+
searchStrategy: 'unified' | 'tabs' | 'grouped';
|
|
2631
|
+
/** Default display format */
|
|
2632
|
+
defaultDisplayFormat?: string;
|
|
2633
|
+
/** Default multiple selection */
|
|
2634
|
+
defaultMultiple?: boolean;
|
|
2635
|
+
}
|
|
2636
|
+
/**
|
|
2637
|
+
* Widget options
|
|
2638
|
+
*/
|
|
2639
|
+
interface AXPMultiSourceSelectorWidgetOptions {
|
|
2640
|
+
/** Provider name (required) */
|
|
2641
|
+
providerName: string;
|
|
2642
|
+
/** Override multiple selection (optional, uses provider default if not specified) */
|
|
2643
|
+
multiple?: boolean;
|
|
2644
|
+
/** Override display format (optional, uses provider default if not specified) */
|
|
2645
|
+
displayFormat?: string;
|
|
2646
|
+
/** Additional filters to apply to all sources */
|
|
2647
|
+
filters?: AXDataSourceFilterOption;
|
|
2648
|
+
/** Custom placeholder */
|
|
2649
|
+
placeholder?: string;
|
|
2650
|
+
/** Allow clear */
|
|
2651
|
+
allowClear?: boolean;
|
|
2652
|
+
}
|
|
2653
|
+
|
|
2654
|
+
/**
|
|
2655
|
+
* Injection token for multi-source definition providers
|
|
2656
|
+
*/
|
|
2657
|
+
declare const AXP_MULTI_SOURCE_DEFINITION_PROVIDER: InjectionToken<AXPMultiSourceDefinitionProvider[]>;
|
|
2658
|
+
/**
|
|
2659
|
+
* Provider context for building definitions
|
|
2660
|
+
*/
|
|
2661
|
+
declare class AXPMultiSourceDefinitionProviderContext {
|
|
2662
|
+
private definitions;
|
|
2663
|
+
addDefinition(definition: AXPMultiSourceDefinition): void;
|
|
2664
|
+
getDefinitions(): AXPMultiSourceDefinition[];
|
|
2665
|
+
findDefinition(name: string): AXPMultiSourceDefinition | undefined;
|
|
2666
|
+
}
|
|
2667
|
+
/**
|
|
2668
|
+
* Provider interface
|
|
2669
|
+
*/
|
|
2670
|
+
interface AXPMultiSourceDefinitionProvider {
|
|
2671
|
+
provide(context: AXPMultiSourceDefinitionProviderContext): Promise<void> | void;
|
|
2672
|
+
}
|
|
2673
|
+
/**
|
|
2674
|
+
* Service for managing multi-source definitions
|
|
2675
|
+
*/
|
|
2676
|
+
declare class AXPMultiSourceDefinitionProviderService {
|
|
2677
|
+
private readonly providers;
|
|
2678
|
+
private cache;
|
|
2679
|
+
private load;
|
|
2680
|
+
/**
|
|
2681
|
+
* Get definition by name
|
|
2682
|
+
*/
|
|
2683
|
+
getDefinition(name: string): Promise<AXPMultiSourceDefinition>;
|
|
2684
|
+
/**
|
|
2685
|
+
* Reload definitions (clear cache)
|
|
2686
|
+
*/
|
|
2687
|
+
reload(): Promise<void>;
|
|
2688
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceDefinitionProviderService, never>;
|
|
2689
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMultiSourceDefinitionProviderService>;
|
|
2690
|
+
}
|
|
2691
|
+
|
|
2692
|
+
declare const AXPMultiSourceSelectorWidget: AXPWidgetConfig;
|
|
2693
|
+
|
|
2694
|
+
/**
|
|
2695
|
+
* Search result item with source information
|
|
2696
|
+
*/
|
|
2697
|
+
interface AXPMultiSourceSearchResultItem {
|
|
2698
|
+
source: AXPMultiSourceItem;
|
|
2699
|
+
item: any;
|
|
2700
|
+
}
|
|
2701
|
+
/**
|
|
2702
|
+
* Search result
|
|
2703
|
+
*/
|
|
2704
|
+
interface AXPMultiSourceSearchResult {
|
|
2705
|
+
items: AXPMultiSourceSearchResultItem[];
|
|
2706
|
+
total: number;
|
|
2707
|
+
}
|
|
2708
|
+
declare class AXPMultiSourceFederatedSearchService {
|
|
2709
|
+
private readonly entityResolver;
|
|
2710
|
+
/**
|
|
2711
|
+
* Search across all enabled sources
|
|
2712
|
+
*/
|
|
2713
|
+
search(definition: AXPMultiSourceDefinition, searchTerm: string, filters?: AXDataSourceFilterOption): Promise<AXPMultiSourceSearchResult>;
|
|
2714
|
+
/**
|
|
2715
|
+
* Search single source
|
|
2716
|
+
*/
|
|
2717
|
+
searchSource(source: AXPMultiSourceItem, searchTerm: string, filters?: AXDataSourceFilterOption): Promise<{
|
|
2718
|
+
items: any[];
|
|
2719
|
+
total: number;
|
|
2720
|
+
}>;
|
|
2721
|
+
/**
|
|
2722
|
+
* Resolve entity from entity name string (e.g., 'LocationManagement.Location')
|
|
2723
|
+
*/
|
|
2724
|
+
private resolveEntity;
|
|
2725
|
+
/**
|
|
2726
|
+
* Search entity using entity queries
|
|
2727
|
+
*/
|
|
2728
|
+
private searchEntity;
|
|
2729
|
+
/**
|
|
2730
|
+
* Build search filters from search term
|
|
2731
|
+
*/
|
|
2732
|
+
private buildSearchFilters;
|
|
2733
|
+
/**
|
|
2734
|
+
* Get default searchable fields from entity
|
|
2735
|
+
*/
|
|
2736
|
+
private getDefaultSearchFields;
|
|
2737
|
+
/**
|
|
2738
|
+
* Merge multiple filters
|
|
2739
|
+
*/
|
|
2740
|
+
private mergeFilters;
|
|
2741
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceFederatedSearchService, never>;
|
|
2742
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMultiSourceFederatedSearchService>;
|
|
2743
|
+
}
|
|
2744
|
+
|
|
2745
|
+
/**
|
|
2746
|
+
* Selector open configuration
|
|
2747
|
+
*/
|
|
2748
|
+
interface AXPMultiSourceSelectorOpenConfig {
|
|
2749
|
+
definition: AXPMultiSourceDefinition;
|
|
2750
|
+
multiple: boolean;
|
|
2751
|
+
selectedValues?: AXPMultiSourceValue;
|
|
2752
|
+
filters?: AXDataSourceFilterOption;
|
|
2753
|
+
title?: string;
|
|
2754
|
+
}
|
|
2755
|
+
/**
|
|
2756
|
+
* Selector result
|
|
2757
|
+
*/
|
|
2758
|
+
interface AXPMultiSourceSelectorResult {
|
|
2759
|
+
items: AXPMultiSourceRef[];
|
|
2760
|
+
}
|
|
2761
|
+
declare class AXPMultiSourceSelectorService {
|
|
2762
|
+
private readonly popupService;
|
|
2763
|
+
private readonly definitionService;
|
|
2764
|
+
/**
|
|
2765
|
+
* Open selector popup by provider name
|
|
2766
|
+
*/
|
|
2767
|
+
openByProviderName(providerName: string, config: {
|
|
2768
|
+
multiple: boolean;
|
|
2769
|
+
selectedValues?: AXPMultiSourceValue;
|
|
2770
|
+
filters?: AXDataSourceFilterOption;
|
|
2771
|
+
title?: string;
|
|
2772
|
+
}): Promise<AXPMultiSourceSelectorResult | null>;
|
|
2773
|
+
/**
|
|
2774
|
+
* Open selector popup
|
|
2775
|
+
*/
|
|
2776
|
+
open(config: AXPMultiSourceSelectorOpenConfig): Promise<AXPMultiSourceSelectorResult | null>;
|
|
2777
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorService, never>;
|
|
2778
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMultiSourceSelectorService>;
|
|
2779
|
+
}
|
|
2780
|
+
|
|
2781
|
+
/**
|
|
2782
|
+
* Multi-source selector popup component
|
|
2783
|
+
*/
|
|
2784
|
+
declare class AXPMultiSourceSelectorComponent extends AXBasePageComponent {
|
|
2785
|
+
private readonly entityDataSelectorService;
|
|
2786
|
+
private readonly entityResolver;
|
|
2787
|
+
private readonly translationService;
|
|
2788
|
+
protected config: _angular_core.WritableSignal<AXPMultiSourceSelectorOpenConfig>;
|
|
2789
|
+
protected definition: _angular_core.Signal<AXPMultiSourceDefinition>;
|
|
2790
|
+
protected activeTabKey: _angular_core.WritableSignal<string | null>;
|
|
2791
|
+
protected activeSource: _angular_core.Signal<AXPMultiSourceItem | null>;
|
|
2792
|
+
protected selectedItems: _angular_core.WritableSignal<AXPMultiSourceRef[]>;
|
|
2793
|
+
protected readonly AXPMultiSourceType: typeof AXPMultiSourceType;
|
|
2794
|
+
protected ngOnInit(): void;
|
|
2795
|
+
protected handleTabClick(source: AXPMultiSourceItem): void;
|
|
2796
|
+
protected handleSelectFromSource(source: AXPMultiSourceItem): Promise<void>;
|
|
2797
|
+
protected handleCancel(): void;
|
|
2798
|
+
protected handleConfirm(): void;
|
|
2799
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorComponent, never>;
|
|
2800
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMultiSourceSelectorComponent, "axp-multi-source-selector", never, {}, {}, never, never, true, never>;
|
|
2801
|
+
}
|
|
2802
|
+
|
|
2803
|
+
declare class AXPMultiSourceSelectorWidgetEditComponent extends AXPValueWidgetComponent<any> {
|
|
2804
|
+
protected readonly popupService: AXPopupService;
|
|
2805
|
+
protected readonly definitionService: AXPMultiSourceDefinitionProviderService;
|
|
2806
|
+
protected readonly selectorService: AXPMultiSourceSelectorService;
|
|
2807
|
+
protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
|
|
2808
|
+
protected providerName: _angular_core.Signal<string>;
|
|
2809
|
+
protected disabled: _angular_core.Signal<boolean>;
|
|
2810
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
2811
|
+
protected allowClear: _angular_core.Signal<boolean>;
|
|
2812
|
+
protected placeholderText: _angular_core.Signal<string>;
|
|
2813
|
+
protected searchTerm: _angular_core.WritableSignal<string | null>;
|
|
2814
|
+
protected selectedItems: _angular_core.WritableSignal<AXPMultiSourceRef[]>;
|
|
2815
|
+
protected isLoading: _angular_core.WritableSignal<boolean>;
|
|
2816
|
+
protected isOpen: _angular_core.WritableSignal<boolean>;
|
|
2817
|
+
protected definition: _angular_core.WritableSignal<AXPMultiSourceDefinition | null>;
|
|
2818
|
+
private efProvider;
|
|
2819
|
+
private efValue;
|
|
2820
|
+
protected handleOnClick(e: AXClickEvent): void;
|
|
2821
|
+
protected handleValueChange(e: AXValueChangedEvent): void;
|
|
2822
|
+
protected handleSearchInputChange(e: AXValueChangedEvent): void;
|
|
2823
|
+
protected handleOnBlur(e: AXFocusEvent): void;
|
|
2824
|
+
protected handleKeyUp(e: AXHtmlEvent): Promise<void>;
|
|
2825
|
+
protected handleClearClick(): void;
|
|
2826
|
+
private findByValue;
|
|
2827
|
+
private normalizeToRef;
|
|
2828
|
+
private showSelector;
|
|
2829
|
+
private setItems;
|
|
2830
|
+
refresh(): void;
|
|
2831
|
+
clear(): void;
|
|
2832
|
+
private clearInput;
|
|
2833
|
+
protected getTagLabel(item: AXPMultiSourceRef): string;
|
|
2834
|
+
private singleOrMultiple;
|
|
2835
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorWidgetEditComponent, never>;
|
|
2836
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMultiSourceSelectorWidgetEditComponent, "axp-multi-source-selector-widget-edit", never, {}, {}, never, never, true, never>;
|
|
2837
|
+
}
|
|
2838
|
+
|
|
2839
|
+
declare class AXPMultiSourceSelectorWidgetViewComponent extends AXPValueWidgetComponent<any> {
|
|
2840
|
+
protected readonly formatService: AXFormatService;
|
|
2841
|
+
protected readonly definitionService: AXPMultiSourceDefinitionProviderService;
|
|
2842
|
+
protected providerName: _angular_core.Signal<string>;
|
|
2843
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
2844
|
+
protected badgeClass: _angular_core.Signal<string>;
|
|
2845
|
+
protected displayFormat: _angular_core.Signal<string | undefined>;
|
|
2846
|
+
protected loading: _angular_core.WritableSignal<boolean>;
|
|
2847
|
+
private definition;
|
|
2848
|
+
protected displayItems: _angular_core.WritableSignal<{
|
|
2849
|
+
id: string;
|
|
2850
|
+
text: string;
|
|
2851
|
+
}[]>;
|
|
2852
|
+
private efProvider;
|
|
2853
|
+
private efDisplay;
|
|
2854
|
+
private extractDisplayItem;
|
|
2855
|
+
private getDisplayText;
|
|
2856
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorWidgetViewComponent, never>;
|
|
2857
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMultiSourceSelectorWidgetViewComponent, "axp-multi-source-selector-widget-view", never, {}, {}, never, never, true, never>;
|
|
2858
|
+
}
|
|
2859
|
+
|
|
2860
|
+
declare class AXPMultiSourceSelectorWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
|
|
2861
|
+
private readonly formatService;
|
|
2862
|
+
private readonly definitionService;
|
|
2863
|
+
protected providerName: string;
|
|
2864
|
+
protected columnName: string;
|
|
2865
|
+
protected maxVisible: number;
|
|
2866
|
+
protected displayFormat: _angular_core.Signal<string | undefined>;
|
|
2867
|
+
private definition;
|
|
2868
|
+
constructor();
|
|
2869
|
+
protected displayItems: _angular_core.Signal<{
|
|
2870
|
+
id: string;
|
|
2871
|
+
text: string;
|
|
2872
|
+
}[]>;
|
|
2873
|
+
protected allItems: _angular_core.Signal<{
|
|
2874
|
+
id: string;
|
|
2875
|
+
text: string;
|
|
2876
|
+
}[]>;
|
|
2877
|
+
protected visibleItems: _angular_core.Signal<{
|
|
2878
|
+
id: string;
|
|
2879
|
+
text: string;
|
|
2880
|
+
}[]>;
|
|
2881
|
+
protected hasMoreItems: _angular_core.Signal<boolean>;
|
|
2882
|
+
protected remainingItemsCount: _angular_core.Signal<number>;
|
|
2883
|
+
private loadDefinition;
|
|
2884
|
+
private extractDisplayItem;
|
|
2885
|
+
private getDisplayText;
|
|
2886
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMultiSourceSelectorWidgetColumnComponent, never>;
|
|
2887
|
+
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>;
|
|
2888
|
+
}
|
|
2889
|
+
|
|
2890
|
+
declare class AXPSelectorStructureWidgetColumnComponent extends AXPValueWidgetComponent {
|
|
2891
|
+
protected identityField: _angular_core.Signal<string>;
|
|
2892
|
+
protected textField: _angular_core.Signal<string>;
|
|
2893
|
+
protected valueField: _angular_core.Signal<string>;
|
|
2894
|
+
protected previewIcon: _angular_core.Signal<string>;
|
|
2895
|
+
protected cellText: _angular_core.Signal<string>;
|
|
2896
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetColumnComponent, never>;
|
|
2897
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetColumnComponent, "axp-selector-structure-widget-column", never, {}, {}, never, never, true, never>;
|
|
2898
|
+
}
|
|
2899
|
+
|
|
2900
|
+
type AXPSelectorStructureSelectorMode = 'select' | 'lookup';
|
|
2901
|
+
type AXPSelectorStructureStructureMode = 'schema' | 'freeform';
|
|
2902
|
+
type AXPSelectorStructureIdentityDisplay = 'readonly' | 'hidden';
|
|
2903
|
+
/** UI layout: standard = global multi-select + collapse rows; compactPanel = per-row select (address-style). */
|
|
2904
|
+
type AXPSelectorStructurePresentationMode = 'standard' | 'compactPanel';
|
|
2905
|
+
interface AXPSelectorStructureFieldDef {
|
|
2906
|
+
name: string;
|
|
2907
|
+
title: string;
|
|
2908
|
+
widgetType: string;
|
|
2909
|
+
options?: Record<string, unknown>;
|
|
2910
|
+
}
|
|
2911
|
+
declare const AXPSelectorStructureWidget: AXPWidgetConfig;
|
|
2912
|
+
interface AXPSelectorStructureWidgetDesignerOptions {
|
|
2913
|
+
selectorMode?: AXPSelectorStructureSelectorMode;
|
|
2914
|
+
structureMode?: AXPSelectorStructureStructureMode;
|
|
2915
|
+
presentation?: AXPSelectorStructurePresentationMode;
|
|
2916
|
+
previewIcon?: string;
|
|
2917
|
+
placeholder?: string;
|
|
2918
|
+
contextSiblingPath?: string;
|
|
2919
|
+
identityField?: string;
|
|
2920
|
+
identityDisplay?: AXPSelectorStructureIdentityDisplay;
|
|
2921
|
+
valueField?: string;
|
|
2922
|
+
textField?: string;
|
|
2923
|
+
dataSource?: unknown;
|
|
2924
|
+
multiple?: boolean;
|
|
2925
|
+
lookup?: {
|
|
2926
|
+
entity?: string;
|
|
2927
|
+
look?: 'select' | 'lookup';
|
|
2928
|
+
filter?: unknown;
|
|
2929
|
+
hasClearButton?: boolean;
|
|
2930
|
+
};
|
|
2931
|
+
structureFields?: AXPSelectorStructureFieldDef[];
|
|
2932
|
+
freeformPath?: string;
|
|
2933
|
+
}
|
|
2934
|
+
interface AXPSelectorStructureWidgetViewOptions extends AXPSelectorStructureWidgetDesignerOptions {
|
|
2935
|
+
}
|
|
2936
|
+
interface AXPSelectorStructureWidgetEditOptions extends AXPSelectorStructureWidgetDesignerOptions {
|
|
2937
|
+
}
|
|
2938
|
+
interface AXPSelectorStructureWidgetColumnOptions {
|
|
2939
|
+
identityField?: string;
|
|
2940
|
+
textField?: string;
|
|
2941
|
+
previewIcon?: string;
|
|
2942
|
+
}
|
|
2943
|
+
interface AXPSelectorStructureWidgetPrintOptions {
|
|
2944
|
+
}
|
|
2945
|
+
interface AXPSelectorStructureWidgetOptions {
|
|
2946
|
+
designer: AXPSelectorStructureWidgetDesignerOptions;
|
|
2947
|
+
view: AXPSelectorStructureWidgetViewOptions;
|
|
2948
|
+
edit: AXPSelectorStructureWidgetEditOptions;
|
|
2949
|
+
print: AXPSelectorStructureWidgetPrintOptions;
|
|
2950
|
+
column: AXPSelectorStructureWidgetColumnOptions;
|
|
2951
|
+
}
|
|
2952
|
+
|
|
2953
|
+
declare class AXPSelectorStructureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
2954
|
+
#private;
|
|
2955
|
+
private readonly entityRegistry;
|
|
2956
|
+
protected selectorMode: _angular_core.Signal<"select" | "lookup">;
|
|
2957
|
+
protected structureMode: _angular_core.Signal<"schema" | "freeform">;
|
|
2958
|
+
protected contextSiblingPath: _angular_core.Signal<string>;
|
|
2959
|
+
protected identityField: _angular_core.Signal<string>;
|
|
2960
|
+
protected identityDisplay: _angular_core.Signal<"readonly" | "hidden">;
|
|
2961
|
+
protected valueField: _angular_core.Signal<string>;
|
|
2962
|
+
protected textField: _angular_core.Signal<string>;
|
|
2963
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
2964
|
+
protected freeformPath: _angular_core.Signal<string>;
|
|
2965
|
+
protected lookupEntityKey: _angular_core.Signal<string | undefined>;
|
|
2966
|
+
protected lookupHasClearButton: _angular_core.Signal<boolean>;
|
|
2967
|
+
protected lookupCustomFilter: _angular_core.Signal<AXDataSourceFilterOption | undefined>;
|
|
2968
|
+
protected disabled: _angular_core.Signal<boolean>;
|
|
2969
|
+
protected presentationMode: _angular_core.Signal<"standard" | "compactPanel">;
|
|
2970
|
+
/** Compact panel (address-style) applies only to sibling select mode; lookup falls back to standard layout. */
|
|
2971
|
+
protected useCompactLayout: _angular_core.Signal<boolean>;
|
|
2972
|
+
protected previewIcon: _angular_core.Signal<string>;
|
|
2973
|
+
protected placeholder: _angular_core.Signal<string>;
|
|
2974
|
+
protected compactSelectPlaceholder: _angular_core.Signal<string>;
|
|
2975
|
+
protected addCompactItemLabel: _angular_core.Signal<string>;
|
|
2976
|
+
protected clearRowTitle: _angular_core.Signal<string>;
|
|
2977
|
+
protected removeRowTitle: _angular_core.Signal<string>;
|
|
2978
|
+
protected resolvedSiblingPath(): string;
|
|
2979
|
+
/**
|
|
2980
|
+
* Items shown in the selector: sibling context array when path is set, otherwise optional static `dataSource` array.
|
|
2981
|
+
*/
|
|
2982
|
+
protected contextItems: _angular_core.Signal<unknown[]>;
|
|
2983
|
+
protected contextSelectDataSource: _angular_core.Signal<AXDataSource<unknown>>;
|
|
2984
|
+
protected selectedSourceItems: _angular_core.WritableSignal<unknown[]>;
|
|
2985
|
+
protected compactRowDataSources: _angular_core.Signal<AXDataSource<unknown>[]>;
|
|
2986
|
+
protected compactRowSelectedItems: _angular_core.Signal<unknown[][]>;
|
|
2987
|
+
protected lookupEntityDef: _angular_core.WritableSignal<AXPEntity | null>;
|
|
2988
|
+
protected defaultLookupSorts: _angular_core.Signal<AXDataSourceSortOption[]>;
|
|
2989
|
+
protected lookupDataSource: _angular_core.Signal<AXDataSource<unknown> | null>;
|
|
2990
|
+
protected lookupTextField: _angular_core.Signal<string>;
|
|
2991
|
+
protected lookupSelectedItems: _angular_core.WritableSignal<unknown[]>;
|
|
2992
|
+
protected rows: _angular_core.Signal<Record<string, unknown>[]>;
|
|
2993
|
+
protected structureFields: _angular_core.Signal<AXPSelectorStructureFieldDef[]>;
|
|
2994
|
+
protected structureFieldNodes: _angular_core.Signal<{
|
|
2995
|
+
name: string;
|
|
2996
|
+
title: string;
|
|
2997
|
+
node: AXPWidgetNode;
|
|
2998
|
+
}[]>;
|
|
2999
|
+
protected identityLabel: _angular_core.Signal<string>;
|
|
3000
|
+
protected identityNode: _angular_core.Signal<AXPWidgetNode | null>;
|
|
3001
|
+
protected freeformHeading: _angular_core.Signal<string>;
|
|
3002
|
+
protected keyPlaceholder: _angular_core.Signal<string>;
|
|
3003
|
+
protected valuePlaceholder: _angular_core.Signal<string>;
|
|
3004
|
+
protected addPairLabel: _angular_core.Signal<string>;
|
|
3005
|
+
protected removePairTitle: _angular_core.Signal<string>;
|
|
3006
|
+
protected disabledHint: _angular_core.Signal<string>;
|
|
3007
|
+
protected trackRow(row: Record<string, unknown>): unknown;
|
|
3008
|
+
protected rowCaption(row: Record<string, unknown>): string;
|
|
3009
|
+
protected isDraftRow(row: Record<string, unknown>): boolean;
|
|
3010
|
+
protected isRowSelectLocked(row: Record<string, unknown>): boolean;
|
|
3011
|
+
/**
|
|
3012
|
+
* Items available for row `index`: all source items minus keys already chosen on other committed rows;
|
|
3013
|
+
* always includes the current row's selected item so the select can display it.
|
|
3014
|
+
*/
|
|
3015
|
+
protected exclusiveItemsForRow(index: number): unknown[];
|
|
3016
|
+
private newRowUid;
|
|
3017
|
+
protected handleCompactSelectChange(index: number, e: AXValueChangedEvent): void;
|
|
3018
|
+
protected applyCompactRowFromItem(index: number, rawItem: unknown | undefined): void;
|
|
3019
|
+
protected clearCompactRow(index: number): void;
|
|
3020
|
+
protected removeCompactRow(index: number): void;
|
|
3021
|
+
protected addCompactRow(): void;
|
|
3022
|
+
protected handleSelectValueChange(e: AXValueChangedEvent): void;
|
|
3023
|
+
protected handleLookupValueChange(e: AXValueChangedEvent): void;
|
|
3024
|
+
protected applyRowsFromSourceItems(items: unknown[]): void;
|
|
3025
|
+
protected handleSchemaContextChange(rowKey: unknown, e: AXPContextChangeEvent): void;
|
|
3026
|
+
protected freeformEntries(row: Record<string, unknown>): {
|
|
3027
|
+
key: string;
|
|
3028
|
+
value: string;
|
|
3029
|
+
index: number;
|
|
3030
|
+
}[];
|
|
3031
|
+
private serializeFreeformValue;
|
|
3032
|
+
protected onFreeformKeyInput(row: Record<string, unknown>, entry: {
|
|
3033
|
+
key: string;
|
|
3034
|
+
value: string;
|
|
3035
|
+
index: number;
|
|
3036
|
+
}, nextKey: string): void;
|
|
3037
|
+
protected patchFreeformValue(row: Record<string, unknown>, key: string, raw: string): void;
|
|
3038
|
+
protected removeFreeformKey(row: Record<string, unknown>, key: string): void;
|
|
3039
|
+
protected addFreeformPair(row: Record<string, unknown>): void;
|
|
3040
|
+
private renameFreeformKey;
|
|
3041
|
+
private patchFreeformMap;
|
|
3042
|
+
private tryParseFreeformString;
|
|
3043
|
+
private mergeListFilter;
|
|
3044
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetEditComponent, never>;
|
|
3045
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetEditComponent, "axp-selector-structure-widget-edit", never, {}, {}, never, never, true, never>;
|
|
3046
|
+
}
|
|
3047
|
+
|
|
3048
|
+
declare class AXPSelectorStructureWidgetViewComponent extends AXPValueWidgetComponent {
|
|
3049
|
+
protected identityField: _angular_core.Signal<string>;
|
|
3050
|
+
protected textField: _angular_core.Signal<string>;
|
|
3051
|
+
protected valueField: _angular_core.Signal<string>;
|
|
3052
|
+
protected previewIcon: _angular_core.Signal<string>;
|
|
3053
|
+
protected summaries: _angular_core.Signal<string[]>;
|
|
3054
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSelectorStructureWidgetViewComponent, never>;
|
|
3055
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetViewComponent, "axp-selector-structure-widget-view", never, {}, {}, never, never, true, never>;
|
|
3056
|
+
}
|
|
3057
|
+
|
|
3058
|
+
declare const AXPEntityCreateEvent: {
|
|
3059
|
+
(payload: {
|
|
3060
|
+
entity: string;
|
|
3061
|
+
meta?: any;
|
|
3062
|
+
}): {
|
|
3063
|
+
type: string;
|
|
3064
|
+
payload: {
|
|
3065
|
+
entity: string;
|
|
3066
|
+
meta?: any;
|
|
3067
|
+
};
|
|
3068
|
+
};
|
|
3069
|
+
type: string;
|
|
3070
|
+
};
|
|
3071
|
+
declare class AXPEntityCreatePopupAction extends AXPWorkflowAction {
|
|
3072
|
+
private entityRegistery;
|
|
3073
|
+
private popupService;
|
|
3074
|
+
private platform;
|
|
3075
|
+
private factory;
|
|
3076
|
+
private config;
|
|
3077
|
+
private translateService;
|
|
3078
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3079
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreatePopupAction, never>;
|
|
3080
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreatePopupAction>;
|
|
3081
|
+
}
|
|
3082
|
+
declare class AXPEntityCreateSubmittedAction extends AXPWorkflowAction {
|
|
3083
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3084
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreateSubmittedAction, never>;
|
|
3085
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreateSubmittedAction>;
|
|
3086
|
+
}
|
|
3087
|
+
declare const AXPCreateEntityWorkflow: AXPWorkflow;
|
|
3088
|
+
|
|
3089
|
+
declare const AXPEntityDeletedEvent: {
|
|
3090
|
+
(payload: {
|
|
3091
|
+
entity: string;
|
|
3092
|
+
ids: string[];
|
|
3093
|
+
meta?: any;
|
|
3094
|
+
}): {
|
|
3095
|
+
type: string;
|
|
3096
|
+
payload: {
|
|
3097
|
+
entity: string;
|
|
3098
|
+
ids: string[];
|
|
3099
|
+
meta?: any;
|
|
3100
|
+
};
|
|
3101
|
+
};
|
|
3102
|
+
type: string;
|
|
3103
|
+
};
|
|
3104
|
+
interface AXPEntityDeleteOptions {
|
|
3105
|
+
source: string;
|
|
3106
|
+
ids: string[];
|
|
3107
|
+
}
|
|
3108
|
+
declare class AXPEntityPerformDeleteAction extends AXPWorkflowAction {
|
|
3109
|
+
private entityRegistery;
|
|
3110
|
+
private dialogService;
|
|
3111
|
+
private loadingDialog;
|
|
3112
|
+
private translationService;
|
|
3113
|
+
private settingsService;
|
|
3114
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3115
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPerformDeleteAction, never>;
|
|
3116
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityPerformDeleteAction>;
|
|
3117
|
+
}
|
|
3118
|
+
declare const AXPDeleteEntityWorkflow: AXPWorkflow;
|
|
3119
|
+
|
|
3120
|
+
declare class AXPQuickEntityModifyPopupAction extends AXPWorkflowAction {
|
|
3121
|
+
private popupService;
|
|
3122
|
+
private platform;
|
|
3123
|
+
private translateService;
|
|
3124
|
+
private entityRegistery;
|
|
3125
|
+
private config;
|
|
3126
|
+
private factory;
|
|
3127
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3128
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQuickEntityModifyPopupAction, never>;
|
|
3129
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPQuickEntityModifyPopupAction>;
|
|
3130
|
+
}
|
|
3131
|
+
declare const AXPQuickModifyEntityWorkflow: AXPWorkflow;
|
|
3132
|
+
declare class AXPEntityApplyUpdatesAction extends AXPWorkflowAction {
|
|
3133
|
+
private entityRegistery;
|
|
3134
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3135
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityApplyUpdatesAction, never>;
|
|
3136
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityApplyUpdatesAction>;
|
|
3137
|
+
}
|
|
3138
|
+
|
|
3139
|
+
declare const AXPEntityModifyEvent: {
|
|
3140
|
+
(payload: {
|
|
3141
|
+
entity: string;
|
|
3142
|
+
values: any;
|
|
3143
|
+
}): {
|
|
3144
|
+
type: string;
|
|
3145
|
+
payload: {
|
|
3146
|
+
entity: string;
|
|
3147
|
+
values: any;
|
|
3148
|
+
};
|
|
3149
|
+
};
|
|
3150
|
+
type: string;
|
|
3151
|
+
};
|
|
3152
|
+
declare class AXPEntityModifySectionPopupAction extends AXPWorkflowAction {
|
|
3153
|
+
private popupService;
|
|
3154
|
+
private platform;
|
|
3155
|
+
private translateService;
|
|
3156
|
+
private entityRegistery;
|
|
3157
|
+
private config;
|
|
3158
|
+
private factory;
|
|
3159
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3160
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModifySectionPopupAction, never>;
|
|
3161
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityModifySectionPopupAction>;
|
|
3162
|
+
}
|
|
3163
|
+
declare class AXPEntityModifyConfirmedAction extends AXPWorkflowAction {
|
|
3164
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3165
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModifyConfirmedAction, never>;
|
|
3166
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityModifyConfirmedAction>;
|
|
3167
|
+
}
|
|
3168
|
+
declare const AXPModifyEntitySectionWorkflow: AXPWorkflow;
|
|
3169
|
+
|
|
3170
|
+
declare class AXPShowDetailViewAction extends AXPWorkflowAction {
|
|
3171
|
+
private navigation;
|
|
3172
|
+
private sessionService;
|
|
3173
|
+
execute(context: AXPWorkflowContext): Promise<void>;
|
|
3174
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowDetailViewAction, never>;
|
|
3175
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowDetailViewAction>;
|
|
3176
|
+
}
|
|
3177
|
+
declare const AXPShowDetailsViewWorkflow: AXPWorkflow;
|
|
3178
|
+
|
|
3179
|
+
declare class AXPShowListViewAction extends AXPWorkflowAction {
|
|
3180
|
+
private navigation;
|
|
3181
|
+
private sessionService;
|
|
3182
|
+
execute(context?: any): Promise<void>;
|
|
3183
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowListViewAction, never>;
|
|
3184
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowListViewAction>;
|
|
3185
|
+
}
|
|
3186
|
+
declare const AXPShowListViewWorkflow: AXPWorkflow;
|
|
3187
|
+
|
|
3188
|
+
export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_COLUMN_ORDER, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, EntityBuilder, EntityDataAccessor, actionExists, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, isAXPMiddlewareAbortError, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, provideEntity, resolveEntityPluginDetailPageOrder, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider };
|
|
3189
|
+
export type { AXPAuditEvent, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListToolbarConvertOptions, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, ResolveEntityPluginDetailPageOrderOptions, SectionOrderConfig, SkipEntityComponentPageRef };
|