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