@acorex/platform 20.3.0-next.1 → 20.3.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/common/index.d.ts +125 -12
  2. package/core/index.d.ts +656 -100
  3. package/fesm2022/acorex-platform-auth.mjs +20 -20
  4. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-common.mjs +120 -148
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +885 -261
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +16 -16
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +1615 -662
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-components.mjs +3327 -157
  14. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-designer.mjs +172 -210
  16. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs +52 -0
  18. package/fesm2022/acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-layout-entity.mjs +4522 -1643
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +398 -89
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-native.mjs +7 -7
  24. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  25. package/fesm2022/acorex-platform-runtime.mjs +40 -40
  26. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  27. 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
  28. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs +706 -0
  30. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs +101 -0
  32. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs +244 -0
  34. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-themes-default-error-401.component-D4glpFvU.mjs → acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs} +4 -4
  36. package/fesm2022/{acorex-platform-themes-default-error-401.component-D4glpFvU.mjs.map → acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-themes-default-error-404.component-BvGeDMjo.mjs → acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs} +4 -4
  38. package/fesm2022/{acorex-platform-themes-default-error-404.component-BvGeDMjo.mjs.map → acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs.map} +1 -1
  39. package/fesm2022/{acorex-platform-themes-default-error-offline.component-BINy-Zo3.mjs → acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs} +4 -4
  40. 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
  41. package/fesm2022/acorex-platform-themes-default.mjs +64 -509
  42. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  43. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-C833prGO.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs} +24 -14
  44. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs.map +1 -0
  45. package/fesm2022/{acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs → acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs} +2 -2
  46. package/fesm2022/acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs.map +1 -0
  47. 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
  48. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs.map +1 -0
  49. 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
  50. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs.map +1 -0
  51. package/fesm2022/acorex-platform-themes-shared.mjs +250 -85
  52. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  53. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-lNF95FJv.mjs → acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs} +7 -7
  54. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs +50 -0
  56. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs +42 -0
  58. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs +55 -0
  60. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs.map +1 -0
  61. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs +50 -0
  62. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs.map +1 -0
  63. package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs +48 -0
  64. package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs.map +1 -0
  65. package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs +42 -0
  66. package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs.map +1 -0
  67. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-DFbPO0ud.mjs → acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs} +72 -7
  68. package/fesm2022/acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs.map +1 -0
  69. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DRsLkulH.mjs → acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs} +79 -69
  70. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs.map +1 -0
  71. 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
  72. package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs.map +1 -0
  73. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-D6kiasYM.mjs → acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs} +8 -7
  74. package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs.map +1 -0
  75. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-CCMQtH3e.mjs → acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs} +9 -14
  76. package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs.map +1 -0
  77. package/fesm2022/acorex-platform-widgets.mjs +9152 -7182
  78. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  79. package/fesm2022/acorex-platform-workflow.mjs +28 -25
  80. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  81. package/layout/builder/index.d.ts +419 -185
  82. package/layout/components/index.d.ts +1129 -24
  83. package/layout/designer/index.d.ts +20 -49
  84. package/layout/entity/index.d.ts +424 -332
  85. package/layout/views/index.d.ts +129 -22
  86. package/package.json +25 -39
  87. package/widgets/index.d.ts +1908 -783
  88. package/workflow/index.d.ts +4 -1
  89. package/fesm2022/acorex-platform-themes-default-create-entity-view.component-SY0oMDoH.mjs +0 -22
  90. package/fesm2022/acorex-platform-themes-default-create-entity-view.component-SY0oMDoH.mjs.map +0 -1
  91. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-hHXxHlFG.mjs.map +0 -1
  92. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-hf4QOz_4.mjs +0 -665
  93. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-hf4QOz_4.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DC3MrDtI.mjs +0 -108
  95. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DC3MrDtI.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bb90PeHq.mjs +0 -236
  97. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bb90PeHq.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-themes-shared-color-chooser-column.component-DjKLg513.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-themes-shared-color-chooser-view.component-DE0wO98F.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-C833prGO.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-lNF95FJv.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BNBOATPB.mjs +0 -85
  104. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BNBOATPB.mjs.map +0 -1
  105. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-BI18uzNZ.mjs +0 -55
  106. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-BI18uzNZ.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C6-QPsnb.mjs +0 -76
  108. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C6-QPsnb.mjs.map +0 -1
  109. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-pYOQv5g8.mjs +0 -55
  110. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-pYOQv5g8.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-widgets-file-list-popup.component-DFbPO0ud.mjs.map +0 -1
  112. package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DA_CgIvm.mjs +0 -211
  113. package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DA_CgIvm.mjs.map +0 -1
  114. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DRsLkulH.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-CM_v-cL4.mjs +0 -40
  116. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-CM_v-cL4.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-nLZYiPnF.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-D6kiasYM.mjs.map +0 -1
  119. package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-CCMQtH3e.mjs.map +0 -1
@@ -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, EnvironmentProviders, Type } from '@angular/core';
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
- private property;
45
- private column;
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 modifiers;
476
- protected providedModifiers: _acorex_platform_layout_entity.AXPEntityModifierProvider[];
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
- createdAt?: Date;
540
- updatedAt?: Date;
541
- createdBy?: string;
542
- updatedBy?: string;
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 AXPEntityModel<Id> extends AXPAuditable {
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
- declare function entityMasterCreateAction(): AXPEntityAction;
1086
- declare function entityMasterBulkDeleteAction(): AXPEntityAction;
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 };