@acorex/platform 20.3.0-next.1 → 20.3.0-next.11
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/common/index.d.ts +125 -12
- package/core/index.d.ts +656 -100
- package/fesm2022/acorex-platform-auth.mjs +20 -20
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +120 -148
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +885 -261
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +16 -16
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +1615 -662
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +3327 -157
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +172 -210
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs +52 -0
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +4522 -1643
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +398 -89
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +7 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +40 -40
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-hHXxHlFG.mjs → acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs} +7 -7
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs +706 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs +244 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-D4glpFvU.mjs → acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-401.component-D4glpFvU.mjs.map → acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-404.component-BvGeDMjo.mjs → acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-404.component-BvGeDMjo.mjs.map → acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-BINy-Zo3.mjs → acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-BINy-Zo3.mjs.map → acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +64 -509
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-C833prGO.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs} +24 -14
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs → acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs} +2 -2
- package/fesm2022/acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-color-chooser-column.component-DjKLg513.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs} +23 -8
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-color-chooser-view.component-DE0wO98F.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs} +23 -8
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +250 -85
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-lNF95FJv.mjs → acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs} +7 -7
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs +50 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs +42 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs +55 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs +50 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs +48 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs +42 -0
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-DFbPO0ud.mjs → acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs} +72 -7
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DRsLkulH.mjs → acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs} +79 -69
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-nLZYiPnF.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs} +13 -13
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-D6kiasYM.mjs → acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs} +8 -7
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-CCMQtH3e.mjs → acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs} +9 -14
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +9152 -7181
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +28 -25
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/index.d.ts +419 -185
- package/layout/components/index.d.ts +1129 -24
- package/layout/designer/index.d.ts +20 -49
- package/layout/entity/index.d.ts +424 -332
- package/layout/views/index.d.ts +129 -22
- package/package.json +23 -37
- package/widgets/index.d.ts +1908 -783
- package/workflow/index.d.ts +4 -1
- package/fesm2022/acorex-platform-themes-default-create-entity-view.component-SY0oMDoH.mjs +0 -22
- package/fesm2022/acorex-platform-themes-default-create-entity-view.component-SY0oMDoH.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-hHXxHlFG.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-hf4QOz_4.mjs +0 -665
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-hf4QOz_4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DC3MrDtI.mjs +0 -108
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DC3MrDtI.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bb90PeHq.mjs +0 -236
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bb90PeHq.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-color-chooser-column.component-DjKLg513.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-color-chooser-view.component-DE0wO98F.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-C833prGO.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-lNF95FJv.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BNBOATPB.mjs +0 -85
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BNBOATPB.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-BI18uzNZ.mjs +0 -55
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-BI18uzNZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C6-QPsnb.mjs +0 -76
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C6-QPsnb.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-pYOQv5g8.mjs +0 -55
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-pYOQv5g8.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-DFbPO0ud.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DA_CgIvm.mjs +0 -211
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DA_CgIvm.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DRsLkulH.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-CM_v-cL4.mjs +0 -40
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-CM_v-cL4.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-nLZYiPnF.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-D6kiasYM.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-CCMQtH3e.mjs.map +0 -1
package/layout/entity/index.d.ts
CHANGED
|
@@ -1,17 +1,121 @@
|
|
|
1
|
+
import { AXPCommand, AXPQuery } from '@acorex/platform/runtime';
|
|
1
2
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, Injector,
|
|
3
|
+
import { ElementRef, InjectionToken, Injector, Type } from '@angular/core';
|
|
4
|
+
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
5
|
+
import { AXPMetaData, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPUserReference, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity as AXPCategoryEntity$1, AXPAppStartUpService, AXPMiddlewareErrorResponse } from '@acorex/platform/core';
|
|
6
|
+
import * as i3 from '@acorex/platform/layout/builder';
|
|
7
|
+
import { AXPWidgetNode, AXPWidgetColumnNode, AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
|
|
3
8
|
import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption } from '@acorex/cdk/common';
|
|
4
9
|
import * as _acorex_platform_common from '@acorex/platform/common';
|
|
5
|
-
import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPRelatedEntity, AXPEntitySectionView, AXPGridLayoutOptions, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityDetailListView, AXPQueryFilter } from '@acorex/platform/common';
|
|
6
|
-
import { AXPMetaData, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPAppStartUpService } from '@acorex/platform/core';
|
|
7
|
-
import * as i3 from '@acorex/platform/layout/builder';
|
|
8
|
-
import { AXPWidgetColumnNode, AXPWidgetNode, AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
|
|
10
|
+
import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPRelatedEntity, AXPEntitySectionView, AXPGridLayoutOptions, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPQueryFilter } from '@acorex/platform/common';
|
|
9
11
|
import * as i1 from '@angular/router';
|
|
10
12
|
import { ResolveFn } from '@angular/router';
|
|
13
|
+
import * as rxjs from 'rxjs';
|
|
11
14
|
import { Subject } from 'rxjs';
|
|
12
|
-
import * as _acorex_platform_layout_entity from '@acorex/platform/layout/entity';
|
|
13
15
|
import * as i2 from '@acorex/platform/workflow';
|
|
14
16
|
import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
|
|
17
|
+
import { AXPopupSizeType } from '@acorex/components/popup';
|
|
18
|
+
import { IActionBuilder, IFieldBuilder, AXPDialogRef } from '@acorex/platform/layout/components';
|
|
19
|
+
|
|
20
|
+
interface AXPOpenEntityDetailsCommandInput {
|
|
21
|
+
entity: string;
|
|
22
|
+
data: {
|
|
23
|
+
id: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
interface AXPOpenEntityDetailsCommandResult {
|
|
27
|
+
success: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generic command to open entity details view
|
|
31
|
+
* Can be used by any entity to navigate to its detail page
|
|
32
|
+
*/
|
|
33
|
+
declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput, AXPOpenEntityDetailsCommandResult> {
|
|
34
|
+
private readonly router;
|
|
35
|
+
private readonly sessionService;
|
|
36
|
+
/**
|
|
37
|
+
* Execute the command to navigate to entity details
|
|
38
|
+
* @param input - Command input containing entity and data information
|
|
39
|
+
*/
|
|
40
|
+
execute(input: AXPOpenEntityDetailsCommandInput): Promise<AXPOpenEntityDetailsCommandResult>;
|
|
41
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityDetailsCommand, never>;
|
|
42
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
declare class AXPEntityDetailPopoverComponent {
|
|
46
|
+
private readonly commandService;
|
|
47
|
+
private readonly queryService;
|
|
48
|
+
entity: _angular_core.InputSignal<string>;
|
|
49
|
+
entityId: _angular_core.InputSignal<string | number>;
|
|
50
|
+
textField: _angular_core.InputSignal<string>;
|
|
51
|
+
valueField: _angular_core.InputSignal<string>;
|
|
52
|
+
item: _angular_core.InputSignal<AXPMetaData | undefined>;
|
|
53
|
+
protected detailPopover: _angular_core.Signal<AXPopoverComponent | undefined>;
|
|
54
|
+
protected entityDetails: _angular_core.WritableSignal<any>;
|
|
55
|
+
protected isLoadingDetails: _angular_core.WritableSignal<boolean>;
|
|
56
|
+
protected isDetailPopoverOpen: _angular_core.WritableSignal<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* Show the entity detail popover
|
|
59
|
+
*/
|
|
60
|
+
show(target: ElementRef | HTMLElement): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Hide the entity detail popover
|
|
63
|
+
*/
|
|
64
|
+
hide(): void;
|
|
65
|
+
protected onDetailPopoverOpenChange(event: any): void;
|
|
66
|
+
protected navigateToDetails(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Returns true if a value is meaningful for display (non-empty/non-null).
|
|
69
|
+
*/
|
|
70
|
+
private hasMeaningfulValue;
|
|
71
|
+
/**
|
|
72
|
+
* Calculates an importance score for a property based on its widget type,
|
|
73
|
+
* whether it currently has a meaningful value, and metadata like title.
|
|
74
|
+
*/
|
|
75
|
+
private getPropertyImportanceScore;
|
|
76
|
+
/**
|
|
77
|
+
* Calculates a name-based importance score to prioritize common key fields
|
|
78
|
+
* like title, description, status, and important dates.
|
|
79
|
+
* Name priority MUST come before widget-type priority.
|
|
80
|
+
*/
|
|
81
|
+
private getNameImportanceScore;
|
|
82
|
+
protected getEntityPropertiesWithWidgets(): Array<{
|
|
83
|
+
name: string;
|
|
84
|
+
title: string;
|
|
85
|
+
node: AXPWidgetNode;
|
|
86
|
+
}>;
|
|
87
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverComponent, never>;
|
|
88
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDetailPopoverComponent, "axp-entity-detail-popover", never, { "entity": { "alias": "entity"; "required": true; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
interface AXPEntityDetailPopoverOptions {
|
|
92
|
+
entity: string;
|
|
93
|
+
id: string | number;
|
|
94
|
+
item: AXPMetaData;
|
|
95
|
+
textField?: string;
|
|
96
|
+
valueField?: string;
|
|
97
|
+
}
|
|
98
|
+
declare class AXPEntityDetailPopoverService {
|
|
99
|
+
private readonly applicationRef;
|
|
100
|
+
private readonly environmentInjector;
|
|
101
|
+
private activePopoverRef;
|
|
102
|
+
/**
|
|
103
|
+
* Show entity detail popover
|
|
104
|
+
* @param target - The target element to position the popover
|
|
105
|
+
* @param options - Configuration options for the popover
|
|
106
|
+
*/
|
|
107
|
+
show(target: ElementRef | HTMLElement, options: AXPEntityDetailPopoverOptions): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Hide the active popover
|
|
110
|
+
*/
|
|
111
|
+
hide(): void;
|
|
112
|
+
/**
|
|
113
|
+
* Check if a popover is currently active
|
|
114
|
+
*/
|
|
115
|
+
get isActive(): boolean;
|
|
116
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverService, never>;
|
|
117
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDetailPopoverService>;
|
|
118
|
+
}
|
|
15
119
|
|
|
16
120
|
interface AXPDataSeeder {
|
|
17
121
|
seed(): Promise<void>;
|
|
@@ -41,8 +145,8 @@ declare class AXPEntityCommandTriggerViewModel {
|
|
|
41
145
|
constructor(entity: AXPEntity, action: AXPEntityAction);
|
|
42
146
|
}
|
|
43
147
|
declare class AXPEntityListViewColumnViewModel {
|
|
44
|
-
|
|
45
|
-
|
|
148
|
+
readonly property: AXPEntityProperty;
|
|
149
|
+
readonly column: AXPEntityTableColumn;
|
|
46
150
|
constructor(property: AXPEntityProperty, column: AXPEntityTableColumn);
|
|
47
151
|
name: string;
|
|
48
152
|
title: string;
|
|
@@ -100,6 +204,24 @@ declare class AXPEntityDetailListViewModel {
|
|
|
100
204
|
getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
|
|
101
205
|
}
|
|
102
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Entity Event Dispatcher - A wrapper for entity-specific events
|
|
209
|
+
* Handles pattern-based dispatching for entity operations with wildcard support
|
|
210
|
+
*/
|
|
211
|
+
declare class AXPEntityEventDispatcherService {
|
|
212
|
+
private readonly eventService;
|
|
213
|
+
dispatchEntityEvent(operation: 'inserted' | 'updated' | 'deleted', entityName: string, data: any): Promise<void>;
|
|
214
|
+
private getAllMatchingEventKeys;
|
|
215
|
+
private findMatchingWildcardKeys;
|
|
216
|
+
private matchesEntityPattern;
|
|
217
|
+
private generateEventKeys;
|
|
218
|
+
dispatchInserted(entityName: string, data: any): Promise<void>;
|
|
219
|
+
dispatchUpdated(entityName: string, data: any): Promise<void>;
|
|
220
|
+
dispatchDeleted(entityName: string, data: any): Promise<void>;
|
|
221
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityEventDispatcherService, never>;
|
|
222
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
|
|
223
|
+
}
|
|
224
|
+
|
|
103
225
|
declare class AXPEntityCreateViewSectionViewModel {
|
|
104
226
|
private entity;
|
|
105
227
|
private section;
|
|
@@ -185,9 +307,12 @@ declare class AXPEntityMasterListViewModel {
|
|
|
185
307
|
private readonly settings;
|
|
186
308
|
private readonly widgetResolver;
|
|
187
309
|
private readonly expressionEvaluator;
|
|
310
|
+
private readonly commandService;
|
|
188
311
|
private readonly filterOperatorMiddleware;
|
|
189
312
|
private settingEntityKey;
|
|
190
313
|
private readonly destroyed;
|
|
314
|
+
private lastAppliedSortKey;
|
|
315
|
+
private lastAppliedFilterKey;
|
|
191
316
|
events$: Subject<{
|
|
192
317
|
action: string;
|
|
193
318
|
meta?: any;
|
|
@@ -198,7 +323,7 @@ declare class AXPEntityMasterListViewModel {
|
|
|
198
323
|
dataSource: AXDataSource<unknown>;
|
|
199
324
|
constructor(injector: Injector, config: AXPEntity);
|
|
200
325
|
applySettings(): Promise<void>;
|
|
201
|
-
saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize', data?: any): Promise<void>;
|
|
326
|
+
saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'filters' | 'sorts', data?: any): Promise<void>;
|
|
202
327
|
selectedItems: _angular_core.WritableSignal<any[]>;
|
|
203
328
|
parentKey: _angular_core.Signal<string | undefined>;
|
|
204
329
|
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
@@ -226,6 +351,7 @@ declare class AXPEntityMasterListViewModel {
|
|
|
226
351
|
resetColumns(): void;
|
|
227
352
|
onColumnsChanged(columns: AXPEntityListViewColumnViewModel[]): Promise<void>;
|
|
228
353
|
applyViewColumns(): void;
|
|
354
|
+
onColumnsOrderChanged(event: any): void;
|
|
229
355
|
sortableFields: () => {
|
|
230
356
|
name: string;
|
|
231
357
|
title: string;
|
|
@@ -260,7 +386,6 @@ declare class AXPEntityMasterSingleViewGroupViewModel {
|
|
|
260
386
|
group: _acorex_platform_common.AXPEntityPropertyGroup;
|
|
261
387
|
name: _angular_core.WritableSignal<string>;
|
|
262
388
|
isLoading: _angular_core.WritableSignal<boolean>;
|
|
263
|
-
type: _angular_core.WritableSignal<"wrapper" | "section">;
|
|
264
389
|
title: _angular_core.Signal<string>;
|
|
265
390
|
description: _angular_core.Signal<string | null | undefined>;
|
|
266
391
|
layout: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
@@ -291,10 +416,14 @@ declare class AXPEntityMasterSingleViewModel {
|
|
|
291
416
|
private readonly session;
|
|
292
417
|
private readonly formatService;
|
|
293
418
|
private readonly workflow;
|
|
419
|
+
private readonly commandService;
|
|
294
420
|
private readonly destroyed;
|
|
295
421
|
private translateService;
|
|
296
422
|
private entityService;
|
|
297
423
|
private expressionEvaluator;
|
|
424
|
+
private entityDefinitionRegistryService;
|
|
425
|
+
private _updateTrigger;
|
|
426
|
+
readonly updateTrigger: _angular_core.Signal<number>;
|
|
298
427
|
constructor(injector: Injector, config: AXPEntity, entityData: any);
|
|
299
428
|
context: _angular_core.WritableSignal<any>;
|
|
300
429
|
private actions;
|
|
@@ -323,6 +452,17 @@ declare class AXPEntityDetailViewModelFactory {
|
|
|
323
452
|
}
|
|
324
453
|
declare const AXPEntityDetailViewModelResolver: ResolveFn<Promise<AXPEntityMasterSingleViewModel>>;
|
|
325
454
|
|
|
455
|
+
declare class AXPEntityUpdateViewSectionViewModel {
|
|
456
|
+
private entity;
|
|
457
|
+
private section;
|
|
458
|
+
constructor(entity: AXPEntity, section: AXPEntitySectionView);
|
|
459
|
+
group: _acorex_platform_common.AXPEntityPropertyGroup;
|
|
460
|
+
name: _angular_core.WritableSignal<string>;
|
|
461
|
+
title: _angular_core.Signal<string>;
|
|
462
|
+
description: _angular_core.Signal<string | null | undefined>;
|
|
463
|
+
layout: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
464
|
+
elements: _angular_core.Signal<AXPEntityMasterUpdateElementViewModel[]>;
|
|
465
|
+
}
|
|
326
466
|
declare class AXPEntityMasterUpdateElementViewModel {
|
|
327
467
|
private entity;
|
|
328
468
|
private property;
|
|
@@ -342,7 +482,6 @@ declare class AXPEntityMasterUpdateViewModel {
|
|
|
342
482
|
private props;
|
|
343
483
|
private entityDef;
|
|
344
484
|
private workflow;
|
|
345
|
-
private lockService;
|
|
346
485
|
private sessionService;
|
|
347
486
|
private get moduleName();
|
|
348
487
|
private get entityName();
|
|
@@ -352,9 +491,9 @@ declare class AXPEntityMasterUpdateViewModel {
|
|
|
352
491
|
isInProgress: _angular_core.WritableSignal<boolean>;
|
|
353
492
|
context: _angular_core.WritableSignal<any>;
|
|
354
493
|
elements: _angular_core.Signal<AXPEntityMasterUpdateElementViewModel[]>;
|
|
494
|
+
sections: _angular_core.Signal<AXPEntityUpdateViewSectionViewModel[]>;
|
|
355
495
|
save(): Promise<any>;
|
|
356
496
|
reset(): void;
|
|
357
|
-
unlock(): Promise<void>;
|
|
358
497
|
}
|
|
359
498
|
declare class AXPEntityMasterUpdateViewModelFactory {
|
|
360
499
|
private entityService;
|
|
@@ -379,10 +518,6 @@ interface AXPEntityModifierContext {
|
|
|
379
518
|
get(): string;
|
|
380
519
|
set(newName: string): AXPEntityModifierContext;
|
|
381
520
|
};
|
|
382
|
-
source: {
|
|
383
|
-
get(): string;
|
|
384
|
-
set(newSource: string): AXPEntityModifierContext;
|
|
385
|
-
};
|
|
386
521
|
parentKey: {
|
|
387
522
|
get(): string | undefined;
|
|
388
523
|
set(newKey: string | undefined): AXPEntityModifierContext;
|
|
@@ -453,6 +588,10 @@ interface AXPEntityModifierContext {
|
|
|
453
588
|
get(): AXPEntityMasterSingleLayoutView | undefined;
|
|
454
589
|
update(updater: (c: AXPEntityMasterSingleLayoutView | undefined) => AXPEntityMasterSingleLayoutView): AXPEntityModifierContext;
|
|
455
590
|
};
|
|
591
|
+
list: {
|
|
592
|
+
get(): AXPEntityMasterListView | undefined;
|
|
593
|
+
update(updater: (c: AXPEntityMasterListView | undefined) => AXPEntityMasterListView): AXPEntityModifierContext;
|
|
594
|
+
};
|
|
456
595
|
};
|
|
457
596
|
detail: {
|
|
458
597
|
get(): NonNullable<AXPEntity['interfaces']>['detail'] | undefined;
|
|
@@ -467,16 +606,31 @@ interface AXPEntityModifierContext {
|
|
|
467
606
|
}
|
|
468
607
|
type AXPEntityModifier = (context: AXPEntityModifierContext) => void;
|
|
469
608
|
interface AXPEntityModifierProvider {
|
|
470
|
-
entityName: string;
|
|
609
|
+
entityName: string | RegExp;
|
|
471
610
|
modifier: AXPEntityModifier;
|
|
472
611
|
}
|
|
473
612
|
|
|
613
|
+
declare function ensureListActions(ctx: AXPEntityModifierContext): void;
|
|
614
|
+
declare function actionExists(actions: any[] | undefined, commandName: string, name?: string): boolean;
|
|
615
|
+
|
|
616
|
+
interface AXPEntityActionPlugin {
|
|
617
|
+
name: string;
|
|
618
|
+
order?: number;
|
|
619
|
+
apply: (ctx: AXPEntityModifierContext, options?: any) => Promise<void> | void;
|
|
620
|
+
}
|
|
621
|
+
declare const AXP_ENTITY_ACTION_PLUGIN: InjectionToken<AXPEntityActionPlugin[]>;
|
|
622
|
+
|
|
474
623
|
declare class AXPEntityMiddleware {
|
|
475
|
-
private
|
|
476
|
-
|
|
624
|
+
private exactModifiers;
|
|
625
|
+
private patternModifiers;
|
|
626
|
+
protected providedModifiers: AXPEntityModifierProvider[];
|
|
627
|
+
protected providedActionPlugins: AXPEntityActionPlugin[];
|
|
628
|
+
protected injector: Injector;
|
|
477
629
|
constructor();
|
|
478
|
-
register(entityName: string, modifier: AXPEntityModifier): void;
|
|
479
|
-
process(entity: AXPEntity): AXPEntity
|
|
630
|
+
register(entityName: string | RegExp, modifier: AXPEntityModifier): void;
|
|
631
|
+
process(entity: AXPEntity): Promise<AXPEntity>;
|
|
632
|
+
private wildcardToRegExp;
|
|
633
|
+
private normalizeRegExp;
|
|
480
634
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMiddleware, never>;
|
|
481
635
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMiddleware>;
|
|
482
636
|
}
|
|
@@ -496,9 +650,25 @@ declare class AXPEntityDefinitionRegistryService {
|
|
|
496
650
|
private providers;
|
|
497
651
|
private resolver;
|
|
498
652
|
private middleware;
|
|
653
|
+
private onChanged;
|
|
654
|
+
get onChanged$(): rxjs.Observable<{
|
|
655
|
+
name: string;
|
|
656
|
+
}>;
|
|
499
657
|
preload(): Promise<void>;
|
|
500
658
|
private entities;
|
|
501
659
|
private entityResolver;
|
|
660
|
+
/**
|
|
661
|
+
* Force re-load and re-process entity definitions, then re-register them.
|
|
662
|
+
* Overloads:
|
|
663
|
+
* - refresh(): refresh all registered entities
|
|
664
|
+
* - refresh(fullName: string): refresh by fully-qualified name `<module>.<entity>`
|
|
665
|
+
* - refresh(moduleName: string, entityName: string): refresh by parts
|
|
666
|
+
*/
|
|
667
|
+
refresh(): Promise<void>;
|
|
668
|
+
refresh(fullName: string): Promise<void>;
|
|
669
|
+
refresh(moduleName: string, entityName: string): Promise<void>;
|
|
670
|
+
/** Executes the actual refresh for a single entity */
|
|
671
|
+
private refreshOne;
|
|
502
672
|
/**
|
|
503
673
|
* Registers a new entity configuration. Entities are identified uniquely by a combination
|
|
504
674
|
* of their module and name.
|
|
@@ -536,13 +706,34 @@ declare class AXPEntityDefinitionRegistryService {
|
|
|
536
706
|
}
|
|
537
707
|
|
|
538
708
|
interface AXPAuditable {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
709
|
+
created?: {
|
|
710
|
+
at?: Date;
|
|
711
|
+
by?: AXPUserReference;
|
|
712
|
+
};
|
|
713
|
+
updated?: {
|
|
714
|
+
at?: Date;
|
|
715
|
+
by?: AXPUserReference;
|
|
716
|
+
};
|
|
717
|
+
deleted?: {
|
|
718
|
+
at?: Date;
|
|
719
|
+
by?: AXPUserReference;
|
|
720
|
+
};
|
|
721
|
+
}
|
|
722
|
+
interface AXPRecordControl {
|
|
723
|
+
isReadOnly?: boolean;
|
|
724
|
+
isHidden?: boolean;
|
|
725
|
+
isSystem?: boolean;
|
|
726
|
+
isImmutable?: boolean;
|
|
543
727
|
}
|
|
544
|
-
interface
|
|
728
|
+
interface AXPRecordOwnership {
|
|
729
|
+
tenantId?: string;
|
|
730
|
+
ownerId?: string;
|
|
731
|
+
}
|
|
732
|
+
interface AXPEntityModel<Id> {
|
|
545
733
|
id: Id;
|
|
734
|
+
auditInfo?: AXPAuditable;
|
|
735
|
+
stateInfo?: AXPRecordControl;
|
|
736
|
+
ownershipInfo?: AXPRecordOwnership;
|
|
546
737
|
}
|
|
547
738
|
interface AXPEntityCreateDto {
|
|
548
739
|
}
|
|
@@ -604,6 +795,7 @@ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailD
|
|
|
604
795
|
private _storageService;
|
|
605
796
|
private entityRegistery;
|
|
606
797
|
private _entityDataProvider;
|
|
798
|
+
private _entityCategoryDataProvider;
|
|
607
799
|
constructor(entityName: string);
|
|
608
800
|
insertOne(request: TCreateDto): Promise<TKey>;
|
|
609
801
|
getOne(id: TKey): Promise<TDetailDto>;
|
|
@@ -620,299 +812,10 @@ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailD
|
|
|
620
812
|
categoryId: TKey;
|
|
621
813
|
categoryKey?: string;
|
|
622
814
|
}): Promise<AXPPagedListResult<TListItemDto>>;
|
|
815
|
+
getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity$1<TKey>>>;
|
|
623
816
|
get storageService(): AXPEntityStorageService<any, any, any, any, any>;
|
|
624
817
|
}
|
|
625
818
|
|
|
626
|
-
/**
|
|
627
|
-
* Context object for entity storage operations
|
|
628
|
-
*/
|
|
629
|
-
interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
|
|
630
|
-
/** Operation type being performed */
|
|
631
|
-
operation: 'getOne' | 'getAll' | 'insertOne' | 'updateOne' | 'deleteOne' | 'query' | 'initial';
|
|
632
|
-
/** Entity name */
|
|
633
|
-
entityName: string;
|
|
634
|
-
/** Database name */
|
|
635
|
-
dbName: string;
|
|
636
|
-
/** Input parameters for the operation */
|
|
637
|
-
input: {
|
|
638
|
-
id?: TKey;
|
|
639
|
-
entity?: TCreateDto;
|
|
640
|
-
keyValues?: Omit<Partial<TUpdateDto>, 'id'>;
|
|
641
|
-
request?: AXPQueryRequest;
|
|
642
|
-
collection?: TCreateDto[];
|
|
643
|
-
options?: {
|
|
644
|
-
mergeType?: 'merge' | 'replace';
|
|
645
|
-
uniqueKeys?: string[];
|
|
646
|
-
};
|
|
647
|
-
};
|
|
648
|
-
/** Metadata for the operation */
|
|
649
|
-
metadata: {
|
|
650
|
-
startTime: number;
|
|
651
|
-
requestId: string;
|
|
652
|
-
user?: any;
|
|
653
|
-
[key: string]: any;
|
|
654
|
-
};
|
|
655
|
-
}
|
|
656
|
-
/**
|
|
657
|
-
* Entity Storage Middleware function type
|
|
658
|
-
*/
|
|
659
|
-
type AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any, TResult = any> = (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, next: (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => Promise<TResult>) => Promise<TResult>;
|
|
660
|
-
/**
|
|
661
|
-
* Compose entity storage middlewares into a pipeline
|
|
662
|
-
*/
|
|
663
|
-
declare function composeEntityStorageMiddlewares<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any, TResult = any>(middlewares: AXPEntityStorageMiddleware<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto, TResult>[]): (handler: (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => Promise<TResult>) => (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => Promise<TResult>;
|
|
664
|
-
/**
|
|
665
|
-
* Helper function to generate unique request ID
|
|
666
|
-
*/
|
|
667
|
-
declare function generateRequestId(): string;
|
|
668
|
-
|
|
669
|
-
/**
|
|
670
|
-
* Registry for managing entity storage middlewares
|
|
671
|
-
*/
|
|
672
|
-
declare class AXPEntityStorageRegistry {
|
|
673
|
-
private globalMiddlewares;
|
|
674
|
-
private entitySpecificMiddlewares;
|
|
675
|
-
private operationSpecificMiddlewares;
|
|
676
|
-
/**
|
|
677
|
-
* Add a global middleware that applies to all operations
|
|
678
|
-
*/
|
|
679
|
-
useGlobal(middleware: AXPEntityStorageMiddleware): void;
|
|
680
|
-
/**
|
|
681
|
-
* Add middleware for specific entity
|
|
682
|
-
*/
|
|
683
|
-
useForEntity(entityName: string, middleware: AXPEntityStorageMiddleware): void;
|
|
684
|
-
/**
|
|
685
|
-
* Add middleware for specific operation (getOne, insertOne, etc.)
|
|
686
|
-
*/
|
|
687
|
-
useForOperation(operation: string, middleware: AXPEntityStorageMiddleware): void;
|
|
688
|
-
/**
|
|
689
|
-
* Get all applicable middlewares for a given context
|
|
690
|
-
*/
|
|
691
|
-
getMiddlewares(entityName: string, operation: string): AXPEntityStorageMiddleware[];
|
|
692
|
-
/**
|
|
693
|
-
* Get all global middlewares
|
|
694
|
-
*/
|
|
695
|
-
getGlobalMiddlewares(): readonly AXPEntityStorageMiddleware[];
|
|
696
|
-
/**
|
|
697
|
-
* Remove middleware from global middlewares
|
|
698
|
-
*/
|
|
699
|
-
removeGlobalMiddleware(middleware: AXPEntityStorageMiddleware): boolean;
|
|
700
|
-
/**
|
|
701
|
-
* Clear all middlewares
|
|
702
|
-
*/
|
|
703
|
-
clear(): void;
|
|
704
|
-
/**
|
|
705
|
-
* Get registered entity names that have specific middlewares
|
|
706
|
-
*/
|
|
707
|
-
getRegisteredEntityNames(): string[];
|
|
708
|
-
/**
|
|
709
|
-
* Get registered operation names that have specific middlewares
|
|
710
|
-
*/
|
|
711
|
-
getRegisteredOperations(): string[];
|
|
712
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityStorageRegistry, never>;
|
|
713
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityStorageRegistry>;
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
/**
|
|
717
|
-
* Executor that wraps entity storage operations with middleware pipeline
|
|
718
|
-
*/
|
|
719
|
-
declare class AXPEntityStorageExecutor<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
|
|
720
|
-
private storageService;
|
|
721
|
-
private readonly injector;
|
|
722
|
-
private readonly registry;
|
|
723
|
-
constructor(storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>);
|
|
724
|
-
/**
|
|
725
|
-
* Execute getOne operation with middleware pipeline
|
|
726
|
-
*/
|
|
727
|
-
getOne(entityName: string, id: TKey): Promise<TDetailDto>;
|
|
728
|
-
/**
|
|
729
|
-
* Execute getAll operation with middleware pipeline
|
|
730
|
-
*/
|
|
731
|
-
getAll(entityName: string): Promise<TListItemDto[]>;
|
|
732
|
-
/**
|
|
733
|
-
* Execute insertOne operation with middleware pipeline
|
|
734
|
-
*/
|
|
735
|
-
insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
|
|
736
|
-
/**
|
|
737
|
-
* Execute updateOne operation with middleware pipeline
|
|
738
|
-
*/
|
|
739
|
-
updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
740
|
-
/**
|
|
741
|
-
* Execute deleteOne operation with middleware pipeline
|
|
742
|
-
*/
|
|
743
|
-
deleteOne(entityName: string, id: TKey): Promise<void>;
|
|
744
|
-
/**
|
|
745
|
-
* Execute query operation with middleware pipeline
|
|
746
|
-
*/
|
|
747
|
-
query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
748
|
-
/**
|
|
749
|
-
* Execute initial operation with middleware pipeline
|
|
750
|
-
*/
|
|
751
|
-
initial(entityName: string, collection: TCreateDto[], options?: {
|
|
752
|
-
mergeType?: 'merge' | 'replace';
|
|
753
|
-
uniqueKeys?: string[];
|
|
754
|
-
}): Promise<TCreateDto[]>;
|
|
755
|
-
/**
|
|
756
|
-
* Execute operation with middleware pipeline
|
|
757
|
-
*/
|
|
758
|
-
private executeWithMiddleware;
|
|
759
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityStorageExecutor<any, any, any, any, any>, never>;
|
|
760
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityStorageExecutor<any, any, any, any, any>>;
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
/**
|
|
764
|
-
* Entity Storage Service with middleware support
|
|
765
|
-
*
|
|
766
|
-
* This service wraps the original AXPEntityStorageService and adds middleware pipeline support.
|
|
767
|
-
* It delegates all operations to the middleware executor which applies the middleware chain.
|
|
768
|
-
*/
|
|
769
|
-
declare class AXPEntityStorageWithMiddlewareService<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> extends AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
|
|
770
|
-
private originalStorageService;
|
|
771
|
-
private registry;
|
|
772
|
-
private executor;
|
|
773
|
-
constructor(originalStorageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, registry: AXPEntityStorageRegistry);
|
|
774
|
-
get dbName(): string;
|
|
775
|
-
/**
|
|
776
|
-
* Add a global middleware that applies to all operations
|
|
777
|
-
*/
|
|
778
|
-
useGlobal(middleware: AXPEntityStorageMiddleware): void;
|
|
779
|
-
/**
|
|
780
|
-
* Add middleware for specific entity
|
|
781
|
-
*/
|
|
782
|
-
useForEntity(entityName: string, middleware: AXPEntityStorageMiddleware): void;
|
|
783
|
-
/**
|
|
784
|
-
* Add middleware for specific operation
|
|
785
|
-
*/
|
|
786
|
-
useForOperation(operation: string, middleware: AXPEntityStorageMiddleware): void;
|
|
787
|
-
initial(entityName: string, collection: TCreateDto[], options?: {
|
|
788
|
-
mergeType?: 'merge' | 'replace';
|
|
789
|
-
uniqueKeys?: string[];
|
|
790
|
-
}): Promise<TCreateDto[]>;
|
|
791
|
-
getOne(entityName: string, id: TKey): Promise<TDetailDto>;
|
|
792
|
-
updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
793
|
-
deleteOne(entityName: string, id: TKey): Promise<void>;
|
|
794
|
-
insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
|
|
795
|
-
getAll(entityName: string): Promise<TListItemDto[]>;
|
|
796
|
-
query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
797
|
-
get originalService(): AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>;
|
|
798
|
-
get middlewareRegistry(): AXPEntityStorageRegistry;
|
|
799
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityStorageWithMiddlewareService<any, any, any, any, any>, never>;
|
|
800
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityStorageWithMiddlewareService<any, any, any, any, any>>;
|
|
801
|
-
}
|
|
802
|
-
|
|
803
|
-
/**
|
|
804
|
-
* Injection token for entity storage middleware setup
|
|
805
|
-
*/
|
|
806
|
-
declare const AXP_ENTITY_STORAGE_MIDDLEWARE_SETUP: InjectionToken<void>;
|
|
807
|
-
/**
|
|
808
|
-
* Injection token for entity storage middleware extensions
|
|
809
|
-
*/
|
|
810
|
-
declare const AXP_ENTITY_STORAGE_EXTENSION: InjectionToken<{
|
|
811
|
-
target: string | RegExp;
|
|
812
|
-
middleware: AXPEntityStorageMiddleware;
|
|
813
|
-
}>;
|
|
814
|
-
/**
|
|
815
|
-
* Configuration for entity-specific middleware
|
|
816
|
-
*/
|
|
817
|
-
interface AXPEntityStorageMiddlewareConfig {
|
|
818
|
-
/** Global middlewares that apply to all operations */
|
|
819
|
-
global?: AXPEntityStorageMiddleware[];
|
|
820
|
-
/** Entity-specific middlewares */
|
|
821
|
-
entities?: {
|
|
822
|
-
[entityName: string]: AXPEntityStorageMiddleware[];
|
|
823
|
-
};
|
|
824
|
-
/** Operation-specific middlewares */
|
|
825
|
-
operations?: {
|
|
826
|
-
[operation: string]: AXPEntityStorageMiddleware[];
|
|
827
|
-
};
|
|
828
|
-
/** Advanced middleware configurations with targets */
|
|
829
|
-
extensions?: {
|
|
830
|
-
target: string | RegExp;
|
|
831
|
-
middleware: AXPEntityStorageMiddleware;
|
|
832
|
-
}[];
|
|
833
|
-
}
|
|
834
|
-
/**
|
|
835
|
-
* Provide entity storage middleware configuration
|
|
836
|
-
*/
|
|
837
|
-
declare function provideEntityStorageMiddleware(config: AXPEntityStorageMiddlewareConfig): EnvironmentProviders;
|
|
838
|
-
/**
|
|
839
|
-
* Simplified provider for global middleware only
|
|
840
|
-
*/
|
|
841
|
-
declare function provideGlobalEntityStorageMiddleware(middlewares: AXPEntityStorageMiddleware[]): EnvironmentProviders;
|
|
842
|
-
/**
|
|
843
|
-
* Provider for entity-specific middlewares
|
|
844
|
-
*/
|
|
845
|
-
declare function provideEntitySpecificMiddleware(entityName: string, middlewares: AXPEntityStorageMiddleware[]): EnvironmentProviders;
|
|
846
|
-
/**
|
|
847
|
-
* Provider for operation-specific middlewares
|
|
848
|
-
*/
|
|
849
|
-
declare function provideOperationSpecificMiddleware(operation: string, middlewares: AXPEntityStorageMiddleware[]): EnvironmentProviders;
|
|
850
|
-
|
|
851
|
-
/**
|
|
852
|
-
* Logging middleware for entity storage operations
|
|
853
|
-
*/
|
|
854
|
-
declare const loggingMiddleware: AXPEntityStorageMiddleware;
|
|
855
|
-
/**
|
|
856
|
-
* Performance monitoring middleware
|
|
857
|
-
*/
|
|
858
|
-
declare const performanceMiddleware: AXPEntityStorageMiddleware;
|
|
859
|
-
/**
|
|
860
|
-
* Error handling middleware with retry logic
|
|
861
|
-
*/
|
|
862
|
-
declare const errorHandlingMiddleware: AXPEntityStorageMiddleware;
|
|
863
|
-
/**
|
|
864
|
-
* Validation middleware
|
|
865
|
-
*/
|
|
866
|
-
declare const validationMiddleware: AXPEntityStorageMiddleware;
|
|
867
|
-
/**
|
|
868
|
-
* Caching middleware (simple in-memory cache)
|
|
869
|
-
*/
|
|
870
|
-
declare const cachingMiddleware: AXPEntityStorageMiddleware;
|
|
871
|
-
|
|
872
|
-
/**
|
|
873
|
-
* Audit trail entry interface
|
|
874
|
-
*/
|
|
875
|
-
interface AXPAuditEntry {
|
|
876
|
-
id: string;
|
|
877
|
-
entityName: string;
|
|
878
|
-
operation: string;
|
|
879
|
-
entityId?: any;
|
|
880
|
-
changes?: any;
|
|
881
|
-
user?: string;
|
|
882
|
-
timestamp: Date;
|
|
883
|
-
requestId: string;
|
|
884
|
-
metadata?: any;
|
|
885
|
-
}
|
|
886
|
-
/**
|
|
887
|
-
* Audit trail storage interface
|
|
888
|
-
*/
|
|
889
|
-
interface AXPAuditStorage {
|
|
890
|
-
save(entry: AXPAuditEntry): Promise<void>;
|
|
891
|
-
}
|
|
892
|
-
/**
|
|
893
|
-
* Simple in-memory audit storage (for demo purposes)
|
|
894
|
-
*/
|
|
895
|
-
declare class InMemoryAuditStorage implements AXPAuditStorage {
|
|
896
|
-
private entries;
|
|
897
|
-
save(entry: AXPAuditEntry): Promise<void>;
|
|
898
|
-
getEntries(): AXPAuditEntry[];
|
|
899
|
-
getEntriesForEntity(entityName: string): AXPAuditEntry[];
|
|
900
|
-
clear(): void;
|
|
901
|
-
}
|
|
902
|
-
declare const auditStorage: InMemoryAuditStorage;
|
|
903
|
-
/**
|
|
904
|
-
* Audit middleware that tracks all entity operations
|
|
905
|
-
*/
|
|
906
|
-
declare const auditMiddleware: AXPEntityStorageMiddleware;
|
|
907
|
-
/**
|
|
908
|
-
* User context middleware - adds user information to context
|
|
909
|
-
*/
|
|
910
|
-
declare const userContextMiddleware: AXPEntityStorageMiddleware;
|
|
911
|
-
/**
|
|
912
|
-
* Data sanitization middleware - removes sensitive data from logs
|
|
913
|
-
*/
|
|
914
|
-
declare const dataSanitizationMiddleware: AXPEntityStorageMiddleware;
|
|
915
|
-
|
|
916
819
|
interface AXPEntityConfigs {
|
|
917
820
|
viewers: {
|
|
918
821
|
root: () => Type<any> | Promise<Type<any>>;
|
|
@@ -921,6 +824,7 @@ interface AXPEntityConfigs {
|
|
|
921
824
|
};
|
|
922
825
|
master: {
|
|
923
826
|
single: () => Type<any> | Promise<Type<any>>;
|
|
827
|
+
details: () => Type<any> | Promise<Type<any>>;
|
|
924
828
|
create: () => Type<any> | Promise<Type<any>>;
|
|
925
829
|
modify: () => Type<any> | Promise<Type<any>>;
|
|
926
830
|
list: () => Type<any> | Promise<Type<any>>;
|
|
@@ -953,6 +857,208 @@ declare class AXPEntityService {
|
|
|
953
857
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityService>;
|
|
954
858
|
}
|
|
955
859
|
|
|
860
|
+
type AXPEntityOp = 'initial' | 'create' | 'update' | 'delete' | 'getOne' | 'getAll' | 'query';
|
|
861
|
+
interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
|
|
862
|
+
op: AXPEntityOp;
|
|
863
|
+
entityName: string;
|
|
864
|
+
id?: TKey;
|
|
865
|
+
data?: TCreateDto | Omit<Partial<TUpdateDto>, 'id'>;
|
|
866
|
+
request?: AXPQueryRequest;
|
|
867
|
+
previous?: TDetailDto;
|
|
868
|
+
result?: any;
|
|
869
|
+
locals: Map<string, unknown>;
|
|
870
|
+
backend: {
|
|
871
|
+
getOne: (entityName: string, id: TKey) => Promise<TDetailDto>;
|
|
872
|
+
insertOne: (entityName: string, entity: TCreateDto) => Promise<TKey>;
|
|
873
|
+
query: (entityName: string, request: AXPQueryRequest) => Promise<AXPPagedListResult<TListItemDto>>;
|
|
874
|
+
updateOne: (entityName: string, id: TKey, data: Partial<TUpdateDto>) => Promise<void>;
|
|
875
|
+
};
|
|
876
|
+
}
|
|
877
|
+
interface AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
|
|
878
|
+
target?: {
|
|
879
|
+
ops?: AXPEntityOp[];
|
|
880
|
+
entity?: string | RegExp;
|
|
881
|
+
predicate?: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => boolean;
|
|
882
|
+
order?: number;
|
|
883
|
+
};
|
|
884
|
+
execute: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, next: () => Promise<void>) => Promise<void>;
|
|
885
|
+
}
|
|
886
|
+
/**
|
|
887
|
+
* Error type that can be thrown by middlewares to abort the chain with a structured payload.
|
|
888
|
+
*/
|
|
889
|
+
declare class AXPMiddlewareAbortError extends Error {
|
|
890
|
+
readonly message: string;
|
|
891
|
+
readonly options: {
|
|
892
|
+
code?: string;
|
|
893
|
+
status?: number;
|
|
894
|
+
details?: any;
|
|
895
|
+
};
|
|
896
|
+
constructor(message: string, options?: {
|
|
897
|
+
code?: string;
|
|
898
|
+
status?: number;
|
|
899
|
+
details?: any;
|
|
900
|
+
});
|
|
901
|
+
toResponse(): AXPMiddlewareErrorResponse;
|
|
902
|
+
}
|
|
903
|
+
/** Type guard for AXPMiddlewareAbortError */
|
|
904
|
+
declare function isAXPMiddlewareAbortError(error: unknown): error is AXPMiddlewareAbortError;
|
|
905
|
+
|
|
906
|
+
declare const eventDispatchMiddleware: AXPEntityStorageMiddleware;
|
|
907
|
+
|
|
908
|
+
/**
|
|
909
|
+
* Map of column name -> width value
|
|
910
|
+
* Example: { title: '300px', description: '300px' }
|
|
911
|
+
*/
|
|
912
|
+
type ColumnWidthConfig = Record<string, string | number>;
|
|
913
|
+
/**
|
|
914
|
+
* Default widths for common text columns
|
|
915
|
+
*/
|
|
916
|
+
declare const DEFAULT_COLUMN_WIDTHS: ColumnWidthConfig;
|
|
917
|
+
/**
|
|
918
|
+
* Factory to create a column width middleware using provided config map.
|
|
919
|
+
* Sets width for columns defined in the map if not already defined on the column.
|
|
920
|
+
*/
|
|
921
|
+
declare const columnWidthMiddlewareFactory: (widths: ColumnWidthConfig) => AXPEntityModifier;
|
|
922
|
+
/**
|
|
923
|
+
* Helper to create a provider for the column width middleware.
|
|
924
|
+
* By default it applies to all entities using the '*' pattern.
|
|
925
|
+
*/
|
|
926
|
+
declare const createColumnWidthMiddlewareProvider: (widths: ColumnWidthConfig, entityName?: string | RegExp) => AXPEntityModifierProvider;
|
|
927
|
+
/**
|
|
928
|
+
* Default provider registered with the default map.
|
|
929
|
+
*/
|
|
930
|
+
declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
|
|
931
|
+
|
|
932
|
+
interface AXPGetEntityDetailsQueryInput {
|
|
933
|
+
entity: string;
|
|
934
|
+
id: string;
|
|
935
|
+
}
|
|
936
|
+
interface AXPGetEntityDetailsQueryResult {
|
|
937
|
+
success: boolean;
|
|
938
|
+
entityDefinition?: AXPEntity;
|
|
939
|
+
entityData?: any;
|
|
940
|
+
error?: string;
|
|
941
|
+
}
|
|
942
|
+
/**
|
|
943
|
+
* Generic query to get entity details including entity definition and entity data
|
|
944
|
+
* Can be used by any entity to retrieve its definition and data by ID
|
|
945
|
+
*/
|
|
946
|
+
declare class AXPGetEntityDetailsQuery implements AXPQuery<AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult> {
|
|
947
|
+
private readonly entityDefinitionRegistry;
|
|
948
|
+
private readonly injector;
|
|
949
|
+
/**
|
|
950
|
+
* Execute the query to fetch entity definition and data
|
|
951
|
+
* @param input - Query input containing entity and ID information
|
|
952
|
+
*/
|
|
953
|
+
fetch(input: AXPGetEntityDetailsQueryInput): Promise<AXPGetEntityDetailsQueryResult>;
|
|
954
|
+
/**
|
|
955
|
+
* Get entity data using the entity's CRUD service
|
|
956
|
+
* @param entity - Full entity path (ModuleName.EntityName)
|
|
957
|
+
* @param id - Entity ID
|
|
958
|
+
* @returns Promise resolving to entity data
|
|
959
|
+
*/
|
|
960
|
+
private getEntityData;
|
|
961
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPGetEntityDetailsQuery, never>;
|
|
962
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPGetEntityDetailsQuery>;
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
interface IEntitySelectorStage {
|
|
966
|
+
/** Select target entity using "module.entity" format */
|
|
967
|
+
entity(fullName: string): IInterfaceSelectorStage;
|
|
968
|
+
}
|
|
969
|
+
interface IInterfaceSelectorStage {
|
|
970
|
+
/** Use master.create interface */
|
|
971
|
+
create(): IPropertyFilterStage;
|
|
972
|
+
/** Use master.update interface */
|
|
973
|
+
update(id: string): IPropertyFilterStage;
|
|
974
|
+
}
|
|
975
|
+
interface IPropertyFilterStage {
|
|
976
|
+
/** Only include provided property names (by AXPEntityProperty.name). Mutually exclusive with exclude(). */
|
|
977
|
+
include(...propertyNames: string[]): IPropertyFilterStage;
|
|
978
|
+
/** Exclude provided property names (by AXPEntityProperty.name). Ignored if include() was already set. */
|
|
979
|
+
exclude(...propertyNames: string[]): IPropertyFilterStage;
|
|
980
|
+
/** Optionally override dialog title */
|
|
981
|
+
title(text: string): IPropertyFilterStage;
|
|
982
|
+
/** Provide initial dialog context/model data */
|
|
983
|
+
context(context: any): IPropertyFilterStage;
|
|
984
|
+
/** Override dialog size (e.g., 'sm' | 'md' | 'lg' | 'xl' | 'full') */
|
|
985
|
+
size(size: AXPopupSizeType): IPropertyFilterStage;
|
|
986
|
+
/** Configure footer actions (cancel/submit/custom). If not called, defaults to cancel+submit. */
|
|
987
|
+
actions(delegate: (a: IActionBuilder) => void): IPropertyFilterStage;
|
|
988
|
+
/** Add an extra field into a specific group, using the original field builder API */
|
|
989
|
+
field(groupId: string, path: string, delegate?: (field: IFieldBuilder) => void): IPropertyFilterStage;
|
|
990
|
+
/** Show dialog */
|
|
991
|
+
show(): Promise<AXPDialogRef>;
|
|
992
|
+
}
|
|
993
|
+
declare class AXPEntityDynamicFormDialogService implements IEntitySelectorStage {
|
|
994
|
+
private readonly entityRegistry;
|
|
995
|
+
private readonly formBuilder;
|
|
996
|
+
private readonly layoutTheme;
|
|
997
|
+
entity(fullName: string): IInterfaceSelectorStage;
|
|
998
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDynamicFormDialogService, never>;
|
|
999
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDynamicFormDialogService>;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
declare const AXP_ENTITY_STORAGE_BACKEND: InjectionToken<AXPEntityStorageService<any, any, any, any, any>>;
|
|
1003
|
+
declare const AXP_ENTITY_STORAGE_MIDDLEWARE: InjectionToken<AXPEntityStorageMiddleware<any, any, any, any, any>[]>;
|
|
1004
|
+
|
|
1005
|
+
declare class AXPMiddlewareEntityStorageService<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> extends AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
|
|
1006
|
+
private readonly backend;
|
|
1007
|
+
private readonly allMiddlewares;
|
|
1008
|
+
private readonly injector;
|
|
1009
|
+
get dbName(): string;
|
|
1010
|
+
private filterMiddlewares;
|
|
1011
|
+
private compose;
|
|
1012
|
+
private run;
|
|
1013
|
+
private createCtx;
|
|
1014
|
+
initial(entityName: string, collection: TCreateDto[], options?: {
|
|
1015
|
+
mergeType?: 'merge' | 'replace';
|
|
1016
|
+
uniqueKeys?: string[];
|
|
1017
|
+
}): Promise<TCreateDto[]>;
|
|
1018
|
+
getOne(entityName: string, id: TKey): Promise<TDetailDto>;
|
|
1019
|
+
updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
|
|
1020
|
+
deleteOne(entityName: string, id: TKey): Promise<void>;
|
|
1021
|
+
insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
|
|
1022
|
+
getAll(entityName: string): Promise<TListItemDto[]>;
|
|
1023
|
+
query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
|
|
1024
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
|
|
1025
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
declare function entityMasterCreateAction(): AXPEntityAction;
|
|
1029
|
+
declare function entityMasterBulkDeleteAction(): AXPEntityAction;
|
|
1030
|
+
declare function entityMasterViewAction(): AXPEntityAction;
|
|
1031
|
+
declare function entityMasterDeleteAction(): AXPEntityAction;
|
|
1032
|
+
declare function entityMasterCrudActions(options?: {
|
|
1033
|
+
create?: boolean;
|
|
1034
|
+
delete?: boolean;
|
|
1035
|
+
view?: boolean;
|
|
1036
|
+
edit?: boolean;
|
|
1037
|
+
}): AXPEntityAction[];
|
|
1038
|
+
declare function entityMasterRecordActions(): AXPEntityAction[];
|
|
1039
|
+
declare function entityDetailsCreateActions(parentId: string): AXPEntityAction;
|
|
1040
|
+
declare function entityDetailsSimpleCondition(fk: string): AXPQueryFilter;
|
|
1041
|
+
declare function entityDetailsReferenceCondition(type: string): AXPQueryFilter[];
|
|
1042
|
+
declare function entityDetailsEditAction(): AXPEntityAction;
|
|
1043
|
+
declare function entityOverrideDetailsViewAction(): AXPEntityAction;
|
|
1044
|
+
declare function entityDetailsCrudActions(parentId: string): AXPEntityAction[];
|
|
1045
|
+
declare function entityDetailsReferenceCreateActions(type: string): AXPEntityAction[];
|
|
1046
|
+
type AXPEntityChangeSet = {
|
|
1047
|
+
[key: string]: {
|
|
1048
|
+
oldValue: any;
|
|
1049
|
+
newValue: any;
|
|
1050
|
+
added?: any[];
|
|
1051
|
+
removed?: any[];
|
|
1052
|
+
};
|
|
1053
|
+
};
|
|
1054
|
+
/**
|
|
1055
|
+
* Computes a diff between two plain objects with array-aware semantics.
|
|
1056
|
+
* - For arrays of objects with an id field, computes added/removed by id.
|
|
1057
|
+
* - For arrays of primitives or objects without id, uses deep equality.
|
|
1058
|
+
* - For scalars/objects, reports oldValue/newValue when changed.
|
|
1059
|
+
*/
|
|
1060
|
+
declare function detectEntityChanges(oldObj: any, newObj: any): AXPEntityChangeSet;
|
|
1061
|
+
|
|
956
1062
|
declare const AXPEntityCreateEvent: {
|
|
957
1063
|
(payload: {
|
|
958
1064
|
entity: string;
|
|
@@ -1082,19 +1188,5 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
|
|
|
1082
1188
|
}
|
|
1083
1189
|
declare const AXPShowListViewWorkflow: AXPWorkflow;
|
|
1084
1190
|
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
declare function entityMasterViewAction(): AXPEntityAction;
|
|
1088
|
-
declare function entityMasterDeleteAction(): AXPEntityAction;
|
|
1089
|
-
declare function entityMasterCrudActions(): AXPEntityAction[];
|
|
1090
|
-
declare function entityMasterRecordActions(): AXPEntityAction[];
|
|
1091
|
-
declare function entityDetailsCreateActions(parentId: string): AXPEntityAction;
|
|
1092
|
-
declare function entityDetailsSimpleCondition(fk: string): AXPQueryFilter;
|
|
1093
|
-
declare function entityDetailsReferenceCondition(): AXPQueryFilter[];
|
|
1094
|
-
declare function entityDetailsEditAction(): AXPEntityAction;
|
|
1095
|
-
declare function entityOverrideDetailsViewAction(): AXPEntityAction;
|
|
1096
|
-
declare function entityDetailsCrudActions(parentId: string): AXPEntityAction[];
|
|
1097
|
-
declare function entityDetailsReferenceCreateActions(): AXPEntityAction[];
|
|
1098
|
-
|
|
1099
|
-
export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageExecutor, AXPEntityStorageRegistry, AXPEntityStorageService, AXPEntityStorageWithMiddlewareService, AXPModifyEntitySectionWorkflow, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_EXTENSION, AXP_ENTITY_STORAGE_MIDDLEWARE_SETUP, auditMiddleware, auditStorage, cachingMiddleware, composeEntityStorageMiddlewares, createModifierContext, dataSanitizationMiddleware, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, errorHandlingMiddleware, generateRequestId, loggingMiddleware, performanceMiddleware, provideEntitySpecificMiddleware, provideEntityStorageMiddleware, provideGlobalEntityStorageMiddleware, provideOperationSpecificMiddleware, userContextMiddleware, validationMiddleware };
|
|
1100
|
-
export type { AXPAuditEntry, AXPAuditStorage, AXPAuditable, AXPDataSeeder, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityStorageMiddlewareConfig, AXPEntityUpdateDto };
|
|
1191
|
+
export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityDynamicFormDialogService, AXPEntityEventDispatcherService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPGetEntityDetailsQuery, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, DEFAULT_COLUMN_WIDTHS, actionExists, columnWidthMiddlewareFactory, columnWidthMiddlewareProvider, createColumnWidthMiddlewareProvider, createModifierContext, detectEntityChanges, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, isAXPMiddlewareAbortError };
|
|
1192
|
+
export type { AXPAuditable, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOp, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPOpenEntityDetailsCommandInput, AXPOpenEntityDetailsCommandResult, AXPRecordControl, AXPRecordOwnership, ColumnWidthConfig };
|