@acorex-platform/framework-client 0.0.10 → 0.0.15
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-framework-client-auth.mjs +285 -50
- package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-CbzOYCnI.mjs → acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs} +55 -36
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-common-settings-dialog.helper-DQNOCRL6.mjs +29 -0
- package/fesm2022/acorex-platform-framework-client-common-settings-dialog.helper-DQNOCRL6.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-common.mjs +1576 -408
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-core.mjs +561 -25
- package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +154 -42
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CWVU3wXL.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs} +7 -7
- package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs +77 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +2378 -1274
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +92 -84
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CxBxxpmA.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CxBxxpmA.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-l0JAHKIH.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs} +6 -6
- package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs +256 -0
- package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +17599 -17114
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs +120 -70
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +302 -263
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CpkWwygb.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs} +2 -2
- package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-image-preview.popup-C_EPAvCU.mjs → acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs} +3 -3
- package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CmtTq2Mt.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs} +5 -5
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CmtTq2Mt.mjs.map → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DSx0E3NV.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DSx0E3NV.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-DdfcGV1C.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs} +10 -10
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs} +5 -5
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs +61 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +2218 -1504
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-realtime.mjs +227 -0
- package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-runtime.mjs +201 -13
- package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs +158 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs +119 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-D1a7UI71.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs} +5 -6
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs +48 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs +42 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs +19 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +123 -96
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CXSGiTCK.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs} +3 -3
- package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BY5clQ1J.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs} +3 -3
- package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-themes-shared-settings.provider-DEL2YOTP.mjs → acorex-platform-framework-client-themes-shared-settings.provider-D2XPkc71.mjs} +11 -2
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-D2XPkc71.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BXl8u4Yp.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs} +7 -7
- package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-i2sOOkVj.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs} +7 -7
- package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +124 -112
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-workflow.mjs +26 -483
- package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
- package/package.json +14 -9
- package/types/acorex-platform-framework-client-auth.d.ts +76 -5
- package/types/acorex-platform-framework-client-common.d.ts +499 -129
- package/types/acorex-platform-framework-client-core.d.ts +291 -10
- package/types/acorex-platform-framework-client-layout-builder.d.ts +81 -31
- package/types/acorex-platform-framework-client-layout-components.d.ts +295 -41
- package/types/acorex-platform-framework-client-layout-entity.d.ts +1895 -1743
- package/types/acorex-platform-framework-client-layout-views.d.ts +8 -18
- package/types/acorex-platform-framework-client-layout-widget-core.d.ts +20 -35
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +167 -33
- package/types/acorex-platform-framework-client-realtime.d.ts +100 -0
- package/types/acorex-platform-framework-client-runtime.d.ts +60 -2
- package/types/acorex-platform-framework-client-themes-default.d.ts +4 -48
- package/types/acorex-platform-framework-client-workflow.d.ts +16 -127
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CbzOYCnI.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CWVU3wXL.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-l0JAHKIH.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CpkWwygb.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-DdfcGV1C.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-CntopmDS.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-B5kSWxGk.mjs +0 -34
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-B5kSWxGk.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DnTHwsDJ.mjs +0 -160
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DnTHwsDJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BpR9g6QS.mjs +0 -121
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BpR9g6QS.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-D1a7UI71.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-D--_MIar.mjs +0 -48
- package/fesm2022/acorex-platform-framework-client-themes-default-error-401.component-D--_MIar.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-Byyqk8pH.mjs +0 -42
- package/fesm2022/acorex-platform-framework-client-themes-default-error-404.component-Byyqk8pH.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DR6G8gPC.mjs +0 -19
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DR6G8gPC.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CXSGiTCK.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BY5clQ1J.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DEL2YOTP.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BXl8u4Yp.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-i2sOOkVj.mjs.map +0 -1
|
@@ -4,24 +4,22 @@ export * from '@acorex-platform/framework-shared/entity';
|
|
|
4
4
|
export { collectNestedCreateHiddenProperties, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, mergeForeignKeyFieldIntoCreateActions } from '@acorex-platform/framework-shared/entity';
|
|
5
5
|
import { AXPCommand, AXPQuery } from '@acorex-platform/framework-shared/runtime';
|
|
6
6
|
import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
|
|
7
|
-
import { AXPExecuteCommandResult, AXPMetaData, AXPWidgetNode, AXPGridLayoutOptions, AXPExpression,
|
|
7
|
+
import { AXPExecuteCommandResult, AXPFileListItem, AXPMultiLanguageString, AXPMetaData, AXPWidgetNode, AXPGridLayoutOptions, AXPExpression, AXPBreadcrumbItem, AXPFilterQuery, AXPExecuteCommand, AXPFilterDefinition, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity, AXPEntityOp, AXPMiddlewareErrorResponse, AXPColumnQuery, AXPSortDefinition, AXPActionMenuItem, AXPContextData, AXPContextChangeEvent } from '@acorex-platform/framework-shared/core';
|
|
8
8
|
import * as _angular_core from '@angular/core';
|
|
9
|
-
import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders,
|
|
9
|
+
import { OnInit, OnDestroy, ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, ChangeDetectorRef } from '@angular/core';
|
|
10
10
|
import * as node_modules__acorex_platform_framework_shared_core_src_lib from 'node_modules/@acorex-platform/framework-shared/core/src/lib';
|
|
11
|
-
import {
|
|
11
|
+
import { AXPWidgetConfig, AXPWidgetColumnNode } from '@acorex-platform/framework-shared/widget-core';
|
|
12
|
+
import { AXPFileChooserContext, AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorRowActionsHandler, AXPCategoryTreeDataSource, AXPDataSelectorAllowCreate, AXPDataSelectorFooterPrefixAction } from '@acorex-platform/framework-client/layout/components';
|
|
12
13
|
import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
|
|
13
|
-
import { AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXHighlightService, AXPDeviceService, AXPBroadcastEventService, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXPContextStore } from '@acorex-platform/framework-client/core';
|
|
14
|
+
import { AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPHookService, AXHighlightService, AXPDeviceService, AXPBroadcastEventService, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXPContextStore } from '@acorex-platform/framework-client/core';
|
|
14
15
|
export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex-platform/framework-client/domain';
|
|
15
|
-
import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent,
|
|
16
|
-
import { AXPWidgetColumnNode, AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';
|
|
16
|
+
import { AXClickEvent, AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
|
|
17
17
|
import * as i4 from '@acorex-platform/framework-client/layout/widget-core';
|
|
18
|
-
import {
|
|
18
|
+
import { AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetCoreElementAPI, AXPWidgetCoreService, AXPWidgetRendererDirective } from '@acorex-platform/framework-client/layout/widget-core';
|
|
19
19
|
import * as i1 from '@angular/router';
|
|
20
|
-
import { ResolveFn, RedirectCommand } from '@angular/router';
|
|
20
|
+
import { ParamMap, ResolveFn, RedirectCommand } from '@angular/router';
|
|
21
21
|
import * as rxjs from 'rxjs';
|
|
22
22
|
import { Subject } from 'rxjs';
|
|
23
|
-
import * as i3 from '@acorex-platform/framework-client/workflow';
|
|
24
|
-
import { AXPWorkflowService, AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex-platform/framework-client/workflow';
|
|
25
23
|
import * as i5 from '@acorex-platform/framework-client/layout/builder';
|
|
26
24
|
import { IActionBuilder, AXPDialogRef, IFormFieldBuilder } from '@acorex-platform/framework-client/layout/builder';
|
|
27
25
|
import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
@@ -32,10 +30,13 @@ import { AXBasePageComponent } from '@acorex/components/page';
|
|
|
32
30
|
import { AXFormatService } from '@acorex/core/format';
|
|
33
31
|
import { AXTagBoxComponent } from '@acorex/components/tag-box';
|
|
34
32
|
import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex-platform/framework-client/layout/widgets';
|
|
35
|
-
import
|
|
33
|
+
import * as _acorex_platform_framework_client_workflow from '@acorex-platform/framework-client/workflow';
|
|
34
|
+
import { AXPWorkflowEventService } from '@acorex-platform/framework-client/workflow';
|
|
35
|
+
import { AXCFileUploaderCapabilities, AXPFileStorageService } from '@acorex-platform/framework-client/common';
|
|
36
|
+
export { commandMessageTextForError } from '@acorex-platform/framework-client/common';
|
|
36
37
|
import * as _acorex_platform_framework_client_layout_entity from '@acorex-platform/framework-client/layout/entity';
|
|
37
38
|
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
38
|
-
import {
|
|
39
|
+
import { AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
|
|
39
40
|
import * as _acorex_core_translation from '@acorex/core/translation';
|
|
40
41
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
41
42
|
|
|
@@ -120,740 +121,1391 @@ declare const axpCreateEntityCommandDefinition: {
|
|
|
120
121
|
categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
|
|
121
122
|
};
|
|
122
123
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
private readonly eventService;
|
|
133
|
-
execute(input: any): Promise<AXPExecuteCommandResult<any>>;
|
|
134
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPUpdateEntityCommand, never>;
|
|
135
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPUpdateEntityCommand>;
|
|
124
|
+
interface AXPEntityDeleteOptions {
|
|
125
|
+
source: string;
|
|
126
|
+
ids: string[];
|
|
127
|
+
}
|
|
128
|
+
interface AXPEntityDeletePerformInput {
|
|
129
|
+
entity?: string;
|
|
130
|
+
data?: unknown;
|
|
131
|
+
entities?: AXPEntityDeleteOptions[];
|
|
132
|
+
meta?: unknown;
|
|
136
133
|
}
|
|
137
134
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
interface AXPDeleteEntityCommandInput {
|
|
136
|
+
entity?: string;
|
|
137
|
+
data?: unknown;
|
|
138
|
+
entities?: AXPEntityDeletePerformInput['entities'];
|
|
139
|
+
meta?: unknown;
|
|
140
|
+
options?: Record<string, unknown>;
|
|
141
|
+
__context__?: {
|
|
142
|
+
entity?: string;
|
|
143
|
+
data?: unknown;
|
|
144
|
+
entities?: AXPEntityDeletePerformInput['entities'];
|
|
145
|
+
meta?: unknown;
|
|
146
|
+
options?: Record<string, unknown>;
|
|
147
|
+
};
|
|
148
|
+
__metadata__?: unknown;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Confirms then deletes entity record(s). Replaces the former `delete-entity` workflow.
|
|
152
|
+
*/
|
|
153
|
+
declare class AXPDeleteEntityCommand implements AXPCommand<AXPDeleteEntityCommandInput, AXPExecuteCommandResult> {
|
|
154
|
+
private readonly dialogService;
|
|
141
155
|
private readonly translationService;
|
|
142
|
-
private readonly
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
private loadRecordContext;
|
|
147
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPViewEntityDetailsCommand, never>;
|
|
148
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPViewEntityDetailsCommand>;
|
|
156
|
+
private readonly deletePerform;
|
|
157
|
+
execute(input?: AXPDeleteEntityCommandInput): Promise<AXPExecuteCommandResult>;
|
|
158
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDeleteEntityCommand, never>;
|
|
159
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDeleteEntityCommand>;
|
|
149
160
|
}
|
|
150
161
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Build-time only. Do not import from Angular modules.
|
|
164
|
+
*/
|
|
165
|
+
declare const axpDeleteEntityCommandDefinition: {
|
|
166
|
+
key: string;
|
|
167
|
+
title: string;
|
|
168
|
+
description: string;
|
|
169
|
+
executionMode: "frontend";
|
|
170
|
+
inputs: {
|
|
171
|
+
name: string;
|
|
172
|
+
title: string;
|
|
173
|
+
description: string;
|
|
174
|
+
interface: {
|
|
175
|
+
name: string;
|
|
176
|
+
};
|
|
177
|
+
}[];
|
|
178
|
+
outcomes: {
|
|
179
|
+
mode: "static";
|
|
180
|
+
values: string[];
|
|
181
|
+
};
|
|
182
|
+
ai: {
|
|
183
|
+
tags: string[];
|
|
184
|
+
};
|
|
185
|
+
categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
interface AXPOpenEntityListCondition {
|
|
189
|
+
name?: string;
|
|
190
|
+
field?: string;
|
|
191
|
+
operator?: {
|
|
192
|
+
type: string;
|
|
193
|
+
};
|
|
194
|
+
value?: unknown;
|
|
195
|
+
}
|
|
196
|
+
interface AXPOpenEntityListCommandInput {
|
|
197
|
+
entity?: string;
|
|
198
|
+
conditions?: AXPOpenEntityListCondition[];
|
|
199
|
+
__context__?: {
|
|
200
|
+
entity?: string;
|
|
201
|
+
conditions?: AXPOpenEntityListCondition[];
|
|
202
|
+
options?: {
|
|
203
|
+
conditions?: AXPOpenEntityListCondition[];
|
|
204
|
+
};
|
|
155
205
|
};
|
|
156
206
|
}
|
|
157
207
|
/**
|
|
158
|
-
*
|
|
159
|
-
*
|
|
208
|
+
* Navigates to an entity master list, optionally with filter query params.
|
|
209
|
+
* Replaces the former `show-list-view` workflow.
|
|
160
210
|
*/
|
|
161
|
-
declare class
|
|
211
|
+
declare class AXPOpenEntityListCommand implements AXPCommand<AXPOpenEntityListCommandInput, AXPExecuteCommandResult> {
|
|
162
212
|
private readonly router;
|
|
163
213
|
private readonly sessionService;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
*/
|
|
168
|
-
execute(input: AXPOpenEntityDetailsCommandInput): Promise<AXPExecuteCommandResult>;
|
|
169
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityDetailsCommand, never>;
|
|
170
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
|
|
214
|
+
execute(input?: AXPOpenEntityListCommandInput): Promise<AXPExecuteCommandResult>;
|
|
215
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityListCommand, never>;
|
|
216
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityListCommand>;
|
|
171
217
|
}
|
|
172
218
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
219
|
+
/**
|
|
220
|
+
* Build-time only. Do not import from Angular modules.
|
|
221
|
+
*/
|
|
222
|
+
declare const axpOpenEntityListCommandDefinition: {
|
|
223
|
+
key: string;
|
|
224
|
+
title: string;
|
|
225
|
+
description: string;
|
|
226
|
+
executionMode: "frontend";
|
|
227
|
+
inputs: {
|
|
228
|
+
name: string;
|
|
229
|
+
title: string;
|
|
230
|
+
description: string;
|
|
231
|
+
interface: {
|
|
232
|
+
name: string;
|
|
233
|
+
};
|
|
234
|
+
}[];
|
|
235
|
+
outcomes: {
|
|
236
|
+
mode: "static";
|
|
237
|
+
values: string[];
|
|
238
|
+
};
|
|
239
|
+
ai: {
|
|
240
|
+
tags: string[];
|
|
241
|
+
};
|
|
242
|
+
categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
declare class AXPEditFileUploaderCommand implements AXPCommand<{
|
|
246
|
+
file: AXPFileListItem;
|
|
247
|
+
plugins?: {
|
|
248
|
+
name: string;
|
|
249
|
+
options?: unknown;
|
|
250
|
+
}[];
|
|
251
|
+
excludePlugins?: string[];
|
|
252
|
+
enableTitleDescription?: boolean;
|
|
253
|
+
isNewFile?: boolean;
|
|
254
|
+
}, AXPFileListItem> {
|
|
255
|
+
private readonly layoutBuilder;
|
|
256
|
+
private readonly translationService;
|
|
257
|
+
private readonly hooks;
|
|
258
|
+
execute(input: {
|
|
259
|
+
file: AXPFileListItem;
|
|
260
|
+
plugins?: {
|
|
261
|
+
name: string;
|
|
262
|
+
options?: unknown;
|
|
263
|
+
}[];
|
|
264
|
+
excludePlugins?: string[];
|
|
265
|
+
enableTitleDescription?: boolean;
|
|
266
|
+
isNewFile?: boolean;
|
|
267
|
+
}): Promise<AXPExecuteCommandResult<AXPFileListItem>>;
|
|
268
|
+
private showEditDialog;
|
|
196
269
|
/**
|
|
197
|
-
*
|
|
198
|
-
* calling a method from the template rebuilds nodes every CD cycle and can make the widget renderer loop.
|
|
270
|
+
* Build form fields from hook items (old format parameters)
|
|
199
271
|
*/
|
|
200
|
-
|
|
272
|
+
private buildFormFields;
|
|
273
|
+
/**
|
|
274
|
+
* Build groups/containers from hook groups (old format groups)
|
|
275
|
+
*/
|
|
276
|
+
private buildGroups;
|
|
277
|
+
/**
|
|
278
|
+
* Apply widget configuration to field based on widget type
|
|
279
|
+
*/
|
|
280
|
+
private applyWidget;
|
|
281
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEditFileUploaderCommand, never>;
|
|
282
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEditFileUploaderCommand>;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/** Visual layout for `axp-file-list`. */
|
|
286
|
+
type AXPFileListLook = 'rows' | 'links';
|
|
287
|
+
|
|
288
|
+
declare class AXPFileListComponent implements OnInit, OnDestroy {
|
|
289
|
+
private static readonly DOWNLOAD_DEBOUNCE_MS;
|
|
290
|
+
private fileTypeService;
|
|
291
|
+
private fileStorageService;
|
|
292
|
+
private commandExecutor;
|
|
293
|
+
private hooks;
|
|
294
|
+
isLoading: _angular_core.WritableSignal<boolean>;
|
|
295
|
+
private fileTypes;
|
|
296
|
+
onRemove: _angular_core.OutputEmitterRef<AXPFileListItem>;
|
|
297
|
+
onRevert: _angular_core.OutputEmitterRef<AXPFileListItem>;
|
|
298
|
+
onRename: _angular_core.OutputEmitterRef<AXPFileListItem>;
|
|
299
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
300
|
+
fileEditable: _angular_core.InputSignal<boolean>;
|
|
301
|
+
/** When true, edit dialog shows name, title and description fields. Default false. */
|
|
302
|
+
enableTitleDescription: _angular_core.InputSignal<boolean>;
|
|
303
|
+
multiple: _angular_core.InputSignal<boolean>;
|
|
304
|
+
/** `rows`: file-type icons and action buttons; `links`: compact paperclip links (download on click). */
|
|
305
|
+
look: _angular_core.InputSignal<AXPFileListLook>;
|
|
306
|
+
/** i18n key for links look label (template adds trailing colon). */
|
|
307
|
+
titleKey: _angular_core.InputSignal<string>;
|
|
308
|
+
/** When false, links look omits the label (e.g. popover body). */
|
|
309
|
+
showLabel: _angular_core.InputSignal<boolean>;
|
|
310
|
+
/** `inline`: label + divider; `menu`: compact list for popovers/panels. */
|
|
311
|
+
linksLayout: _angular_core.InputSignal<"inline" | "menu">;
|
|
312
|
+
files: _angular_core.InputSignal<AXPFileListItem[]>;
|
|
313
|
+
plugins: _angular_core.InputSignal<{
|
|
201
314
|
name: string;
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
loadDetails(): Promise<void>;
|
|
207
|
-
protected navigateToDetails(): Promise<void>;
|
|
208
|
-
private resolveHeaderTitle;
|
|
209
|
-
private resolveLookupDisplayLabelAsync;
|
|
315
|
+
options?: unknown;
|
|
316
|
+
}[] | undefined>;
|
|
317
|
+
excludePlugins: _angular_core.InputSignal<string[] | undefined>;
|
|
318
|
+
capabilities: _angular_core.InputSignal<AXCFileUploaderCapabilities | undefined>;
|
|
210
319
|
/**
|
|
211
|
-
*
|
|
320
|
+
* All files should be displayed, even those with `deleted` status.
|
|
321
|
+
* The template will handle the visual differences based on the status.
|
|
212
322
|
*/
|
|
213
|
-
|
|
323
|
+
displayFiles: _angular_core.Signal<AXPFileListItem[]>;
|
|
324
|
+
private fileIdToActions;
|
|
325
|
+
private globalActions;
|
|
326
|
+
/** Suppress duplicate downloads from double-click (two click events). */
|
|
327
|
+
private readonly recentDownloadAtByKey;
|
|
328
|
+
private filesChangeEffect;
|
|
329
|
+
private getDefaultActions;
|
|
330
|
+
/** True when the widget is readonly or this file row is locked (`readOnly`). */
|
|
331
|
+
isItemInteractionLocked(file: AXPFileListItem): boolean;
|
|
332
|
+
actionsFor(file: AXPFileListItem, index: number): any[];
|
|
333
|
+
private loadActionsFor;
|
|
334
|
+
ngOnInit(): Promise<void>;
|
|
335
|
+
private loadGlobalActions;
|
|
336
|
+
private shouldSkipDuplicateDownload;
|
|
337
|
+
private downloadDedupeKey;
|
|
338
|
+
/** Ensures `source` is set for links look and legacy rows that only carry storage id on `id`. */
|
|
339
|
+
private resolveFileForDownload;
|
|
340
|
+
protected getFileInfo(fileName: string): {
|
|
341
|
+
icon: string;
|
|
342
|
+
type: string;
|
|
343
|
+
};
|
|
214
344
|
/**
|
|
215
|
-
*
|
|
216
|
-
* whether it currently has a meaningful value, and metadata like title.
|
|
345
|
+
* Double-click on a file row (rows look) or link row triggers download.
|
|
217
346
|
*/
|
|
218
|
-
|
|
347
|
+
protected handleFileRowActivate(event: Event, file: AXPFileListItem): void;
|
|
348
|
+
handleFileDownload(event: AXClickEvent | Event, file: AXPFileListItem): Promise<void>;
|
|
349
|
+
handleFileRemove(event: AXClickEvent, file: AXPFileListItem): Promise<void>;
|
|
219
350
|
/**
|
|
220
|
-
*
|
|
221
|
-
* like title, description, status, and important dates.
|
|
222
|
-
* Name priority MUST come before widget-type priority.
|
|
351
|
+
* Handle revert action – emit the file so parent components can update the status.
|
|
223
352
|
*/
|
|
224
|
-
|
|
225
|
-
private buildEntityPropertiesWithWidgets;
|
|
353
|
+
handleFileRevert(event: AXClickEvent, file: AXPFileListItem): void;
|
|
226
354
|
/**
|
|
227
|
-
*
|
|
228
|
-
* when data has it (e.g. personTitle). Otherwise returns property name (e.g. personTitleId).
|
|
355
|
+
* Handle file edit action – open rename popup
|
|
229
356
|
*/
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
entity: string;
|
|
237
|
-
id: string | number;
|
|
238
|
-
item: AXPMetaData;
|
|
239
|
-
textField?: string;
|
|
240
|
-
valueField?: string;
|
|
241
|
-
displayTitle?: string;
|
|
242
|
-
breadcrumb?: string;
|
|
243
|
-
}
|
|
244
|
-
declare class AXPEntityDetailPopoverService {
|
|
245
|
-
private readonly overlayService;
|
|
246
|
-
private readonly platform;
|
|
247
|
-
private readonly localeService;
|
|
248
|
-
private readonly document;
|
|
249
|
-
private readonly router;
|
|
250
|
-
private overlayRef;
|
|
251
|
-
private componentRef;
|
|
252
|
-
private anchorElement;
|
|
253
|
-
private outsideClickHandler;
|
|
254
|
-
private keydownHandler;
|
|
255
|
-
private routerSubscription;
|
|
256
|
-
/**
|
|
257
|
-
* Show entity detail popover anchored to the target element.
|
|
258
|
-
*/
|
|
259
|
-
show(target: ElementRef | HTMLElement, options: AXPEntityDetailPopoverOptions): Promise<void>;
|
|
260
|
-
/** Hide the active popover */
|
|
261
|
-
hide(): void;
|
|
262
|
-
/** Whether a popover is currently active */
|
|
263
|
-
get isActive(): boolean;
|
|
264
|
-
private resolveAnchorElement;
|
|
265
|
-
/** Mirror popover placement for RTL so the panel aligns with the anchor's inline-start edge. */
|
|
266
|
-
private resolveOverlayPlacement;
|
|
267
|
-
private resolveOverlayOffsetX;
|
|
268
|
-
private isRtlContext;
|
|
269
|
-
private bindDismissHandlers;
|
|
270
|
-
/** Ignore clicks on the anchor, overlay panel, or nested dropdown menus. */
|
|
271
|
-
private isInsideInteractiveSurface;
|
|
272
|
-
private removeDismissHandlers;
|
|
273
|
-
private handleOverlayDisposed;
|
|
274
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverService, never>;
|
|
275
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDetailPopoverService>;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBaseComponent {
|
|
279
|
-
private readonly route;
|
|
280
|
-
private readonly entityService;
|
|
281
|
-
private readonly filterOperatorMiddleware;
|
|
282
|
-
protected readonly noMatchText: _angular_core.WritableSignal<string | null>;
|
|
283
|
-
private vm;
|
|
284
|
-
preloadFiltersDef: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPFilterDefinition[]>;
|
|
285
|
-
hasNoRequiredFilters: _angular_core.Signal<boolean>;
|
|
286
|
-
protected getPageTitle(): string;
|
|
287
|
-
protected getPageDescription(): string | null;
|
|
288
|
-
onApply(event: AXPPreloadFiltersApplyEvent): Promise<void>;
|
|
289
|
-
onShowAll(): Promise<void>;
|
|
290
|
-
private buildPreloadFilterQueries;
|
|
291
|
-
private buildListQueryFilter;
|
|
292
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPreloadFiltersContainerComponent, never>;
|
|
293
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityPreloadFiltersContainerComponent, "axp-entity-preload-filters-container", never, {}, {}, never, never, true, never>;
|
|
357
|
+
handleFileEdit(event: any, file: AXPFileListItem): Promise<void>;
|
|
358
|
+
ngOnDestroy(): void;
|
|
359
|
+
runAction(action: any): Promise<void>;
|
|
360
|
+
protected getActionColor(action: any): string;
|
|
361
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileListComponent, never>;
|
|
362
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileListComponent, "axp-file-list", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "fileEditable": { "alias": "fileEditable"; "required": false; "isSignal": true; }; "enableTitleDescription": { "alias": "enableTitleDescription"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "linksLayout": { "alias": "linksLayout"; "required": false; "isSignal": true; }; "files": { "alias": "files"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; "excludePlugins": { "alias": "excludePlugins"; "required": false; "isSignal": true; }; "capabilities": { "alias": "capabilities"; "required": false; "isSignal": true; }; }, { "onRemove": "onRemove"; "onRevert": "onRevert"; "onRename": "onRename"; }, never, never, true, never>;
|
|
294
363
|
}
|
|
295
364
|
|
|
365
|
+
/** Stable fingerprint for one file row; ignores Blob binary content. */
|
|
366
|
+
declare function fingerprintAttachmentItem(item: unknown): string;
|
|
367
|
+
/** Order-independent fingerprint for attachment lists. */
|
|
368
|
+
declare function fingerprintAttachments(value: unknown): string;
|
|
369
|
+
/** True when lists represent the same attachments regardless of blob vs fileId shape. */
|
|
370
|
+
declare function attachmentsSemanticallyEqual(a: unknown, b: unknown): boolean;
|
|
371
|
+
/** Attachment rows that remain after a successful save (drops soft-deleted rows). */
|
|
372
|
+
declare function committedAttachments(value: unknown): AXPFileListItem[];
|
|
296
373
|
/**
|
|
297
|
-
*
|
|
298
|
-
*
|
|
374
|
+
* Post-save attachment list: drops soft-deleted rows and promotes pending `attached` rows to `uploaded`
|
|
375
|
+
* so deferred-save pages get the same delete/revert behavior as after a full reload.
|
|
299
376
|
*/
|
|
300
|
-
declare
|
|
301
|
-
private readonly entityResolver;
|
|
302
|
-
items(): Promise<AXPDataSourceDefinition[]>;
|
|
303
|
-
}
|
|
377
|
+
declare function persistedAttachments(value: unknown): AXPFileListItem[];
|
|
304
378
|
|
|
379
|
+
interface AXPFileUploaderEntityFilesScope {
|
|
380
|
+
name: string;
|
|
381
|
+
id: string;
|
|
382
|
+
field: string;
|
|
383
|
+
}
|
|
384
|
+
declare function isFileListItem(value: unknown): value is AXPFileListItem;
|
|
385
|
+
/** Whether a list-row value represents one attachment (file item, id reference, or fileId source). */
|
|
386
|
+
declare function isAttachmentListEntry(value: unknown): boolean;
|
|
387
|
+
declare function attachmentFieldCount(fieldValue: unknown): number;
|
|
388
|
+
declare function normalizeEntityFieldToFileList(fieldValue: unknown): AXPFileListItem[];
|
|
389
|
+
/** Whether a stored value is a persisted file/document/reference token. */
|
|
390
|
+
declare function isAttachmentStorageRef(value: unknown): value is string;
|
|
391
|
+
/** True when the field has entries that cannot be shown without hydration (e.g. mixed `file:` refs + objects). */
|
|
392
|
+
declare function attachmentNeedsHydration(fieldValue: unknown): boolean;
|
|
305
393
|
/**
|
|
306
|
-
*
|
|
307
|
-
*
|
|
394
|
+
* Resolves inline attachment field values to displayable file list items.
|
|
395
|
+
* Handles mixed arrays of `file:` refs and already-hydrated AXPFileListItem objects.
|
|
308
396
|
*/
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
397
|
+
declare function hydrateAttachmentFieldToFileList(fieldValue: unknown, fileStorage: AXPFileStorageService): Promise<AXPFileListItem[]>;
|
|
398
|
+
/** Attachment field path from widget options or column path fallback. */
|
|
399
|
+
declare function resolveAttachmentFieldPath(options: Record<string, unknown>, fieldFallback?: string): string | undefined;
|
|
400
|
+
/** True when the list row includes the attachment field (even when empty). */
|
|
401
|
+
declare function isAttachmentFieldPresentOnRow(rowData: Record<string, unknown> | undefined, fieldPath: string | undefined): boolean;
|
|
402
|
+
declare function resolveFileUploaderEntityScope(options: Record<string, unknown>, rowData: Record<string, unknown> | undefined, fieldFallback?: string): AXPFileUploaderEntityFilesScope | undefined;
|
|
403
|
+
|
|
404
|
+
interface AXPFileUploaderLoadFilesInput extends AXPFileUploaderEntityFilesScope {
|
|
315
405
|
}
|
|
316
|
-
interface
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
field?: string;
|
|
327
|
-
/** Gap between auto-assigned related tab orders. Default: 10. */
|
|
328
|
-
relatedOrderStep?: number;
|
|
329
|
-
/** Minimum start of the plugin zone (after related tabs). Default: 100_000. */
|
|
330
|
-
pluginZoneFloor?: number;
|
|
406
|
+
interface AXPFileUploaderLoadFilesResult {
|
|
407
|
+
files: AXPFileListItem[];
|
|
408
|
+
/** Count including file-id references, not only hydrated AXPFileListItem rows. */
|
|
409
|
+
count: number;
|
|
410
|
+
}
|
|
411
|
+
declare class AXPFileUploaderLoadFilesQuery implements AXPQuery<AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult> {
|
|
412
|
+
private readonly injector;
|
|
413
|
+
fetch(input: AXPFileUploaderLoadFilesInput): Promise<AXPFileUploaderLoadFilesResult>;
|
|
414
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderLoadFilesQuery, never>;
|
|
415
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderLoadFilesQuery>;
|
|
331
416
|
}
|
|
332
|
-
/**
|
|
333
|
-
* Resolves `layout.order` for a built-in plugin detail tab (`entity.pages`).
|
|
334
|
-
*
|
|
335
|
-
* 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
|
|
336
|
-
* `order` (the composer otherwise treats them as +Infinity).
|
|
337
|
-
* 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
|
|
338
|
-
* comments → history, after all related tabs.
|
|
339
|
-
*/
|
|
340
|
-
declare function resolveEntityPluginDetailPageOrder(input: {
|
|
341
|
-
relatedEntities?: AXPRelatedEntity[];
|
|
342
|
-
pages?: Array<AXPEntityPage & {
|
|
343
|
-
field?: string;
|
|
344
|
-
}>;
|
|
345
|
-
}, slot: EntityDetailPluginPageSlot, options: ResolveEntityPluginDetailPageOrderOptions): number;
|
|
346
417
|
|
|
347
|
-
interface
|
|
348
|
-
|
|
418
|
+
interface AXPFileUploaderSaveFilesInput extends AXPFileUploaderEntityFilesScope {
|
|
419
|
+
files: AXPFileListItem[];
|
|
349
420
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
421
|
+
interface AXPFileUploaderSaveFilesResult {
|
|
422
|
+
entityData: Record<string, unknown>;
|
|
423
|
+
}
|
|
424
|
+
declare class AXPFileUploaderSaveFilesCommand implements AXPCommand<AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult> {
|
|
425
|
+
private readonly injector;
|
|
426
|
+
execute(input: AXPFileUploaderSaveFilesInput): Promise<AXPExecuteCommandResult<AXPFileUploaderSaveFilesResult>>;
|
|
356
427
|
}
|
|
357
428
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
name: string;
|
|
365
|
-
key?: string;
|
|
366
|
-
separated: boolean;
|
|
367
|
-
scope: AXPEntityCommandScope;
|
|
368
|
-
disabled: boolean | string;
|
|
369
|
-
hidden: boolean | string;
|
|
370
|
-
options: any;
|
|
371
|
-
metadata?: AXPMetaData;
|
|
372
|
-
default?: boolean;
|
|
373
|
-
shortcuts?: string[];
|
|
374
|
-
items?: AXPEntityCommandTriggerViewModel[];
|
|
375
|
-
isChild?: boolean;
|
|
376
|
-
constructor(entity: AXPEntity, action: AXPEntityAction, isChild?: boolean);
|
|
377
|
-
/** Stable trigger id for command lookup and list tracking when {@link AXPEntityAction.name} is omitted. */
|
|
378
|
-
private static buildTriggerName;
|
|
429
|
+
/** Serializable upload action exposed via widget `api().getUploadActions()`. */
|
|
430
|
+
interface AXPFileUploaderUploadActionDescriptor {
|
|
431
|
+
plugin: string;
|
|
432
|
+
text?: string;
|
|
433
|
+
textKey?: string;
|
|
434
|
+
icon?: string;
|
|
379
435
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
title: string;
|
|
386
|
-
visible: string | boolean;
|
|
387
|
-
sortEnabled: boolean | undefined;
|
|
388
|
-
width: '';
|
|
389
|
-
node: _angular_core.Signal<AXPWidgetColumnNode>;
|
|
436
|
+
type AXPFileUploaderEditDialogMode = 'manual' | 'auto';
|
|
437
|
+
interface AXPFileUploaderEditDialogFieldOptions {
|
|
438
|
+
name?: boolean;
|
|
439
|
+
title?: boolean;
|
|
440
|
+
description?: boolean;
|
|
390
441
|
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
constructor(property: AXPEntityProperty, field: AXPCardField);
|
|
395
|
-
name: string;
|
|
396
|
-
title: string;
|
|
397
|
-
visible: string | boolean;
|
|
398
|
-
layout: _acorex_platform_framework_shared_entity.AXPEntityPropertyLayoutConfig | undefined;
|
|
399
|
-
display: string;
|
|
400
|
-
isBadgeDisplay: boolean;
|
|
401
|
-
badgeColor: string | undefined;
|
|
402
|
-
isStatusWidget: boolean;
|
|
403
|
-
node: _angular_core.Signal<AXPWidgetColumnNode>;
|
|
404
|
-
/** Readonly column node for status fields shown as header badges. */
|
|
405
|
-
headerBadgeNode: _angular_core.Signal<AXPWidgetColumnNode>;
|
|
442
|
+
interface AXPFileUploaderEditDialogOptions {
|
|
443
|
+
mode?: AXPFileUploaderEditDialogMode;
|
|
444
|
+
fields?: AXPFileUploaderEditDialogFieldOptions;
|
|
406
445
|
}
|
|
446
|
+
declare function resolveFileUploaderEditDialog(options?: Record<string, unknown>): AXPFileUploaderEditDialogOptions | undefined;
|
|
447
|
+
declare function isFileUploaderEditDialogAuto(editDialog?: AXPFileUploaderEditDialogOptions): boolean;
|
|
448
|
+
declare function hasFileUploaderTitleOrDescriptionFields(editDialog?: AXPFileUploaderEditDialogOptions): boolean;
|
|
407
449
|
|
|
408
|
-
declare class
|
|
409
|
-
private
|
|
410
|
-
private
|
|
411
|
-
private
|
|
412
|
-
private
|
|
413
|
-
private
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
private readonly
|
|
421
|
-
private
|
|
422
|
-
|
|
423
|
-
readonly
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
private
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
450
|
+
declare class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent<AXPFileListItem[]> {
|
|
451
|
+
private readonly queryExecutor;
|
|
452
|
+
private readonly entityResolver;
|
|
453
|
+
private readonly formatService;
|
|
454
|
+
private readonly translation;
|
|
455
|
+
private readonly debug;
|
|
456
|
+
protected readonly fileListTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
|
|
457
|
+
protected readonly fileListPopover: _angular_core.Signal<AXPopoverComponent | undefined>;
|
|
458
|
+
protected readonly popoverFiles: _angular_core.WritableSignal<AXPFileListItem[]>;
|
|
459
|
+
protected readonly loadStatus: _angular_core.WritableSignal<"idle" | "loading" | "ready" | "error">;
|
|
460
|
+
protected readonly loadError: _angular_core.WritableSignal<string | null>;
|
|
461
|
+
protected readonly isPopoverOpen: _angular_core.WritableSignal<boolean>;
|
|
462
|
+
private readonly entityDef;
|
|
463
|
+
private popoverLoadRequestId;
|
|
464
|
+
private previousRowId;
|
|
465
|
+
protected readonly entityScope: _angular_core.Signal<_acorex_platform_framework_client_layout_entity.AXPFileUploaderEntityFilesScope | undefined>;
|
|
466
|
+
protected readonly attachmentFieldPath: _angular_core.Signal<string | undefined>;
|
|
467
|
+
protected readonly inlineFieldPresent: _angular_core.Signal<boolean>;
|
|
468
|
+
protected readonly fileCount: _angular_core.Signal<number>;
|
|
469
|
+
/** Clickable when count is unknown or zero — opens popover (lazy load or inline empty). */
|
|
470
|
+
protected readonly showAttachmentsLink: _angular_core.Signal<boolean>;
|
|
471
|
+
protected readonly popoverTitle: _angular_core.Signal<AXPMultiLanguageString>;
|
|
472
|
+
constructor();
|
|
473
|
+
protected openFileListPopover(): void;
|
|
474
|
+
protected onPopoverOpenChange(event: unknown): void;
|
|
475
|
+
private openPopoverFromRef;
|
|
476
|
+
private ensurePopoverFilesLoaded;
|
|
477
|
+
private coercePopoverOpenEvent;
|
|
478
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetColumnComponent, never>;
|
|
479
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetColumnComponent, "axp-file-uploader-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent<AXPFileListItem[] | undefined> {
|
|
483
|
+
private readonly hooks;
|
|
484
|
+
private readonly chooserService;
|
|
485
|
+
private readonly commandExecutor;
|
|
486
|
+
private readonly toastService;
|
|
487
|
+
private readonly translateService;
|
|
488
|
+
private readonly dirtyChangeSubject;
|
|
489
|
+
private readonly uploadActionsChangeSubject;
|
|
490
|
+
private readonly savedSnapshot;
|
|
491
|
+
private readonly baselineFingerprint;
|
|
492
|
+
private readonly baselinePendingReconcile;
|
|
493
|
+
private readonly isDirtySignal;
|
|
494
|
+
private skipDirtyEvaluation;
|
|
495
|
+
/** Status before soft-delete; used for restore when baseline was not synced (section layout). */
|
|
496
|
+
private readonly statusBeforeDelete;
|
|
497
|
+
private readonly autoBaselineSynced;
|
|
498
|
+
/** Sync baseline from context when not wired by a deferred-save page (section layout). */
|
|
499
|
+
private readonly baselineInitEffect;
|
|
500
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
501
|
+
private readonly acceptOverride;
|
|
502
|
+
protected accept: _angular_core.Signal<string>;
|
|
503
|
+
protected plugins: _angular_core.Signal<{
|
|
504
|
+
name: string;
|
|
505
|
+
options?: unknown;
|
|
506
|
+
}[]>;
|
|
507
|
+
protected excludePlugins: _angular_core.Signal<string[]>;
|
|
508
|
+
protected fileEditable: _angular_core.Signal<boolean>;
|
|
509
|
+
protected editDialog: _angular_core.Signal<_acorex_platform_framework_client_layout_entity.AXPFileUploaderEditDialogOptions | undefined>;
|
|
510
|
+
protected enableTitleDescription: _angular_core.Signal<boolean>;
|
|
511
|
+
/** When mode is `auto`, show the edit dialog after each file select. */
|
|
512
|
+
protected showEditDialogAfterSelect: _angular_core.Signal<boolean>;
|
|
513
|
+
protected readonly: _angular_core.Signal<boolean>;
|
|
514
|
+
protected showBorder: _angular_core.Signal<boolean>;
|
|
515
|
+
protected showAddItemButton: _angular_core.Signal<boolean>;
|
|
516
|
+
protected maxFileSize: _angular_core.Signal<number>;
|
|
517
|
+
protected isDragOver: _angular_core.WritableSignal<boolean>;
|
|
518
|
+
protected readonly isChoosing: _angular_core.WritableSignal<boolean>;
|
|
519
|
+
protected readonly chooserContext: _angular_core.Signal<AXPFileChooserContext>;
|
|
520
|
+
ngOnInit(): void;
|
|
521
|
+
setValue(value: AXPFileListItem[] | null | undefined): void;
|
|
522
|
+
/** Align dirty baseline with persisted attachments (call when record loads or after discard remount). */
|
|
523
|
+
syncBaseline(saved: AXPFileListItem[] | undefined): void;
|
|
524
|
+
/** Mark current list as saved; clears dirty and drops soft-deleted rows from the UI. */
|
|
525
|
+
markSaved(): void;
|
|
526
|
+
/** Revert widget value to last saved baseline. */
|
|
527
|
+
discardToBaseline(): void;
|
|
528
|
+
api(): AXPWidgetCoreElementAPI;
|
|
529
|
+
/** Current choose actions for host pages (device, drive, and other registered providers). */
|
|
530
|
+
getUploadActionDescriptors(): AXPFileUploaderUploadActionDescriptor[];
|
|
531
|
+
runUploadActionByPlugin(providerKey: string): Promise<void>;
|
|
532
|
+
private notifyUploadActionsChanged;
|
|
533
|
+
private evaluateDirty;
|
|
534
|
+
private setDirty;
|
|
535
|
+
protected onChooserItemsChanged(next: AXPFileListItem[]): Promise<void>;
|
|
536
|
+
private configureFromHooks;
|
|
454
537
|
/**
|
|
455
|
-
*
|
|
538
|
+
* Process items returned from file chooser providers (device, drive, etc.).
|
|
456
539
|
*/
|
|
457
|
-
|
|
540
|
+
private processChosenItems;
|
|
458
541
|
/**
|
|
459
|
-
*
|
|
542
|
+
* Process files from drag-drop.
|
|
543
|
+
* When showEditDialogAfterSelect is true, the edit dialog (with plugin hooks) is shown per file before adding; otherwise files are added and user can edit via Edit button.
|
|
460
544
|
*/
|
|
461
|
-
|
|
545
|
+
private processFiles;
|
|
546
|
+
/**
|
|
547
|
+
* Show edit dialog per file and add only those submitted. Used when showEditDialogAfterSelect is true (both from zone and from dropdown actions).
|
|
548
|
+
*/
|
|
549
|
+
private addFilesWithEditDialogAsync;
|
|
550
|
+
private fileFromListItem;
|
|
551
|
+
private validateListItemsForUpload;
|
|
552
|
+
private notifyRejectedFiles;
|
|
553
|
+
private filterFilesByAcceptAndMaxSize;
|
|
554
|
+
private isUnrestrictedAccept;
|
|
555
|
+
private fileMatchesAccept;
|
|
556
|
+
private matchesMimePattern;
|
|
557
|
+
private matchesCategoryByExtension;
|
|
558
|
+
protected files: _angular_core.Signal<AXPFileListItem[]>;
|
|
559
|
+
handleFileRemove(file: AXPFileListItem): void;
|
|
560
|
+
removeFile(file: AXPFileListItem): void;
|
|
561
|
+
/**
|
|
562
|
+
* Revert a deleted file back to its pre-delete status.
|
|
563
|
+
*/
|
|
564
|
+
handleFileRevert(file: AXPFileListItem): void;
|
|
565
|
+
private resolveRestoredStatus;
|
|
566
|
+
/**
|
|
567
|
+
* Handle file rename action. Persists name/title/description to file storage immediately when edited
|
|
568
|
+
* so they are saved even if the entity payload does not carry these fields.
|
|
569
|
+
*/
|
|
570
|
+
handleFileRename(file: AXPFileListItem): void;
|
|
571
|
+
clear(): void;
|
|
572
|
+
protected readonly capabilities: AXCFileUploaderCapabilities;
|
|
573
|
+
private addFilesWithValidation;
|
|
574
|
+
onFileChange(event: AXUploaderFileChangeEvent): void;
|
|
575
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetEditComponent, never>;
|
|
576
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetEditComponent, "axp-file-uploader-widget-edit", never, {}, {}, never, never, true, never>;
|
|
462
577
|
}
|
|
463
578
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
private readonly eventService;
|
|
470
|
-
dispatchEntityEvent(operation: 'inserted' | 'updated' | 'deleted', entityName: string, data: any): Promise<void>;
|
|
471
|
-
private getAllMatchingEventKeys;
|
|
472
|
-
private findMatchingWildcardKeys;
|
|
473
|
-
private matchesEntityPattern;
|
|
474
|
-
private generateEventKeys;
|
|
475
|
-
dispatchInserted(entityName: string, data: any): Promise<void>;
|
|
476
|
-
dispatchUpdated(entityName: string, data: any): Promise<void>;
|
|
477
|
-
dispatchDeleted(entityName: string, data: any): Promise<void>;
|
|
478
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityEventDispatcherService, never>;
|
|
479
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
|
|
579
|
+
declare class AXPFileUploaderWidgetViewComponent extends AXPValueWidgetComponent<AXPFileListItem[]> {
|
|
580
|
+
protected files: _angular_core.Signal<AXPFileListItem[]>;
|
|
581
|
+
private get __class();
|
|
582
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetViewComponent, never>;
|
|
583
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetViewComponent, "axp-file-uploader-widget-view", never, {}, {}, never, never, true, never>;
|
|
480
584
|
}
|
|
481
585
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
586
|
+
declare const AXPFileUploaderWidget: AXPWidgetConfig;
|
|
587
|
+
interface AXPFileUploaderWidgetDesignerOptions {
|
|
588
|
+
multiple?: boolean;
|
|
589
|
+
accept?: string;
|
|
590
|
+
plugins?: {
|
|
591
|
+
name: string;
|
|
592
|
+
options?: unknown;
|
|
593
|
+
}[];
|
|
594
|
+
excludePlugins?: string[];
|
|
595
|
+
readonly?: boolean;
|
|
596
|
+
fileEditable?: boolean;
|
|
597
|
+
maxFileSize?: number;
|
|
598
|
+
enableTitleDescription?: boolean;
|
|
599
|
+
showEditDialogAfterSelect?: boolean;
|
|
600
|
+
showBorder?: boolean;
|
|
601
|
+
showAddItemButton?: boolean;
|
|
602
|
+
}
|
|
603
|
+
interface AXPFileUploaderWidgetViewOptions {
|
|
604
|
+
}
|
|
605
|
+
interface AXPFileUploaderWidgetEditOptions {
|
|
606
|
+
multiple?: boolean;
|
|
607
|
+
accept?: string;
|
|
608
|
+
plugins?: {
|
|
609
|
+
name: string;
|
|
610
|
+
options?: unknown;
|
|
611
|
+
}[];
|
|
612
|
+
excludePlugins?: string[];
|
|
613
|
+
readonly?: boolean;
|
|
614
|
+
fileEditable?: boolean;
|
|
615
|
+
maxFileSize?: number;
|
|
616
|
+
enableTitleDescription?: boolean;
|
|
617
|
+
showEditDialogAfterSelect?: boolean;
|
|
618
|
+
showBorder?: boolean;
|
|
619
|
+
showAddItemButton?: boolean;
|
|
620
|
+
}
|
|
621
|
+
interface AXPFileUploaderWidgetColumnOptions {
|
|
622
|
+
}
|
|
623
|
+
interface AXPFileUploaderWidgetPrintOptions {
|
|
624
|
+
}
|
|
625
|
+
interface AXPFileUploaderWidgetOptions {
|
|
626
|
+
designer: AXPFileUploaderWidgetDesignerOptions;
|
|
627
|
+
view: AXPFileUploaderWidgetViewOptions;
|
|
628
|
+
edit: AXPFileUploaderWidgetEditOptions;
|
|
629
|
+
print: AXPFileUploaderWidgetPrintOptions;
|
|
630
|
+
column: AXPFileUploaderWidgetColumnOptions;
|
|
631
|
+
}
|
|
632
|
+
declare module '@acorex-platform/framework-shared/widget-core' {
|
|
633
|
+
interface AXPWidgetTypesMap {
|
|
634
|
+
attachments: 'attachments';
|
|
635
|
+
}
|
|
636
|
+
}
|
|
489
637
|
|
|
490
|
-
interface
|
|
491
|
-
|
|
638
|
+
interface AXPFileUploaderShowFileListEntityContext extends AXPFileUploaderEntityFilesScope {
|
|
639
|
+
}
|
|
640
|
+
interface AXPFileUploaderShowFileListOptions {
|
|
641
|
+
/** When set, files are loaded and saved via FileUploader:LoadFiles / FileUploader:SaveFiles. */
|
|
642
|
+
entity?: AXPFileUploaderShowFileListEntityContext;
|
|
643
|
+
/** Direct files (e.g. grid column preview); skips load/save commands. */
|
|
644
|
+
files?: AXPFileListItem[];
|
|
645
|
+
readonly?: boolean;
|
|
646
|
+
multiple?: boolean;
|
|
647
|
+
accept?: string;
|
|
648
|
+
fileEditable?: boolean;
|
|
649
|
+
maxFileSize?: number;
|
|
650
|
+
showAddItemButton?: boolean;
|
|
651
|
+
plugins?: {
|
|
652
|
+
name: string;
|
|
653
|
+
options?: unknown;
|
|
654
|
+
}[];
|
|
655
|
+
editDialog?: AXPFileUploaderEditDialogOptions;
|
|
656
|
+
}
|
|
657
|
+
declare class AXPFileUploaderWidgetService {
|
|
658
|
+
private popupService;
|
|
659
|
+
private translate;
|
|
660
|
+
private commandExecutor;
|
|
661
|
+
private queryExecutor;
|
|
662
|
+
showFileList(options?: AXPFileUploaderShowFileListOptions): Promise<AXPFileListItem[] | undefined>;
|
|
663
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetService, never>;
|
|
664
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderWidgetService>;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
interface AXPShowFileUploaderPopupCommandInput {
|
|
668
|
+
options?: {
|
|
669
|
+
key?: string;
|
|
670
|
+
readonly?: boolean | string;
|
|
671
|
+
readOnly?: boolean | string;
|
|
672
|
+
multiple?: boolean;
|
|
673
|
+
accept?: string;
|
|
674
|
+
maxFileSize?: number;
|
|
675
|
+
fileEditable?: boolean;
|
|
676
|
+
showAddItemButton?: boolean;
|
|
677
|
+
editDialog?: AXPFileUploaderEditDialogOptions;
|
|
678
|
+
plugins?: {
|
|
679
|
+
name: string;
|
|
680
|
+
options?: unknown;
|
|
681
|
+
}[];
|
|
682
|
+
entity?: {
|
|
683
|
+
name?: string;
|
|
684
|
+
id?: string;
|
|
685
|
+
field?: string;
|
|
686
|
+
};
|
|
687
|
+
entityName?: string;
|
|
688
|
+
id?: string;
|
|
689
|
+
};
|
|
690
|
+
entity?: string;
|
|
691
|
+
__context__?: {
|
|
692
|
+
entity?: string;
|
|
693
|
+
options?: AXPShowFileUploaderPopupCommandInput['options'];
|
|
694
|
+
};
|
|
695
|
+
__metadata__?: unknown;
|
|
492
696
|
}
|
|
493
697
|
/**
|
|
494
|
-
*
|
|
495
|
-
|
|
496
|
-
declare function getEntityListRowId(data: Record<string, unknown>, key?: string): string;
|
|
497
|
-
/**
|
|
498
|
-
* Finds row data in a hierarchical grid tree (root rows and nested children).
|
|
698
|
+
* Opens the file uploader popup, saves files, then dispatches modify side-effects.
|
|
699
|
+
* Replaces the former `show-file-uploader-popup` workflow (popup + toast + modify confirmed).
|
|
499
700
|
*/
|
|
500
|
-
declare
|
|
701
|
+
declare class AXPShowFileUploaderPopupCommand implements AXPCommand<AXPShowFileUploaderPopupCommandInput, AXPExecuteCommandResult> {
|
|
702
|
+
private readonly fileUploaderWidgetService;
|
|
703
|
+
private readonly toastService;
|
|
704
|
+
private readonly translationService;
|
|
705
|
+
private readonly settingsService;
|
|
706
|
+
private readonly workflowEventService;
|
|
707
|
+
execute(input?: AXPShowFileUploaderPopupCommandInput): Promise<AXPExecuteCommandResult>;
|
|
708
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowFileUploaderPopupCommand, never>;
|
|
709
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowFileUploaderPopupCommand>;
|
|
710
|
+
}
|
|
711
|
+
|
|
501
712
|
/**
|
|
502
|
-
*
|
|
713
|
+
* Build-time only. Do not import from Angular modules.
|
|
503
714
|
*/
|
|
504
|
-
declare
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
715
|
+
declare const axpShowFileUploaderPopupCommandDefinition: {
|
|
716
|
+
key: string;
|
|
717
|
+
title: string;
|
|
718
|
+
description: string;
|
|
719
|
+
executionMode: "frontend";
|
|
720
|
+
inputs: {
|
|
721
|
+
name: string;
|
|
722
|
+
title: string;
|
|
723
|
+
description: string;
|
|
724
|
+
interface: {
|
|
725
|
+
name: string;
|
|
726
|
+
};
|
|
727
|
+
}[];
|
|
728
|
+
outcomes: {
|
|
729
|
+
mode: "static";
|
|
730
|
+
values: string[];
|
|
731
|
+
};
|
|
732
|
+
ai: {
|
|
733
|
+
tags: string[];
|
|
734
|
+
};
|
|
735
|
+
categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
|
|
736
|
+
};
|
|
510
737
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
738
|
+
declare class AXPUpdateEntityCommand implements AXPCommand<any, any> {
|
|
739
|
+
private readonly entityForm;
|
|
740
|
+
private readonly settingsService;
|
|
741
|
+
private readonly entityService;
|
|
742
|
+
private readonly toastService;
|
|
743
|
+
private readonly translationService;
|
|
744
|
+
private readonly formatService;
|
|
745
|
+
private readonly expressionEvaluator;
|
|
746
|
+
private readonly contextEvalFactory;
|
|
747
|
+
private readonly workflowEventService;
|
|
748
|
+
execute(input: any): Promise<AXPExecuteCommandResult<any>>;
|
|
749
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPUpdateEntityCommand, never>;
|
|
750
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPUpdateEntityCommand>;
|
|
514
751
|
}
|
|
515
|
-
/**
|
|
516
|
-
* Applies take/skip to the data source without triggering {@link AXDataSource.load}.
|
|
517
|
-
*/
|
|
518
|
-
declare function applyDataSourcePagingWithoutLoad(dataSource: AXDataSource, paging: AXPEntityListPagingState): void;
|
|
519
|
-
declare function getDataSourcePageIndex(dataSource: AXDataSource): number;
|
|
520
|
-
declare function normalizeListPaging(paging: Partial<AXPEntityListPagingState> | undefined, defaultTake: number): AXPEntityListPagingState;
|
|
521
|
-
|
|
522
|
-
/** How entity list UI state (columns, filters, paging, etc.) is persisted for the user. */
|
|
523
|
-
type AXPEntityListPersistenceMode = 'none' | 'persistent' | 'route';
|
|
524
|
-
declare const AXPEntityListPersistenceModeDefault: AXPEntityListPersistenceMode;
|
|
525
|
-
declare function normalizeEntityListPersistenceMode(value: unknown): AXPEntityListPersistenceMode;
|
|
526
|
-
declare function canPersistEntityListState(mode: AXPEntityListPersistenceMode): boolean;
|
|
527
|
-
/** `none` never reads list state from user settings. */
|
|
528
|
-
declare function shouldLoadEntityListStateFromStorage(mode: AXPEntityListPersistenceMode): boolean;
|
|
529
|
-
/** `route` clears stored list state when the route entity (module + name) changes. */
|
|
530
|
-
declare function shouldResetEntityListStateOnRouteEntry(mode: AXPEntityListPersistenceMode): boolean;
|
|
531
|
-
declare const ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY = "axp-entity-list-route-context";
|
|
532
752
|
|
|
533
|
-
declare class
|
|
534
|
-
private
|
|
535
|
-
private
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
declare class AXPEntityCreateViewElementViewModel {
|
|
545
|
-
private entity;
|
|
546
|
-
private section;
|
|
547
|
-
private property;
|
|
548
|
-
private createProp;
|
|
549
|
-
constructor(entity: AXPEntity, section: AXPEntityCreateViewSectionViewModel, property: AXPEntityProperty, createProp: AXPEntityPropertyCreateView);
|
|
550
|
-
name: _angular_core.WritableSignal<string>;
|
|
551
|
-
title: _angular_core.WritableSignal<string>;
|
|
552
|
-
description: _angular_core.WritableSignal<string | undefined>;
|
|
553
|
-
editable: _angular_core.Signal<boolean>;
|
|
554
|
-
isVisible: _angular_core.Signal<string | boolean>;
|
|
555
|
-
isRequired: _angular_core.Signal<boolean>;
|
|
556
|
-
layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
|
|
557
|
-
node: _angular_core.Signal<AXPWidgetNode>;
|
|
558
|
-
}
|
|
559
|
-
declare class AXPEntityMasterCreateViewModel {
|
|
560
|
-
private readonly injector;
|
|
561
|
-
private readonly config;
|
|
562
|
-
private readonly initialData;
|
|
563
|
-
private readonly commandOptions;
|
|
564
|
-
private entityDef;
|
|
565
|
-
private workflow;
|
|
566
|
-
private expressionEvaluator;
|
|
567
|
-
builder: AXPWidgetCoreService;
|
|
568
|
-
constructor(injector: Injector, config: AXPEntity, initialData: any | undefined, commandOptions: any);
|
|
569
|
-
context: _angular_core.WritableSignal<any>;
|
|
570
|
-
options: _angular_core.WritableSignal<any>;
|
|
571
|
-
isInProgress: _angular_core.WritableSignal<boolean>;
|
|
572
|
-
canCreateNewOne: _angular_core.WritableSignal<boolean>;
|
|
573
|
-
redirect: _angular_core.WritableSignal<boolean>;
|
|
574
|
-
sections: _angular_core.Signal<AXPEntityCreateViewSectionViewModel[]>;
|
|
575
|
-
save(): Promise<any | void>;
|
|
576
|
-
createNewOne(): Promise<void>;
|
|
577
|
-
}
|
|
578
|
-
declare class AXPEntityCreateViewModelFactory {
|
|
579
|
-
private entityService;
|
|
580
|
-
private layout;
|
|
581
|
-
private injector;
|
|
582
|
-
create(moduleName: string, entityName: string, initialData?: any, options?: {
|
|
583
|
-
canCreateNewOne: boolean;
|
|
584
|
-
redirect: boolean;
|
|
585
|
-
}): Promise<AXPEntityMasterCreateViewModel>;
|
|
586
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreateViewModelFactory, never>;
|
|
587
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreateViewModelFactory>;
|
|
753
|
+
declare class AXPViewEntityDetailsCommand implements AXPCommand<any, any> {
|
|
754
|
+
private readonly entityForm;
|
|
755
|
+
private readonly entityService;
|
|
756
|
+
private readonly translationService;
|
|
757
|
+
private readonly expressionEvaluator;
|
|
758
|
+
private readonly contextEvalFactory;
|
|
759
|
+
execute(input: any): Promise<AXPExecuteCommandResult<any>>;
|
|
760
|
+
private resolveDialogTitle;
|
|
761
|
+
private loadRecordContext;
|
|
762
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPViewEntityDetailsCommand, never>;
|
|
763
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPViewEntityDetailsCommand>;
|
|
588
764
|
}
|
|
589
765
|
|
|
590
|
-
|
|
591
|
-
|
|
766
|
+
interface AXPOpenEntityDetailsCommandInput {
|
|
767
|
+
entity?: string;
|
|
768
|
+
data?: {
|
|
769
|
+
id: string;
|
|
770
|
+
};
|
|
771
|
+
__context__?: {
|
|
772
|
+
entity?: string;
|
|
773
|
+
data?: {
|
|
774
|
+
id: string;
|
|
775
|
+
};
|
|
776
|
+
};
|
|
777
|
+
}
|
|
592
778
|
/**
|
|
593
|
-
*
|
|
779
|
+
* Generic command to open entity details view
|
|
780
|
+
* Can be used by any entity to navigate to its detail page
|
|
594
781
|
*/
|
|
595
|
-
declare
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
interface AXPEntityMasterListCardSecondaryActionItem {
|
|
606
|
-
name: string;
|
|
607
|
-
title: string;
|
|
608
|
-
icon?: string;
|
|
609
|
-
color?: string;
|
|
610
|
-
disabled?: boolean | string;
|
|
611
|
-
divided?: boolean;
|
|
612
|
-
isCardSelect?: boolean;
|
|
613
|
-
}
|
|
614
|
-
declare class AXPEntityMasterListViewQueryViewModel {
|
|
615
|
-
private entity;
|
|
616
|
-
private section;
|
|
617
|
-
private view;
|
|
618
|
-
constructor(entity: AXPEntity, section: AXPEntityMasterListViewModel, view: AXPQueryView);
|
|
619
|
-
name: string;
|
|
620
|
-
title: string;
|
|
621
|
-
sorts: _acorex_platform_framework_shared_entity.AXPQuerySort[];
|
|
622
|
-
columns: string[];
|
|
623
|
-
conditions: _acorex_platform_framework_shared_entity.AXPQueryFilter[];
|
|
624
|
-
indexCol: boolean | undefined;
|
|
625
|
-
pageSize: number | undefined;
|
|
782
|
+
declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput, AXPExecuteCommandResult> {
|
|
783
|
+
private readonly router;
|
|
784
|
+
private readonly sessionService;
|
|
785
|
+
/**
|
|
786
|
+
* Execute the command to navigate to entity details
|
|
787
|
+
* @param input - Command input containing entity and data information
|
|
788
|
+
*/
|
|
789
|
+
execute(input?: AXPOpenEntityDetailsCommandInput): Promise<AXPExecuteCommandResult>;
|
|
790
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityDetailsCommand, never>;
|
|
791
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
|
|
626
792
|
}
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
private
|
|
630
|
-
readonly
|
|
631
|
-
private readonly _viewDef;
|
|
793
|
+
|
|
794
|
+
declare class AXPEntityDetailPopoverComponent {
|
|
795
|
+
private readonly commandService;
|
|
796
|
+
private readonly queryService;
|
|
632
797
|
private readonly formatService;
|
|
633
|
-
private readonly
|
|
634
|
-
private readonly workflow;
|
|
635
|
-
private readonly settings;
|
|
636
|
-
private readonly widgetResolver;
|
|
798
|
+
private readonly translation;
|
|
637
799
|
private readonly expressionEvaluator;
|
|
638
800
|
private readonly contextEvalFactory;
|
|
639
|
-
private readonly
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
private
|
|
651
|
-
/**
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
/** Resolved take/skip for the current view (null until loaded from settings). */
|
|
656
|
-
private readonly resolvedListPaging;
|
|
657
|
-
/** When true, pager changes are not persisted (programmatic UI sync). */
|
|
658
|
-
skipListPagingPersistence: boolean;
|
|
659
|
-
private listPersistenceMode;
|
|
660
|
-
events$: Subject<{
|
|
661
|
-
action: string;
|
|
662
|
-
meta?: any;
|
|
663
|
-
}>;
|
|
664
|
-
views: _angular_core.Signal<AXPEntityMasterListViewQueryViewModel[]>;
|
|
665
|
-
view: _angular_core.WritableSignal<AXPEntityMasterListViewQueryViewModel>;
|
|
666
|
-
private readonly showRowIndexColumnEnabled;
|
|
801
|
+
private readonly changeDetectorRef;
|
|
802
|
+
entity: _angular_core.InputSignal<string>;
|
|
803
|
+
entityId: _angular_core.InputSignal<string | number>;
|
|
804
|
+
textField: _angular_core.InputSignal<string>;
|
|
805
|
+
valueField: _angular_core.InputSignal<string>;
|
|
806
|
+
displayTitle: _angular_core.InputSignal<string>;
|
|
807
|
+
item: _angular_core.InputSignal<AXPMetaData | undefined>;
|
|
808
|
+
breadcrumb: _angular_core.InputSignal<string | null>;
|
|
809
|
+
requestClose: _angular_core.InputSignal<(() => void) | undefined>;
|
|
810
|
+
protected entityDetails: _angular_core.WritableSignal<any>;
|
|
811
|
+
protected isLoadingDetails: _angular_core.WritableSignal<boolean>;
|
|
812
|
+
private headerTitleVersion;
|
|
813
|
+
/** Placeholder rows for the loading skeleton (matches typical property count). */
|
|
814
|
+
protected readonly loadingSkeletonRows: readonly [1, 2, 3, 4, 5];
|
|
815
|
+
protected readonly headerTitle: _angular_core.WritableSignal<string>;
|
|
816
|
+
constructor();
|
|
667
817
|
/**
|
|
668
|
-
*
|
|
669
|
-
*
|
|
818
|
+
* Stable list of property widgets for the template. Must be a signal (computed), not a method:
|
|
819
|
+
* calling a method from the template rebuilds nodes every CD cycle and can make the widget renderer loop.
|
|
670
820
|
*/
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
enabledListLayouts: _angular_core.Signal<AXPEntityMasterListLayoutType[]>;
|
|
674
|
-
/** True when the user can switch between multiple enabled layouts. */
|
|
675
|
-
canSwitchListLayout: _angular_core.Signal<boolean>;
|
|
676
|
-
/** Active list layout for the current view. */
|
|
677
|
-
activeListLayout: _angular_core.WritableSignal<AXPEntityMasterListLayoutType>;
|
|
678
|
-
tableLayout: _angular_core.Signal<{
|
|
679
|
-
enabled?: boolean;
|
|
680
|
-
columns: AXPEntityTableColumn[];
|
|
681
|
-
cssClass?: {
|
|
682
|
-
row?: AXPExpression;
|
|
683
|
-
cell?: AXPExpression;
|
|
684
|
-
};
|
|
685
|
-
} | undefined>;
|
|
686
|
-
cardLayout: _angular_core.Signal<{
|
|
687
|
-
enabled?: boolean;
|
|
688
|
-
header: {
|
|
689
|
-
title?: string;
|
|
690
|
-
description?: string;
|
|
691
|
-
icon?: string;
|
|
692
|
-
};
|
|
693
|
-
fields: AXPCardField[];
|
|
694
|
-
} | undefined>;
|
|
695
|
-
/** Global expanded state for all card bodies in card layout. */
|
|
696
|
-
cardContentExpanded: _angular_core.WritableSignal<boolean>;
|
|
697
|
-
/** Current presentation mode (table, compact cards, or expanded cards). */
|
|
698
|
-
listDisplayMode: _angular_core.Signal<AXPEntityMasterListDisplayMode>;
|
|
699
|
-
/**
|
|
700
|
-
* Sets global card body visibility for card layout.
|
|
701
|
-
*/
|
|
702
|
-
setCardContentExpanded(expanded: boolean): void;
|
|
703
|
-
/**
|
|
704
|
-
* Switches table vs compact/expanded card presentation.
|
|
705
|
-
*/
|
|
706
|
-
setListDisplayMode(mode: AXPEntityMasterListDisplayMode): void;
|
|
707
|
-
/** Enabled layouts with display metadata for the title layout switcher. */
|
|
708
|
-
availableListLayouts: _angular_core.Signal<AXPEntityMasterListLayoutOption[]>;
|
|
709
|
-
/** Active layout option (for title icon and switcher selection state). */
|
|
710
|
-
currentListLayout: _angular_core.Signal<AXPEntityMasterListLayoutOption | null>;
|
|
711
|
-
private static readonly LAYOUT_META;
|
|
712
|
-
/**
|
|
713
|
-
* Switches to the given layout when it is enabled.
|
|
714
|
-
* Persists the choice at entity list level (shared across all views).
|
|
715
|
-
*/
|
|
716
|
-
setListLayout(layout: AXPEntityMasterListLayoutType): void;
|
|
717
|
-
/**
|
|
718
|
-
* Cycles to the next enabled layout (table → card → table …).
|
|
719
|
-
* No-op when only one layout is enabled.
|
|
720
|
-
*/
|
|
721
|
-
switchListLayout(): AXPEntityMasterListLayoutType;
|
|
722
|
-
private resolveActiveListLayout;
|
|
723
|
-
private applyListLayoutFromSettings;
|
|
724
|
-
private createLogicExpressionScope;
|
|
725
|
-
private createDisplayExpressionScope;
|
|
726
|
-
private resolveCommandNameExpression;
|
|
727
|
-
private resolveTitleExpression;
|
|
728
|
-
/**
|
|
729
|
-
* Resolves a card header value (title, description, icon) from a property path, expression, or literal.
|
|
730
|
-
* Supports multiple `{{ ... }}` segments in one string (e.g. `{{context.eval("a")}} - {{context.eval("b")}}`).
|
|
731
|
-
* Multi-language maps (e.g. `{ "en-US": "...", "fa-IR": "..." }`) are returned as-is for the translate pipe.
|
|
732
|
-
*/
|
|
733
|
-
resolveCardHeaderValue(value: string | undefined, rowData: unknown): Promise<AXPMultiLanguageString>;
|
|
734
|
-
/**
|
|
735
|
-
* Keeps i18n payloads intact for `translate`; coerces only plain scalars to string.
|
|
736
|
-
*/
|
|
737
|
-
private normalizeCardHeaderDisplayValue;
|
|
738
|
-
/**
|
|
739
|
-
* Resolves badge color for a card header field (semantic token or expression per row).
|
|
740
|
-
*/
|
|
741
|
-
resolveCardBadgeColor(field: AXPEntityListViewCardFieldViewModel, rowData: unknown): Promise<AXStyleColorType>;
|
|
742
|
-
private resolveCardBadgeColorValue;
|
|
743
|
-
/**
|
|
744
|
-
* Resolves table row CSS classes from `layouts.table.cssClass.row` for the given row.
|
|
745
|
-
*/
|
|
746
|
-
resolveTableRowCssClass(rowData: unknown): Promise<string | undefined>;
|
|
747
|
-
/**
|
|
748
|
-
* Resolves table cell CSS classes from `layouts.table.cssClass.cell` for the given row and column.
|
|
749
|
-
*/
|
|
750
|
-
resolveTableCellCssClass(rowData: unknown, columnName: string): Promise<string | undefined>;
|
|
751
|
-
private createTableCssClassExpressionScope;
|
|
752
|
-
private resolveTableCssClassValue;
|
|
753
|
-
private normalizeTableCssClassValue;
|
|
754
|
-
private resolveTriggerName;
|
|
755
|
-
setView(viewName?: string | null): Promise<void>;
|
|
756
|
-
dataSource: AXDataSource<any>;
|
|
757
|
-
constructor(injector: Injector, config: AXPEntity);
|
|
758
|
-
private syncShowRowIndexColumnSetting;
|
|
759
|
-
/**
|
|
760
|
-
* Applies {@link AXPCommonSettings.EntityListPersistenceMode} for this list instance.
|
|
761
|
-
* Call once when the list view model is created (before loading list UI state).
|
|
762
|
-
*/
|
|
763
|
-
initializeListPersistence(): Promise<void>;
|
|
764
|
-
getListPersistenceMode(): Promise<AXPEntityListPersistenceMode>;
|
|
765
|
-
shouldLoadPersistedListState(): Promise<boolean>;
|
|
766
|
-
shouldPersistListState(): Promise<boolean>;
|
|
767
|
-
private clearEntityListSettings;
|
|
768
|
-
applySettings(): Promise<void>;
|
|
769
|
-
ensureListPagingResolved(): Promise<void>;
|
|
770
|
-
getResolvedListPaging(): AXPEntityListPagingState;
|
|
771
|
-
applyPagingToDataSourceWithoutLoad(): void;
|
|
772
|
-
saveListPaging(take: number, skip: number): void;
|
|
773
|
-
resetListPagingSkip(): void;
|
|
774
|
-
private loadListPagingFromViewSettings;
|
|
775
|
-
getExpandedRowIds(): string[];
|
|
776
|
-
/**
|
|
777
|
-
* Updates persisted expanded row ids when the user expands or collapses a tree row.
|
|
778
|
-
*/
|
|
779
|
-
updateExpandedRowId(rowId: string, expanded: boolean): void;
|
|
780
|
-
handleRowExpandChange(rowData: Record<string, unknown>): void;
|
|
781
|
-
saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'listPaging' | 'filters' | 'sorts' | 'expandedRows' | 'listLayout' | 'cardContentExpanded', data?: unknown): Promise<void>;
|
|
782
|
-
selectedItems: _angular_core.WritableSignal<any[]>;
|
|
783
|
-
/**
|
|
784
|
-
* Selected category from the category sidebar (left panel).
|
|
785
|
-
* Used to set default category when creating new entities via command.
|
|
786
|
-
* Structure: { id: string; title: string } or null when "All Items" is selected.
|
|
787
|
-
*/
|
|
788
|
-
selectedCategory: _angular_core.WritableSignal<{
|
|
789
|
-
id: string;
|
|
821
|
+
protected readonly entityPropertiesWithWidgets: _angular_core.Signal<{
|
|
822
|
+
name: string;
|
|
790
823
|
title: string;
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
824
|
+
node: AXPWidgetNode;
|
|
825
|
+
}[]>;
|
|
826
|
+
/** Loads entity details after the overlay panel is created. */
|
|
827
|
+
loadDetails(): Promise<void>;
|
|
828
|
+
protected navigateToDetails(): Promise<void>;
|
|
829
|
+
private resolveHeaderTitle;
|
|
830
|
+
private resolveLookupDisplayLabelAsync;
|
|
795
831
|
/**
|
|
796
|
-
*
|
|
797
|
-
* Call with null to clear (e.g. when "All Items" is selected).
|
|
832
|
+
* Returns true if a value is meaningful for display (non-empty/non-null).
|
|
798
833
|
*/
|
|
799
|
-
|
|
800
|
-
id: string;
|
|
801
|
-
title: string;
|
|
802
|
-
} | null): void;
|
|
803
|
-
title: _angular_core.Signal<string>;
|
|
804
|
-
description: _angular_core.Signal<string | null>;
|
|
805
|
-
filterDefinitions: _angular_core.WritableSignal<AXPEntityListFilterDefinition[]>;
|
|
806
|
-
inlineFiltersPlaceholders: _angular_core.Signal<string[]>;
|
|
807
|
-
hasInlineFilters: _angular_core.Signal<boolean>;
|
|
808
|
-
/** Text for data-table cell highlighting (set only after filters are applied). */
|
|
809
|
-
inlineFilterHighlightText: _angular_core.WritableSignal<string>;
|
|
810
|
-
beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
|
|
811
|
-
private allActions;
|
|
812
|
-
/** Keeps the first action when list definitions repeat the same trigger name. */
|
|
813
|
-
private dedupeActionsByName;
|
|
814
|
-
/** Flattened actions including children for execute lookup */
|
|
815
|
-
private flattenedActions;
|
|
816
|
-
getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
817
|
-
getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
818
|
-
selectedScopeActionsCount: _angular_core.Signal<number>;
|
|
819
|
-
primaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
820
|
-
secondaryRowActions(rowData: any): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
834
|
+
private hasMeaningfulValue;
|
|
821
835
|
/**
|
|
822
|
-
*
|
|
836
|
+
* Calculates an importance score for a property based on its widget type,
|
|
837
|
+
* whether it currently has a meaningful value, and metadata like title.
|
|
823
838
|
*/
|
|
824
|
-
|
|
825
|
-
filterQueries: _angular_core.WritableSignal<AXPFilterQuery[]>;
|
|
826
|
-
private static readonly URL_FILTER_OPERATOR_TYPES;
|
|
827
|
-
get properties(): AXPEntityProperty[];
|
|
839
|
+
private getPropertyImportanceScore;
|
|
828
840
|
/**
|
|
829
|
-
*
|
|
841
|
+
* Calculates a name-based importance score to prioritize common key fields
|
|
842
|
+
* like title, description, status, and important dates.
|
|
843
|
+
* Name priority MUST come before widget-type priority.
|
|
830
844
|
*/
|
|
831
|
-
|
|
845
|
+
private getNameImportanceScore;
|
|
846
|
+
private buildEntityPropertiesWithWidgets;
|
|
832
847
|
/**
|
|
833
|
-
*
|
|
848
|
+
* Resolves the data path for a property. For lookups with expose, returns the expanded path
|
|
849
|
+
* when data has it (e.g. personTitle). Otherwise returns property name (e.g. personTitleId).
|
|
834
850
|
*/
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
851
|
+
private resolveDataPath;
|
|
852
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverComponent, never>;
|
|
853
|
+
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; }; "displayTitle": { "alias": "displayTitle"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; "isSignal": true; }; "requestClose": { "alias": "requestClose"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
interface AXPEntityDetailPopoverOptions {
|
|
857
|
+
entity: string;
|
|
858
|
+
id: string | number;
|
|
859
|
+
item: AXPMetaData;
|
|
860
|
+
textField?: string;
|
|
861
|
+
valueField?: string;
|
|
862
|
+
displayTitle?: string;
|
|
863
|
+
breadcrumb?: string;
|
|
864
|
+
}
|
|
865
|
+
declare class AXPEntityDetailPopoverService {
|
|
866
|
+
private readonly overlayService;
|
|
867
|
+
private readonly platform;
|
|
868
|
+
private readonly localeService;
|
|
869
|
+
private readonly document;
|
|
870
|
+
private readonly router;
|
|
871
|
+
private overlayRef;
|
|
872
|
+
private componentRef;
|
|
873
|
+
private anchorElement;
|
|
874
|
+
private outsideClickHandler;
|
|
875
|
+
private keydownHandler;
|
|
876
|
+
private routerSubscription;
|
|
838
877
|
/**
|
|
839
|
-
*
|
|
878
|
+
* Show entity detail popover anchored to the target element.
|
|
840
879
|
*/
|
|
841
|
-
|
|
880
|
+
show(target: ElementRef | HTMLElement, options: AXPEntityDetailPopoverOptions): Promise<void>;
|
|
881
|
+
/** Hide the active popover */
|
|
882
|
+
hide(): void;
|
|
883
|
+
/** Whether a popover is currently active */
|
|
884
|
+
get isActive(): boolean;
|
|
885
|
+
private resolveAnchorElement;
|
|
886
|
+
/** Mirror popover placement for RTL so the panel aligns with the anchor's inline-start edge. */
|
|
887
|
+
private resolveOverlayPlacement;
|
|
888
|
+
private resolveOverlayOffsetX;
|
|
889
|
+
private isRtlContext;
|
|
890
|
+
private bindDismissHandlers;
|
|
891
|
+
/** Ignore clicks on the anchor, overlay panel, or nested dropdown menus. */
|
|
892
|
+
private isInsideInteractiveSurface;
|
|
893
|
+
private removeDismissHandlers;
|
|
894
|
+
private handleOverlayDisposed;
|
|
895
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverService, never>;
|
|
896
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDetailPopoverService>;
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBaseComponent {
|
|
900
|
+
private readonly route;
|
|
901
|
+
private readonly entityService;
|
|
902
|
+
private readonly filterOperatorMiddleware;
|
|
903
|
+
protected readonly noMatchText: _angular_core.WritableSignal<string | null>;
|
|
904
|
+
private vm;
|
|
905
|
+
preloadFiltersDef: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPFilterDefinition[]>;
|
|
906
|
+
hasNoRequiredFilters: _angular_core.Signal<boolean>;
|
|
907
|
+
protected getPageTitle(): string;
|
|
908
|
+
protected getPageDescription(): string | null;
|
|
909
|
+
onApply(event: AXPPreloadFiltersApplyEvent): Promise<void>;
|
|
910
|
+
onShowAll(): Promise<void>;
|
|
911
|
+
private buildPreloadFilterQueries;
|
|
912
|
+
private buildListQueryFilter;
|
|
913
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPreloadFiltersContainerComponent, never>;
|
|
914
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityPreloadFiltersContainerComponent, "axp-entity-preload-filters-container", never, {}, {}, never, never, true, never>;
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* Data source definition provider that returns all entity names
|
|
919
|
+
* from entity loaders' list() (const.ts in each module).
|
|
920
|
+
*/
|
|
921
|
+
declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefinitionProvider {
|
|
922
|
+
private readonly entityResolver;
|
|
923
|
+
items(): Promise<AXPDataSourceDefinition[]>;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
/**
|
|
927
|
+
* Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
|
|
928
|
+
* tabs): meta-data-builder → attachments → gallery → documents → comments → dashboard → history.
|
|
929
|
+
*/
|
|
930
|
+
type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'gallery' | 'documents' | 'comments' | 'dashboard' | 'history';
|
|
931
|
+
/** Identifies an `entity.pages` entry when skipping its order during recomputation. */
|
|
932
|
+
interface SkipEntityComponentPageRef {
|
|
933
|
+
componentKey: string;
|
|
934
|
+
/** When set, only the page with this `field` is skipped (e.g. attachments / meta-data per field). */
|
|
935
|
+
field?: string;
|
|
936
|
+
}
|
|
937
|
+
interface ResolveEntityPluginDetailPageOrderOptions {
|
|
938
|
+
/** Component key of the page being added or updated (used to count sibling tabs in the same slot). */
|
|
939
|
+
componentKey: string;
|
|
842
940
|
/**
|
|
843
|
-
*
|
|
941
|
+
* Ignore this page when counting siblings / recomputing (the page currently being updated).
|
|
844
942
|
*/
|
|
845
|
-
|
|
943
|
+
skipPage?: SkipEntityComponentPageRef;
|
|
846
944
|
/**
|
|
847
|
-
*
|
|
945
|
+
* Field name for multi-page slots (`attachments`, `meta-data-builder`). Omit for single-tab slots.
|
|
848
946
|
*/
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
947
|
+
field?: string;
|
|
948
|
+
/** Gap between auto-assigned related tab orders. Default: 10. */
|
|
949
|
+
relatedOrderStep?: number;
|
|
950
|
+
/** Minimum start of the plugin zone (after related tabs). Default: 100_000. */
|
|
951
|
+
pluginZoneFloor?: number;
|
|
952
|
+
}
|
|
953
|
+
/**
|
|
954
|
+
* Resolves `layout.order` for a built-in plugin detail tab (`entity.pages`).
|
|
955
|
+
*
|
|
956
|
+
* 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
|
|
957
|
+
* `order` (the composer otherwise treats them as +Infinity).
|
|
958
|
+
* 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
|
|
959
|
+
* comments → history, after all related tabs.
|
|
960
|
+
*/
|
|
961
|
+
declare function resolveEntityPluginDetailPageOrder(input: {
|
|
962
|
+
relatedEntities?: AXPRelatedEntity[];
|
|
963
|
+
pages?: Array<AXPEntityPage & {
|
|
964
|
+
field?: string;
|
|
965
|
+
}>;
|
|
966
|
+
}, slot: EntityDetailPluginPageSlot, options: ResolveEntityPluginDetailPageOrderOptions): number;
|
|
967
|
+
|
|
968
|
+
interface AXPDataSeeder {
|
|
969
|
+
seed(): Promise<void>;
|
|
970
|
+
}
|
|
971
|
+
declare const AXP_DATA_SEEDER_TOKEN: InjectionToken<AXPDataSeeder[]>;
|
|
972
|
+
declare class AXPDataSeederService {
|
|
973
|
+
private loaders;
|
|
974
|
+
seed(): Promise<void>;
|
|
975
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSeederService, never>;
|
|
976
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataSeederService>;
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
declare class AXPEntityCommandTriggerViewModel {
|
|
980
|
+
priority: 'primary' | 'secondary' | 'none';
|
|
981
|
+
order: number;
|
|
982
|
+
color: AXStyleColorType;
|
|
983
|
+
icon: string;
|
|
984
|
+
title: string;
|
|
985
|
+
name: string;
|
|
986
|
+
key?: string;
|
|
987
|
+
separated: boolean;
|
|
988
|
+
scope: AXPEntityCommandScope;
|
|
989
|
+
disabled: boolean | string;
|
|
990
|
+
hidden: boolean | string;
|
|
991
|
+
options: any;
|
|
992
|
+
metadata?: AXPMetaData;
|
|
993
|
+
default?: boolean;
|
|
994
|
+
shortcuts?: string[];
|
|
995
|
+
items?: AXPEntityCommandTriggerViewModel[];
|
|
996
|
+
isChild?: boolean;
|
|
997
|
+
constructor(entity: AXPEntity, action: AXPEntityAction, isChild?: boolean);
|
|
998
|
+
/** Stable trigger id for command lookup and list tracking when {@link AXPEntityAction.name} is omitted. */
|
|
999
|
+
private static buildTriggerName;
|
|
1000
|
+
}
|
|
1001
|
+
declare class AXPEntityListViewColumnViewModel {
|
|
1002
|
+
readonly property: AXPEntityProperty;
|
|
1003
|
+
readonly column: AXPEntityTableColumn;
|
|
1004
|
+
constructor(property: AXPEntityProperty, column: AXPEntityTableColumn);
|
|
1005
|
+
name: string;
|
|
1006
|
+
title: string;
|
|
1007
|
+
visible: string | boolean;
|
|
1008
|
+
sortEnabled: boolean | undefined;
|
|
1009
|
+
width: string | undefined;
|
|
1010
|
+
node: _angular_core.Signal<AXPWidgetColumnNode>;
|
|
1011
|
+
}
|
|
1012
|
+
declare class AXPEntityListViewCardFieldViewModel {
|
|
1013
|
+
readonly property: AXPEntityProperty;
|
|
1014
|
+
readonly field: AXPCardField;
|
|
1015
|
+
constructor(property: AXPEntityProperty, field: AXPCardField);
|
|
1016
|
+
name: string;
|
|
1017
|
+
title: string;
|
|
1018
|
+
visible: string | boolean;
|
|
1019
|
+
layout: _acorex_platform_framework_shared_entity.AXPEntityPropertyLayoutConfig | undefined;
|
|
1020
|
+
display: string;
|
|
1021
|
+
isBadgeDisplay: boolean;
|
|
1022
|
+
badgeColor: string | undefined;
|
|
1023
|
+
isStatusWidget: boolean;
|
|
1024
|
+
node: _angular_core.Signal<AXPWidgetColumnNode>;
|
|
1025
|
+
/** Readonly column node for status fields shown as header badges. */
|
|
1026
|
+
headerBadgeNode: _angular_core.Signal<AXPWidgetColumnNode>;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
declare class AXPEntityDetailListViewModel {
|
|
1030
|
+
private injector;
|
|
1031
|
+
private detailEntityConfig;
|
|
1032
|
+
private parent;
|
|
1033
|
+
private detailEntity;
|
|
1034
|
+
private formatService;
|
|
1035
|
+
private commandService;
|
|
1036
|
+
private filterOperatorMiddleware;
|
|
1037
|
+
private expressionEvaluator;
|
|
1038
|
+
private queryExecutor;
|
|
1039
|
+
private readonly settingsService;
|
|
1040
|
+
private readonly destroyed;
|
|
1041
|
+
private readonly showRowIndexColumnEnabled;
|
|
1042
|
+
private lastAppliedFilterKey;
|
|
1043
|
+
/** Whether the row index column is shown (user setting). */
|
|
1044
|
+
readonly showIndexColumn: _angular_core.Signal<boolean>;
|
|
1045
|
+
dataSource: AXDataSource<any>;
|
|
1046
|
+
parentKey: _angular_core.Signal<string | undefined>;
|
|
1047
|
+
constructor(injector: Injector, detailEntityConfig: AXPRelatedEntity, parent: {
|
|
1048
|
+
entity: AXPEntity;
|
|
1049
|
+
data: any;
|
|
1050
|
+
});
|
|
1051
|
+
private syncShowRowIndexColumnSetting;
|
|
1052
|
+
destroy(): void;
|
|
1053
|
+
initialize(): Promise<void>;
|
|
1054
|
+
selectedItems: _angular_core.WritableSignal<any[]>;
|
|
1055
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
1056
|
+
clearSelection(): void;
|
|
1057
|
+
title: _angular_core.Signal<string>;
|
|
1058
|
+
hidden: _angular_core.Signal<Promise<boolean>>;
|
|
1059
|
+
inlineFiltersPlaceholders: _angular_core.Signal<string[]>;
|
|
1060
|
+
hasInlineFilters: _angular_core.Signal<boolean>;
|
|
1061
|
+
private allActions;
|
|
1062
|
+
selectedScopeActionsCount: _angular_core.Signal<number>;
|
|
1063
|
+
primaryActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
1064
|
+
secondaryActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
1065
|
+
primaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
1066
|
+
secondaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
1067
|
+
private inlineFilters;
|
|
1068
|
+
applyInlineFilter(value: string): void;
|
|
1069
|
+
applyFilterAndSort(): Promise<void>;
|
|
1070
|
+
columns: _angular_core.Signal<AXPEntityListViewColumnViewModel[]>;
|
|
1071
|
+
executeCommand(commandName: string, data?: any): Promise<void>;
|
|
1072
|
+
evaluateExpressions: (actionData: {
|
|
1073
|
+
[key: string]: string;
|
|
1074
|
+
} | string) => Promise<any>;
|
|
1075
|
+
/**
|
|
1076
|
+
* Evaluate hidden/disabled expressions for primary actions and return the visible list.
|
|
1077
|
+
*/
|
|
1078
|
+
getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
1079
|
+
/**
|
|
1080
|
+
* Evaluate hidden/disabled expressions for secondary actions and return the visible list.
|
|
1081
|
+
*/
|
|
1082
|
+
getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
/**
|
|
1086
|
+
* Entity Event Dispatcher - A wrapper for entity-specific events
|
|
1087
|
+
* Handles pattern-based dispatching for entity operations with wildcard support
|
|
1088
|
+
*/
|
|
1089
|
+
declare class AXPEntityEventDispatcherService {
|
|
1090
|
+
private readonly eventService;
|
|
1091
|
+
dispatchEntityEvent(operation: 'inserted' | 'updated' | 'deleted', entityName: string, data: any): Promise<void>;
|
|
1092
|
+
private getAllMatchingEventKeys;
|
|
1093
|
+
private findMatchingWildcardKeys;
|
|
1094
|
+
private matchesEntityPattern;
|
|
1095
|
+
private generateEventKeys;
|
|
1096
|
+
dispatchInserted(entityName: string, data: any): Promise<void>;
|
|
1097
|
+
dispatchUpdated(entityName: string, data: any): Promise<void>;
|
|
1098
|
+
dispatchDeleted(entityName: string, data: any): Promise<void>;
|
|
1099
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityEventDispatcherService, never>;
|
|
1100
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
/**
|
|
1104
|
+
* Sort key for entries in `interfaces.master.{create|update|single}.properties`.
|
|
1105
|
+
* Uses `layout.order` when set and finite; otherwise the property index in that list.
|
|
1106
|
+
*/
|
|
1107
|
+
declare function getMasterInterfacePropertySortKey(interfaceRow: {
|
|
1108
|
+
layout?: AXPEntityPropertyLayoutConfig | undefined;
|
|
1109
|
+
} | undefined, indexInMasterInterfaceList: number): number;
|
|
1110
|
+
|
|
1111
|
+
declare const AXPEntityLifecycleHookKeys: {
|
|
1112
|
+
readonly ListOpened: "entity.list.opened";
|
|
1113
|
+
readonly ListCriteriaApplied: "entity.list.criteria-applied";
|
|
1114
|
+
readonly DetailOpened: "entity.detail.opened";
|
|
1115
|
+
readonly FormSubmitted: "entity.form.submitted";
|
|
1116
|
+
readonly FormValidationFailed: "entity.form.validation-failed";
|
|
1117
|
+
};
|
|
1118
|
+
declare function fireEntityLifecycleHook(hooks: AXPHookService, key: string, payload: Record<string, unknown>): void;
|
|
1119
|
+
|
|
1120
|
+
interface AXPEntityListExpandRowRef {
|
|
1121
|
+
data: Record<string, unknown>;
|
|
1122
|
+
}
|
|
1123
|
+
/**
|
|
1124
|
+
* Resolves a stable row id from entity list row data.
|
|
1125
|
+
*/
|
|
1126
|
+
declare function getEntityListRowId(data: Record<string, unknown>, key?: string): string;
|
|
1127
|
+
/**
|
|
1128
|
+
* Finds row data in a hierarchical grid tree (root rows and nested children).
|
|
1129
|
+
*/
|
|
1130
|
+
declare function findEntityListRowDataInTree(items: unknown[], id: string, key: string): Record<string, unknown> | null;
|
|
1131
|
+
/**
|
|
1132
|
+
* Restores expanded rows after data load (parents before children).
|
|
1133
|
+
*/
|
|
1134
|
+
declare function restoreEntityListExpandedRows(options: {
|
|
1135
|
+
expandedRowIds: string[];
|
|
1136
|
+
rowKey: string;
|
|
1137
|
+
getDisplayedRows: () => unknown[];
|
|
1138
|
+
expandRow: (row: AXPEntityListExpandRowRef) => Promise<void>;
|
|
1139
|
+
}): Promise<void>;
|
|
1140
|
+
|
|
1141
|
+
interface AXPEntityListPagingState {
|
|
1142
|
+
take: number;
|
|
1143
|
+
skip: number;
|
|
1144
|
+
}
|
|
1145
|
+
/**
|
|
1146
|
+
* Applies take/skip to the data source without triggering {@link AXDataSource.load}.
|
|
1147
|
+
*/
|
|
1148
|
+
declare function applyDataSourcePagingWithoutLoad(dataSource: AXDataSource, paging: AXPEntityListPagingState): void;
|
|
1149
|
+
declare function getDataSourcePageIndex(dataSource: AXDataSource): number;
|
|
1150
|
+
declare function normalizeListPaging(paging: Partial<AXPEntityListPagingState> | undefined, defaultTake: number): AXPEntityListPagingState;
|
|
1151
|
+
|
|
1152
|
+
/** How entity list UI state (columns, filters, paging, etc.) is persisted for the user. */
|
|
1153
|
+
type AXPEntityListPersistenceMode = 'none' | 'persistent' | 'route';
|
|
1154
|
+
declare const AXPEntityListPersistenceModeDefault: AXPEntityListPersistenceMode;
|
|
1155
|
+
declare function normalizeEntityListPersistenceMode(value: unknown): AXPEntityListPersistenceMode;
|
|
1156
|
+
declare function canPersistEntityListState(mode: AXPEntityListPersistenceMode): boolean;
|
|
1157
|
+
/** `none` never reads list state from user settings. */
|
|
1158
|
+
declare function shouldLoadEntityListStateFromStorage(mode: AXPEntityListPersistenceMode): boolean;
|
|
1159
|
+
/** `route` clears stored list state when the route entity (module + name) changes. */
|
|
1160
|
+
declare function shouldResetEntityListStateOnRouteEntry(mode: AXPEntityListPersistenceMode): boolean;
|
|
1161
|
+
declare const ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY = "axp-entity-list-route-context";
|
|
1162
|
+
|
|
1163
|
+
declare class AXPEntityCreateViewSectionViewModel {
|
|
1164
|
+
private entity;
|
|
1165
|
+
private section;
|
|
1166
|
+
constructor(entity: AXPEntity, section: AXPEntitySectionView);
|
|
1167
|
+
group: _acorex_platform_framework_shared_entity.AXPEntityPropertyGroup;
|
|
1168
|
+
name: _angular_core.WritableSignal<string>;
|
|
1169
|
+
title: _angular_core.Signal<string>;
|
|
1170
|
+
description: _angular_core.Signal<string | null | undefined>;
|
|
1171
|
+
layout: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
1172
|
+
elements: _angular_core.Signal<AXPEntityCreateViewElementViewModel[]>;
|
|
1173
|
+
}
|
|
1174
|
+
declare class AXPEntityCreateViewElementViewModel {
|
|
1175
|
+
private entity;
|
|
1176
|
+
private section;
|
|
1177
|
+
private property;
|
|
1178
|
+
private createProp;
|
|
1179
|
+
constructor(entity: AXPEntity, section: AXPEntityCreateViewSectionViewModel, property: AXPEntityProperty, createProp: AXPEntityPropertyCreateView);
|
|
1180
|
+
name: _angular_core.WritableSignal<string>;
|
|
1181
|
+
title: _angular_core.WritableSignal<string>;
|
|
1182
|
+
description: _angular_core.WritableSignal<string | undefined>;
|
|
1183
|
+
editable: _angular_core.Signal<boolean>;
|
|
1184
|
+
isVisible: _angular_core.Signal<string | boolean>;
|
|
1185
|
+
isRequired: _angular_core.Signal<boolean>;
|
|
1186
|
+
layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
|
|
1187
|
+
node: _angular_core.Signal<AXPWidgetNode>;
|
|
1188
|
+
}
|
|
1189
|
+
declare class AXPEntityMasterCreateViewModel {
|
|
1190
|
+
private readonly injector;
|
|
1191
|
+
private readonly config;
|
|
1192
|
+
private readonly initialData;
|
|
1193
|
+
private readonly commandOptions;
|
|
1194
|
+
private entityDef;
|
|
1195
|
+
private commandService;
|
|
1196
|
+
private expressionEvaluator;
|
|
1197
|
+
builder: AXPWidgetCoreService;
|
|
1198
|
+
constructor(injector: Injector, config: AXPEntity, initialData: any | undefined, commandOptions: any);
|
|
1199
|
+
context: _angular_core.WritableSignal<any>;
|
|
1200
|
+
options: _angular_core.WritableSignal<any>;
|
|
1201
|
+
isInProgress: _angular_core.WritableSignal<boolean>;
|
|
1202
|
+
canCreateNewOne: _angular_core.WritableSignal<boolean>;
|
|
1203
|
+
redirect: _angular_core.WritableSignal<boolean>;
|
|
1204
|
+
sections: _angular_core.Signal<AXPEntityCreateViewSectionViewModel[]>;
|
|
1205
|
+
save(): Promise<any | void>;
|
|
1206
|
+
createNewOne(): Promise<void>;
|
|
1207
|
+
}
|
|
1208
|
+
declare class AXPEntityCreateViewModelFactory {
|
|
1209
|
+
private entityService;
|
|
1210
|
+
private layout;
|
|
1211
|
+
private injector;
|
|
1212
|
+
create(moduleName: string, entityName: string, initialData?: any, options?: {
|
|
1213
|
+
canCreateNewOne: boolean;
|
|
1214
|
+
redirect: boolean;
|
|
1215
|
+
}): Promise<AXPEntityMasterCreateViewModel>;
|
|
1216
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreateViewModelFactory, never>;
|
|
1217
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreateViewModelFactory>;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
declare const ENTITY_MASTER_LIST_TRACE_NS = "entity-master-list";
|
|
1221
|
+
type EntityMasterListTraceArea = 'viewmodel' | 'list-view' | 'toolbar';
|
|
1222
|
+
/**
|
|
1223
|
+
* Emits entity master list diagnostics when tenant Debug Mode is enabled.
|
|
1224
|
+
*/
|
|
1225
|
+
declare function traceEntityMasterList(area: EntityMasterListTraceArea, message: string, data?: Record<string, unknown> | (() => Record<string, unknown>)): void;
|
|
1226
|
+
declare function buildDataSourceTraceSnapshot(dataSource: AXDataSource, extras?: Record<string, unknown>): Record<string, unknown>;
|
|
1227
|
+
|
|
1228
|
+
interface AXPEntityMasterListViewSortPropViewModel {
|
|
1229
|
+
name: string;
|
|
1230
|
+
title: string;
|
|
1231
|
+
dir?: string;
|
|
1232
|
+
}
|
|
1233
|
+
/** Built-in card list row action that toggles multi-select mode via {@link AXPEntityMasterListViewModel.selectedItems}. */
|
|
1234
|
+
declare const AXPEntityMasterListCardSelectActionName = "axp-entity-card:select";
|
|
1235
|
+
interface AXPEntityMasterListCardSecondaryActionItem {
|
|
1236
|
+
name: string;
|
|
1237
|
+
title: string;
|
|
1238
|
+
icon?: string;
|
|
1239
|
+
color?: string;
|
|
1240
|
+
disabled?: boolean | string;
|
|
1241
|
+
divided?: boolean;
|
|
1242
|
+
isCardSelect?: boolean;
|
|
1243
|
+
}
|
|
1244
|
+
declare class AXPEntityMasterListViewQueryViewModel {
|
|
1245
|
+
private entity;
|
|
1246
|
+
private section;
|
|
1247
|
+
private view;
|
|
1248
|
+
constructor(entity: AXPEntity, section: AXPEntityMasterListViewModel, view: AXPQueryView);
|
|
1249
|
+
name: string;
|
|
1250
|
+
title: string;
|
|
1251
|
+
sorts: _acorex_platform_framework_shared_entity.AXPQuerySort[];
|
|
1252
|
+
columns: string[];
|
|
1253
|
+
conditions: _acorex_platform_framework_shared_entity.AXPQueryFilter[];
|
|
1254
|
+
indexCol: boolean | undefined;
|
|
1255
|
+
pageSize: number | undefined;
|
|
1256
|
+
visible: string | boolean | undefined;
|
|
1257
|
+
}
|
|
1258
|
+
declare class AXPEntityMasterListViewModel {
|
|
1259
|
+
private injector;
|
|
1260
|
+
private config;
|
|
1261
|
+
readonly entityDef: AXPEntity;
|
|
1262
|
+
private readonly _viewDef;
|
|
1263
|
+
private readonly formatService;
|
|
1264
|
+
private readonly session;
|
|
1265
|
+
private readonly workflowEventService;
|
|
1266
|
+
private readonly settings;
|
|
1267
|
+
private readonly widgetResolver;
|
|
1268
|
+
private readonly expressionEvaluator;
|
|
1269
|
+
private readonly contextEvalFactory;
|
|
1270
|
+
private readonly translation;
|
|
1271
|
+
private readonly commandService;
|
|
1272
|
+
private readonly eventService;
|
|
1273
|
+
private readonly queryExecutor;
|
|
1274
|
+
private readonly filterOperatorMiddleware;
|
|
1275
|
+
private readonly entityDefinitionRegistry;
|
|
1276
|
+
private settingEntityKey;
|
|
1277
|
+
private readonly destroyed;
|
|
1278
|
+
private lastAppliedSortKey;
|
|
1279
|
+
private lastAppliedFilterKey;
|
|
1280
|
+
private hasQueryParamsFilters;
|
|
1281
|
+
private routeQueryContextKey;
|
|
1282
|
+
private initialListSettingsApplied;
|
|
1283
|
+
/** Persisted expanded row ids for hierarchical lists (per view). */
|
|
1284
|
+
private readonly expandedRowIds;
|
|
1285
|
+
/** When true, row expand/collapse is not written to user settings (restore in progress). */
|
|
1286
|
+
skipExpandedRowPersistence: boolean;
|
|
1287
|
+
/** Resolved take/skip for the current view (null until loaded from settings). */
|
|
1288
|
+
private readonly resolvedListPaging;
|
|
1289
|
+
/** When true, pager changes are not persisted (programmatic UI sync). */
|
|
1290
|
+
skipListPagingPersistence: boolean;
|
|
1291
|
+
private listPersistenceMode;
|
|
1292
|
+
events$: Subject<{
|
|
1293
|
+
action: string;
|
|
1294
|
+
meta?: any;
|
|
1295
|
+
}>;
|
|
1296
|
+
private readonly allViews;
|
|
1297
|
+
private readonly visibleViews;
|
|
1298
|
+
views: _angular_core.Signal<AXPEntityMasterListViewQueryViewModel[]>;
|
|
1299
|
+
view: _angular_core.WritableSignal<AXPEntityMasterListViewQueryViewModel>;
|
|
1300
|
+
private readonly showRowIndexColumnEnabled;
|
|
1301
|
+
/**
|
|
1302
|
+
* Row index column: if the list view defines `indexCol` (true/false), that overrides the user setting;
|
|
1303
|
+
* if `indexCol` is omitted, visibility follows {@link AXPCommonSettings.ShowRowIndexColumn}.
|
|
1304
|
+
*/
|
|
1305
|
+
showIndexColumn: _angular_core.Signal<boolean>;
|
|
1306
|
+
/** Layouts enabled via `interfaces.master.list.layouts.*.enabled`. */
|
|
1307
|
+
enabledListLayouts: _angular_core.Signal<AXPEntityMasterListLayoutType[]>;
|
|
1308
|
+
/** True when the user can switch between multiple enabled layouts. */
|
|
1309
|
+
canSwitchListLayout: _angular_core.Signal<boolean>;
|
|
1310
|
+
/** Active list layout for the current view. */
|
|
1311
|
+
activeListLayout: _angular_core.WritableSignal<AXPEntityMasterListLayoutType>;
|
|
1312
|
+
tableLayout: _angular_core.Signal<{
|
|
1313
|
+
enabled?: boolean;
|
|
1314
|
+
columns: AXPEntityTableColumn[];
|
|
1315
|
+
cssClass?: {
|
|
1316
|
+
row?: AXPExpression;
|
|
1317
|
+
cell?: AXPExpression;
|
|
1318
|
+
};
|
|
1319
|
+
} | undefined>;
|
|
1320
|
+
cardLayout: _angular_core.Signal<{
|
|
1321
|
+
enabled?: boolean;
|
|
1322
|
+
header: {
|
|
1323
|
+
title?: string;
|
|
1324
|
+
description?: string;
|
|
1325
|
+
icon?: string;
|
|
1326
|
+
};
|
|
1327
|
+
fields: AXPCardField[];
|
|
1328
|
+
} | undefined>;
|
|
1329
|
+
/** Global expanded state for all card bodies in card layout. */
|
|
1330
|
+
cardContentExpanded: _angular_core.WritableSignal<boolean>;
|
|
1331
|
+
/** Current presentation mode (table, compact cards, or expanded cards). */
|
|
1332
|
+
listDisplayMode: _angular_core.Signal<AXPEntityMasterListDisplayMode>;
|
|
1333
|
+
/**
|
|
1334
|
+
* Sets global card body visibility for card layout.
|
|
1335
|
+
*/
|
|
1336
|
+
setCardContentExpanded(expanded: boolean): void;
|
|
1337
|
+
/**
|
|
1338
|
+
* Switches table vs compact/expanded card presentation.
|
|
1339
|
+
*/
|
|
1340
|
+
setListDisplayMode(mode: AXPEntityMasterListDisplayMode): void;
|
|
1341
|
+
/** Enabled layouts with display metadata for the title layout switcher. */
|
|
1342
|
+
availableListLayouts: _angular_core.Signal<AXPEntityMasterListLayoutOption[]>;
|
|
1343
|
+
/** Active layout option (for title icon and switcher selection state). */
|
|
1344
|
+
currentListLayout: _angular_core.Signal<AXPEntityMasterListLayoutOption | null>;
|
|
1345
|
+
private static readonly LAYOUT_META;
|
|
1346
|
+
/**
|
|
1347
|
+
* Switches to the given layout when it is enabled.
|
|
1348
|
+
* Persists the choice at entity list level (shared across all views).
|
|
1349
|
+
*/
|
|
1350
|
+
setListLayout(layout: AXPEntityMasterListLayoutType): void;
|
|
1351
|
+
/**
|
|
1352
|
+
* Cycles to the next enabled layout (table → card → table …).
|
|
1353
|
+
* No-op when only one layout is enabled.
|
|
1354
|
+
*/
|
|
1355
|
+
switchListLayout(): AXPEntityMasterListLayoutType;
|
|
1356
|
+
private resolveActiveListLayout;
|
|
1357
|
+
private applyListLayoutFromSettings;
|
|
1358
|
+
private createLogicExpressionScope;
|
|
1359
|
+
private createDisplayExpressionScope;
|
|
1360
|
+
/**
|
|
1361
|
+
* Evaluates each view's `visible` expression and updates the filtered view list.
|
|
1362
|
+
*/
|
|
1363
|
+
refreshVisibleViews(): Promise<void>;
|
|
1364
|
+
private resolveCommandNameExpression;
|
|
1365
|
+
private resolveTitleExpression;
|
|
1366
|
+
/**
|
|
1367
|
+
* Resolves a card header value (title, description, icon) from a property path, expression, or literal.
|
|
1368
|
+
* Supports multiple `{{ ... }}` segments in one string (e.g. `{{context.eval("a")}} - {{context.eval("b")}}`).
|
|
1369
|
+
* Multi-language maps (e.g. `{ "en-US": "...", "fa-IR": "..." }`) are returned as-is for the translate pipe.
|
|
1370
|
+
*/
|
|
1371
|
+
resolveCardHeaderValue(value: string | undefined, rowData: unknown): Promise<AXPMultiLanguageString>;
|
|
1372
|
+
/**
|
|
1373
|
+
* Keeps i18n payloads intact for `translate`; coerces only plain scalars to string.
|
|
1374
|
+
*/
|
|
1375
|
+
private normalizeCardHeaderDisplayValue;
|
|
1376
|
+
/**
|
|
1377
|
+
* Resolves badge color for a card header field (semantic token or expression per row).
|
|
1378
|
+
*/
|
|
1379
|
+
resolveCardBadgeColor(field: AXPEntityListViewCardFieldViewModel, rowData: unknown): Promise<AXStyleColorType>;
|
|
1380
|
+
private resolveCardBadgeColorValue;
|
|
1381
|
+
/**
|
|
1382
|
+
* Resolves table row CSS classes from `layouts.table.cssClass.row` for the given row.
|
|
1383
|
+
*/
|
|
1384
|
+
resolveTableRowCssClass(rowData: unknown): Promise<string | undefined>;
|
|
1385
|
+
/**
|
|
1386
|
+
* Resolves table cell CSS classes from `layouts.table.cssClass.cell` for the given row and column.
|
|
1387
|
+
*/
|
|
1388
|
+
resolveTableCellCssClass(rowData: unknown, columnName: string): Promise<string | undefined>;
|
|
1389
|
+
private createTableCssClassExpressionScope;
|
|
1390
|
+
private resolveTableCssClassValue;
|
|
1391
|
+
private normalizeTableCssClassValue;
|
|
1392
|
+
private resolveTriggerName;
|
|
1393
|
+
setView(viewName?: string | null): Promise<void>;
|
|
1394
|
+
dataSource: AXDataSource<any>;
|
|
1395
|
+
constructor(injector: Injector, config: AXPEntity);
|
|
1396
|
+
private syncShowRowIndexColumnSetting;
|
|
1397
|
+
/**
|
|
1398
|
+
* Applies {@link AXPCommonSettings.EntityListPersistenceMode} for this list instance.
|
|
1399
|
+
* Call once when the list view model is created (before loading list UI state).
|
|
1400
|
+
*/
|
|
1401
|
+
initializeListPersistence(): Promise<void>;
|
|
1402
|
+
getListPersistenceMode(): Promise<AXPEntityListPersistenceMode>;
|
|
1403
|
+
shouldLoadPersistedListState(): Promise<boolean>;
|
|
1404
|
+
shouldPersistListState(): Promise<boolean>;
|
|
1405
|
+
private clearEntityListSettings;
|
|
1406
|
+
applySettings(): Promise<void>;
|
|
1407
|
+
ensureListPagingResolved(): Promise<void>;
|
|
1408
|
+
getResolvedListPaging(): AXPEntityListPagingState;
|
|
1409
|
+
applyPagingToDataSourceWithoutLoad(): void;
|
|
1410
|
+
saveListPaging(take: number, skip: number): void;
|
|
1411
|
+
resetListPagingSkip(): void;
|
|
1412
|
+
private loadListPagingFromViewSettings;
|
|
1413
|
+
getExpandedRowIds(): string[];
|
|
1414
|
+
/**
|
|
1415
|
+
* Updates persisted expanded row ids when the user expands or collapses a tree row.
|
|
1416
|
+
*/
|
|
1417
|
+
updateExpandedRowId(rowId: string, expanded: boolean): void;
|
|
1418
|
+
handleRowExpandChange(rowData: Record<string, unknown>): void;
|
|
1419
|
+
saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'listPaging' | 'filters' | 'sorts' | 'expandedRows' | 'listLayout' | 'cardContentExpanded', data?: unknown): Promise<void>;
|
|
1420
|
+
selectedItems: _angular_core.WritableSignal<any[]>;
|
|
1421
|
+
/**
|
|
1422
|
+
* Selected category from the category sidebar (left panel).
|
|
1423
|
+
* Used to set default category when creating new entities via command.
|
|
1424
|
+
* Structure: { id: string; title: string } or null when "All Items" is selected.
|
|
1425
|
+
*/
|
|
1426
|
+
selectedCategory: _angular_core.WritableSignal<{
|
|
1427
|
+
id: string;
|
|
1428
|
+
title: string;
|
|
1429
|
+
} | null>;
|
|
1430
|
+
parentKey: _angular_core.Signal<string | undefined>;
|
|
1431
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
1432
|
+
clearSelection(): void;
|
|
1433
|
+
/**
|
|
1434
|
+
* Sets the selected category from the category sidebar.
|
|
1435
|
+
* Call with null to clear (e.g. when "All Items" is selected).
|
|
1436
|
+
*/
|
|
1437
|
+
setSelectedCategory(category: {
|
|
1438
|
+
id: string;
|
|
1439
|
+
title: string;
|
|
1440
|
+
} | null): void;
|
|
1441
|
+
title: _angular_core.Signal<string>;
|
|
1442
|
+
description: _angular_core.Signal<string | null>;
|
|
1443
|
+
filterDefinitions: _angular_core.WritableSignal<AXPEntityListFilterDefinition[]>;
|
|
1444
|
+
inlineFiltersPlaceholders: _angular_core.Signal<string[]>;
|
|
1445
|
+
hasInlineFilters: _angular_core.Signal<boolean>;
|
|
1446
|
+
/** Text for data-table cell highlighting (set only after filters are applied). */
|
|
1447
|
+
inlineFilterHighlightText: _angular_core.WritableSignal<string>;
|
|
1448
|
+
beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
|
|
1449
|
+
private allActions;
|
|
1450
|
+
/** Keeps the first action when list definitions repeat the same trigger name. */
|
|
1451
|
+
private dedupeActionsByName;
|
|
1452
|
+
/** Flattened actions including children for execute lookup */
|
|
1453
|
+
private flattenedActions;
|
|
1454
|
+
getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
1455
|
+
getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
1456
|
+
selectedScopeActionsCount: _angular_core.Signal<number>;
|
|
1457
|
+
primaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
1458
|
+
secondaryRowActions(rowData: any): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
1459
|
+
/**
|
|
1460
|
+
* Secondary actions for card layout rows, with the built-in Select action last (divider above it).
|
|
1461
|
+
*/
|
|
1462
|
+
cardSecondaryRowActions(rowData: unknown): Promise<AXPEntityMasterListCardSecondaryActionItem[]>;
|
|
1463
|
+
filterQueries: _angular_core.WritableSignal<AXPFilterQuery[]>;
|
|
1464
|
+
private static readonly URL_FILTER_OPERATOR_TYPES;
|
|
1465
|
+
get properties(): AXPEntityProperty[];
|
|
1466
|
+
/**
|
|
1467
|
+
* Canonical JSON for the `filters` query param (sorted by field), or null when there are no active value filters.
|
|
1468
|
+
*/
|
|
1469
|
+
filtersQueryParamCanonical(queries: AXPFilterQuery[]): string | null;
|
|
1470
|
+
/**
|
|
1471
|
+
* Parse a `filters` query string to the same canonical form used by {@link filtersQueryParamCanonical}.
|
|
1472
|
+
*/
|
|
1473
|
+
static parseQueryParamFiltersToCanonical(filtersJson: string | null): string | null;
|
|
1474
|
+
private toUrlFilterPayloadItems;
|
|
1475
|
+
private static coerceFilterOperatorFromUrl;
|
|
1476
|
+
/**
|
|
1477
|
+
* Apply filters from query params
|
|
1478
|
+
*/
|
|
1479
|
+
applyFiltersFromQueryParams(filtersJson: string | null): boolean;
|
|
1480
|
+
/**
|
|
1481
|
+
* Records the current route query context after initial resolver / view init so the first
|
|
1482
|
+
* subscription emission does not re-sync unnecessarily.
|
|
1483
|
+
*/
|
|
1484
|
+
markRouteQueryContextSynced(queryParamMap: ParamMap): void;
|
|
1485
|
+
/**
|
|
1486
|
+
* Reacts to any route query param change while the list route is reused (`reuse: queryParamsChange`).
|
|
1487
|
+
* Handles known keys (`view`, `filters`) and re-evaluates view visibility for expression-driven params.
|
|
1488
|
+
*/
|
|
1489
|
+
syncFromRouteQueryParams(queryParamMap: ParamMap): Promise<{
|
|
1490
|
+
reloadList: boolean;
|
|
1491
|
+
}>;
|
|
1492
|
+
private buildRouteQueryContextKey;
|
|
1493
|
+
private syncFiltersFromRouteQueryParam;
|
|
1494
|
+
/**
|
|
1495
|
+
* Loads host and merge-detail related sortable field definitions (async registry resolution).
|
|
1496
|
+
*/
|
|
1497
|
+
loadSortableFields(): Promise<void>;
|
|
1498
|
+
/**
|
|
1499
|
+
* Loads host and merge-detail related filter definitions (async registry resolution).
|
|
1500
|
+
*/
|
|
1501
|
+
loadFilterDefinitions(): Promise<void>;
|
|
1502
|
+
get filtersDef(): AXPEntityListFilterDefinition[];
|
|
1503
|
+
get preloadFiltersDef(): AXPEntityListFilterDefinition[];
|
|
1504
|
+
applyViewFilters(): Promise<void>;
|
|
1505
|
+
resetFilters(): void;
|
|
1506
|
+
applyFilterAndSort(): Promise<void>;
|
|
1507
|
+
private updateAppliedInlineFilterHighlightText;
|
|
1508
|
+
private resolveMergeDetailProperty;
|
|
857
1509
|
private allAvailableColumns;
|
|
858
1510
|
visibleColumnCount: () => number;
|
|
859
1511
|
columns: _angular_core.WritableSignal<AXPEntityListViewColumnViewModel[]>;
|
|
@@ -910,7 +1562,7 @@ declare class AXPEntityMasterListViewModel {
|
|
|
910
1562
|
executeCommand(commandName: string, data?: any): Promise<void>;
|
|
911
1563
|
/**
|
|
912
1564
|
* Merges default category from selected category in sidebar when executing create command.
|
|
913
|
-
* For Entity:Create
|
|
1565
|
+
* For Entity:Create, if entity has category plugin and a category is selected,
|
|
914
1566
|
* pre-fills categoryIds and categories for the create form.
|
|
915
1567
|
*/
|
|
916
1568
|
private mergeDefaultCategoryForCreate;
|
|
@@ -969,7 +1621,7 @@ declare class AXPEntityMasterSingleViewModel {
|
|
|
969
1621
|
private readonly _viewDef;
|
|
970
1622
|
private readonly session;
|
|
971
1623
|
private readonly formatService;
|
|
972
|
-
private readonly
|
|
1624
|
+
private readonly workflowEventService;
|
|
973
1625
|
private readonly commandService;
|
|
974
1626
|
private readonly destroyed;
|
|
975
1627
|
private translateService;
|
|
@@ -1000,6 +1652,7 @@ declare class AXPEntityDetailViewModelFactory {
|
|
|
1000
1652
|
private entityService;
|
|
1001
1653
|
private layout;
|
|
1002
1654
|
private injector;
|
|
1655
|
+
private queryExecutor;
|
|
1003
1656
|
create(moduleName: string, entityName: string, id: string): Promise<AXPEntityMasterSingleViewModel>;
|
|
1004
1657
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailViewModelFactory, never>;
|
|
1005
1658
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDetailViewModelFactory>;
|
|
@@ -1036,7 +1689,6 @@ declare class AXPEntityMasterUpdateViewModel {
|
|
|
1036
1689
|
private entityData;
|
|
1037
1690
|
private props;
|
|
1038
1691
|
private entityDef;
|
|
1039
|
-
private workflow;
|
|
1040
1692
|
private sessionService;
|
|
1041
1693
|
private get moduleName();
|
|
1042
1694
|
private get entityName();
|
|
@@ -1516,9 +2168,16 @@ declare class AXPAttachmentsPluginModule {
|
|
|
1516
2168
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPAttachmentsPluginModule>;
|
|
1517
2169
|
}
|
|
1518
2170
|
|
|
2171
|
+
declare class AXPGalleryPluginModule {
|
|
2172
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPGalleryPluginModule, never>;
|
|
2173
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPGalleryPluginModule, never, never, never>;
|
|
2174
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPGalleryPluginModule>;
|
|
2175
|
+
}
|
|
2176
|
+
|
|
1519
2177
|
declare class AXPEntityModule {
|
|
2178
|
+
constructor();
|
|
1520
2179
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
|
|
1521
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof AXPAttachmentsPluginModule, typeof
|
|
2180
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof AXPAttachmentsPluginModule, typeof AXPGalleryPluginModule, typeof i4.AXPWidgetCoreModule, typeof i5.LayoutBuilderModule], never>;
|
|
1522
2181
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
|
|
1523
2182
|
}
|
|
1524
2183
|
|
|
@@ -1526,10 +2185,6 @@ declare class AXPEntityModule {
|
|
|
1526
2185
|
* Maps storage middleware failures to a command result the details view can surface.
|
|
1527
2186
|
*/
|
|
1528
2187
|
declare function mapEntityStorageErrorToCommandResult(error: unknown, fallback?: string): AXPExecuteCommandResult;
|
|
1529
|
-
/**
|
|
1530
|
-
* Best-effort plain string for thrown {@link Error} messages from command results (no i18n lookup).
|
|
1531
|
-
*/
|
|
1532
|
-
declare function commandMessageTextForError(value: AXPMultiLanguageString | undefined | null): string;
|
|
1533
2188
|
/**
|
|
1534
2189
|
* Data accessor for entity operations.
|
|
1535
2190
|
* Provides methods to query and execute commands with smart resolution:
|
|
@@ -1702,6 +2357,41 @@ type AttachmentsPluginOptions = {
|
|
|
1702
2357
|
*/
|
|
1703
2358
|
declare const attachmentsPlugin: AXPEntityActionPlugin;
|
|
1704
2359
|
|
|
2360
|
+
/** How to show gallery in entity single view: as a section (default) or as a separate page. */
|
|
2361
|
+
type GalleryDisplayMode = 'section' | 'page';
|
|
2362
|
+
/** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
|
|
2363
|
+
declare const GALLERY_PAGE_COMPONENT_KEY = "entity-gallery-page";
|
|
2364
|
+
type GalleryPluginOptions = {
|
|
2365
|
+
/** Property name to hold the gallery file list. Default 'gallery' */
|
|
2366
|
+
field?: string;
|
|
2367
|
+
/** Where to show gallery: section (inline) or page (separate tab). Default 'section' */
|
|
2368
|
+
display?: GalleryDisplayMode;
|
|
2369
|
+
/** Icon for the gallery page (when display is 'page'). Default 'fa-light fa-images' */
|
|
2370
|
+
icon?: string;
|
|
2371
|
+
/** Title override for gallery section/page. Default '@platform-layout-widgets:widgets.gallery.title' */
|
|
2372
|
+
title?: string;
|
|
2373
|
+
/** Gallery widget option: show thumbnails. Default true */
|
|
2374
|
+
thumbnail?: boolean;
|
|
2375
|
+
/** Gallery widget option: show header. Default true */
|
|
2376
|
+
header?: boolean;
|
|
2377
|
+
/** Gallery widget option: show file info. Default true */
|
|
2378
|
+
fileInfo?: boolean;
|
|
2379
|
+
/** Gallery widget option: show fullscreen button. Default true */
|
|
2380
|
+
fullScreenButton?: boolean;
|
|
2381
|
+
/** Gallery widget option: allow upload. Default true */
|
|
2382
|
+
allowUpload?: boolean;
|
|
2383
|
+
/** Gallery widget option: accepted upload MIME types. Default ['image/*'] */
|
|
2384
|
+
allowUploadTypes?: string[];
|
|
2385
|
+
/** File chooser providers to exclude (e.g. ['drive']) */
|
|
2386
|
+
excludeProviders?: string[];
|
|
2387
|
+
};
|
|
2388
|
+
/**
|
|
2389
|
+
* Gallery plugin.
|
|
2390
|
+
* - When display is 'section' (default), adds a section to the single layout with the gallery widget.
|
|
2391
|
+
* - When display is 'page', adds a page to entity.pages with GALLERY_PAGE_COMPONENT_KEY.
|
|
2392
|
+
*/
|
|
2393
|
+
declare const galleryPlugin: AXPEntityActionPlugin;
|
|
2394
|
+
|
|
1705
2395
|
interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
|
|
1706
2396
|
op: AXPEntityOp;
|
|
1707
2397
|
entityName: string;
|
|
@@ -1826,14 +2516,16 @@ declare const layoutOrderingMiddlewareProvider: AXPEntityModifierProvider;
|
|
|
1826
2516
|
/**
|
|
1827
2517
|
* Provides synchronous access to the ApplyLayoutOrdering setting.
|
|
1828
2518
|
* Used by layout ordering middleware to avoid async in the modifier and prevent startup deadlocks.
|
|
1829
|
-
*
|
|
2519
|
+
* Reads from the settings in-memory cache when available; refreshes entity definitions when the value changes.
|
|
1830
2520
|
*/
|
|
1831
2521
|
declare class AXPLayoutOrderingConfigService {
|
|
1832
2522
|
private readonly settingsService;
|
|
2523
|
+
private readonly entityRegistry;
|
|
1833
2524
|
private readonly _applyOrdering;
|
|
1834
|
-
private
|
|
2525
|
+
private asyncWarmupScheduled;
|
|
1835
2526
|
constructor();
|
|
1836
2527
|
getApplyOrdering(): boolean;
|
|
2528
|
+
private handleSettingsEvent;
|
|
1837
2529
|
private syncFromSettings;
|
|
1838
2530
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutOrderingConfigService, never>;
|
|
1839
2531
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutOrderingConfigService>;
|
|
@@ -2199,1045 +2891,634 @@ declare class AXPEntityCategoryTreeSelectorComponent extends AXBasePageComponent
|
|
|
2199
2891
|
*/
|
|
2200
2892
|
private runInitialExpandAndSync;
|
|
2201
2893
|
/**
|
|
2202
|
-
* Handles search input value changes - Uses server-side search for efficiency and reliability
|
|
2203
|
-
*/
|
|
2204
|
-
handleSearchChange(event: AXValueChangedEvent<string>): Promise<void>;
|
|
2205
|
-
/**
|
|
2206
|
-
* Collects all parent IDs for the given search results
|
|
2207
|
-
* Handles both nested 'parent' object and 'parentId' field in search results
|
|
2208
|
-
* Recursively fetches parent nodes to build the full parent chain
|
|
2209
|
-
*/
|
|
2210
|
-
private collectParentIds;
|
|
2211
|
-
/**
|
|
2212
|
-
* Collects children IDs for matching search results recursively
|
|
2213
|
-
* Adds all descendants (children, grandchildren, etc.) to relevantNodeIds so they appear in the filtered tree
|
|
2214
|
-
*/
|
|
2215
|
-
private collectChildrenIds;
|
|
2216
|
-
/**
|
|
2217
|
-
* Recursively collects all descendant IDs for a given node
|
|
2218
|
-
*/
|
|
2219
|
-
private collectChildrenRecursively;
|
|
2220
|
-
/**
|
|
2221
|
-
* Fetches a single item by ID. Uses category tree service so byKey is used when available
|
|
2222
|
-
* (returns full item with parent/parentId for building ancestor chains).
|
|
2223
|
-
*/
|
|
2224
|
-
private fetchItemById;
|
|
2225
|
-
/**
|
|
2226
|
-
* Sorts parent IDs by their depth (root first, leaves last)
|
|
2227
|
-
* Optimized to use cached data and batch fetch missing items
|
|
2228
|
-
*/
|
|
2229
|
-
private sortParentsByDepth;
|
|
2230
|
-
/**
|
|
2231
|
-
* Updates translated messages for search results
|
|
2232
|
-
*/
|
|
2233
|
-
private updateTranslatedMessages;
|
|
2234
|
-
/**
|
|
2235
|
-
* Resets search state and restores tree to original expanded state
|
|
2236
|
-
*/
|
|
2237
|
-
private resetSearch;
|
|
2238
|
-
/**
|
|
2239
|
-
* Restores multiple-mode leaf selection after search reset.
|
|
2240
|
-
*/
|
|
2241
|
-
private restoreMultipleSelectionAfterReload;
|
|
2242
|
-
protected onNodeSelect(event: AXTreeViewNodeSelectEvent): Promise<void>;
|
|
2243
|
-
/** Datasource callback for tree-view component. */
|
|
2244
|
-
protected datasource: (id?: string) => Promise<AXTreeViewNode[]>;
|
|
2245
|
-
protected onConfirm(): Promise<void>;
|
|
2246
|
-
protected onCancel(): Promise<void>;
|
|
2247
|
-
/**
|
|
2248
|
-
* Clears all selected items
|
|
2249
|
-
*/
|
|
2250
|
-
protected onClearAll(): void;
|
|
2251
|
-
/**
|
|
2252
|
-
* Checks if a node matches the current search term
|
|
2253
|
-
*/
|
|
2254
|
-
protected isMatchingNode(nodeId: string): boolean;
|
|
2255
|
-
/**
|
|
2256
|
-
* Checks if a node is currently selected
|
|
2257
|
-
*/
|
|
2258
|
-
protected isNodeSelected(nodeId: string | number | undefined): boolean;
|
|
2259
|
-
/**
|
|
2260
|
-
* Expands parent nodes, collects all LEAF descendants, and selects them visually.
|
|
2261
|
-
* If the parent itself is a leaf (no children), it will be added.
|
|
2262
|
-
* When prefetchedChildren is provided, avoids an extra datasource(parentId) call.
|
|
2263
|
-
*/
|
|
2264
|
-
private selectAllLeafDescendants;
|
|
2265
|
-
/**
|
|
2266
|
-
* Removes all LEAF descendants from selectedNodeIds.
|
|
2267
|
-
* For 'all' node: clears everything and uses tree's deselectAll().
|
|
2268
|
-
* For other nodes: tree handles visual state via user click.
|
|
2269
|
-
*/
|
|
2270
|
-
private deselectAllLeafDescendants;
|
|
2271
|
-
/**
|
|
2272
|
-
* Recursively expands parent nodes and collects LEAF node IDs.
|
|
2273
|
-
* When treeComponent is provided, expands each parent node before loading children.
|
|
2274
|
-
* When prefetchedChildren is provided, uses it instead of calling datasource(parentId) (one less API call).
|
|
2275
|
-
* Fetches each node's children at most once by passing grandchildren when recursing.
|
|
2276
|
-
*/
|
|
2277
|
-
private collectLeafNodes;
|
|
2278
|
-
/**
|
|
2279
|
-
* Checks if a node has children
|
|
2280
|
-
*/
|
|
2281
|
-
private nodeHasChildren;
|
|
2282
|
-
/**
|
|
2283
|
-
* Checks if a node is a leaf (has no children)
|
|
2284
|
-
*/
|
|
2285
|
-
private isLeafNodeCheck;
|
|
2286
|
-
/**
|
|
2287
|
-
* Caches node data from a tree node
|
|
2288
|
-
*/
|
|
2289
|
-
private cacheNodeFromTreeNode;
|
|
2290
|
-
/**
|
|
2291
|
-
* Builds complete ancestor chains for all selected node IDs.
|
|
2292
|
-
* Returns a Map where key is the selected node ID and value is array of ancestor IDs from root to parent.
|
|
2293
|
-
* Batch-fetches missing node and ancestor data in parallel to minimize API calls.
|
|
2294
|
-
*/
|
|
2295
|
-
private buildAncestorChains;
|
|
2296
|
-
/**
|
|
2297
|
-
* Expands ancestor nodes in order from root to leaf.
|
|
2298
|
-
* This ensures parent nodes are loaded into the tree before selecting children.
|
|
2299
|
-
*/
|
|
2300
|
-
private expandAncestorNodesInOrder;
|
|
2301
|
-
/** Waits until the node is expanded (tree has loaded children). Polls so deep paths load. */
|
|
2302
|
-
private waitForNodeExpanded;
|
|
2303
|
-
/**
|
|
2304
|
-
* Updates parent node states (selected/indeterminate) based on children selection.
|
|
2305
|
-
* Called after leaf nodes are selected to properly show parent states.
|
|
2306
|
-
* Works bottom-up from deepest parents to root, tracking states in a Map.
|
|
2307
|
-
*/
|
|
2308
|
-
private updateParentStatesAfterSelection;
|
|
2309
|
-
/**
|
|
2310
|
-
* Loads node data for IDs that are selected but not yet in the cache.
|
|
2311
|
-
* This is critical for pre-selected values in collapsed branches.
|
|
2312
|
-
* Fetches all missing IDs in parallel to minimize API calls and latency.
|
|
2313
|
-
*/
|
|
2314
|
-
private loadMissingNodeData;
|
|
2315
|
-
/**
|
|
2316
|
-
* For each selected id, if cached item has no parent (e.g. batch query returned minimal fields),
|
|
2317
|
-
* re-fetch by id so we have parent/parentId for building ancestor chains.
|
|
2318
|
-
* Fetches all needing refresh in parallel.
|
|
2319
|
-
*/
|
|
2320
|
-
private ensureParentDataInCache;
|
|
2321
|
-
/**
|
|
2322
|
-
* Resolves parent ID from node data: supports nested `parent` object or flat parentId/parentKey.
|
|
2323
|
-
*/
|
|
2324
|
-
private getParentIdFromNodeData;
|
|
2325
|
-
/**
|
|
2326
|
-
* Marks a node and its children as disabled if the node ID matches the excluded ID.
|
|
2327
|
-
*/
|
|
2328
|
-
private markNodeAsDisabled;
|
|
2329
|
-
/**
|
|
2330
|
-
* Processes root node: marks excluded nodes as disabled.
|
|
2331
|
-
*/
|
|
2332
|
-
private processRootNode;
|
|
2333
|
-
/**
|
|
2334
|
-
* Processes child nodes: marks excluded as disabled
|
|
2335
|
-
*/
|
|
2336
|
-
private processChildNodes;
|
|
2337
|
-
/**
|
|
2338
|
-
* Caches node data from items array
|
|
2339
|
-
*/
|
|
2340
|
-
private cacheNodeData;
|
|
2341
|
-
/**
|
|
2342
|
-
* Caches node data from tree nodes
|
|
2343
|
-
*/
|
|
2344
|
-
private cacheNodeDataFromNodes;
|
|
2345
|
-
/**
|
|
2346
|
-
* Calculate the full path from root to the selected node.
|
|
2347
|
-
* Returns an array of strings like ["Operations", "IT Operations"] for node "IT Operations" under parent "Operations".
|
|
2348
|
-
* Uses tree-view's getNodePath() API when available, otherwise falls back to manual calculation.
|
|
2349
|
-
*/
|
|
2350
|
-
private calculateNodePath;
|
|
2351
|
-
/**
|
|
2352
|
-
* Manual path calculation fallback
|
|
2353
|
-
*/
|
|
2354
|
-
private calculateNodePathManually;
|
|
2355
|
-
/**
|
|
2356
|
-
* Get the display title for a node.
|
|
2357
|
-
*/
|
|
2358
|
-
private getNodeTitle;
|
|
2359
|
-
private getSelectedItems;
|
|
2360
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryTreeSelectorComponent, never>;
|
|
2361
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryTreeSelectorComponent, "axp-entity-category-tree-selector", never, {}, {}, never, never, true, never>;
|
|
2362
|
-
}
|
|
2363
|
-
|
|
2364
|
-
declare class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
|
|
2365
|
-
protected readonly entityDetailPopoverService: AXPEntityDetailPopoverService;
|
|
2366
|
-
protected readonly formatService: AXFormatService;
|
|
2367
|
-
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
2368
|
-
private readonly categoryBatchResolver;
|
|
2369
|
-
private readonly rawValueSignal;
|
|
2370
|
-
set rawValueInput(value: any);
|
|
2371
|
-
protected entity: _angular_core.Signal<string>;
|
|
2372
|
-
protected valueField: _angular_core.Signal<string>;
|
|
2373
|
-
protected textField: _angular_core.Signal<string>;
|
|
2374
|
-
protected columnName: _angular_core.Signal<string>;
|
|
2375
|
-
protected defaultTextField: _angular_core.Signal<string>;
|
|
2376
|
-
protected displayField: _angular_core.Signal<string>;
|
|
2377
|
-
protected host: ElementRef<any>;
|
|
2378
|
-
private entityDef;
|
|
2379
|
-
protected displayItems: _angular_core.WritableSignal<any[]>;
|
|
2380
|
-
protected selectedItemIndex: _angular_core.WritableSignal<number>;
|
|
2381
|
-
private efEntity;
|
|
2382
|
-
private efDisplay;
|
|
2383
|
-
protected visibleItems: _angular_core.Signal<any[]>;
|
|
2384
|
-
protected columnItems: _angular_core.Signal<AXPColumnItemListItem[]>;
|
|
2385
|
-
protected showItemDetail(item: any, index: number, anchor?: HTMLElement): Promise<void>;
|
|
2386
|
-
protected handleItemClick(listItem: AXPColumnItemListItem): void;
|
|
2387
|
-
protected getItemPath(item: any): string[];
|
|
2388
|
-
protected hasParent(item: any): boolean;
|
|
2389
|
-
protected getItemText(item: any): string;
|
|
2390
|
-
protected joinPath(path: string[]): string;
|
|
2391
|
-
protected getItemId(item: any): string;
|
|
2392
|
-
protected getBreadcrumbPath(item: any): string;
|
|
2393
|
-
private resolveItemsWithPaths;
|
|
2394
|
-
/**
|
|
2395
|
-
* Build path from categories array when record has full chain (id, parentId, title).
|
|
2396
|
-
* Used when middleware enriches categories on create/update.
|
|
2894
|
+
* Handles search input value changes - Uses server-side search for efficiency and reliability
|
|
2397
2895
|
*/
|
|
2398
|
-
|
|
2399
|
-
private extractItemWithPath;
|
|
2896
|
+
handleSearchChange(event: AXValueChangedEvent<string>): Promise<void>;
|
|
2400
2897
|
/**
|
|
2401
|
-
*
|
|
2402
|
-
*
|
|
2898
|
+
* Collects all parent IDs for the given search results
|
|
2899
|
+
* Handles both nested 'parent' object and 'parentId' field in search results
|
|
2900
|
+
* Recursively fetches parent nodes to build the full parent chain
|
|
2403
2901
|
*/
|
|
2404
|
-
private
|
|
2405
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetColumnComponent, never>;
|
|
2406
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetColumnComponent, "axp-entity-category-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "rawValueInput": { "alias": "rawValue"; "required": false; }; }, {}, never, never, true, never>;
|
|
2407
|
-
}
|
|
2408
|
-
|
|
2409
|
-
interface AXPEntityCategoryWidgetOptions {
|
|
2410
|
-
disabled?: boolean | AXPExpression;
|
|
2411
|
-
readonly?: boolean | AXPExpression;
|
|
2412
|
-
placeholder?: string;
|
|
2413
|
-
entity?: string;
|
|
2414
|
-
multiple?: boolean;
|
|
2415
|
-
textField?: string;
|
|
2416
|
-
valueField?: string;
|
|
2417
|
-
parentKey?: string;
|
|
2418
|
-
expose?: Array<{
|
|
2419
|
-
source: string;
|
|
2420
|
-
target: string;
|
|
2421
|
-
}>;
|
|
2422
|
-
allowClear?: boolean;
|
|
2423
|
-
look?: 'select' | 'lookup';
|
|
2424
|
-
maxVisible?: number;
|
|
2425
|
-
characterLimit?: number | 'auto';
|
|
2426
|
-
sectionLimit?: number | 'auto';
|
|
2427
|
-
}
|
|
2428
|
-
|
|
2429
|
-
declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetComponent<any, AXPEntityCategoryWidgetOptions> {
|
|
2430
|
-
#private;
|
|
2431
|
-
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
2432
|
-
protected readonly popupService: AXPopupService;
|
|
2433
|
-
private readonly translateService;
|
|
2434
|
-
protected readonly cdr: ChangeDetectorRef;
|
|
2435
|
-
protected entity: _angular_core.Signal<string>;
|
|
2436
|
-
protected multiple: _angular_core.Signal<boolean>;
|
|
2437
|
-
protected disabled: _angular_core.Signal<boolean>;
|
|
2438
|
-
protected textField: _angular_core.Signal<string>;
|
|
2439
|
-
protected valueField: _angular_core.Signal<string>;
|
|
2440
|
-
protected expose: _angular_core.Signal<{
|
|
2441
|
-
source: string;
|
|
2442
|
-
target: string;
|
|
2443
|
-
}[] | undefined>;
|
|
2444
|
-
protected allowClear: _angular_core.Signal<boolean>;
|
|
2445
|
-
protected characterLimit: _angular_core.Signal<number | "auto">;
|
|
2446
|
-
protected sectionLimit: _angular_core.Signal<number | "auto">;
|
|
2447
|
-
protected defaultTextField: _angular_core.Signal<string>;
|
|
2448
|
-
protected displayField: _angular_core.Signal<string>;
|
|
2449
|
-
protected searchPlaceholderText: _angular_core.WritableSignal<string>;
|
|
2450
|
-
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
2451
|
-
protected isLoading: _angular_core.WritableSignal<boolean>;
|
|
2452
|
-
protected isOpen: _angular_core.WritableSignal<boolean>;
|
|
2453
|
-
protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
|
|
2454
|
-
protected searchTerm: _angular_core.WritableSignal<string | null>;
|
|
2455
|
-
private entityDef;
|
|
2902
|
+
private collectParentIds;
|
|
2456
2903
|
/**
|
|
2457
|
-
*
|
|
2458
|
-
*
|
|
2904
|
+
* Collects children IDs for matching search results recursively
|
|
2905
|
+
* Adds all descendants (children, grandchildren, etc.) to relevantNodeIds so they appear in the filtered tree
|
|
2459
2906
|
*/
|
|
2460
|
-
private
|
|
2461
|
-
protected handleAddClick(e: AXClickEvent): void;
|
|
2462
|
-
protected handleValueChange(e: AXValueChangedEvent): void;
|
|
2463
|
-
protected handleOnBlur(e: AXFocusEvent): void;
|
|
2464
|
-
protected handleKeyUp(e: AXHtmlEvent): Promise<void>;
|
|
2465
|
-
protected handleClearClick(): void;
|
|
2466
|
-
protected handleRemoveItem(event: Event, index: number): Promise<void>;
|
|
2467
|
-
clearInput(): void;
|
|
2468
|
-
private showTreeSelector;
|
|
2469
|
-
clear(): void;
|
|
2470
|
-
private findByValue;
|
|
2471
|
-
private setItems;
|
|
2472
|
-
private singleOrMultiple;
|
|
2473
|
-
private normalizePopupSelectedIds;
|
|
2474
|
-
protected getItemLabel(item: any): string;
|
|
2907
|
+
private collectChildrenIds;
|
|
2475
2908
|
/**
|
|
2476
|
-
*
|
|
2909
|
+
* Recursively collects all descendant IDs for a given node
|
|
2477
2910
|
*/
|
|
2478
|
-
|
|
2911
|
+
private collectChildrenRecursively;
|
|
2479
2912
|
/**
|
|
2480
|
-
*
|
|
2481
|
-
*
|
|
2913
|
+
* Fetches a single item by ID. Uses category tree service so byKey is used when available
|
|
2914
|
+
* (returns full item with parent/parentId for building ancestor chains).
|
|
2482
2915
|
*/
|
|
2483
|
-
|
|
2484
|
-
protected getItemId(item: any): string;
|
|
2916
|
+
private fetchItemById;
|
|
2485
2917
|
/**
|
|
2486
|
-
*
|
|
2487
|
-
*
|
|
2918
|
+
* Sorts parent IDs by their depth (root first, leaves last)
|
|
2919
|
+
* Optimized to use cached data and batch fetch missing items
|
|
2488
2920
|
*/
|
|
2489
|
-
private
|
|
2490
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetEditComponent, never>;
|
|
2491
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetEditComponent, "axp-entity-category-widget-edit", never, {}, {}, never, never, true, never>;
|
|
2492
|
-
}
|
|
2493
|
-
|
|
2494
|
-
declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetComponent<any> {
|
|
2495
|
-
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
2496
|
-
protected entity: _angular_core.Signal<string>;
|
|
2497
|
-
protected multiple: _angular_core.Signal<boolean>;
|
|
2498
|
-
protected valueField: _angular_core.Signal<string>;
|
|
2499
|
-
protected textField: _angular_core.Signal<string>;
|
|
2500
|
-
protected badgeClass: _angular_core.Signal<string>;
|
|
2501
|
-
protected displayField: _angular_core.Signal<string>;
|
|
2502
|
-
protected loading: _angular_core.WritableSignal<boolean>;
|
|
2503
|
-
private entityDef;
|
|
2504
|
-
protected displayItems: _angular_core.WritableSignal<{
|
|
2505
|
-
id: string;
|
|
2506
|
-
titleRaw: AXPMultiLanguageString | null | undefined;
|
|
2507
|
-
}[]>;
|
|
2508
|
-
private efEntity;
|
|
2509
|
-
private efDisplay;
|
|
2510
|
-
private extractItem;
|
|
2511
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetViewComponent, never>;
|
|
2512
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetViewComponent, "axp-entity-category-widget-view", never, {}, {}, never, never, true, never>;
|
|
2513
|
-
}
|
|
2514
|
-
|
|
2515
|
-
declare const AXPEntityCategoryWidget: AXPWidgetConfig;
|
|
2516
|
-
|
|
2517
|
-
declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
|
|
2518
|
-
private readonly mlsResolver;
|
|
2519
|
-
/** Plain string or locale map per segment; truncation uses resolved text (see {@link resolvedSectionTexts}). */
|
|
2520
|
-
sections: _angular_core.InputSignal<readonly (AXPMultiLanguageString | null | undefined)[]>;
|
|
2521
|
-
characterLimit: _angular_core.InputSignal<number | "auto">;
|
|
2522
|
-
sectionLimit: _angular_core.InputSignal<number | "auto">;
|
|
2523
|
-
separatorIcon: _angular_core.InputSignal<string>;
|
|
2524
|
-
ellipsisIcon: _angular_core.InputSignal<string>;
|
|
2525
|
-
eyeIcon: _angular_core.InputSignal<string>;
|
|
2526
|
-
protected container: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
2527
|
-
protected isExpanded: _angular_core.WritableSignal<boolean>;
|
|
2528
|
-
private containerWidth;
|
|
2529
|
-
private resizeObserver;
|
|
2530
|
-
/** Resolved display strings for length / ellipsis (same rules as the pipe). */
|
|
2531
|
-
protected resolvedSectionTexts: _angular_core.Signal<string[]>;
|
|
2532
|
-
protected effectiveCharacterLimit: _angular_core.Signal<number>;
|
|
2533
|
-
protected effectiveSectionLimit: _angular_core.Signal<number>;
|
|
2534
|
-
protected hasTruncatedText: _angular_core.Signal<boolean>;
|
|
2535
|
-
protected hasHiddenSections: _angular_core.Signal<boolean>;
|
|
2921
|
+
private sortParentsByDepth;
|
|
2536
2922
|
/**
|
|
2537
|
-
*
|
|
2923
|
+
* Updates translated messages for search results
|
|
2538
2924
|
*/
|
|
2539
|
-
|
|
2540
|
-
protected allSectionsTruncated: _angular_core.Signal<{
|
|
2541
|
-
text: string;
|
|
2542
|
-
original: string;
|
|
2543
|
-
}[]>;
|
|
2544
|
-
protected displayedSections: _angular_core.Signal<{
|
|
2545
|
-
text: string;
|
|
2546
|
-
original: string;
|
|
2547
|
-
}[]>;
|
|
2548
|
-
protected lastSection: _angular_core.Signal<{
|
|
2549
|
-
text: string;
|
|
2550
|
-
original: string;
|
|
2551
|
-
}>;
|
|
2552
|
-
protected fullPath: _angular_core.Signal<string>;
|
|
2553
|
-
constructor();
|
|
2554
|
-
ngOnDestroy(): void;
|
|
2555
|
-
protected handleSeparatorClick(event: Event): void;
|
|
2556
|
-
protected handleEllipsisClick(event: Event): void;
|
|
2557
|
-
protected handleCollapseClick(event: Event): void;
|
|
2558
|
-
private initializeResizeObserver;
|
|
2559
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTruncatedBreadcrumbComponent, never>;
|
|
2560
|
-
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>;
|
|
2561
|
-
}
|
|
2562
|
-
|
|
2563
|
-
declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
|
|
2564
|
-
declare module '@acorex-platform/framework-shared/widget-core' {
|
|
2565
|
-
interface AXPWidgetTypesMap {
|
|
2566
|
-
entityDefinitionProvider: 'entity-definition-provider-editor';
|
|
2567
|
-
}
|
|
2568
|
-
}
|
|
2569
|
-
|
|
2570
|
-
declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
|
|
2571
|
-
private readonly entityRegistry;
|
|
2925
|
+
private updateTranslatedMessages;
|
|
2572
2926
|
/**
|
|
2573
|
-
*
|
|
2927
|
+
* Resets search state and restores tree to original expanded state
|
|
2574
2928
|
*/
|
|
2575
|
-
private
|
|
2929
|
+
private resetSearch;
|
|
2576
2930
|
/**
|
|
2577
|
-
*
|
|
2931
|
+
* Restores multiple-mode leaf selection after search reset.
|
|
2578
2932
|
*/
|
|
2579
|
-
private
|
|
2933
|
+
private restoreMultipleSelectionAfterReload;
|
|
2934
|
+
protected onNodeSelect(event: AXTreeViewNodeSelectEvent): Promise<void>;
|
|
2935
|
+
/** Datasource callback for tree-view component. */
|
|
2936
|
+
protected datasource: (id?: string) => Promise<AXTreeViewNode[]>;
|
|
2937
|
+
protected onConfirm(): Promise<void>;
|
|
2938
|
+
protected onCancel(): Promise<void>;
|
|
2580
2939
|
/**
|
|
2581
|
-
*
|
|
2582
|
-
* - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
|
|
2583
|
-
* - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
|
|
2940
|
+
* Clears all selected items
|
|
2584
2941
|
*/
|
|
2585
|
-
protected
|
|
2586
|
-
value: string;
|
|
2587
|
-
title: string;
|
|
2588
|
-
}>>;
|
|
2589
|
-
refresh(): void;
|
|
2942
|
+
protected onClearAll(): void;
|
|
2590
2943
|
/**
|
|
2591
|
-
*
|
|
2944
|
+
* Checks if a node matches the current search term
|
|
2592
2945
|
*/
|
|
2593
|
-
|
|
2946
|
+
protected isMatchingNode(nodeId: string): boolean;
|
|
2594
2947
|
/**
|
|
2595
|
-
*
|
|
2948
|
+
* Checks if a node is currently selected
|
|
2596
2949
|
*/
|
|
2597
|
-
|
|
2598
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
|
|
2599
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
|
|
2600
|
-
}
|
|
2601
|
-
|
|
2602
|
-
declare class AXPEntityListTableService {
|
|
2603
|
-
private readonly workflow;
|
|
2604
|
-
private readonly commandService;
|
|
2605
|
-
private readonly expressionEvaluator;
|
|
2606
|
-
private readonly settings;
|
|
2950
|
+
protected isNodeSelected(nodeId: string | number | undefined): boolean;
|
|
2607
2951
|
/**
|
|
2608
|
-
*
|
|
2952
|
+
* Expands parent nodes, collects all LEAF descendants, and selects them visually.
|
|
2953
|
+
* If the parent itself is a leaf (no children), it will be added.
|
|
2954
|
+
* When prefetchedChildren is provided, avoids an extra datasource(parentId) call.
|
|
2609
2955
|
*/
|
|
2610
|
-
|
|
2956
|
+
private selectAllLeafDescendants;
|
|
2611
2957
|
/**
|
|
2612
|
-
*
|
|
2958
|
+
* Removes all LEAF descendants from selectedNodeIds.
|
|
2959
|
+
* For 'all' node: clears everything and uses tree's deselectAll().
|
|
2960
|
+
* For other nodes: tree handles visual state via user click.
|
|
2613
2961
|
*/
|
|
2614
|
-
private
|
|
2962
|
+
private deselectAllLeafDescendants;
|
|
2615
2963
|
/**
|
|
2616
|
-
*
|
|
2964
|
+
* Recursively expands parent nodes and collects LEAF node IDs.
|
|
2965
|
+
* When treeComponent is provided, expands each parent node before loading children.
|
|
2966
|
+
* When prefetchedChildren is provided, uses it instead of calling datasource(parentId) (one less API call).
|
|
2967
|
+
* Fetches each node's children at most once by passing grandchildren when recursing.
|
|
2617
2968
|
*/
|
|
2618
|
-
private
|
|
2969
|
+
private collectLeafNodes;
|
|
2619
2970
|
/**
|
|
2620
|
-
*
|
|
2971
|
+
* Checks if a node has children
|
|
2621
2972
|
*/
|
|
2622
|
-
private
|
|
2973
|
+
private nodeHasChildren;
|
|
2623
2974
|
/**
|
|
2624
|
-
*
|
|
2975
|
+
* Checks if a node is a leaf (has no children)
|
|
2625
2976
|
*/
|
|
2626
|
-
private
|
|
2977
|
+
private isLeafNodeCheck;
|
|
2627
2978
|
/**
|
|
2628
|
-
*
|
|
2629
|
-
|
|
2630
|
-
|
|
2979
|
+
* Caches node data from a tree node
|
|
2980
|
+
*/
|
|
2981
|
+
private cacheNodeFromTreeNode;
|
|
2982
|
+
/**
|
|
2983
|
+
* Builds complete ancestor chains for all selected node IDs.
|
|
2984
|
+
* Returns a Map where key is the selected node ID and value is array of ancestor IDs from root to parent.
|
|
2985
|
+
* Batch-fetches missing node and ancestor data in parallel to minimize API calls.
|
|
2631
2986
|
*/
|
|
2632
|
-
private
|
|
2987
|
+
private buildAncestorChains;
|
|
2633
2988
|
/**
|
|
2634
|
-
*
|
|
2989
|
+
* Expands ancestor nodes in order from root to leaf.
|
|
2990
|
+
* This ensures parent nodes are loaded into the tree before selecting children.
|
|
2635
2991
|
*/
|
|
2636
|
-
private
|
|
2637
|
-
|
|
2992
|
+
private expandAncestorNodesInOrder;
|
|
2993
|
+
/** Waits until the node is expanded (tree has loaded children). Polls so deep paths load. */
|
|
2994
|
+
private waitForNodeExpanded;
|
|
2638
2995
|
/**
|
|
2639
|
-
*
|
|
2996
|
+
* Updates parent node states (selected/indeterminate) based on children selection.
|
|
2997
|
+
* Called after leaf nodes are selected to properly show parent states.
|
|
2998
|
+
* Works bottom-up from deepest parents to root, tracking states in a Map.
|
|
2640
2999
|
*/
|
|
2641
|
-
private
|
|
3000
|
+
private updateParentStatesAfterSelection;
|
|
2642
3001
|
/**
|
|
2643
|
-
*
|
|
2644
|
-
*
|
|
3002
|
+
* Loads node data for IDs that are selected but not yet in the cache.
|
|
3003
|
+
* This is critical for pre-selected values in collapsed branches.
|
|
3004
|
+
* Fetches all missing IDs in parallel to minimize API calls and latency.
|
|
2645
3005
|
*/
|
|
2646
|
-
private
|
|
3006
|
+
private loadMissingNodeData;
|
|
2647
3007
|
/**
|
|
2648
|
-
*
|
|
3008
|
+
* For each selected id, if cached item has no parent (e.g. batch query returned minimal fields),
|
|
3009
|
+
* re-fetch by id so we have parent/parentId for building ancestor chains.
|
|
3010
|
+
* Fetches all needing refresh in parallel.
|
|
2649
3011
|
*/
|
|
2650
|
-
private
|
|
2651
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListTableService, never>;
|
|
2652
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListTableService>;
|
|
2653
|
-
}
|
|
2654
|
-
|
|
2655
|
-
interface AXPEntityListToolbarConvertOptions {
|
|
2656
|
-
excludeColumns?: string[];
|
|
2657
|
-
includeColumns?: string[];
|
|
2658
|
-
/** Related list: evaluated `AXPEntityTableColumn[]` from `AXPRelatedEntity.columns` */
|
|
2659
|
-
relatedTableColumns?: AXPEntityTableColumn[];
|
|
2660
|
-
customFilterDefinitions?: Partial<AXPEntityListFilterDefinition>[];
|
|
2661
|
-
}
|
|
2662
|
-
declare class AXPEntityListToolbarService {
|
|
2663
|
-
private readonly widgetResolver;
|
|
2664
|
-
private readonly entityRegistry;
|
|
3012
|
+
private ensureParentDataInCache;
|
|
2665
3013
|
/**
|
|
2666
|
-
*
|
|
3014
|
+
* Resolves parent ID from node data: supports nested `parent` object or flat parentId/parentKey.
|
|
2667
3015
|
*/
|
|
2668
|
-
|
|
2669
|
-
filterDefinitions: AXPEntityListFilterDefinition[];
|
|
2670
|
-
columnDefinitions: AXPColumnQuery[];
|
|
2671
|
-
sortDefinitions: AXPSortDefinition[];
|
|
2672
|
-
}>;
|
|
3016
|
+
private getParentIdFromNodeData;
|
|
2673
3017
|
/**
|
|
2674
|
-
*
|
|
2675
|
-
* Matching fields: custom properties are applied on top of the base definition.
|
|
2676
|
-
* Non-matching custom entries are appended.
|
|
3018
|
+
* Marks a node and its children as disabled if the node ID matches the excluded ID.
|
|
2677
3019
|
*/
|
|
2678
|
-
private
|
|
2679
|
-
private filterFieldKey;
|
|
2680
|
-
private mergeFilterDefinition;
|
|
3020
|
+
private markNodeAsDisabled;
|
|
2681
3021
|
/**
|
|
2682
|
-
*
|
|
3022
|
+
* Processes root node: marks excluded nodes as disabled.
|
|
2683
3023
|
*/
|
|
2684
|
-
private
|
|
3024
|
+
private processRootNode;
|
|
2685
3025
|
/**
|
|
2686
|
-
*
|
|
2687
|
-
* Includes both entity.properties and enriched columns (e.g. person.firstName with showAs).
|
|
3026
|
+
* Processes child nodes: marks excluded as disabled
|
|
2688
3027
|
*/
|
|
2689
|
-
private
|
|
3028
|
+
private processChildNodes;
|
|
2690
3029
|
/**
|
|
2691
|
-
*
|
|
2692
|
-
* Includes host properties and merge-detail related fields with sort enabled.
|
|
3030
|
+
* Caches node data from items array
|
|
2693
3031
|
*/
|
|
2694
|
-
private
|
|
2695
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
|
|
2696
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListToolbarService>;
|
|
2697
|
-
}
|
|
2698
|
-
|
|
2699
|
-
declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
|
|
2700
|
-
#private;
|
|
2701
|
-
protected entityService: AXPEntityDefinitionRegistryService;
|
|
2702
|
-
protected workflow: AXPWorkflowService;
|
|
2703
|
-
protected entityListTableService: AXPEntityListTableService;
|
|
2704
|
-
protected entityListToolbarService: AXPEntityListToolbarService;
|
|
2705
|
-
protected deviceService: AXPDeviceService;
|
|
2706
|
-
protected commandService: AXPCommandService;
|
|
2707
|
-
protected eventService: AXPBroadcastEventService;
|
|
2708
|
-
private readonly expressionEvaluator;
|
|
2709
|
-
private readonly route;
|
|
2710
|
-
protected isMounted: _angular_core.WritableSignal<boolean>;
|
|
2711
|
-
readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
|
|
2712
|
-
protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
2713
|
-
protected list: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
|
|
2714
|
-
protected allWidgets: _angular_core.Signal<readonly AXPWidgetRendererDirective[]>;
|
|
2715
|
-
protected listWidget: _angular_core.WritableSignal<AXPWidgetRendererDirective | undefined>;
|
|
2716
|
-
protected toolbarWidget: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
|
|
2717
|
-
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
2718
|
-
protected toolbarNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
2719
|
-
protected destroyed: Subject<void>;
|
|
2720
|
-
protected entitySource: _angular_core.Signal<any>;
|
|
2721
|
-
protected excludeColumns: _angular_core.Signal<string[]>;
|
|
2722
|
-
protected includeColumns: _angular_core.Signal<string[]>;
|
|
2723
|
-
protected relatedTableColumns: _angular_core.Signal<AXPEntityTableColumn[] | undefined>;
|
|
2724
|
-
protected customFilterDefinitions: _angular_core.Signal<Partial<AXPFilterDefinition>[] | undefined>;
|
|
2725
|
-
protected externalActions: _angular_core.Signal<AXPEntityAction[]>;
|
|
2726
|
-
protected maxHeight: _angular_core.Signal<string>;
|
|
2727
|
-
protected showEntityActions: _angular_core.Signal<any>;
|
|
2728
|
-
protected showToolbar: _angular_core.Signal<any>;
|
|
2729
|
-
protected allActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
2730
|
-
protected primaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
2731
|
-
protected handleUnselectAll(): void;
|
|
2732
|
-
protected secondaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
2733
|
-
protected handleActionClick(item: AXPActionMenuItem): void;
|
|
2734
|
-
protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
|
|
2735
|
-
protected execute(commandName: string, _data: unknown): Promise<void>;
|
|
3032
|
+
private cacheNodeData;
|
|
2736
3033
|
/**
|
|
2737
|
-
*
|
|
3034
|
+
* Caches node data from tree nodes
|
|
2738
3035
|
*/
|
|
2739
|
-
private
|
|
2740
|
-
private evaluateToolbarExpressions;
|
|
3036
|
+
private cacheNodeDataFromNodes;
|
|
2741
3037
|
/**
|
|
2742
|
-
*
|
|
3038
|
+
* Calculate the full path from root to the selected node.
|
|
3039
|
+
* Returns an array of strings like ["Operations", "IT Operations"] for node "IT Operations" under parent "Operations".
|
|
3040
|
+
* Uses tree-view's getNodePath() API when available, otherwise falls back to manual calculation.
|
|
2743
3041
|
*/
|
|
2744
|
-
private
|
|
3042
|
+
private calculateNodePath;
|
|
2745
3043
|
/**
|
|
2746
|
-
*
|
|
2747
|
-
* (e.g. WorkOrder filters must not affect FailureRegister on the same asset layout).
|
|
3044
|
+
* Manual path calculation fallback
|
|
2748
3045
|
*/
|
|
2749
|
-
private
|
|
3046
|
+
private calculateNodePathManually;
|
|
2750
3047
|
/**
|
|
2751
|
-
*
|
|
3048
|
+
* Get the display title for a node.
|
|
2752
3049
|
*/
|
|
2753
|
-
private
|
|
2754
|
-
private
|
|
3050
|
+
private getNodeTitle;
|
|
3051
|
+
private getSelectedItems;
|
|
3052
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryTreeSelectorComponent, never>;
|
|
3053
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryTreeSelectorComponent, "axp-entity-category-tree-selector", never, {}, {}, never, never, true, never>;
|
|
3054
|
+
}
|
|
3055
|
+
|
|
3056
|
+
declare class AXPEntityCategoryWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
|
|
3057
|
+
protected readonly entityDetailPopoverService: AXPEntityDetailPopoverService;
|
|
3058
|
+
protected readonly formatService: AXFormatService;
|
|
3059
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
3060
|
+
private readonly categoryBatchResolver;
|
|
3061
|
+
private readonly rawValueSignal;
|
|
3062
|
+
set rawValueInput(value: any);
|
|
3063
|
+
protected entity: _angular_core.Signal<string>;
|
|
3064
|
+
protected valueField: _angular_core.Signal<string>;
|
|
3065
|
+
protected textField: _angular_core.Signal<string>;
|
|
3066
|
+
protected columnName: _angular_core.Signal<string>;
|
|
3067
|
+
protected defaultTextField: _angular_core.Signal<string>;
|
|
3068
|
+
protected displayField: _angular_core.Signal<string>;
|
|
3069
|
+
protected host: ElementRef<any>;
|
|
3070
|
+
private entityDef;
|
|
3071
|
+
protected displayItems: _angular_core.WritableSignal<any[]>;
|
|
3072
|
+
protected selectedItemIndex: _angular_core.WritableSignal<number>;
|
|
3073
|
+
private efEntity;
|
|
3074
|
+
private efDisplay;
|
|
3075
|
+
protected visibleItems: _angular_core.Signal<any[]>;
|
|
3076
|
+
protected columnItems: _angular_core.Signal<AXPColumnItemListItem[]>;
|
|
3077
|
+
protected showItemDetail(item: any, index: number, anchor?: HTMLElement): Promise<void>;
|
|
3078
|
+
protected handleItemClick(listItem: AXPColumnItemListItem): void;
|
|
3079
|
+
protected getItemPath(item: any): string[];
|
|
3080
|
+
protected hasParent(item: any): boolean;
|
|
3081
|
+
protected getItemText(item: any): string;
|
|
3082
|
+
protected joinPath(path: string[]): string;
|
|
3083
|
+
protected getItemId(item: any): string;
|
|
3084
|
+
protected getBreadcrumbPath(item: any): string;
|
|
3085
|
+
private resolveItemsWithPaths;
|
|
2755
3086
|
/**
|
|
2756
|
-
*
|
|
3087
|
+
* Build path from categories array when record has full chain (id, parentId, title).
|
|
3088
|
+
* Used when middleware enriches categories on create/update.
|
|
2757
3089
|
*/
|
|
2758
|
-
private
|
|
2759
|
-
|
|
2760
|
-
private reapplyScopedFiltersToDataSource;
|
|
3090
|
+
private buildItemWithPathFromChain;
|
|
3091
|
+
private extractItemWithPath;
|
|
2761
3092
|
/**
|
|
2762
|
-
*
|
|
2763
|
-
*
|
|
3093
|
+
* Calculate the full path from root to the item.
|
|
3094
|
+
* Returns an array of strings like ["C", "B"] for item B under parent C.
|
|
2764
3095
|
*/
|
|
2765
|
-
private
|
|
3096
|
+
private calculateItemPath;
|
|
3097
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetColumnComponent, never>;
|
|
3098
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetColumnComponent, "axp-entity-category-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "rawValueInput": { "alias": "rawValue"; "required": false; }; }, {}, never, never, true, never>;
|
|
3099
|
+
}
|
|
3100
|
+
|
|
3101
|
+
interface AXPEntityCategoryWidgetOptions {
|
|
3102
|
+
disabled?: boolean | AXPExpression;
|
|
3103
|
+
readonly?: boolean | AXPExpression;
|
|
3104
|
+
placeholder?: string;
|
|
3105
|
+
entity?: string;
|
|
3106
|
+
multiple?: boolean;
|
|
3107
|
+
textField?: string;
|
|
3108
|
+
valueField?: string;
|
|
3109
|
+
parentKey?: string;
|
|
3110
|
+
expose?: Array<{
|
|
3111
|
+
source: string;
|
|
3112
|
+
target: string;
|
|
3113
|
+
}>;
|
|
3114
|
+
allowClear?: boolean;
|
|
3115
|
+
look?: 'select' | 'lookup';
|
|
3116
|
+
maxVisible?: number;
|
|
3117
|
+
characterLimit?: number | 'auto';
|
|
3118
|
+
sectionLimit?: number | 'auto';
|
|
3119
|
+
}
|
|
3120
|
+
|
|
3121
|
+
declare class AXPEntityCategoryWidgetEditComponent extends AXPValueWidgetComponent<any, AXPEntityCategoryWidgetOptions> {
|
|
3122
|
+
#private;
|
|
3123
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
3124
|
+
protected readonly popupService: AXPopupService;
|
|
3125
|
+
private readonly translateService;
|
|
3126
|
+
protected readonly cdr: ChangeDetectorRef;
|
|
3127
|
+
protected entity: _angular_core.Signal<string>;
|
|
3128
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
3129
|
+
protected disabled: _angular_core.Signal<boolean>;
|
|
3130
|
+
protected textField: _angular_core.Signal<string>;
|
|
3131
|
+
protected valueField: _angular_core.Signal<string>;
|
|
3132
|
+
protected expose: _angular_core.Signal<{
|
|
3133
|
+
source: string;
|
|
3134
|
+
target: string;
|
|
3135
|
+
}[] | undefined>;
|
|
3136
|
+
protected allowClear: _angular_core.Signal<boolean>;
|
|
3137
|
+
protected characterLimit: _angular_core.Signal<number | "auto">;
|
|
3138
|
+
protected sectionLimit: _angular_core.Signal<number | "auto">;
|
|
3139
|
+
protected defaultTextField: _angular_core.Signal<string>;
|
|
3140
|
+
protected displayField: _angular_core.Signal<string>;
|
|
3141
|
+
protected searchPlaceholderText: _angular_core.WritableSignal<string>;
|
|
3142
|
+
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
3143
|
+
protected isLoading: _angular_core.WritableSignal<boolean>;
|
|
3144
|
+
protected isOpen: _angular_core.WritableSignal<boolean>;
|
|
3145
|
+
protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
|
|
3146
|
+
protected searchTerm: _angular_core.WritableSignal<string | null>;
|
|
3147
|
+
private entityDef;
|
|
2766
3148
|
/**
|
|
2767
|
-
*
|
|
3149
|
+
* Flag to prevent the value effect from running during internal updates.
|
|
3150
|
+
* This prevents circular dependency when setItems() calls setValue().
|
|
2768
3151
|
*/
|
|
2769
|
-
private
|
|
3152
|
+
private isInternalUpdate;
|
|
3153
|
+
protected handleAddClick(e: AXClickEvent): void;
|
|
3154
|
+
protected handleValueChange(e: AXValueChangedEvent): void;
|
|
3155
|
+
protected handleOnBlur(e: AXFocusEvent): void;
|
|
3156
|
+
protected handleKeyUp(e: AXHtmlEvent): Promise<void>;
|
|
3157
|
+
protected handleClearClick(): void;
|
|
3158
|
+
protected handleRemoveItem(event: Event, index: number): Promise<void>;
|
|
3159
|
+
clearInput(): void;
|
|
3160
|
+
private showTreeSelector;
|
|
3161
|
+
clear(): void;
|
|
3162
|
+
private findByValue;
|
|
3163
|
+
private setItems;
|
|
3164
|
+
private singleOrMultiple;
|
|
3165
|
+
private normalizePopupSelectedIds;
|
|
3166
|
+
protected getItemLabel(item: any): string;
|
|
2770
3167
|
/**
|
|
2771
|
-
*
|
|
2772
|
-
* Returns false while data-list is still mounting (see deferred listNode.set in ngOnInit).
|
|
3168
|
+
* Get item path as array for breadcrumb component (raw MLS or string per segment).
|
|
2773
3169
|
*/
|
|
2774
|
-
|
|
3170
|
+
protected getItemPath(item: any): AXPMultiLanguageString[];
|
|
2775
3171
|
/**
|
|
2776
|
-
*
|
|
2777
|
-
* (
|
|
3172
|
+
* Join path array with separator.
|
|
3173
|
+
* Override this method to customize the separator (e.g., " > ", " -> ", " / ")
|
|
2778
3174
|
*/
|
|
2779
|
-
|
|
3175
|
+
protected joinPath(path: unknown[]): string;
|
|
3176
|
+
protected getItemId(item: any): string;
|
|
2780
3177
|
/**
|
|
2781
|
-
*
|
|
3178
|
+
* Calculate the full path from root to the item.
|
|
3179
|
+
* Returns an array of strings like ["C", "B"] for item B under parent C.
|
|
2782
3180
|
*/
|
|
2783
|
-
private
|
|
3181
|
+
private calculateItemPath;
|
|
3182
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetEditComponent, never>;
|
|
3183
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetEditComponent, "axp-entity-category-widget-edit", never, {}, {}, never, never, true, never>;
|
|
3184
|
+
}
|
|
3185
|
+
|
|
3186
|
+
declare class AXPEntityCategoryWidgetViewComponent extends AXPValueWidgetComponent<any> {
|
|
3187
|
+
protected readonly entityResolver: AXPEntityDefinitionRegistryService;
|
|
3188
|
+
protected entity: _angular_core.Signal<string>;
|
|
3189
|
+
protected multiple: _angular_core.Signal<boolean>;
|
|
3190
|
+
protected valueField: _angular_core.Signal<string>;
|
|
3191
|
+
protected textField: _angular_core.Signal<string>;
|
|
3192
|
+
protected badgeClass: _angular_core.Signal<string>;
|
|
3193
|
+
protected displayField: _angular_core.Signal<string>;
|
|
3194
|
+
protected loading: _angular_core.WritableSignal<boolean>;
|
|
3195
|
+
private entityDef;
|
|
3196
|
+
protected displayItems: _angular_core.WritableSignal<{
|
|
3197
|
+
id: string;
|
|
3198
|
+
titleRaw: AXPMultiLanguageString | null | undefined;
|
|
3199
|
+
}[]>;
|
|
3200
|
+
private efEntity;
|
|
3201
|
+
private efDisplay;
|
|
3202
|
+
private extractItem;
|
|
3203
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCategoryWidgetViewComponent, never>;
|
|
3204
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityCategoryWidgetViewComponent, "axp-entity-category-widget-view", never, {}, {}, never, never, true, never>;
|
|
3205
|
+
}
|
|
3206
|
+
|
|
3207
|
+
declare const AXPEntityCategoryWidget: AXPWidgetConfig;
|
|
3208
|
+
|
|
3209
|
+
declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
|
|
3210
|
+
private readonly mlsResolver;
|
|
3211
|
+
/** Plain string or locale map per segment; truncation uses resolved text (see {@link resolvedSectionTexts}). */
|
|
3212
|
+
sections: _angular_core.InputSignal<readonly (AXPMultiLanguageString | null | undefined)[]>;
|
|
3213
|
+
characterLimit: _angular_core.InputSignal<number | "auto">;
|
|
3214
|
+
sectionLimit: _angular_core.InputSignal<number | "auto">;
|
|
3215
|
+
separatorIcon: _angular_core.InputSignal<string>;
|
|
3216
|
+
ellipsisIcon: _angular_core.InputSignal<string>;
|
|
3217
|
+
eyeIcon: _angular_core.InputSignal<string>;
|
|
3218
|
+
protected container: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
3219
|
+
protected isExpanded: _angular_core.WritableSignal<boolean>;
|
|
3220
|
+
private containerWidth;
|
|
3221
|
+
private resizeObserver;
|
|
3222
|
+
/** Resolved display strings for length / ellipsis (same rules as the pipe). */
|
|
3223
|
+
protected resolvedSectionTexts: _angular_core.Signal<string[]>;
|
|
3224
|
+
protected effectiveCharacterLimit: _angular_core.Signal<number>;
|
|
3225
|
+
protected effectiveSectionLimit: _angular_core.Signal<number>;
|
|
3226
|
+
protected hasTruncatedText: _angular_core.Signal<boolean>;
|
|
3227
|
+
protected hasHiddenSections: _angular_core.Signal<boolean>;
|
|
2784
3228
|
/**
|
|
2785
|
-
*
|
|
3229
|
+
* canToggle: If this is false, NO Eye Icon and NO Click events will exist.
|
|
2786
3230
|
*/
|
|
2787
|
-
|
|
2788
|
-
protected
|
|
3231
|
+
protected canToggle: _angular_core.Signal<boolean>;
|
|
3232
|
+
protected allSectionsTruncated: _angular_core.Signal<{
|
|
3233
|
+
text: string;
|
|
3234
|
+
original: string;
|
|
3235
|
+
}[]>;
|
|
3236
|
+
protected displayedSections: _angular_core.Signal<{
|
|
3237
|
+
text: string;
|
|
3238
|
+
original: string;
|
|
3239
|
+
}[]>;
|
|
3240
|
+
protected lastSection: _angular_core.Signal<{
|
|
3241
|
+
text: string;
|
|
3242
|
+
original: string;
|
|
3243
|
+
}>;
|
|
3244
|
+
protected fullPath: _angular_core.Signal<string>;
|
|
3245
|
+
constructor();
|
|
3246
|
+
ngOnDestroy(): void;
|
|
3247
|
+
protected handleSeparatorClick(event: Event): void;
|
|
3248
|
+
protected handleEllipsisClick(event: Event): void;
|
|
3249
|
+
protected handleCollapseClick(event: Event): void;
|
|
3250
|
+
private initializeResizeObserver;
|
|
3251
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTruncatedBreadcrumbComponent, never>;
|
|
3252
|
+
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>;
|
|
3253
|
+
}
|
|
3254
|
+
|
|
3255
|
+
declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
|
|
3256
|
+
declare module '@acorex-platform/framework-shared/widget-core' {
|
|
3257
|
+
interface AXPWidgetTypesMap {
|
|
3258
|
+
entityDefinitionProvider: 'entity-definition-provider-editor';
|
|
3259
|
+
}
|
|
3260
|
+
}
|
|
3261
|
+
|
|
3262
|
+
declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
|
|
3263
|
+
private readonly entityRegistry;
|
|
2789
3264
|
/**
|
|
2790
|
-
*
|
|
3265
|
+
* Last applied module filter (from context) to avoid redundant reloads.
|
|
2791
3266
|
*/
|
|
2792
|
-
private
|
|
3267
|
+
private readonly lastModuleFilterKey;
|
|
2793
3268
|
/**
|
|
2794
|
-
*
|
|
3269
|
+
* Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
|
|
2795
3270
|
*/
|
|
2796
|
-
private
|
|
3271
|
+
private readonly reloadWhenModuleContextChanges;
|
|
2797
3272
|
/**
|
|
2798
|
-
*
|
|
3273
|
+
* Options:
|
|
3274
|
+
* - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
|
|
3275
|
+
* - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
|
|
2799
3276
|
*/
|
|
2800
|
-
|
|
3277
|
+
protected loadDataSourceRows(): Promise<Array<{
|
|
3278
|
+
value: string;
|
|
3279
|
+
title: string;
|
|
3280
|
+
}>>;
|
|
3281
|
+
refresh(): void;
|
|
2801
3282
|
/**
|
|
2802
|
-
*
|
|
3283
|
+
* Reads sibling field from context store data (same shape as `lodash/get` paths).
|
|
2803
3284
|
*/
|
|
2804
|
-
private
|
|
3285
|
+
private readModuleFromContext;
|
|
2805
3286
|
/**
|
|
2806
|
-
*
|
|
3287
|
+
* Resolves a sibling field path relative to the current widget's parent path.
|
|
2807
3288
|
*/
|
|
2808
|
-
private
|
|
3289
|
+
private resolveSiblingContextPath;
|
|
3290
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
|
|
3291
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
|
|
3292
|
+
}
|
|
3293
|
+
|
|
3294
|
+
declare class AXPEntityListTableService {
|
|
3295
|
+
private readonly commandService;
|
|
3296
|
+
private readonly expressionEvaluator;
|
|
3297
|
+
private readonly settings;
|
|
3298
|
+
private readonly columnWidthService;
|
|
2809
3299
|
/**
|
|
2810
|
-
*
|
|
2811
|
-
* Initial fetch is owned by {@link triggerInitialLoadIfNeeded} (manual fetchDataMode).
|
|
3300
|
+
* Convert Entity to List Widget Options
|
|
2812
3301
|
*/
|
|
2813
|
-
|
|
3302
|
+
convertEntityToListOptions(entity: AXPEntity, options: any, allActions: AXPEntityCommandTriggerViewModel[]): Promise<AXPDataListWidgetComponentOptions>;
|
|
2814
3303
|
/**
|
|
2815
|
-
*
|
|
2816
|
-
* TODO: Implement column change logic
|
|
3304
|
+
* Create DataSource for Entity
|
|
2817
3305
|
*/
|
|
2818
|
-
private
|
|
2819
|
-
protected context: {};
|
|
2820
|
-
protected previousQueries: any;
|
|
2821
|
-
ngOnInit(): Promise<void>;
|
|
2822
|
-
ngAfterViewInit(): Promise<void>;
|
|
2823
|
-
ngOnDestroy(): void;
|
|
2824
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListWidgetViewComponent, never>;
|
|
2825
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityListWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
|
2826
|
-
}
|
|
2827
|
-
|
|
2828
|
-
declare const AXPEntityListWidget: AXPWidgetConfig;
|
|
2829
|
-
|
|
2830
|
-
declare class AXPEditFileUploaderCommand implements AXPCommand<{
|
|
2831
|
-
file: AXPFileListItem;
|
|
2832
|
-
plugins?: {
|
|
2833
|
-
name: string;
|
|
2834
|
-
options?: unknown;
|
|
2835
|
-
}[];
|
|
2836
|
-
excludePlugins?: string[];
|
|
2837
|
-
enableTitleDescription?: boolean;
|
|
2838
|
-
isNewFile?: boolean;
|
|
2839
|
-
}, AXPFileListItem> {
|
|
2840
|
-
private readonly layoutBuilder;
|
|
2841
|
-
private readonly translationService;
|
|
2842
|
-
private readonly hooks;
|
|
2843
|
-
execute(input: {
|
|
2844
|
-
file: AXPFileListItem;
|
|
2845
|
-
plugins?: {
|
|
2846
|
-
name: string;
|
|
2847
|
-
options?: unknown;
|
|
2848
|
-
}[];
|
|
2849
|
-
excludePlugins?: string[];
|
|
2850
|
-
enableTitleDescription?: boolean;
|
|
2851
|
-
isNewFile?: boolean;
|
|
2852
|
-
}): Promise<AXPExecuteCommandResult<AXPFileListItem>>;
|
|
2853
|
-
private showEditDialog;
|
|
3306
|
+
private createDataSource;
|
|
2854
3307
|
/**
|
|
2855
|
-
*
|
|
3308
|
+
* Convert Properties to Columns
|
|
2856
3309
|
*/
|
|
2857
|
-
private
|
|
3310
|
+
private createColumnsFromProperties;
|
|
2858
3311
|
/**
|
|
2859
|
-
*
|
|
3312
|
+
* Map EntityTableColumn to ListWidgetColumn
|
|
2860
3313
|
*/
|
|
2861
|
-
private
|
|
3314
|
+
private mapEntityColumnToWidgetColumn;
|
|
2862
3315
|
/**
|
|
2863
|
-
*
|
|
3316
|
+
* Convert Entity Actions to Row Commands
|
|
2864
3317
|
*/
|
|
2865
|
-
private
|
|
2866
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEditFileUploaderCommand, never>;
|
|
2867
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEditFileUploaderCommand>;
|
|
2868
|
-
}
|
|
2869
|
-
|
|
2870
|
-
/** Visual layout for `axp-file-list`. */
|
|
2871
|
-
type AXPFileListLook = 'rows' | 'links';
|
|
2872
|
-
|
|
2873
|
-
declare class AXPFileListComponent implements OnInit, OnDestroy {
|
|
2874
|
-
private static readonly DOWNLOAD_DEBOUNCE_MS;
|
|
2875
|
-
private fileTypeService;
|
|
2876
|
-
private fileStorageService;
|
|
2877
|
-
private commandExecutor;
|
|
2878
|
-
private hooks;
|
|
2879
|
-
isLoading: _angular_core.WritableSignal<boolean>;
|
|
2880
|
-
private fileTypes;
|
|
2881
|
-
onRemove: _angular_core.OutputEmitterRef<AXPFileListItem>;
|
|
2882
|
-
onRevert: _angular_core.OutputEmitterRef<AXPFileListItem>;
|
|
2883
|
-
onRename: _angular_core.OutputEmitterRef<AXPFileListItem>;
|
|
2884
|
-
readonly: _angular_core.InputSignal<boolean>;
|
|
2885
|
-
fileEditable: _angular_core.InputSignal<boolean>;
|
|
2886
|
-
/** When true, edit dialog shows name, title and description fields. Default false. */
|
|
2887
|
-
enableTitleDescription: _angular_core.InputSignal<boolean>;
|
|
2888
|
-
multiple: _angular_core.InputSignal<boolean>;
|
|
2889
|
-
/** `rows`: file-type icons and action buttons; `links`: compact paperclip links (download on click). */
|
|
2890
|
-
look: _angular_core.InputSignal<AXPFileListLook>;
|
|
2891
|
-
/** i18n key for links look label (template adds trailing colon). */
|
|
2892
|
-
titleKey: _angular_core.InputSignal<string>;
|
|
2893
|
-
/** When false, links look omits the label (e.g. popover body). */
|
|
2894
|
-
showLabel: _angular_core.InputSignal<boolean>;
|
|
2895
|
-
/** `inline`: label + divider; `menu`: compact list for popovers/panels. */
|
|
2896
|
-
linksLayout: _angular_core.InputSignal<"menu" | "inline">;
|
|
2897
|
-
files: _angular_core.InputSignal<AXPFileListItem[]>;
|
|
2898
|
-
plugins: _angular_core.InputSignal<{
|
|
2899
|
-
name: string;
|
|
2900
|
-
options?: unknown;
|
|
2901
|
-
}[] | undefined>;
|
|
2902
|
-
excludePlugins: _angular_core.InputSignal<string[] | undefined>;
|
|
2903
|
-
capabilities: _angular_core.InputSignal<AXCFileUploaderCapabilities | undefined>;
|
|
3318
|
+
private createRowCommands;
|
|
2904
3319
|
/**
|
|
2905
|
-
*
|
|
2906
|
-
*
|
|
3320
|
+
* Wraps string values with AXP_ROW_EXPR_PREFIX so widget-renderer does not
|
|
3321
|
+
* evaluate them (it only treats {{ ... }} as expressions). Data-list will
|
|
3322
|
+
* unwrap and evaluate per row with row data. Only used for secondary commands.
|
|
2907
3323
|
*/
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
private
|
|
2913
|
-
private
|
|
2914
|
-
private getDefaultActions;
|
|
2915
|
-
/** True when the widget is readonly or this file row is locked (`readOnly`). */
|
|
2916
|
-
isItemInteractionLocked(file: AXPFileListItem): boolean;
|
|
2917
|
-
actionsFor(file: AXPFileListItem, index: number): any[];
|
|
2918
|
-
private loadActionsFor;
|
|
2919
|
-
ngOnInit(): Promise<void>;
|
|
2920
|
-
private loadGlobalActions;
|
|
2921
|
-
private shouldSkipDuplicateDownload;
|
|
2922
|
-
private downloadDedupeKey;
|
|
2923
|
-
/** Ensures `source` is set for links look and legacy rows that only carry storage id on `id`. */
|
|
2924
|
-
private resolveFileForDownload;
|
|
2925
|
-
protected getFileInfo(fileName: string): {
|
|
2926
|
-
icon: string;
|
|
2927
|
-
type: string;
|
|
2928
|
-
};
|
|
3324
|
+
private wrapRowExpr;
|
|
3325
|
+
/**
|
|
3326
|
+
* Check if entity has Selected Scope Actions
|
|
3327
|
+
*/
|
|
3328
|
+
private hasSelectedScopeActions;
|
|
3329
|
+
private evaluateExpressions;
|
|
2929
3330
|
/**
|
|
2930
|
-
*
|
|
3331
|
+
* Handle execution of a row command (shared by double-click and command handlers)
|
|
2931
3332
|
*/
|
|
2932
|
-
|
|
2933
|
-
handleFileDownload(event: AXClickEvent | Event, file: AXPFileListItem): Promise<void>;
|
|
2934
|
-
handleFileRemove(event: AXClickEvent, file: AXPFileListItem): Promise<void>;
|
|
3333
|
+
private handleRowCommand;
|
|
2935
3334
|
/**
|
|
2936
|
-
*
|
|
3335
|
+
* When a related entity list declares `excludeProperties`, row commands bypass the details page
|
|
3336
|
+
* `execute()` merge — apply the same exclusions for embedded create/update commands.
|
|
2937
3337
|
*/
|
|
2938
|
-
|
|
3338
|
+
private mergeRelatedListFormOptions;
|
|
2939
3339
|
/**
|
|
2940
|
-
*
|
|
3340
|
+
* Create default events
|
|
2941
3341
|
*/
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
protected getActionColor(action: any): string;
|
|
2946
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileListComponent, never>;
|
|
2947
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileListComponent, "axp-file-list", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "fileEditable": { "alias": "fileEditable"; "required": false; "isSignal": true; }; "enableTitleDescription": { "alias": "enableTitleDescription"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "linksLayout": { "alias": "linksLayout"; "required": false; "isSignal": true; }; "files": { "alias": "files"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; "excludePlugins": { "alias": "excludePlugins"; "required": false; "isSignal": true; }; "capabilities": { "alias": "capabilities"; "required": false; "isSignal": true; }; }, { "onRemove": "onRemove"; "onRevert": "onRevert"; "onRename": "onRename"; }, never, never, true, never>;
|
|
2948
|
-
}
|
|
2949
|
-
|
|
2950
|
-
/** Stable fingerprint for one file row; ignores Blob binary content. */
|
|
2951
|
-
declare function fingerprintAttachmentItem(item: unknown): string;
|
|
2952
|
-
/** Order-independent fingerprint for attachment lists. */
|
|
2953
|
-
declare function fingerprintAttachments(value: unknown): string;
|
|
2954
|
-
/** True when lists represent the same attachments regardless of blob vs fileId shape. */
|
|
2955
|
-
declare function attachmentsSemanticallyEqual(a: unknown, b: unknown): boolean;
|
|
2956
|
-
/** Attachment rows that remain after a successful save (drops soft-deleted rows). */
|
|
2957
|
-
declare function committedAttachments(value: unknown): AXPFileListItem[];
|
|
2958
|
-
/**
|
|
2959
|
-
* Post-save attachment list: drops soft-deleted rows and promotes pending `attached` rows to `uploaded`
|
|
2960
|
-
* so deferred-save pages get the same delete/revert behavior as after a full reload.
|
|
2961
|
-
*/
|
|
2962
|
-
declare function persistedAttachments(value: unknown): AXPFileListItem[];
|
|
2963
|
-
|
|
2964
|
-
interface AXPFileUploaderEntityFilesScope {
|
|
2965
|
-
name: string;
|
|
2966
|
-
id: string;
|
|
2967
|
-
field: string;
|
|
2968
|
-
}
|
|
2969
|
-
declare function isFileListItem(value: unknown): value is AXPFileListItem;
|
|
2970
|
-
/** Whether a list-row value represents one attachment (file item, id reference, or fileId source). */
|
|
2971
|
-
declare function isAttachmentListEntry(value: unknown): boolean;
|
|
2972
|
-
declare function attachmentFieldCount(fieldValue: unknown): number;
|
|
2973
|
-
declare function normalizeEntityFieldToFileList(fieldValue: unknown): AXPFileListItem[];
|
|
2974
|
-
/** Whether a stored value is a persisted file/document/reference token. */
|
|
2975
|
-
declare function isAttachmentStorageRef(value: unknown): value is string;
|
|
2976
|
-
/** True when the field has entries that cannot be shown without hydration (e.g. mixed `file:` refs + objects). */
|
|
2977
|
-
declare function attachmentNeedsHydration(fieldValue: unknown): boolean;
|
|
2978
|
-
/**
|
|
2979
|
-
* Resolves inline attachment field values to displayable file list items.
|
|
2980
|
-
* Handles mixed arrays of `file:` refs and already-hydrated AXPFileListItem objects.
|
|
2981
|
-
*/
|
|
2982
|
-
declare function hydrateAttachmentFieldToFileList(fieldValue: unknown, fileStorage: AXPFileStorageService): Promise<AXPFileListItem[]>;
|
|
2983
|
-
/** Attachment field path from widget options or column path fallback. */
|
|
2984
|
-
declare function resolveAttachmentFieldPath(options: Record<string, unknown>, fieldFallback?: string): string | undefined;
|
|
2985
|
-
/** True when the list row includes the attachment field (even when empty). */
|
|
2986
|
-
declare function isAttachmentFieldPresentOnRow(rowData: Record<string, unknown> | undefined, fieldPath: string | undefined): boolean;
|
|
2987
|
-
declare function resolveFileUploaderEntityScope(options: Record<string, unknown>, rowData: Record<string, unknown> | undefined, fieldFallback?: string): AXPFileUploaderEntityFilesScope | undefined;
|
|
2988
|
-
|
|
2989
|
-
interface AXPFileUploaderLoadFilesInput extends AXPFileUploaderEntityFilesScope {
|
|
2990
|
-
}
|
|
2991
|
-
interface AXPFileUploaderLoadFilesResult {
|
|
2992
|
-
files: AXPFileListItem[];
|
|
2993
|
-
/** Count including file-id references, not only hydrated AXPFileListItem rows. */
|
|
2994
|
-
count: number;
|
|
2995
|
-
}
|
|
2996
|
-
declare class AXPFileUploaderLoadFilesQuery implements AXPQuery<AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult> {
|
|
2997
|
-
private readonly injector;
|
|
2998
|
-
fetch(input: AXPFileUploaderLoadFilesInput): Promise<AXPFileUploaderLoadFilesResult>;
|
|
2999
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderLoadFilesQuery, never>;
|
|
3000
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderLoadFilesQuery>;
|
|
3001
|
-
}
|
|
3002
|
-
|
|
3003
|
-
interface AXPFileUploaderSaveFilesInput extends AXPFileUploaderEntityFilesScope {
|
|
3004
|
-
files: AXPFileListItem[];
|
|
3005
|
-
}
|
|
3006
|
-
interface AXPFileUploaderSaveFilesResult {
|
|
3007
|
-
entityData: Record<string, unknown>;
|
|
3008
|
-
}
|
|
3009
|
-
declare class AXPFileUploaderSaveFilesCommand implements AXPCommand<AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult> {
|
|
3010
|
-
private readonly injector;
|
|
3011
|
-
execute(input: AXPFileUploaderSaveFilesInput): Promise<AXPExecuteCommandResult<AXPFileUploaderSaveFilesResult>>;
|
|
3342
|
+
private createDefaultEvents;
|
|
3343
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListTableService, never>;
|
|
3344
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListTableService>;
|
|
3012
3345
|
}
|
|
3013
3346
|
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
}
|
|
3021
|
-
type AXPFileUploaderEditDialogMode = 'manual' | 'auto';
|
|
3022
|
-
interface AXPFileUploaderEditDialogFieldOptions {
|
|
3023
|
-
name?: boolean;
|
|
3024
|
-
title?: boolean;
|
|
3025
|
-
description?: boolean;
|
|
3026
|
-
}
|
|
3027
|
-
interface AXPFileUploaderEditDialogOptions {
|
|
3028
|
-
mode?: AXPFileUploaderEditDialogMode;
|
|
3029
|
-
fields?: AXPFileUploaderEditDialogFieldOptions;
|
|
3347
|
+
interface AXPEntityListToolbarConvertOptions {
|
|
3348
|
+
excludeColumns?: string[];
|
|
3349
|
+
includeColumns?: string[];
|
|
3350
|
+
/** Related list: evaluated `AXPEntityTableColumn[]` from `AXPRelatedEntity.columns` */
|
|
3351
|
+
relatedTableColumns?: AXPEntityTableColumn[];
|
|
3352
|
+
customFilterDefinitions?: Partial<AXPEntityListFilterDefinition>[];
|
|
3030
3353
|
}
|
|
3031
|
-
declare
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
private
|
|
3048
|
-
private
|
|
3049
|
-
private
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
/**
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
static
|
|
3354
|
+
declare class AXPEntityListToolbarService {
|
|
3355
|
+
private readonly widgetResolver;
|
|
3356
|
+
private readonly entityRegistry;
|
|
3357
|
+
/**
|
|
3358
|
+
* Convert Entity to Toolbar Options
|
|
3359
|
+
*/
|
|
3360
|
+
convertEntityToolbarOptions(entity: AXPEntity, options: AXPEntityListToolbarConvertOptions | undefined): Promise<{
|
|
3361
|
+
filterDefinitions: AXPEntityListFilterDefinition[];
|
|
3362
|
+
columnDefinitions: AXPColumnQuery[];
|
|
3363
|
+
sortDefinitions: AXPSortDefinition[];
|
|
3364
|
+
}>;
|
|
3365
|
+
/**
|
|
3366
|
+
* Merges custom filter definitions into the entity-derived list by `field`.
|
|
3367
|
+
* Matching fields: custom properties are applied on top of the base definition.
|
|
3368
|
+
* Non-matching custom entries are appended.
|
|
3369
|
+
*/
|
|
3370
|
+
private mergeFilterDefinitions;
|
|
3371
|
+
private filterFieldKey;
|
|
3372
|
+
private mergeFilterDefinition;
|
|
3373
|
+
/**
|
|
3374
|
+
* Create Filter Definitions for Toolbar
|
|
3375
|
+
*/
|
|
3376
|
+
private createFilterDefinitions;
|
|
3377
|
+
/**
|
|
3378
|
+
* Create Column Definitions for Toolbar.
|
|
3379
|
+
* Includes both entity.properties and enriched columns (e.g. person.firstName with showAs).
|
|
3380
|
+
*/
|
|
3381
|
+
private createColumnDefinitions;
|
|
3382
|
+
/**
|
|
3383
|
+
* Create Sort Definitions for Toolbar.
|
|
3384
|
+
* Includes host properties and merge-detail related fields with sort enabled.
|
|
3385
|
+
*/
|
|
3386
|
+
private createSortDefinitions;
|
|
3387
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListToolbarService, never>;
|
|
3388
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListToolbarService>;
|
|
3065
3389
|
}
|
|
3066
3390
|
|
|
3067
|
-
declare class
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
private readonly
|
|
3077
|
-
private readonly
|
|
3078
|
-
private
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
protected
|
|
3085
|
-
|
|
3086
|
-
protected
|
|
3087
|
-
protected
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
protected
|
|
3092
|
-
protected
|
|
3093
|
-
protected
|
|
3094
|
-
protected
|
|
3095
|
-
protected
|
|
3096
|
-
|
|
3097
|
-
protected
|
|
3098
|
-
protected
|
|
3099
|
-
protected
|
|
3100
|
-
protected
|
|
3101
|
-
protected
|
|
3102
|
-
protected
|
|
3103
|
-
|
|
3104
|
-
protected
|
|
3105
|
-
ngOnInit(): void;
|
|
3106
|
-
setValue(value: AXPFileListItem[] | null | undefined): void;
|
|
3107
|
-
/** Align dirty baseline with persisted attachments (call when record loads or after discard remount). */
|
|
3108
|
-
syncBaseline(saved: AXPFileListItem[] | undefined): void;
|
|
3109
|
-
/** Mark current list as saved; clears dirty and drops soft-deleted rows from the UI. */
|
|
3110
|
-
markSaved(): void;
|
|
3111
|
-
/** Revert widget value to last saved baseline. */
|
|
3112
|
-
discardToBaseline(): void;
|
|
3113
|
-
api(): AXPWidgetCoreElementAPI;
|
|
3114
|
-
/** Current upload actions for host pages (always read via api; list may change after plugins load). */
|
|
3115
|
-
getUploadActionDescriptors(): AXPFileUploaderUploadActionDescriptor[];
|
|
3116
|
-
runUploadActionByPlugin(plugin: string): Promise<void>;
|
|
3117
|
-
private notifyUploadActionsChanged;
|
|
3118
|
-
private evaluateDirty;
|
|
3119
|
-
private setDirty;
|
|
3120
|
-
private loadActions;
|
|
3121
|
-
private configureFromHooks;
|
|
3391
|
+
declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
|
|
3392
|
+
#private;
|
|
3393
|
+
protected entityService: AXPEntityDefinitionRegistryService;
|
|
3394
|
+
protected workflowEventService: AXPWorkflowEventService;
|
|
3395
|
+
protected entityListTableService: AXPEntityListTableService;
|
|
3396
|
+
protected entityListToolbarService: AXPEntityListToolbarService;
|
|
3397
|
+
protected deviceService: AXPDeviceService;
|
|
3398
|
+
protected commandService: AXPCommandService;
|
|
3399
|
+
protected eventService: AXPBroadcastEventService;
|
|
3400
|
+
private readonly expressionEvaluator;
|
|
3401
|
+
private readonly columnWidthService;
|
|
3402
|
+
private readonly route;
|
|
3403
|
+
protected isMounted: _angular_core.WritableSignal<boolean>;
|
|
3404
|
+
readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
|
|
3405
|
+
protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
3406
|
+
protected list: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
|
|
3407
|
+
protected allWidgets: _angular_core.Signal<readonly AXPWidgetRendererDirective[]>;
|
|
3408
|
+
protected listWidget: _angular_core.WritableSignal<AXPWidgetRendererDirective | undefined>;
|
|
3409
|
+
protected toolbarWidget: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
|
|
3410
|
+
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
3411
|
+
protected toolbarNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
3412
|
+
protected destroyed: Subject<void>;
|
|
3413
|
+
protected entitySource: _angular_core.Signal<any>;
|
|
3414
|
+
protected excludeColumns: _angular_core.Signal<string[]>;
|
|
3415
|
+
protected includeColumns: _angular_core.Signal<string[]>;
|
|
3416
|
+
protected relatedTableColumns: _angular_core.Signal<AXPEntityTableColumn[] | undefined>;
|
|
3417
|
+
protected customFilterDefinitions: _angular_core.Signal<Partial<AXPFilterDefinition>[] | undefined>;
|
|
3418
|
+
protected externalActions: _angular_core.Signal<AXPEntityAction[]>;
|
|
3419
|
+
protected maxHeight: _angular_core.Signal<string>;
|
|
3420
|
+
protected showEntityActions: _angular_core.Signal<any>;
|
|
3421
|
+
protected showToolbar: _angular_core.Signal<any>;
|
|
3422
|
+
protected allActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
|
|
3423
|
+
protected primaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
3424
|
+
protected handleUnselectAll(): void;
|
|
3425
|
+
protected secondaryActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
3426
|
+
protected handleActionClick(item: AXPActionMenuItem): void;
|
|
3427
|
+
protected handleSecondaryActionClick(item: AXPActionMenuItem): void;
|
|
3428
|
+
protected execute(commandName: string, _data: unknown): Promise<void>;
|
|
3122
3429
|
/**
|
|
3123
|
-
*
|
|
3124
|
-
* When showEditDialogAfterSelect is true, the edit dialog (with plugin hooks) is shown per file before adding; otherwise files are added and user can edit via Edit button.
|
|
3430
|
+
* Resolves toolbar commands including nested dropdown (`items`) actions.
|
|
3125
3431
|
*/
|
|
3126
|
-
private
|
|
3432
|
+
private findToolbarAction;
|
|
3433
|
+
private evaluateToolbarExpressions;
|
|
3127
3434
|
/**
|
|
3128
|
-
*
|
|
3435
|
+
* Parses the `filters` query param (same shape as standalone entity list routes).
|
|
3129
3436
|
*/
|
|
3130
|
-
private
|
|
3131
|
-
protected files: _angular_core.Signal<AXPFileListItem[]>;
|
|
3132
|
-
handleFileRemove(file: AXPFileListItem): void;
|
|
3133
|
-
removeFile(file: AXPFileListItem): void;
|
|
3437
|
+
private parseFiltersFromRoute;
|
|
3134
3438
|
/**
|
|
3135
|
-
*
|
|
3439
|
+
* Route `filters` apply only when the active details `page` matches this list's entity
|
|
3440
|
+
* (e.g. WorkOrder filters must not affect FailureRegister on the same asset layout).
|
|
3136
3441
|
*/
|
|
3137
|
-
|
|
3138
|
-
private resolveRestoredStatus;
|
|
3442
|
+
private shouldApplyRouteFilters;
|
|
3139
3443
|
/**
|
|
3140
|
-
*
|
|
3141
|
-
* so they are saved even if the entity payload does not carry these fields.
|
|
3444
|
+
* Merges route filters into related-entity toolbar filters (route wins per field).
|
|
3142
3445
|
*/
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3446
|
+
private mergeToolbarFilters;
|
|
3447
|
+
private getMergedToolbarFilters;
|
|
3448
|
+
/**
|
|
3449
|
+
* Applies merged route + parent-scope filters to the widget value and data source.
|
|
3450
|
+
*/
|
|
3451
|
+
private applyMergedRouteFiltersToList;
|
|
3452
|
+
/** Syncs toolbar filters to context and AXDataSource (retries until data-list is mounted). */
|
|
3453
|
+
private reapplyScopedFiltersToDataSource;
|
|
3454
|
+
/**
|
|
3455
|
+
* Entity lists use `fetchDataMode: 'manual'`; after scoped filters reach the data source,
|
|
3456
|
+
* the grid must be refreshed once (initial #effect may run before the data-list is ready).
|
|
3457
|
+
*/
|
|
3458
|
+
private triggerInitialLoadIfNeeded;
|
|
3459
|
+
/**
|
|
3460
|
+
* Re-evaluates related-entity list filters from the live dialog form context (e.g. after create saves the main row id).
|
|
3461
|
+
*/
|
|
3462
|
+
private applyRelatedFiltersFromContext;
|
|
3463
|
+
/**
|
|
3464
|
+
* Pushes current toolbar filters to the embedded list data source when both exist.
|
|
3465
|
+
* Returns false while data-list is still mounting (see deferred listNode.set in ngOnInit).
|
|
3466
|
+
*/
|
|
3467
|
+
private pushToolbarFiltersToDataSource;
|
|
3468
|
+
/**
|
|
3469
|
+
* Pushes toolbar filters once the embedded data-list exposes its data source
|
|
3470
|
+
* (listNode is created via deferred setTimeout in ngOnInit).
|
|
3471
|
+
*/
|
|
3472
|
+
private ensureToolbarFiltersOnDataSource;
|
|
3473
|
+
/**
|
|
3474
|
+
* Writes toolbar filters from specs and pushes them onto the data source so refresh/reload keeps the parent scope.
|
|
3475
|
+
*/
|
|
3476
|
+
private applyRelatedFiltersFromContextAndDatasource;
|
|
3477
|
+
/**
|
|
3478
|
+
* Refreshes the embedded data list (toolbar / commands). In wizard mode, `refresh` is patched to re-apply scoped filters first.
|
|
3479
|
+
*/
|
|
3480
|
+
private refreshGridWithParentScopedFilters;
|
|
3481
|
+
protected queries: undefined;
|
|
3482
|
+
/**
|
|
3483
|
+
* Validates that all required dependencies are available
|
|
3484
|
+
*/
|
|
3485
|
+
private hasRequiredDependencies;
|
|
3486
|
+
/**
|
|
3487
|
+
* Handles all query-related changes (filters, sorts, columns)
|
|
3488
|
+
*/
|
|
3489
|
+
private handleQueryChanges;
|
|
3490
|
+
/**
|
|
3491
|
+
* Analyzes what has changed between current and previous queries
|
|
3492
|
+
*/
|
|
3493
|
+
private analyzeChanges;
|
|
3494
|
+
/**
|
|
3495
|
+
* Maps toolbar sort queries ({ name, dir }) to AXDataSource sort options ({ field, dir }).
|
|
3496
|
+
*/
|
|
3497
|
+
private toDataSourceSortOptions;
|
|
3498
|
+
/**
|
|
3499
|
+
* Applies filter and sort changes to the data source
|
|
3500
|
+
*/
|
|
3501
|
+
private applyDataSourceChanges;
|
|
3502
|
+
/**
|
|
3503
|
+
* Handles list refresh logic based on changes and mount status.
|
|
3504
|
+
* Initial fetch is owned by {@link triggerInitialLoadIfNeeded} (manual fetchDataMode).
|
|
3505
|
+
*/
|
|
3506
|
+
private handleListRefresh;
|
|
3507
|
+
/**
|
|
3508
|
+
* Handles column-related changes
|
|
3509
|
+
* TODO: Implement column change logic
|
|
3510
|
+
*/
|
|
3511
|
+
private handleColumnChanges;
|
|
3512
|
+
protected context: {};
|
|
3513
|
+
protected previousQueries: any;
|
|
3514
|
+
ngOnInit(): Promise<void>;
|
|
3515
|
+
ngAfterViewInit(): Promise<void>;
|
|
3516
|
+
ngOnDestroy(): void;
|
|
3517
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListWidgetViewComponent, never>;
|
|
3518
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityListWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
|
3211
3519
|
}
|
|
3212
3520
|
|
|
3213
|
-
|
|
3214
|
-
}
|
|
3215
|
-
interface AXPFileUploaderShowFileListOptions {
|
|
3216
|
-
/** When set, files are loaded and saved via FileUploader:LoadFiles / FileUploader:SaveFiles. */
|
|
3217
|
-
entity?: AXPFileUploaderShowFileListEntityContext;
|
|
3218
|
-
/** Direct files (e.g. grid column preview); skips load/save commands. */
|
|
3219
|
-
files?: AXPFileListItem[];
|
|
3220
|
-
readonly?: boolean;
|
|
3221
|
-
multiple?: boolean;
|
|
3222
|
-
accept?: string;
|
|
3223
|
-
fileEditable?: boolean;
|
|
3224
|
-
maxFileSize?: number;
|
|
3225
|
-
showAddItemButton?: boolean;
|
|
3226
|
-
plugins?: {
|
|
3227
|
-
name: string;
|
|
3228
|
-
options?: unknown;
|
|
3229
|
-
}[];
|
|
3230
|
-
editDialog?: AXPFileUploaderEditDialogOptions;
|
|
3231
|
-
}
|
|
3232
|
-
declare class AXPFileUploaderWidgetService {
|
|
3233
|
-
private popupService;
|
|
3234
|
-
private translate;
|
|
3235
|
-
private commandExecutor;
|
|
3236
|
-
private queryExecutor;
|
|
3237
|
-
showFileList(options?: AXPFileUploaderShowFileListOptions): Promise<AXPFileListItem[] | undefined>;
|
|
3238
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetService, never>;
|
|
3239
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderWidgetService>;
|
|
3240
|
-
}
|
|
3521
|
+
declare const AXPEntityListWidget: AXPWidgetConfig;
|
|
3241
3522
|
|
|
3242
3523
|
/**
|
|
3243
3524
|
* Resolves the display template for a lookup item.
|
|
@@ -3312,7 +3593,6 @@ interface AXPEntityDataSelectorRowActionsConfig {
|
|
|
3312
3593
|
}
|
|
3313
3594
|
declare class AXPEntityDataSelectorRowActionsService {
|
|
3314
3595
|
private readonly expressionEvaluator;
|
|
3315
|
-
private readonly workflow;
|
|
3316
3596
|
private readonly commandService;
|
|
3317
3597
|
/**
|
|
3318
3598
|
* Build a row-actions handler for {@link AXPDataSelectorComponent} from entity list actions.
|
|
@@ -3393,6 +3673,8 @@ interface AXPEntityDataSelectorOpenOptions {
|
|
|
3393
3673
|
contextStore?: AXPLookupCreateContextStore;
|
|
3394
3674
|
/** Entity list row actions to expose in the selector grid (matched by command name). */
|
|
3395
3675
|
rowActions?: AXPEntityDataSelectorRowActionsConfig;
|
|
3676
|
+
/** Optional action in the data selector footer prefix (e.g. sync from remote provider). */
|
|
3677
|
+
footerPrefixAction?: AXPDataSelectorFooterPrefixAction;
|
|
3396
3678
|
}
|
|
3397
3679
|
/**
|
|
3398
3680
|
* @deprecated Use {@link AXPEntityDataSelectorOpenOptions}. Will be removed in a future release.
|
|
@@ -3426,6 +3708,8 @@ interface AXPEntityDataSelectorOptions {
|
|
|
3426
3708
|
};
|
|
3427
3709
|
showCategoryFilter?: boolean;
|
|
3428
3710
|
rowActions?: AXPEntityDataSelectorRowActionsConfig;
|
|
3711
|
+
/** Optional action in the data selector footer prefix (e.g. sync from remote provider). */
|
|
3712
|
+
footerPrefixAction?: AXPDataSelectorFooterPrefixAction;
|
|
3429
3713
|
}
|
|
3430
3714
|
type AXPEntityDataSelectorOpenInput = AXPEntityDataSelectorOpenOptions | AXPEntityDataSelectorOptions;
|
|
3431
3715
|
interface AXPEntityDataSelectorResult {
|
|
@@ -3576,7 +3860,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
|
|
|
3576
3860
|
protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
|
|
3577
3861
|
protected displayField: _angular_core.Signal<string>;
|
|
3578
3862
|
protected resolvedCreate: _angular_core.Signal<_acorex_platform_framework_shared_entity.ResolvedLookupCreateOptions>;
|
|
3579
|
-
protected
|
|
3863
|
+
protected rowActions: _angular_core.Signal<AXPLookupSelectorRowActionsConfig | undefined>;
|
|
3580
3864
|
protected valueField: _angular_core.Signal<string>;
|
|
3581
3865
|
protected displayFormat: _angular_core.Signal<string | undefined>;
|
|
3582
3866
|
protected conditions?: AXPQueryFilter[];
|
|
@@ -3649,7 +3933,7 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
|
|
|
3649
3933
|
protected isMorePopoverOpen: _angular_core.WritableSignal<boolean>;
|
|
3650
3934
|
protected selectedItemIndex: _angular_core.WritableSignal<number>;
|
|
3651
3935
|
protected resolvedPopoverItems: _angular_core.WritableSignal<any[]>;
|
|
3652
|
-
protected resolveStatus: _angular_core.WritableSignal<"
|
|
3936
|
+
protected resolveStatus: _angular_core.WritableSignal<"idle" | "loading" | "ready" | "error">;
|
|
3653
3937
|
protected resolveError: _angular_core.WritableSignal<string | null>;
|
|
3654
3938
|
protected summaryLabel: _angular_core.WritableSignal<string>;
|
|
3655
3939
|
protected popoverHeader: _angular_core.WritableSignal<string>;
|
|
@@ -4224,151 +4508,19 @@ declare class AXPSelectorStructureWidgetViewComponent extends AXPValueWidgetComp
|
|
|
4224
4508
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetViewComponent, "axp-selector-structure-widget-view", never, {}, {}, never, never, true, never>;
|
|
4225
4509
|
}
|
|
4226
4510
|
|
|
4227
|
-
declare const AXPEntityCreateEvent: {
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
|
|
4237
|
-
};
|
|
4238
|
-
type: string;
|
|
4239
|
-
};
|
|
4240
|
-
declare class AXPEntityCreatePopupAction extends AXPWorkflowAction {
|
|
4241
|
-
private entityRegistery;
|
|
4242
|
-
private popupService;
|
|
4243
|
-
private platform;
|
|
4244
|
-
private factory;
|
|
4245
|
-
private config;
|
|
4246
|
-
private translateService;
|
|
4247
|
-
private settingsService;
|
|
4248
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4249
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreatePopupAction, never>;
|
|
4250
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreatePopupAction>;
|
|
4251
|
-
}
|
|
4252
|
-
declare class AXPEntityCreateSubmittedAction extends AXPWorkflowAction {
|
|
4253
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4254
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityCreateSubmittedAction, never>;
|
|
4255
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityCreateSubmittedAction>;
|
|
4256
|
-
}
|
|
4257
|
-
declare const AXPCreateEntityWorkflow: AXPWorkflow;
|
|
4258
|
-
|
|
4259
|
-
declare const AXPEntityDeletedEvent: {
|
|
4260
|
-
(payload: {
|
|
4261
|
-
entity: string;
|
|
4262
|
-
ids: string[];
|
|
4263
|
-
meta?: any;
|
|
4264
|
-
}): {
|
|
4265
|
-
type: string;
|
|
4266
|
-
payload: {
|
|
4267
|
-
entity: string;
|
|
4268
|
-
ids: string[];
|
|
4269
|
-
meta?: any;
|
|
4270
|
-
};
|
|
4271
|
-
};
|
|
4272
|
-
type: string;
|
|
4273
|
-
};
|
|
4274
|
-
interface AXPEntityDeleteOptions {
|
|
4275
|
-
source: string;
|
|
4511
|
+
declare const AXPEntityCreateEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
|
|
4512
|
+
entity: string;
|
|
4513
|
+
meta?: unknown;
|
|
4514
|
+
}>;
|
|
4515
|
+
declare const AXPEntityModifyEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
|
|
4516
|
+
entity: string;
|
|
4517
|
+
values: Record<string, unknown>;
|
|
4518
|
+
}>;
|
|
4519
|
+
declare const AXPEntityDeletedEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
|
|
4520
|
+
entity: string;
|
|
4276
4521
|
ids: string[];
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
private entityRegistery;
|
|
4280
|
-
private dialogService;
|
|
4281
|
-
private loadingDialog;
|
|
4282
|
-
private translationService;
|
|
4283
|
-
private settingsService;
|
|
4284
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4285
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPerformDeleteAction, never>;
|
|
4286
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityPerformDeleteAction>;
|
|
4287
|
-
}
|
|
4288
|
-
declare const AXPDeleteEntityWorkflow: AXPWorkflow;
|
|
4289
|
-
|
|
4290
|
-
declare class AXPQuickEntityModifyPopupAction extends AXPWorkflowAction {
|
|
4291
|
-
private popupService;
|
|
4292
|
-
private platform;
|
|
4293
|
-
private translateService;
|
|
4294
|
-
private formatService;
|
|
4295
|
-
private expressionEvaluator;
|
|
4296
|
-
private contextEvalFactory;
|
|
4297
|
-
private entityRegistery;
|
|
4298
|
-
private config;
|
|
4299
|
-
private factory;
|
|
4300
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4301
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQuickEntityModifyPopupAction, never>;
|
|
4302
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPQuickEntityModifyPopupAction>;
|
|
4303
|
-
}
|
|
4304
|
-
declare const AXPQuickModifyEntityWorkflow: AXPWorkflow;
|
|
4305
|
-
declare class AXPEntityApplyUpdatesAction extends AXPWorkflowAction {
|
|
4306
|
-
private entityRegistery;
|
|
4307
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4308
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityApplyUpdatesAction, never>;
|
|
4309
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityApplyUpdatesAction>;
|
|
4310
|
-
}
|
|
4311
|
-
|
|
4312
|
-
declare const AXPEntityModifyEvent: {
|
|
4313
|
-
(payload: {
|
|
4314
|
-
entity: string;
|
|
4315
|
-
values: any;
|
|
4316
|
-
}): {
|
|
4317
|
-
type: string;
|
|
4318
|
-
payload: {
|
|
4319
|
-
entity: string;
|
|
4320
|
-
values: any;
|
|
4321
|
-
};
|
|
4322
|
-
};
|
|
4323
|
-
type: string;
|
|
4324
|
-
};
|
|
4325
|
-
declare class AXPEntityModifySectionPopupAction extends AXPWorkflowAction {
|
|
4326
|
-
private popupService;
|
|
4327
|
-
private platform;
|
|
4328
|
-
private translateService;
|
|
4329
|
-
private formatService;
|
|
4330
|
-
private expressionEvaluator;
|
|
4331
|
-
private contextEvalFactory;
|
|
4332
|
-
private entityRegistery;
|
|
4333
|
-
private config;
|
|
4334
|
-
private factory;
|
|
4335
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4336
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModifySectionPopupAction, never>;
|
|
4337
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityModifySectionPopupAction>;
|
|
4338
|
-
}
|
|
4339
|
-
declare class AXPEntityModifyConfirmedAction extends AXPWorkflowAction {
|
|
4340
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4341
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModifyConfirmedAction, never>;
|
|
4342
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityModifyConfirmedAction>;
|
|
4343
|
-
}
|
|
4344
|
-
declare const AXPModifyEntitySectionWorkflow: AXPWorkflow;
|
|
4345
|
-
|
|
4346
|
-
declare class AXPShowDetailViewAction extends AXPWorkflowAction {
|
|
4347
|
-
private navigation;
|
|
4348
|
-
private sessionService;
|
|
4349
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4350
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowDetailViewAction, never>;
|
|
4351
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowDetailViewAction>;
|
|
4352
|
-
}
|
|
4353
|
-
declare const AXPShowDetailsViewWorkflow: AXPWorkflow;
|
|
4354
|
-
|
|
4355
|
-
/** Optional list filters passed into `show-list-view` (e.g. from `Entity:List` with `conditions`). */
|
|
4356
|
-
interface AXPShowListViewCondition {
|
|
4357
|
-
name?: string;
|
|
4358
|
-
field?: string;
|
|
4359
|
-
operator?: {
|
|
4360
|
-
type: string;
|
|
4361
|
-
};
|
|
4362
|
-
value?: unknown;
|
|
4363
|
-
}
|
|
4364
|
-
declare class AXPShowListViewAction extends AXPWorkflowAction {
|
|
4365
|
-
private navigation;
|
|
4366
|
-
private sessionService;
|
|
4367
|
-
execute(context: AXPWorkflowContext): Promise<void>;
|
|
4368
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowListViewAction, never>;
|
|
4369
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowListViewAction>;
|
|
4370
|
-
}
|
|
4371
|
-
declare const AXPShowListViewWorkflow: AXPWorkflow;
|
|
4522
|
+
meta?: unknown;
|
|
4523
|
+
}>;
|
|
4372
4524
|
|
|
4373
|
-
export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand,
|
|
4374
|
-
export type { AXPDataSeeder, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader,
|
|
4525
|
+
export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPDataSeederService, AXPDeleteEntityCommand, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityFormBuilderService, AXPEntityLifecycleHookKeys, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyEvent, AXPEntityModule, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPOpenEntityListCommand, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowFileUploaderPopupCommand, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_APPEARANCE_SECTION_ORDER, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_CLASSIFICATION_SECTION_ORDER, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, ENTITY_MASTER_LIST_TRACE_NS, EntityBuilder, EntityDataAccessor, GALLERY_PAGE_COMPONENT_KEY, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentNeedsHydration, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, axpDeleteEntityCommandDefinition, axpOpenEntityListCommandDefinition, axpShowFileUploaderPopupCommandDefinition, buildDataSourceTraceSnapshot, canPersistEntityListState, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, fireEntityLifecycleHook, formatLookupItemDisplay, formatLookupItemDisplayAsync, galleryPlugin, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, hasFileUploaderTitleOrDescriptionFields, hydrateAttachmentFieldToFileList, isAXPMiddlewareAbortError, isAttachmentFieldPresentOnRow, isAttachmentListEntry, isAttachmentStorageRef, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, persistedAttachments, provideEntity, resolveAttachmentFieldPath, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, resolveLookupEntityKey, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry, traceEntityMasterList };
|
|
4526
|
+
export type { AXPDataSeeder, AXPDeleteEntityCommandInput, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupDisplayEvalDeps, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPOpenEntityListCommandInput, AXPOpenEntityListCondition, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowFileUploaderPopupCommandInput, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, EntityMasterListTraceArea, GalleryDisplayMode, GalleryPluginOptions, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };
|