@acorex-platform/framework-client 0.0.15 → 0.0.20

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 (108) hide show
  1. package/fesm2022/acorex-platform-framework-client-auth.mjs +872 -314
  2. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs → acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs} +88 -5
  4. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-framework-client-common.mjs +2685 -898
  6. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-core.mjs +691 -823
  8. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-framework-client-domain.mjs +16 -16
  10. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +181 -84
  11. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  12. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-oE8CeLE8.mjs} +8 -6
  13. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs.map → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-oE8CeLE8.mjs.map} +1 -1
  14. package/fesm2022/{acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs → acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs} +4 -4
  15. package/fesm2022/{acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs.map → acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs.map} +1 -1
  16. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +3300 -1236
  17. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +277 -185
  19. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs +29184 -0
  21. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs.map +1 -0
  22. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-DCK-qb-F.mjs} +34 -20
  23. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-DCK-qb-F.mjs.map +1 -0
  24. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs +162 -0
  25. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs} +31 -19
  27. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-DYV9YPyw.mjs} +30 -18
  29. package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DYV9YPyw.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +2 -26780
  31. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +421 -151
  33. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +673 -287
  35. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  36. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BiWerYcu.mjs} +16 -10
  37. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs.map → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BiWerYcu.mjs.map} +1 -1
  38. package/fesm2022/{acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs → acorex-platform-framework-client-layout-widgets-image-preview.popup-BOrrMm3U.mjs} +9 -8
  39. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-BOrrMm3U.mjs.map +1 -0
  40. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs} +20 -12
  41. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs.map → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs.map} +1 -1
  42. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs} +32 -18
  43. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs} +8 -7
  45. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs.map} +1 -1
  46. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-FjtSRxIX.mjs} +4 -4
  47. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-FjtSRxIX.mjs.map} +1 -1
  48. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs} +10 -8
  49. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs.map} +1 -1
  50. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +4907 -2554
  51. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
  52. package/fesm2022/acorex-platform-framework-client-native.mjs +7 -7
  53. package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs +29 -0
  54. package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-framework-client-realtime.mjs +463 -26
  56. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  57. package/fesm2022/acorex-platform-framework-client-runtime.mjs +300 -137
  58. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
  59. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-yeftgJ_K.mjs} +10 -7
  60. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs.map → acorex-platform-framework-client-themes-default-entity-master-create-view.component-yeftgJ_K.mjs.map} +1 -1
  61. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DWE3OWGm.mjs} +10 -7
  62. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs.map → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DWE3OWGm.mjs.map} +1 -1
  63. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs} +21 -19
  64. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs → acorex-platform-framework-client-themes-default-error-401.component-BrTotLx1.mjs} +5 -5
  66. package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs.map → acorex-platform-framework-client-themes-default-error-401.component-BrTotLx1.mjs.map} +1 -1
  67. package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs → acorex-platform-framework-client-themes-default-error-404.component-DsC7_s59.mjs} +5 -5
  68. package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs.map → acorex-platform-framework-client-themes-default-error-404.component-DsC7_s59.mjs.map} +1 -1
  69. package/fesm2022/{acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs → acorex-platform-framework-client-themes-default-error-offline.component-CngiQycG.mjs} +6 -6
  70. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-CngiQycG.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +448 -277
  72. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  73. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CbZALjB5.mjs} +8 -6
  74. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs.map → acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CbZALjB5.mjs.map} +1 -1
  75. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BRrNT6x2.mjs} +8 -6
  76. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs.map → acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BRrNT6x2.mjs.map} +1 -1
  77. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BIsQTr6B.mjs} +4 -4
  78. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs.map → acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BIsQTr6B.mjs.map} +1 -1
  79. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-ZclmSbt9.mjs} +16 -10
  80. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs.map → acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-ZclmSbt9.mjs.map} +1 -1
  81. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +538 -133
  82. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  83. package/fesm2022/acorex-platform-framework-client-workflow.mjs +26 -66
  84. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
  85. package/package.json +10 -10
  86. package/realtime/README.md +16 -0
  87. package/runtime/README.md +14 -0
  88. package/types/acorex-platform-framework-client-auth.d.ts +291 -52
  89. package/types/acorex-platform-framework-client-common.d.ts +615 -202
  90. package/types/acorex-platform-framework-client-core.d.ts +215 -225
  91. package/types/acorex-platform-framework-client-layout-builder.d.ts +24 -8
  92. package/types/acorex-platform-framework-client-layout-components.d.ts +407 -94
  93. package/types/acorex-platform-framework-client-layout-entity.d.ts +734 -411
  94. package/types/acorex-platform-framework-client-layout-views.d.ts +40 -15
  95. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +66 -17
  96. package/types/acorex-platform-framework-client-layout-widgets.d.ts +295 -68
  97. package/types/acorex-platform-framework-client-realtime.d.ts +183 -6
  98. package/types/acorex-platform-framework-client-runtime.d.ts +134 -28
  99. package/types/acorex-platform-framework-client-themes-default.d.ts +9 -1
  100. package/types/acorex-platform-framework-client-themes-shared.d.ts +8 -2
  101. package/types/acorex-platform-framework-client-workflow.d.ts +12 -37
  102. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs.map +0 -1
  105. package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs.map +0 -1
@@ -1,42 +1,39 @@
1
1
  import * as _acorex_platform_framework_shared_entity from '@acorex-platform/framework-shared/entity';
2
- import { AXPRelatedEntity, AXPEntityPage, AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPCardField, AXPEntityPropertyLayoutConfig, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPQueryView, AXPEntityMasterListLayoutType, AXPEntityMasterListDisplayMode, AXPEntityMasterListLayoutOption, AXPEntityListFilterDefinition, AXPEntityListSortableField, AXPEntityPropertyView, AXPEntityCategoryPlugin, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPEntityAggregateRequest, AXPEntityDetailDto, AXPEntityModel, AXPEntityListItemDto, AXPEntityCreateDto, AXPEntityUpdateDto, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityAggregateOptions, AXPEntityAggregateResult, AXPLookupDisplayOptions, AXPLookupWidgetLookType, AXPLookupSelectorRowActionsConfig, AXPQueryFilter, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy } from '@acorex-platform/framework-shared/entity';
2
+ import { AXPRelatedEntity, AXPEntityPage, AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPCardField, AXPEntityPropertyLayoutConfig, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPQueryView, AXPEntityMasterListLayoutType, AXPEntityMasterListDisplayMode, AXPEntityMasterListLayoutOption, AXPEntityListFilterDefinition, AXPEntityListSortableField, AXPEntityPropertyView, AXPEntityUpdateDto, AXPEntityCreateDto, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityAggregateRequest, AXPEntityAggregateOptions, AXPEntityAggregateResult, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityModel, AXPEntityCategoryPlugin, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPLookupDisplayOptions, AXPEntitySelectorColumnInput, AXPLookupWidgetLookType, AXPLookupSelectorRowActionsConfig, AXPQueryFilter, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy } from '@acorex-platform/framework-shared/entity';
3
3
  export * from '@acorex-platform/framework-shared/entity';
4
4
  export { collectNestedCreateHiddenProperties, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, mergeForeignKeyFieldIntoCreateActions } from '@acorex-platform/framework-shared/entity';
5
- import { AXPCommand, AXPQuery } from '@acorex-platform/framework-shared/runtime';
6
- import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
7
- import { AXPExecuteCommandResult, AXPFileListItem, AXPMultiLanguageString, AXPMetaData, AXPWidgetNode, AXPGridLayoutOptions, AXPExpression, AXPBreadcrumbItem, AXPFilterQuery, AXPExecuteCommand, AXPFilterDefinition, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity, AXPEntityOp, AXPMiddlewareErrorResponse, AXPColumnQuery, AXPSortDefinition, AXPActionMenuItem, AXPContextData, AXPContextChangeEvent } from '@acorex-platform/framework-shared/core';
5
+ import { AXPCommand, AXPEntityActionCommandInput, AXPCommandExecuteResultPromise, AXPQuery, AXPQueryFetchResultPromise, AXPBulkCommandResultData } from '@acorex-platform/framework-shared/runtime';
8
6
  import * as _angular_core from '@angular/core';
9
- import { OnInit, OnDestroy, ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, ChangeDetectorRef } from '@angular/core';
10
- import * as node_modules__acorex_platform_framework_shared_core_src_lib from 'node_modules/@acorex-platform/framework-shared/core/src/lib';
7
+ import { OnInit, OnDestroy, ElementRef, InjectionToken, Injector, EnvironmentInjector, Type, EnvironmentProviders, ChangeDetectorRef, Provider } from '@angular/core';
8
+ import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
9
+ import { AXPFileListItem, AXPMultiLanguageString, AXPMetaData, AXPWidgetNode, AXPGridLayoutOptions, AXPExpression, AXPFilterQuery, AXPBreadcrumbItem, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPEntityOp, AXPMiddlewareErrorResponse, AXPCategoryEntity, AXPFilterDefinition, AXPRuntimeCommandResult, AXPColumnQuery, AXPSortDefinition, AXPActionMenuItem, AXPContextData, AXPContextChangeEvent } from '@acorex-platform/framework-shared/core';
11
10
  import { AXPWidgetConfig, AXPWidgetColumnNode } from '@acorex-platform/framework-shared/widget-core';
11
+ import * as _acorex_platform_framework_client_layout_components from '@acorex-platform/framework-client/layout/components';
12
12
  import { AXPFileChooserContext, AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorRowActionsHandler, AXPCategoryTreeDataSource, AXPDataSelectorAllowCreate, AXPDataSelectorFooterPrefixAction } from '@acorex-platform/framework-client/layout/components';
13
13
  import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
14
- import { AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPHookService, AXHighlightService, AXPDeviceService, AXPBroadcastEventService, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXPContextStore } from '@acorex-platform/framework-client/core';
15
14
  export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex-platform/framework-client/domain';
16
15
  import { AXClickEvent, AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
17
- import * as i4 from '@acorex-platform/framework-client/layout/widget-core';
16
+ import { AXPHookService, AXHighlightService, AXPEntityBroadcastService, AXPDeviceService, AXPExpressionEvaluatorService, AXPContextEvalFactory, AXPContextStore } from '@acorex-platform/framework-client/core';
17
+ import * as i5 from '@acorex-platform/framework-client/layout/widget-core';
18
18
  import { AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetCoreElementAPI, AXPWidgetCoreService, AXPWidgetRendererDirective } from '@acorex-platform/framework-client/layout/widget-core';
19
19
  import * as i1 from '@angular/router';
20
20
  import { ParamMap, ResolveFn, RedirectCommand } from '@angular/router';
21
21
  import * as rxjs from 'rxjs';
22
22
  import { Subject } from 'rxjs';
23
- import * as i5 from '@acorex-platform/framework-client/layout/builder';
23
+ import * as i6 from '@acorex-platform/framework-client/layout/builder';
24
24
  import { IActionBuilder, AXPDialogRef, IFormFieldBuilder } from '@acorex-platform/framework-client/layout/builder';
25
25
  import { AXPSessionService } from '@acorex-platform/framework-client/auth';
26
- import { AXPQueryExecutor, AXPCommandService } from '@acorex-platform/framework-client/runtime';
26
+ import { AXPQueryExecutor, AXPCommandService, AXPCommandMiddleware, AXPQueryMiddleware } from '@acorex-platform/framework-client/runtime';
27
+ import { AXCFileUploaderCapabilities, AXPFileStorageService, AXPLocalEntityPolicy, AXPLocalEntityRelatedOption, AXPLocalEntityEngine } from '@acorex-platform/framework-client/common';
28
+ export { commandMessageTextForError } from '@acorex-platform/framework-client/common';
27
29
  import { AXTreeViewNode, AXTreeViewComponent, AXTreeViewNodeSelectEvent } from '@acorex/components/tree-view';
28
30
  import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
29
31
  import { AXBasePageComponent } from '@acorex/components/page';
30
32
  import { AXFormatService } from '@acorex/core/format';
31
33
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
32
34
  import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex-platform/framework-client/layout/widgets';
33
- import * as _acorex_platform_framework_client_workflow from '@acorex-platform/framework-client/workflow';
34
- import { AXPWorkflowEventService } from '@acorex-platform/framework-client/workflow';
35
- import { AXCFileUploaderCapabilities, AXPFileStorageService } from '@acorex-platform/framework-client/common';
36
- export { commandMessageTextForError } from '@acorex-platform/framework-client/common';
37
35
  import * as _acorex_platform_framework_client_layout_entity from '@acorex-platform/framework-client/layout/entity';
38
36
  import { AXPopoverComponent } from '@acorex/components/popover';
39
- import { AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
40
37
  import * as _acorex_core_translation from '@acorex/core/translation';
41
38
  import { AXTranslationService } from '@acorex/core/translation';
42
39
 
@@ -47,9 +44,12 @@ declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
47
44
  private translationService;
48
45
  private settingsService;
49
46
  private openEntityDetailsCommand;
50
- private workflowEventService;
47
+ private entityEvents;
51
48
  protected context: {};
52
- execute(input: any): Promise<AXPExecuteCommandResult<any>>;
49
+ execute(input?: AXPEntityActionCommandInput & {
50
+ dialogSize?: unknown;
51
+ }): AXPCommandExecuteResultPromise<any>;
52
+ private dispatchCreateListRefresh;
53
53
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPCreateEntityCommand, never>;
54
54
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPCreateEntityCommand>;
55
55
  }
@@ -62,11 +62,9 @@ declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
62
62
  * Applied in the AI module when normalizing tool arguments (not in the generic command executor).
63
63
  */
64
64
  declare const axpCreateEntityAiToolInputDefaults: {
65
- readonly __context__: {
66
- readonly options: {
67
- readonly process: {
68
- readonly redirect: false;
69
- };
65
+ readonly options: {
66
+ readonly process: {
67
+ readonly redirect: false;
70
68
  };
71
69
  };
72
70
  };
@@ -109,52 +107,25 @@ declare const axpCreateEntityCommandDefinition: {
109
107
  };
110
108
  tags: string[];
111
109
  toolInputDefaults: {
112
- __context__: {
113
- readonly options: {
114
- readonly process: {
115
- readonly redirect: false;
116
- };
110
+ options: {
111
+ readonly process: {
112
+ readonly redirect: false;
117
113
  };
118
114
  };
119
115
  };
120
116
  };
121
- categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
117
+ categories: _acorex_platform_framework_shared_core.AXPDefinitionCategory[];
122
118
  };
123
119
 
124
- interface AXPEntityDeleteOptions {
125
- source: string;
126
- ids: string[];
127
- }
128
- interface AXPEntityDeletePerformInput {
129
- entity?: string;
130
- data?: unknown;
131
- entities?: AXPEntityDeleteOptions[];
132
- meta?: unknown;
133
- }
134
-
135
- interface AXPDeleteEntityCommandInput {
136
- entity?: string;
137
- data?: unknown;
138
- entities?: AXPEntityDeletePerformInput['entities'];
139
- meta?: unknown;
140
- options?: Record<string, unknown>;
141
- __context__?: {
142
- entity?: string;
143
- data?: unknown;
144
- entities?: AXPEntityDeletePerformInput['entities'];
145
- meta?: unknown;
146
- options?: Record<string, unknown>;
147
- };
148
- __metadata__?: unknown;
149
- }
120
+ type AXPDeleteEntityCommandInput = AXPEntityActionCommandInput;
150
121
  /**
151
122
  * Confirms then deletes entity record(s). Replaces the former `delete-entity` workflow.
152
123
  */
153
- declare class AXPDeleteEntityCommand implements AXPCommand<AXPDeleteEntityCommandInput, AXPExecuteCommandResult> {
124
+ declare class AXPDeleteEntityCommand implements AXPCommand<AXPDeleteEntityCommandInput> {
154
125
  private readonly dialogService;
155
126
  private readonly translationService;
156
127
  private readonly deletePerform;
157
- execute(input?: AXPDeleteEntityCommandInput): Promise<AXPExecuteCommandResult>;
128
+ execute(input?: AXPDeleteEntityCommandInput): AXPCommandExecuteResultPromise;
158
129
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDeleteEntityCommand, never>;
159
130
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDeleteEntityCommand>;
160
131
  }
@@ -182,7 +153,7 @@ declare const axpDeleteEntityCommandDefinition: {
182
153
  ai: {
183
154
  tags: string[];
184
155
  };
185
- categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
156
+ categories: _acorex_platform_framework_shared_core.AXPDefinitionCategory[];
186
157
  };
187
158
 
188
159
  interface AXPOpenEntityListCondition {
@@ -193,25 +164,17 @@ interface AXPOpenEntityListCondition {
193
164
  };
194
165
  value?: unknown;
195
166
  }
196
- interface AXPOpenEntityListCommandInput {
197
- entity?: string;
167
+ type AXPOpenEntityListCommandInput = AXPEntityActionCommandInput & {
198
168
  conditions?: AXPOpenEntityListCondition[];
199
- __context__?: {
200
- entity?: string;
201
- conditions?: AXPOpenEntityListCondition[];
202
- options?: {
203
- conditions?: AXPOpenEntityListCondition[];
204
- };
205
- };
206
- }
169
+ };
207
170
  /**
208
171
  * Navigates to an entity master list, optionally with filter query params.
209
172
  * Replaces the former `show-list-view` workflow.
210
173
  */
211
- declare class AXPOpenEntityListCommand implements AXPCommand<AXPOpenEntityListCommandInput, AXPExecuteCommandResult> {
174
+ declare class AXPOpenEntityListCommand implements AXPCommand<AXPOpenEntityListCommandInput> {
212
175
  private readonly router;
213
176
  private readonly sessionService;
214
- execute(input?: AXPOpenEntityListCommandInput): Promise<AXPExecuteCommandResult>;
177
+ execute(input?: AXPOpenEntityListCommandInput): AXPCommandExecuteResultPromise;
215
178
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityListCommand, never>;
216
179
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityListCommand>;
217
180
  }
@@ -239,7 +202,7 @@ declare const axpOpenEntityListCommandDefinition: {
239
202
  ai: {
240
203
  tags: string[];
241
204
  };
242
- categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
205
+ categories: _acorex_platform_framework_shared_core.AXPDefinitionCategory[];
243
206
  };
244
207
 
245
208
  declare class AXPEditFileUploaderCommand implements AXPCommand<{
@@ -264,7 +227,7 @@ declare class AXPEditFileUploaderCommand implements AXPCommand<{
264
227
  excludePlugins?: string[];
265
228
  enableTitleDescription?: boolean;
266
229
  isNewFile?: boolean;
267
- }): Promise<AXPExecuteCommandResult<AXPFileListItem>>;
230
+ }): AXPCommandExecuteResultPromise<AXPFileListItem>;
268
231
  private showEditDialog;
269
232
  /**
270
233
  * Build form fields from hook items (old format parameters)
@@ -310,6 +273,10 @@ declare class AXPFileListComponent implements OnInit, OnDestroy {
310
273
  /** `inline`: label + divider; `menu`: compact list for popovers/panels. */
311
274
  linksLayout: _angular_core.InputSignal<"inline" | "menu">;
312
275
  files: _angular_core.InputSignal<AXPFileListItem[]>;
276
+ accept: _angular_core.InputSignal<string | undefined>;
277
+ maxFileSize: _angular_core.InputSignal<number | undefined>;
278
+ /** When true, empty state copy mentions click/drag to upload. */
279
+ showUploadZoneHint: _angular_core.InputSignal<boolean>;
313
280
  plugins: _angular_core.InputSignal<{
314
281
  name: string;
315
282
  options?: unknown;
@@ -321,6 +288,11 @@ declare class AXPFileListComponent implements OnInit, OnDestroy {
321
288
  * The template will handle the visual differences based on the status.
322
289
  */
323
290
  displayFiles: _angular_core.Signal<AXPFileListItem[]>;
291
+ protected emptyStateIcon: _angular_core.Signal<"fa-light fa-cloud-arrow-up" | "fa-light fa-folder-open">;
292
+ protected emptyStateDescription: _angular_core.Signal<{
293
+ key: _acorex_platform_framework_client_layout_components.FileUploaderEmptyStateDescriptionKey;
294
+ params: Record<string, string>;
295
+ }>;
324
296
  private fileIdToActions;
325
297
  private globalActions;
326
298
  /** Suppress duplicate downloads from double-click (two click events). */
@@ -359,7 +331,7 @@ declare class AXPFileListComponent implements OnInit, OnDestroy {
359
331
  runAction(action: any): Promise<void>;
360
332
  protected getActionColor(action: any): string;
361
333
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileListComponent, never>;
362
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileListComponent, "axp-file-list", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "fileEditable": { "alias": "fileEditable"; "required": false; "isSignal": true; }; "enableTitleDescription": { "alias": "enableTitleDescription"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "linksLayout": { "alias": "linksLayout"; "required": false; "isSignal": true; }; "files": { "alias": "files"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; "excludePlugins": { "alias": "excludePlugins"; "required": false; "isSignal": true; }; "capabilities": { "alias": "capabilities"; "required": false; "isSignal": true; }; }, { "onRemove": "onRemove"; "onRevert": "onRevert"; "onRename": "onRename"; }, never, never, true, never>;
334
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileListComponent, "axp-file-list", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "fileEditable": { "alias": "fileEditable"; "required": false; "isSignal": true; }; "enableTitleDescription": { "alias": "enableTitleDescription"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "linksLayout": { "alias": "linksLayout"; "required": false; "isSignal": true; }; "files": { "alias": "files"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "showUploadZoneHint": { "alias": "showUploadZoneHint"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; "excludePlugins": { "alias": "excludePlugins"; "required": false; "isSignal": true; }; "capabilities": { "alias": "capabilities"; "required": false; "isSignal": true; }; }, { "onRemove": "onRemove"; "onRevert": "onRevert"; "onRename": "onRename"; }, never, never, true, never>;
363
335
  }
364
336
 
365
337
  /** Stable fingerprint for one file row; ignores Blob binary content. */
@@ -401,29 +373,31 @@ declare function resolveAttachmentFieldPath(options: Record<string, unknown>, fi
401
373
  declare function isAttachmentFieldPresentOnRow(rowData: Record<string, unknown> | undefined, fieldPath: string | undefined): boolean;
402
374
  declare function resolveFileUploaderEntityScope(options: Record<string, unknown>, rowData: Record<string, unknown> | undefined, fieldFallback?: string): AXPFileUploaderEntityFilesScope | undefined;
403
375
 
404
- interface AXPFileUploaderLoadFilesInput extends AXPFileUploaderEntityFilesScope {
376
+ interface AXPFileUploaderLoadFilesQueryInput extends AXPFileUploaderEntityFilesScope {
405
377
  }
406
- interface AXPFileUploaderLoadFilesResult {
378
+ interface AXPFileUploaderLoadFilesQueryResult {
407
379
  files: AXPFileListItem[];
408
380
  /** Count including file-id references, not only hydrated AXPFileListItem rows. */
409
381
  count: number;
410
382
  }
411
- declare class AXPFileUploaderLoadFilesQuery implements AXPQuery<AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult> {
412
- private readonly injector;
413
- fetch(input: AXPFileUploaderLoadFilesInput): Promise<AXPFileUploaderLoadFilesResult>;
383
+ declare class AXPFileUploaderLoadFilesQuery implements AXPQuery<AXPFileUploaderLoadFilesQueryInput, AXPFileUploaderLoadFilesQueryResult> {
384
+ private readonly entityRuntime;
385
+ fetch(input: AXPFileUploaderLoadFilesQueryInput): AXPQueryFetchResultPromise<AXPFileUploaderLoadFilesQueryResult>;
414
386
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderLoadFilesQuery, never>;
415
387
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderLoadFilesQuery>;
416
388
  }
417
389
 
418
- interface AXPFileUploaderSaveFilesInput extends AXPFileUploaderEntityFilesScope {
390
+ interface AXPFileUploaderSaveFilesCommandInput extends AXPFileUploaderEntityFilesScope {
419
391
  files: AXPFileListItem[];
420
392
  }
421
- interface AXPFileUploaderSaveFilesResult {
393
+ interface AXPFileUploaderSaveFilesCommandResult {
422
394
  entityData: Record<string, unknown>;
423
395
  }
424
- declare class AXPFileUploaderSaveFilesCommand implements AXPCommand<AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult> {
425
- private readonly injector;
426
- execute(input: AXPFileUploaderSaveFilesInput): Promise<AXPExecuteCommandResult<AXPFileUploaderSaveFilesResult>>;
396
+ declare class AXPFileUploaderSaveFilesCommand implements AXPCommand<AXPFileUploaderSaveFilesCommandInput, AXPFileUploaderSaveFilesCommandResult> {
397
+ private readonly entityRuntime;
398
+ execute(input: AXPFileUploaderSaveFilesCommandInput): AXPCommandExecuteResultPromise<AXPFileUploaderSaveFilesCommandResult>;
399
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderSaveFilesCommand, never>;
400
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderSaveFilesCommand>;
427
401
  }
428
402
 
429
403
  /** Serializable upload action exposed via widget `api().getUploadActions()`. */
@@ -456,7 +430,7 @@ declare class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetCompon
456
430
  protected readonly fileListTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
457
431
  protected readonly fileListPopover: _angular_core.Signal<AXPopoverComponent | undefined>;
458
432
  protected readonly popoverFiles: _angular_core.WritableSignal<AXPFileListItem[]>;
459
- protected readonly loadStatus: _angular_core.WritableSignal<"idle" | "loading" | "ready" | "error">;
433
+ protected readonly loadStatus: _angular_core.WritableSignal<"error" | "idle" | "loading" | "ready">;
460
434
  protected readonly loadError: _angular_core.WritableSignal<string | null>;
461
435
  protected readonly isPopoverOpen: _angular_core.WritableSignal<boolean>;
462
436
  private readonly entityDef;
@@ -482,6 +456,7 @@ declare class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetCompon
482
456
  declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent<AXPFileListItem[] | undefined> {
483
457
  private readonly hooks;
484
458
  private readonly chooserService;
459
+ private readonly settingsService;
485
460
  private readonly commandExecutor;
486
461
  private readonly toastService;
487
462
  private readonly translateService;
@@ -514,10 +489,12 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
514
489
  protected showBorder: _angular_core.Signal<boolean>;
515
490
  protected showAddItemButton: _angular_core.Signal<boolean>;
516
491
  protected maxFileSize: _angular_core.Signal<number>;
492
+ protected isDropZoneInteractive: _angular_core.Signal<boolean>;
517
493
  protected isDragOver: _angular_core.WritableSignal<boolean>;
518
494
  protected readonly isChoosing: _angular_core.WritableSignal<boolean>;
519
495
  protected readonly chooserContext: _angular_core.Signal<AXPFileChooserContext>;
520
496
  ngOnInit(): void;
497
+ private applyChooserPlatformSettings;
521
498
  setValue(value: AXPFileListItem[] | null | undefined): void;
522
499
  /** Align dirty baseline with persisted attachments (call when record loads or after discard remount). */
523
500
  syncBaseline(saved: AXPFileListItem[] | undefined): void;
@@ -532,17 +509,18 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
532
509
  private notifyUploadActionsChanged;
533
510
  private evaluateDirty;
534
511
  private setDirty;
512
+ protected onDropZoneClick(event: MouseEvent): Promise<void>;
513
+ private openSystemFileChooser;
535
514
  protected onChooserItemsChanged(next: AXPFileListItem[]): Promise<void>;
515
+ private applyChooserResult;
536
516
  private configureFromHooks;
537
517
  /**
538
518
  * Process items returned from file chooser providers (device, drive, etc.).
539
519
  */
540
520
  private processChosenItems;
541
- /**
542
- * Process files from drag-drop.
543
- * When showEditDialogAfterSelect is true, the edit dialog (with plugin hooks) is shown per file before adding; otherwise files are added and user can edit via Edit button.
544
- */
545
- private processFiles;
521
+ protected onDragOver(event: DragEvent): void;
522
+ protected onDragLeave(event: DragEvent): void;
523
+ protected onDrop(event: DragEvent): Promise<void>;
546
524
  /**
547
525
  * Show edit dialog per file and add only those submitted. Used when showEditDialogAfterSelect is true (both from zone and from dropdown actions).
548
526
  */
@@ -551,10 +529,6 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
551
529
  private validateListItemsForUpload;
552
530
  private notifyRejectedFiles;
553
531
  private filterFilesByAcceptAndMaxSize;
554
- private isUnrestrictedAccept;
555
- private fileMatchesAccept;
556
- private matchesMimePattern;
557
- private matchesCategoryByExtension;
558
532
  protected files: _angular_core.Signal<AXPFileListItem[]>;
559
533
  handleFileRemove(file: AXPFileListItem): void;
560
534
  removeFile(file: AXPFileListItem): void;
@@ -571,7 +545,6 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
571
545
  clear(): void;
572
546
  protected readonly capabilities: AXCFileUploaderCapabilities;
573
547
  private addFilesWithValidation;
574
- onFileChange(event: AXUploaderFileChangeEvent): void;
575
548
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetEditComponent, never>;
576
549
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetEditComponent, "axp-file-uploader-widget-edit", never, {}, {}, never, never, true, never>;
577
550
  }
@@ -664,7 +637,7 @@ declare class AXPFileUploaderWidgetService {
664
637
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderWidgetService>;
665
638
  }
666
639
 
667
- interface AXPShowFileUploaderPopupCommandInput {
640
+ type AXPShowFileUploaderPopupCommandInput = AXPEntityActionCommandInput & {
668
641
  options?: {
669
642
  key?: string;
670
643
  readonly?: boolean | string;
@@ -687,24 +660,18 @@ interface AXPShowFileUploaderPopupCommandInput {
687
660
  entityName?: string;
688
661
  id?: string;
689
662
  };
690
- entity?: string;
691
- __context__?: {
692
- entity?: string;
693
- options?: AXPShowFileUploaderPopupCommandInput['options'];
694
- };
695
- __metadata__?: unknown;
696
- }
663
+ };
697
664
  /**
698
665
  * Opens the file uploader popup, saves files, then dispatches modify side-effects.
699
666
  * Replaces the former `show-file-uploader-popup` workflow (popup + toast + modify confirmed).
700
667
  */
701
- declare class AXPShowFileUploaderPopupCommand implements AXPCommand<AXPShowFileUploaderPopupCommandInput, AXPExecuteCommandResult> {
668
+ declare class AXPShowFileUploaderPopupCommand implements AXPCommand<AXPShowFileUploaderPopupCommandInput> {
702
669
  private readonly fileUploaderWidgetService;
703
670
  private readonly toastService;
704
671
  private readonly translationService;
705
672
  private readonly settingsService;
706
- private readonly workflowEventService;
707
- execute(input?: AXPShowFileUploaderPopupCommandInput): Promise<AXPExecuteCommandResult>;
673
+ private readonly entityEvents;
674
+ execute(input?: AXPShowFileUploaderPopupCommandInput): AXPCommandExecuteResultPromise;
708
675
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShowFileUploaderPopupCommand, never>;
709
676
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPShowFileUploaderPopupCommand>;
710
677
  }
@@ -732,7 +699,7 @@ declare const axpShowFileUploaderPopupCommandDefinition: {
732
699
  ai: {
733
700
  tags: string[];
734
701
  };
735
- categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
702
+ categories: _acorex_platform_framework_shared_core.AXPDefinitionCategory[];
736
703
  };
737
704
 
738
705
  declare class AXPUpdateEntityCommand implements AXPCommand<any, any> {
@@ -744,49 +711,107 @@ declare class AXPUpdateEntityCommand implements AXPCommand<any, any> {
744
711
  private readonly formatService;
745
712
  private readonly expressionEvaluator;
746
713
  private readonly contextEvalFactory;
747
- private readonly workflowEventService;
748
- execute(input: any): Promise<AXPExecuteCommandResult<any>>;
714
+ private readonly entityEvents;
715
+ execute(input?: AXPEntityActionCommandInput & {
716
+ dialogSize?: unknown;
717
+ }): AXPCommandExecuteResultPromise<any>;
749
718
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPUpdateEntityCommand, never>;
750
719
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPUpdateEntityCommand>;
751
720
  }
752
721
 
722
+ interface AXPUpdateEntityStatusCommandInput {
723
+ /** Full entity key, e.g. `SecurityManagement.User`. */
724
+ entity: string;
725
+ /** Target status name/value. */
726
+ status: string;
727
+ /** Field to patch (defaults to `statusId`). */
728
+ statusField?: string;
729
+ /** Single record id. */
730
+ id?: string;
731
+ /** Bulk record ids. */
732
+ ids?: string[];
733
+ }
734
+ /**
735
+ * Default handler for status-chip transitions when no custom transition.command is set.
736
+ * Patches only the status field via the entity update path (no edit dialog).
737
+ */
738
+ declare class AXPUpdateEntityStatusCommand implements AXPCommand<AXPUpdateEntityStatusCommandInput> {
739
+ private readonly entityService;
740
+ private readonly entityRegistry;
741
+ private readonly translationService;
742
+ private readonly entityEvents;
743
+ execute(input: AXPUpdateEntityStatusCommandInput): AXPCommandExecuteResultPromise;
744
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPUpdateEntityStatusCommand, never>;
745
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPUpdateEntityStatusCommand>;
746
+ }
747
+
748
+ /**
749
+ * Build-time only. Do not import from Angular modules.
750
+ */
751
+ declare const axpUpdateEntityStatusCommandDefinition: {
752
+ key: string;
753
+ title: string;
754
+ description: string;
755
+ executionMode: "frontend";
756
+ inputs: ({
757
+ name: string;
758
+ title: string;
759
+ description: string;
760
+ interface: {
761
+ name: string;
762
+ };
763
+ validations: {
764
+ rule: string;
765
+ }[];
766
+ } | {
767
+ name: string;
768
+ title: string;
769
+ description: string;
770
+ interface: {
771
+ name: string;
772
+ };
773
+ validations?: undefined;
774
+ })[];
775
+ outcomes: {
776
+ mode: "dynamic";
777
+ summary: string;
778
+ derivesFrom: string;
779
+ };
780
+ capabilities: "ai"[];
781
+ ai: {
782
+ tags: string[];
783
+ };
784
+ categories: _acorex_platform_framework_shared_core.AXPDefinitionCategory[];
785
+ };
786
+
753
787
  declare class AXPViewEntityDetailsCommand implements AXPCommand<any, any> {
754
788
  private readonly entityForm;
755
789
  private readonly entityService;
756
790
  private readonly translationService;
757
791
  private readonly expressionEvaluator;
758
792
  private readonly contextEvalFactory;
759
- execute(input: any): Promise<AXPExecuteCommandResult<any>>;
793
+ execute(input?: AXPEntityActionCommandInput & {
794
+ excludeProperties?: unknown;
795
+ }): AXPCommandExecuteResultPromise<any>;
760
796
  private resolveDialogTitle;
761
797
  private loadRecordContext;
762
798
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPViewEntityDetailsCommand, never>;
763
799
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPViewEntityDetailsCommand>;
764
800
  }
765
801
 
766
- interface AXPOpenEntityDetailsCommandInput {
767
- entity?: string;
768
- data?: {
769
- id: string;
770
- };
771
- __context__?: {
772
- entity?: string;
773
- data?: {
774
- id: string;
775
- };
776
- };
777
- }
802
+ type AXPOpenEntityDetailsCommandInput = AXPEntityActionCommandInput;
778
803
  /**
779
804
  * Generic command to open entity details view
780
805
  * Can be used by any entity to navigate to its detail page
781
806
  */
782
- declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput, AXPExecuteCommandResult> {
807
+ declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput> {
783
808
  private readonly router;
784
809
  private readonly sessionService;
785
810
  /**
786
811
  * Execute the command to navigate to entity details
787
812
  * @param input - Command input containing entity and data information
788
813
  */
789
- execute(input?: AXPOpenEntityDetailsCommandInput): Promise<AXPExecuteCommandResult>;
814
+ execute(input?: AXPOpenEntityDetailsCommandInput): AXPCommandExecuteResultPromise;
790
815
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityDetailsCommand, never>;
791
816
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
792
817
  }
@@ -909,25 +934,21 @@ declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBas
909
934
  onApply(event: AXPPreloadFiltersApplyEvent): Promise<void>;
910
935
  onShowAll(): Promise<void>;
911
936
  private buildPreloadFilterQueries;
937
+ /**
938
+ * Filter widgets store `{ value, operation, displayText? }`; plain values are treated as equal filters.
939
+ */
940
+ private unwrapFilterWidgetEntry;
912
941
  private buildListQueryFilter;
913
942
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPreloadFiltersContainerComponent, never>;
914
943
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityPreloadFiltersContainerComponent, "axp-entity-preload-filters-container", never, {}, {}, never, never, true, never>;
915
944
  }
916
945
 
917
- /**
918
- * Data source definition provider that returns all entity names
919
- * from entity loaders' list() (const.ts in each module).
920
- */
921
- declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefinitionProvider {
922
- private readonly entityResolver;
923
- items(): Promise<AXPDataSourceDefinition[]>;
924
- }
925
-
926
946
  /**
927
947
  * Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
928
- * tabs): meta-data-builder → attachments → gallery → documents → comments → dashboard → history.
948
+ * tabs): meta-data-builder → attachments → gallery → documents → comments → dashboard →
949
+ * reports → history (Change History stays last).
929
950
  */
930
- type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'gallery' | 'documents' | 'comments' | 'dashboard' | 'history';
951
+ type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'gallery' | 'documents' | 'comments' | 'dashboard' | 'reports' | 'history';
931
952
  /** Identifies an `entity.pages` entry when skipping its order during recomputation. */
932
953
  interface SkipEntityComponentPageRef {
933
954
  componentKey: string;
@@ -955,8 +976,8 @@ interface ResolveEntityPluginDetailPageOrderOptions {
955
976
  *
956
977
  * 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
957
978
  * `order` (the composer otherwise treats them as +Infinity).
958
- * 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
959
- * comments → history, after all related tabs.
979
+ * 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → gallery →
980
+ * documents → comments → dashboard → reports → history, after all related tabs.
960
981
  */
961
982
  declare function resolveEntityPluginDetailPageOrder(input: {
962
983
  relatedEntities?: AXPRelatedEntity[];
@@ -1100,9 +1121,14 @@ declare class AXPEntityEventDispatcherService {
1100
1121
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
1101
1122
  }
1102
1123
 
1124
+ /**
1125
+ * Resolves sort order from master interface property layout.
1126
+ * Prefers top-level `layout.order`, then breakpoint `positions.*.order`.
1127
+ */
1128
+ declare function resolveMasterInterfacePropertyOrder(layout: AXPEntityPropertyLayoutConfig | undefined, fallback: number): number;
1103
1129
  /**
1104
1130
  * Sort key for entries in `interfaces.master.{create|update|single}.properties`.
1105
- * Uses `layout.order` when set and finite; otherwise the property index in that list.
1131
+ * Uses `layout.order` / `positions.*.order` when set and finite; otherwise the property index in that list.
1106
1132
  */
1107
1133
  declare function getMasterInterfacePropertySortKey(interfaceRow: {
1108
1134
  layout?: AXPEntityPropertyLayoutConfig | undefined;
@@ -1142,6 +1168,29 @@ interface AXPEntityListPagingState {
1142
1168
  take: number;
1143
1169
  skip: number;
1144
1170
  }
1171
+ /** Default take used when loading hierarchical children via data-table expand. */
1172
+ declare const TREE_CHILDREN_QUERY_TAKE = 1000;
1173
+ /**
1174
+ * AXDataSource.getItemsByFilter reuses the current grid page skip/take.
1175
+ * When data-table expands a hierarchical row it sends a direct parentKey=equal filter;
1176
+ * reset paging so children are not clipped by the parent grid page.
1177
+ */
1178
+ declare function resetPagingForTreeChildrenLoad(request: {
1179
+ skip?: number;
1180
+ take?: number;
1181
+ filter?: AXDataSourceFilterOption | null;
1182
+ }, parentKey: string | undefined | null, take?: number): void;
1183
+ /**
1184
+ * Returns true when the filter tree already constrains `parentKey`
1185
+ * (root `isEmpty`, children `equal`, or nested equivalents).
1186
+ */
1187
+ declare function filterTouchesParentKey(filter: AXDataSourceFilterOption, parentKey: string): boolean;
1188
+ /**
1189
+ * Ensures hierarchical root loads keep `parentKey isEmpty` while preserving custom filters.
1190
+ * Call this in lookup/list loaders before query so storage does not replace custom filters.
1191
+ * Skips when the request already targets `parentKey` (e.g. children expand).
1192
+ */
1193
+ declare function ensureHierarchicalRootFilter(filter: AXDataSourceFilterOption | null | undefined, parentKey: string | undefined | null): AXDataSourceFilterOption | undefined;
1145
1194
  /**
1146
1195
  * Applies take/skip to the data source without triggering {@link AXDataSource.load}.
1147
1196
  */
@@ -1262,14 +1311,13 @@ declare class AXPEntityMasterListViewModel {
1262
1311
  private readonly _viewDef;
1263
1312
  private readonly formatService;
1264
1313
  private readonly session;
1265
- private readonly workflowEventService;
1314
+ private readonly entityEvents;
1266
1315
  private readonly settings;
1267
1316
  private readonly widgetResolver;
1268
1317
  private readonly expressionEvaluator;
1269
1318
  private readonly contextEvalFactory;
1270
1319
  private readonly translation;
1271
1320
  private readonly commandService;
1272
- private readonly eventService;
1273
1321
  private readonly queryExecutor;
1274
1322
  private readonly filterOperatorMiddleware;
1275
1323
  private readonly entityDefinitionRegistry;
@@ -1279,6 +1327,7 @@ declare class AXPEntityMasterListViewModel {
1279
1327
  private lastAppliedFilterKey;
1280
1328
  private hasQueryParamsFilters;
1281
1329
  private routeQueryContextKey;
1330
+ private settingsUpdateChain;
1282
1331
  private initialListSettingsApplied;
1283
1332
  /** Persisted expanded row ids for hierarchical lists (per view). */
1284
1333
  private readonly expandedRowIds;
@@ -1416,6 +1465,11 @@ declare class AXPEntityMasterListViewModel {
1416
1465
  */
1417
1466
  updateExpandedRowId(rowId: string, expanded: boolean): void;
1418
1467
  handleRowExpandChange(rowData: Record<string, unknown>): void;
1468
+ /**
1469
+ * User-applied filters to persist (excludes hidden view conditions and empty values).
1470
+ */
1471
+ getPersistableFilterQueries(queries?: AXPFilterQuery[]): AXPFilterQuery[];
1472
+ private enqueueSettingsUpdate;
1419
1473
  saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'listPaging' | 'filters' | 'sorts' | 'expandedRows' | 'listLayout' | 'cardContentExpanded', data?: unknown): Promise<void>;
1420
1474
  selectedItems: _angular_core.WritableSignal<any[]>;
1421
1475
  /**
@@ -1478,13 +1532,18 @@ declare class AXPEntityMasterListViewModel {
1478
1532
  */
1479
1533
  applyFiltersFromQueryParams(filtersJson: string | null): boolean;
1480
1534
  /**
1481
- * Records the current route query context after initial resolver / view init so the first
1535
+ * Records the route query context after initial resolver / view init so the first
1482
1536
  * subscription emission does not re-sync unnecessarily.
1537
+ *
1538
+ * @param overrides Merged over the snapshot (e.g. pending `view` written via `replaceUrl`).
1483
1539
  */
1484
- markRouteQueryContextSynced(queryParamMap: ParamMap): void;
1540
+ markRouteQueryContextSynced(queryParamMap: ParamMap, overrides?: Record<string, string | null | undefined>): void;
1485
1541
  /**
1486
1542
  * Reacts to any route query param change while the list route is reused (`reuse: queryParamsChange`).
1487
1543
  * Handles known keys (`view`, `filters`) and re-evaluates view visibility for expression-driven params.
1544
+ *
1545
+ * Data reload is owned by {@link applyFilterAndSort} → `events$` when criteria change.
1546
+ * `reloadList` stays false so callers do not issue a second `reloadListData` for the same transition.
1488
1547
  */
1489
1548
  syncFromRouteQueryParams(queryParamMap: ParamMap): Promise<{
1490
1549
  reloadList: boolean;
@@ -1503,15 +1562,31 @@ declare class AXPEntityMasterListViewModel {
1503
1562
  get preloadFiltersDef(): AXPEntityListFilterDefinition[];
1504
1563
  applyViewFilters(): Promise<void>;
1505
1564
  resetFilters(): void;
1506
- applyFilterAndSort(): Promise<void>;
1565
+ applyFilterAndSort(options?: {
1566
+ resetPagination?: boolean;
1567
+ }): Promise<void>;
1507
1568
  private updateAppliedInlineFilterHighlightText;
1508
1569
  private resolveMergeDetailProperty;
1509
1570
  private allAvailableColumns;
1510
1571
  visibleColumnCount: () => number;
1572
+ /**
1573
+ * Builds path-based `fields` for entity list queries from all configured columns.
1574
+ * Visibility is client-only and does not change which fields are requested.
1575
+ */
1576
+ buildColumnQueryFields(): string[] | undefined;
1511
1577
  columns: _angular_core.WritableSignal<AXPEntityListViewColumnViewModel[]>;
1512
- resetColumns(): void;
1578
+ resetColumns(): Promise<void>;
1513
1579
  onColumnsChanged(columns: AXPEntityListViewColumnViewModel[]): Promise<void>;
1514
- applyViewColumns(): void;
1580
+ /**
1581
+ * Builds list columns for the active view:
1582
+ * - `view.columns` is a whitelist (empty = all columns)
1583
+ * - string `options.visible` is evaluated against the master-list scope
1584
+ */
1585
+ applyViewColumns(): Promise<void>;
1586
+ /**
1587
+ * Resolves column `options.visible` (boolean or expression) to a boolean for the current list scope.
1588
+ */
1589
+ private resolveColumnVisibleExpression;
1515
1590
  onColumnsOrderChanged(event: any): void;
1516
1591
  private mergeDisplayFieldWithColumn;
1517
1592
  private buildVirtualDisplayProperty;
@@ -1621,7 +1696,7 @@ declare class AXPEntityMasterSingleViewModel {
1621
1696
  private readonly _viewDef;
1622
1697
  private readonly session;
1623
1698
  private readonly formatService;
1624
- private readonly workflowEventService;
1699
+ private readonly entityEvents;
1625
1700
  private readonly commandService;
1626
1701
  private readonly destroyed;
1627
1702
  private translateService;
@@ -1711,6 +1786,267 @@ declare class AXPEntityMasterUpdateViewModelFactory {
1711
1786
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMasterUpdateViewModelFactory>;
1712
1787
  }
1713
1788
 
1789
+ /** Raw entity IO surface exposed on middleware context as `ctx.entities` (alias `ctx.backend`). */
1790
+ interface AXPEntityAccessPort {
1791
+ get dbName(): string;
1792
+ initial<T>(entityName: string, collection: T[]): Promise<T[]>;
1793
+ getOne<T>(entityName: string, id: unknown): Promise<T>;
1794
+ getAll<T>(entityName: string): Promise<T[]>;
1795
+ query<T>(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<T>>;
1796
+ updateOne<T>(entityName: string, id: unknown, data: Omit<Partial<AXPEntityUpdateDto<unknown>>, 'id'>): Promise<T>;
1797
+ deleteOne(entityName: string, id: unknown): Promise<void>;
1798
+ insertOne(entityName: string, entity: AXPEntityCreateDto): Promise<string>;
1799
+ count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1800
+ queryAll<T>(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<T>>;
1801
+ getMany<T>(entityName: string, ids: unknown[]): Promise<(T | null)[]>;
1802
+ exists(entityName: string, id: unknown): Promise<boolean>;
1803
+ upsertOne(entityName: string, entity: AXPEntityCreateDto, options?: {
1804
+ merge?: boolean;
1805
+ }): Promise<string>;
1806
+ aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
1807
+ }
1808
+ interface AXPEntityMiddlewareContext<TKey = unknown, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityDetailDto<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = AXPEntityListItemDto<TKey>, TCreateDto extends AXPEntityCreateDto = AXPEntityCreateDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = AXPEntityUpdateDto<TKey>> {
1809
+ op: AXPEntityOp;
1810
+ entityName: string;
1811
+ id?: TKey;
1812
+ /** Entity payload for create/update (loose for middleware; wrapper assigns typed DTOs). */
1813
+ data?: any;
1814
+ request?: AXPQueryRequest;
1815
+ previous?: TDetailDto;
1816
+ result?: any;
1817
+ locals: Map<string, unknown>;
1818
+ /** Nested entity reads/writes without re-entering client entity middleware. */
1819
+ entities: {
1820
+ getOne: (entityName: string, id: TKey) => Promise<TDetailDto>;
1821
+ insertOne: (entityName: string, entity: TCreateDto) => Promise<TKey>;
1822
+ query: (entityName: string, request: AXPQueryRequest) => Promise<AXPPagedListResult<TListItemDto>>;
1823
+ updateOne: (entityName: string, id: TKey, data: Partial<TUpdateDto>) => Promise<TDetailDto>;
1824
+ deleteOne: (entityName: string, id: TKey) => Promise<void>;
1825
+ count: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>) => Promise<number>;
1826
+ queryAll: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions) => Promise<AXPEntityQueryAllResult<TListItemDto>>;
1827
+ getMany: (entityName: string, ids: TKey[]) => Promise<(TListItemDto | null)[]>;
1828
+ exists: (entityName: string, id: TKey) => Promise<boolean>;
1829
+ upsertOne: (entityName: string, entity: TCreateDto, options?: {
1830
+ merge?: boolean;
1831
+ }) => Promise<TKey>;
1832
+ aggregate: (entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions) => Promise<AXPEntityAggregateResult>;
1833
+ };
1834
+ /** @deprecated Use `entities`. Kept for existing middleware source compatibility. */
1835
+ backend: AXPEntityMiddlewareContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>['entities'];
1836
+ }
1837
+ interface AXPEntityMiddleware<TKey = unknown, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityDetailDto<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = AXPEntityListItemDto<TKey>, TCreateDto extends AXPEntityCreateDto = AXPEntityCreateDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = AXPEntityUpdateDto<TKey>> {
1838
+ target?: {
1839
+ ops?: AXPEntityOp[];
1840
+ entity?: string | RegExp;
1841
+ predicate?: (ctx: AXPEntityMiddlewareContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => boolean;
1842
+ order?: number;
1843
+ };
1844
+ execute: (ctx: AXPEntityMiddlewareContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, next: () => Promise<void>) => Promise<void>;
1845
+ }
1846
+ declare class AXPMiddlewareAbortError extends Error {
1847
+ readonly message: string;
1848
+ readonly options: {
1849
+ code?: string;
1850
+ status?: number;
1851
+ details?: unknown;
1852
+ };
1853
+ constructor(message: string, options?: {
1854
+ code?: string;
1855
+ status?: number;
1856
+ details?: unknown;
1857
+ });
1858
+ toResponse(): AXPMiddlewareErrorResponse;
1859
+ }
1860
+ declare function isAXPMiddlewareAbortError(error: unknown): error is AXPMiddlewareAbortError;
1861
+ /** @deprecated Use {@link AXPEntityMiddlewareContext} */
1862
+ type AXPEntityStorageContext<TKey = unknown, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityDetailDto<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = AXPEntityListItemDto<TKey>, TCreateDto extends AXPEntityCreateDto = AXPEntityCreateDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = AXPEntityUpdateDto<TKey>> = AXPEntityMiddlewareContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>;
1863
+ /** @deprecated Use {@link AXPEntityMiddleware} */
1864
+ type AXPEntityStorageMiddleware<TKey = unknown, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityDetailDto<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = AXPEntityListItemDto<TKey>, TCreateDto extends AXPEntityCreateDto = AXPEntityCreateDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = AXPEntityUpdateDto<TKey>> = AXPEntityMiddleware<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>;
1865
+ /** @deprecated Use {@link AXPEntityAccessPort} */
1866
+ type AXPEntityStorageBackend = AXPEntityAccessPort;
1867
+
1868
+ declare const AXP_ENTITY_MIDDLEWARE: InjectionToken<AXPEntityMiddleware<unknown, _acorex_platform_framework_shared_entity.AXPEntityDetailDto<unknown>, _acorex_platform_framework_shared_entity.AXPEntityListItemDto<unknown>, _acorex_platform_framework_shared_entity.AXPEntityCreateDto, _acorex_platform_framework_shared_entity.AXPEntityUpdateDto<unknown>>[]>;
1869
+ /** @deprecated Use {@link AXP_ENTITY_MIDDLEWARE} */
1870
+ declare const AXP_ENTITY_STORAGE_MIDDLEWARE: InjectionToken<AXPEntityMiddleware<unknown, _acorex_platform_framework_shared_entity.AXPEntityDetailDto<unknown>, _acorex_platform_framework_shared_entity.AXPEntityListItemDto<unknown>, _acorex_platform_framework_shared_entity.AXPEntityCreateDto, _acorex_platform_framework_shared_entity.AXPEntityUpdateDto<unknown>>[]>;
1871
+
1872
+ declare function filterEntityMiddlewares(allMiddlewares: readonly AXPEntityMiddleware[], ctx: AXPEntityMiddlewareContext): AXPEntityMiddleware[];
1873
+ /** @deprecated Use {@link filterEntityMiddlewares} */
1874
+ declare const filterEntityStorageMiddlewares: typeof filterEntityMiddlewares;
1875
+ declare function composeEntityMiddlewares(mws: AXPEntityMiddleware[], leaf: () => Promise<void>, ctx: AXPEntityMiddlewareContext, injector: EnvironmentInjector): () => Promise<void>;
1876
+ /** @deprecated Use {@link composeEntityMiddlewares} */
1877
+ declare const composeEntityStorageMiddlewares: typeof composeEntityMiddlewares;
1878
+ declare function runEntityMiddlewarePipeline<T>(allMiddlewares: readonly AXPEntityMiddleware[], ctx: AXPEntityMiddlewareContext, delegate: () => Promise<T>, injector: EnvironmentInjector): Promise<T>;
1879
+ /** @deprecated Use {@link runEntityMiddlewarePipeline} */
1880
+ declare const runEntityStorageMiddlewarePipeline: typeof runEntityMiddlewarePipeline;
1881
+ declare function createEntityMiddlewareContext(op: AXPEntityOp, entityName: string, accessor: AXPEntityAccessPort, init?: Partial<AXPEntityMiddlewareContext>): AXPEntityMiddlewareContext;
1882
+ /** @deprecated Use {@link createEntityMiddlewareContext} */
1883
+ declare function createEntityStorageContext(op: AXPEntityOp, entityName: string, backend: AXPEntityStorageBackend, init?: Partial<AXPEntityStorageContext>): AXPEntityStorageContext;
1884
+
1885
+ /**
1886
+ * When > 0, entity command/query bridge skips wrapping (nested entity IO from middleware `ctx.entities`).
1887
+ */
1888
+ declare class AXPEntityMiddlewareSkipContext {
1889
+ private depth;
1890
+ get isSkipped(): boolean;
1891
+ run<T>(fn: () => Promise<T>): Promise<T>;
1892
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMiddlewareSkipContext, never>;
1893
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMiddlewareSkipContext>;
1894
+ }
1895
+
1896
+ /**
1897
+ * Raw `Entity:*` command/query access without re-entering client entity middleware bridge.
1898
+ * Used by middleware `ctx.entities` and the storage facade delegate.
1899
+ */
1900
+ declare class AXPEntityRuntimeAccessorService implements AXPEntityAccessPort {
1901
+ private readonly commandService;
1902
+ private readonly queryService;
1903
+ private readonly skipContext;
1904
+ get dbName(): string;
1905
+ initial<T = unknown>(_entityName: string, collection: T[]): Promise<T[]>;
1906
+ getOne<T = unknown>(entityName: string, id: unknown): Promise<T>;
1907
+ getAll<T = unknown>(_entityName: string): Promise<T[]>;
1908
+ query<T = unknown>(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<T>>;
1909
+ count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1910
+ queryAll<T = unknown>(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<T>>;
1911
+ getMany<T = unknown>(entityName: string, ids: unknown[]): Promise<(T | null)[]>;
1912
+ exists(entityName: string, id: unknown): Promise<boolean>;
1913
+ insertOne<T extends AXPEntityCreateDto = AXPEntityCreateDto>(entityName: string, entityItem: T): Promise<string>;
1914
+ updateOne<T = unknown>(entityName: string, id: unknown, keyValues: Omit<Partial<AXPEntityUpdateDto<unknown>>, 'id'>): Promise<T>;
1915
+ deleteOne(entityName: string, id: unknown): Promise<void>;
1916
+ upsertOne(entityName: string, entity: AXPEntityCreateDto, options?: {
1917
+ merge?: boolean;
1918
+ }): Promise<string>;
1919
+ aggregate(entityName: string, request: AXPEntityAggregateRequest, _options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
1920
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityRuntimeAccessorService, never>;
1921
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityRuntimeAccessorService>;
1922
+ }
1923
+
1924
+ declare abstract class AXPEntityStorageService<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
1925
+ abstract get dbName(): string;
1926
+ abstract initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
1927
+ abstract getOne(entityName: string, id: TKey): Promise<TDetailDto>;
1928
+ abstract updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
1929
+ abstract deleteOne(entityName: string, id: TKey): Promise<void>;
1930
+ abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
1931
+ abstract getAll(entityName: string): Promise<TListItemDto[]>;
1932
+ abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1933
+ abstract count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1934
+ abstract queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1935
+ abstract getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
1936
+ abstract exists(entityName: string, id: TKey): Promise<boolean>;
1937
+ abstract upsertOne(entityName: string, entity: TCreateDto, options?: {
1938
+ merge?: boolean;
1939
+ }): Promise<TKey>;
1940
+ abstract aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
1941
+ }
1942
+ declare abstract class AXPEntityDataProvider<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
1943
+ abstract get entityName(): string;
1944
+ abstract initial(collection: TCreateDto[]): Promise<void>;
1945
+ abstract getOne(id: TKey): Promise<TDetailDto>;
1946
+ abstract getAll(): Promise<TListItemDto[]>;
1947
+ abstract updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
1948
+ abstract deleteOne(id: TKey): Promise<void>;
1949
+ abstract insertOne(entity: TCreateDto): Promise<TKey>;
1950
+ abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1951
+ abstract count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1952
+ abstract queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1953
+ abstract getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
1954
+ abstract exists(id: TKey): Promise<boolean>;
1955
+ abstract upsertOne(entity: TCreateDto, options?: {
1956
+ merge?: boolean;
1957
+ }): Promise<TKey>;
1958
+ abstract aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
1959
+ }
1960
+ declare class AXPEntityDataProviderImpl<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> implements AXPEntityDataProvider<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
1961
+ private storageService;
1962
+ entityName: string;
1963
+ constructor(storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, entityName: string);
1964
+ initial(collection: TCreateDto[]): Promise<void>;
1965
+ getOne(id: TKey): Promise<TDetailDto>;
1966
+ getAll(): Promise<TListItemDto[]>;
1967
+ query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1968
+ updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
1969
+ deleteOne(id: TKey): Promise<void>;
1970
+ insertOne(entity: TCreateDto): Promise<TKey>;
1971
+ count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
1972
+ queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
1973
+ getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
1974
+ exists(id: TKey): Promise<boolean>;
1975
+ upsertOne(entity: TCreateDto, options?: {
1976
+ merge?: boolean;
1977
+ }): Promise<TKey>;
1978
+ aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
1979
+ }
1980
+ declare abstract class AXMEntityCrudService<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
1981
+ abstract insertOne(request: TCreateDto): Promise<TKey>;
1982
+ abstract getOne(id: TKey): Promise<TDetailDto>;
1983
+ abstract deleteOne(id: TKey): Promise<void>;
1984
+ abstract updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
1985
+ abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1986
+ }
1987
+ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
1988
+ private entityName;
1989
+ private _storageService;
1990
+ private entityRegistery;
1991
+ private _entityDataProvider;
1992
+ private _entityCategoryDataProvider;
1993
+ constructor(entityName: string);
1994
+ insertOne(request: TCreateDto): Promise<TKey>;
1995
+ getOne(id: TKey): Promise<TDetailDto>;
1996
+ deleteOne(id: TKey): Promise<void>;
1997
+ updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
1998
+ query(request?: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
1999
+ findOne(filter: AXDataSourceFilterOption): Promise<TListItemDto>;
2000
+ getRoots(request: {}): Promise<AXPPagedListResult<TListItemDto>>;
2001
+ getChildren(request: {
2002
+ parentId: TKey;
2003
+ parentKey?: string;
2004
+ }): Promise<AXPPagedListResult<TListItemDto>>;
2005
+ getByCategory(request: {
2006
+ categoryId: TKey;
2007
+ categoryKey?: string;
2008
+ }): Promise<AXPPagedListResult<TListItemDto>>;
2009
+ getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity<TKey>>>;
2010
+ get storageService(): AXPEntityStorageService<any, any, any, any, any>;
2011
+ count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2012
+ queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2013
+ getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
2014
+ exists(id: TKey): Promise<boolean>;
2015
+ upsertOne(entity: TCreateDto, options?: {
2016
+ merge?: boolean;
2017
+ }): Promise<TKey>;
2018
+ aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2019
+ custom<Req, Res>(request: Req): Promise<void>;
2020
+ }
2021
+
2022
+ declare class AXPMiddlewareEntityStorageService<TKey = unknown, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityDetailDto<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = AXPEntityListItemDto<TKey>, TCreateDto extends AXPEntityCreateDto = AXPEntityCreateDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = AXPEntityUpdateDto<TKey>> extends AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
2023
+ private readonly accessor;
2024
+ private readonly allMiddlewares;
2025
+ private readonly injector;
2026
+ private readonly inFlight;
2027
+ get dbName(): string;
2028
+ private run;
2029
+ private createCtx;
2030
+ initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
2031
+ getOne(entityName: string, id: TKey): Promise<TDetailDto>;
2032
+ updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2033
+ deleteOne(entityName: string, id: TKey): Promise<void>;
2034
+ insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
2035
+ getAll(entityName: string): Promise<TListItemDto[]>;
2036
+ query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2037
+ count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2038
+ queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2039
+ getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
2040
+ exists(entityName: string, id: TKey): Promise<boolean>;
2041
+ upsertOne(entityName: string, entity: TCreateDto, options?: {
2042
+ merge?: boolean;
2043
+ }): Promise<TKey>;
2044
+ aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2045
+ private runWithDedup;
2046
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
2047
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
2048
+ }
2049
+
1714
2050
  type AXPEntityMasterListCardLayout = NonNullable<NonNullable<AXPEntityMasterListView['layouts']>['card']>;
1715
2051
  interface AXPEntityModifierContext {
1716
2052
  readonly entity: AXPEntity;
@@ -1834,60 +2170,6 @@ interface AXPEntityModifierProvider {
1834
2170
  order?: number;
1835
2171
  }
1836
2172
 
1837
- declare function ensureListActions(ctx: AXPEntityModifierContext): void;
1838
- declare function actionExists(actions: any[] | undefined, commandName: string, name?: string): boolean;
1839
- interface AXPEntityLayoutSectionLike {
1840
- id: string;
1841
- }
1842
- interface AXPEntityLayoutPropertyLike {
1843
- name: string;
1844
- }
1845
- interface AXPEntityLayoutLike<TSection extends AXPEntityLayoutSectionLike = AXPEntityLayoutSectionLike, TProperty extends AXPEntityLayoutPropertyLike = AXPEntityLayoutPropertyLike> {
1846
- sections: TSection[];
1847
- properties?: TProperty[];
1848
- }
1849
- /** Layout order for the shared appearance section (after entity-defined groups). */
1850
- declare const AXP_APPEARANCE_SECTION_ORDER = 900;
1851
- /** Layout order for the shared classification section (after appearance). */
1852
- declare const AXP_CLASSIFICATION_SECTION_ORDER = 910;
1853
- /**
1854
- * Clones `sections` and `properties` arrays to prevent accidental cross-interface mutations.
1855
- * Many entity definitions reuse the same array instances across create/update/single interfaces.
1856
- */
1857
- declare function cloneLayoutArrays<TLayout extends AXPEntityLayoutLike>(layout: TLayout): TLayout & {
1858
- properties: NonNullable<TLayout['properties']>;
1859
- };
1860
- declare function ensureLayoutSection<TLayout extends AXPEntityLayoutLike>(layout: TLayout, section: TLayout['sections'][number]): void;
1861
- declare function ensureLayoutPropertyView<TLayout extends AXPEntityLayoutLike>(layout: TLayout & {
1862
- properties: NonNullable<TLayout['properties']>;
1863
- }, prop: NonNullable<TLayout['properties']>[number]): void;
1864
-
1865
- interface AXPEntityActionPlugin {
1866
- name: string;
1867
- order?: number;
1868
- apply: (ctx: AXPEntityModifierContext, options?: any) => Promise<void> | void;
1869
- }
1870
- declare const AXP_ENTITY_ACTION_PLUGIN: InjectionToken<AXPEntityActionPlugin[]>;
1871
-
1872
- declare class AXPEntityMiddleware {
1873
- private exactModifiers;
1874
- private patternModifiers;
1875
- protected providedModifiers: AXPEntityModifierProvider[];
1876
- protected providedActionPlugins: AXPEntityActionPlugin[];
1877
- protected injector: Injector;
1878
- constructor();
1879
- register(entityName: string | RegExp, modifier: AXPEntityModifier, order?: number): void;
1880
- process(entity: AXPEntity): Promise<AXPEntity>;
1881
- private createModifierStep;
1882
- private createPluginStep;
1883
- private wildcardToRegExp;
1884
- private normalizeRegExp;
1885
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMiddleware, never>;
1886
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMiddleware>;
1887
- }
1888
-
1889
- declare function createModifierContext(entity: AXPEntity): AXPEntityModifierContext;
1890
-
1891
2173
  declare const AXP_ENTITY_MODIFIER: InjectionToken<AXPEntityModifierProvider[]>;
1892
2174
 
1893
2175
  declare class AXPEntityPreloadFiltersViewModel {
@@ -1907,7 +2189,7 @@ declare class AXPEntityPreloadFiltersViewModel {
1907
2189
  */
1908
2190
  description: _angular_core.Signal<string | null>;
1909
2191
  /**
1910
- * All filter definitions for properties with preload enabled
2192
+ * Preload filter definitions with a single `contains` operator (hides the filter operations menu).
1911
2193
  */
1912
2194
  preloadFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
1913
2195
  /**
@@ -1937,6 +2219,8 @@ declare class AXPEntityDefinitionRegistryService {
1937
2219
  name: string;
1938
2220
  }>;
1939
2221
  private entities;
2222
+ /** In-flight resolve() calls keyed by `module.entity` — coalesces concurrent callers. */
2223
+ private readonly pendingResolves;
1940
2224
  private entityResolver;
1941
2225
  /**
1942
2226
  * Force re-load and re-process entity definitions, then re-register them.
@@ -1980,6 +2264,7 @@ declare class AXPEntityDefinitionRegistryService {
1980
2264
  * @throws Error if the entity configuration cannot be resolved.
1981
2265
  */
1982
2266
  resolve(moduleName: string, entityName: string): Promise<AXPEntity>;
2267
+ private loadAndRegister;
1983
2268
  exists(moduleName: string, entityName: string): Promise<boolean>;
1984
2269
  /**
1985
2270
  * Creates a unique key for an entity based on its module and name.
@@ -2022,102 +2307,64 @@ declare function filterSortEntityRows<T = unknown>(entityName: string, request:
2022
2307
  */
2023
2308
  declare function runEntityQuery<T = unknown>(entityName: string, request: AXPQueryRequest, adapters: RunEntityQueryAdapters<T>, sortLocale?: string): Promise<AXPPagedListResult<T>>;
2024
2309
 
2025
- declare abstract class AXPEntityStorageService<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
2026
- abstract get dbName(): string;
2027
- abstract initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
2028
- abstract getOne(entityName: string, id: TKey): Promise<TDetailDto>;
2029
- abstract updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2030
- abstract deleteOne(entityName: string, id: TKey): Promise<void>;
2031
- abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
2032
- abstract getAll(entityName: string): Promise<TListItemDto[]>;
2033
- abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2034
- abstract count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2035
- abstract queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2036
- abstract getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
2037
- abstract exists(entityName: string, id: TKey): Promise<boolean>;
2038
- abstract upsertOne(entityName: string, entity: TCreateDto, options?: {
2039
- merge?: boolean;
2040
- }): Promise<TKey>;
2041
- abstract aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2310
+ interface AXPEntityBulkPatchPerformInput {
2311
+ entity: string;
2312
+ ids: string[];
2313
+ patch: Record<string, unknown>;
2314
+ loadingTitleKey: string;
2315
+ loadingStatus?: string;
2316
+ successTitleKey: string;
2317
+ successBodyKey: string;
2318
+ partialTitleKey: string;
2319
+ partialBodyKey: string;
2320
+ partialBodyWithReasonKey: string;
2321
+ failTitleKey: string;
2322
+ failBodyKey: string;
2323
+ failBodyWithReasonKey: string;
2042
2324
  }
2043
- declare abstract class AXPEntityDataProvider<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
2044
- abstract get entityName(): string;
2045
- abstract initial(collection: TCreateDto[]): Promise<void>;
2046
- abstract getOne(id: TKey): Promise<TDetailDto>;
2047
- abstract getAll(): Promise<TListItemDto[]>;
2048
- abstract updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2049
- abstract deleteOne(id: TKey): Promise<void>;
2050
- abstract insertOne(entity: TCreateDto): Promise<TKey>;
2051
- abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2052
- abstract count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2053
- abstract queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2054
- abstract getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
2055
- abstract exists(id: TKey): Promise<boolean>;
2056
- abstract upsertOne(entity: TCreateDto, options?: {
2057
- merge?: boolean;
2058
- }): Promise<TKey>;
2059
- abstract aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2325
+ /**
2326
+ * Applies the same partial update to many rows via `POST /runtime/commands/bulk`
2327
+ * (`Entity:Update:Default` + `input.entity`), with the same richer failure UX as delete.
2328
+ */
2329
+ declare class AXPEntityBulkPatchPerformService {
2330
+ private readonly dialogService;
2331
+ private readonly loadingDialog;
2332
+ private readonly translationService;
2333
+ private readonly settingsService;
2334
+ private readonly bulkCommands;
2335
+ perform(input: AXPEntityBulkPatchPerformInput): AXPCommandExecuteResultPromise<AXPBulkCommandResultData>;
2336
+ private presentResult;
2337
+ private resolveFailureContent;
2338
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityBulkPatchPerformService, never>;
2339
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityBulkPatchPerformService>;
2060
2340
  }
2061
- declare class AXPEntityDataProviderImpl<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> implements AXPEntityDataProvider<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
2062
- private storageService;
2063
- entityName: string;
2064
- constructor(storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, entityName: string);
2065
- initial(collection: TCreateDto[]): Promise<void>;
2066
- getOne(id: TKey): Promise<TDetailDto>;
2067
- getAll(): Promise<TListItemDto[]>;
2068
- query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2069
- updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2070
- deleteOne(id: TKey): Promise<void>;
2071
- insertOne(entity: TCreateDto): Promise<TKey>;
2072
- count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2073
- queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2074
- getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
2075
- exists(id: TKey): Promise<boolean>;
2076
- upsertOne(entity: TCreateDto, options?: {
2077
- merge?: boolean;
2078
- }): Promise<TKey>;
2079
- aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2341
+
2342
+ interface AXPEntityDeleteOptions {
2343
+ source: string;
2344
+ ids: string[];
2080
2345
  }
2081
- declare abstract class AXMEntityCrudService<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = TDetailDto, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
2082
- abstract insertOne(request: TCreateDto): Promise<TKey>;
2083
- abstract getOne(id: TKey): Promise<TDetailDto>;
2084
- abstract deleteOne(id: TKey): Promise<void>;
2085
- abstract updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2086
- abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2346
+ interface AXPEntityDeletePerformInput {
2347
+ entity?: string;
2348
+ data?: unknown;
2349
+ entities?: AXPEntityDeleteOptions[];
2350
+ meta?: unknown;
2087
2351
  }
2088
- declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>, TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto, TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>, TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto> {
2089
- private entityName;
2090
- private _storageService;
2091
- private entityRegistery;
2092
- private _entityDataProvider;
2093
- private _entityCategoryDataProvider;
2094
- constructor(entityName: string);
2095
- insertOne(request: TCreateDto): Promise<TKey>;
2096
- getOne(id: TKey): Promise<TDetailDto>;
2097
- deleteOne(id: TKey): Promise<void>;
2098
- updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2099
- query(request?: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2100
- findOne(filter: AXDataSourceFilterOption): Promise<TListItemDto>;
2101
- getRoots(request: {}): Promise<AXPPagedListResult<TListItemDto>>;
2102
- getChildren(request: {
2103
- parentId: TKey;
2104
- parentKey?: string;
2105
- }): Promise<AXPPagedListResult<TListItemDto>>;
2106
- getByCategory(request: {
2107
- categoryId: TKey;
2108
- categoryKey?: string;
2109
- }): Promise<AXPPagedListResult<TListItemDto>>;
2110
- getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity<TKey>>>;
2111
- get storageService(): AXPEntityStorageService<any, any, any, any, any>;
2112
- count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2113
- queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2114
- getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
2115
- exists(id: TKey): Promise<boolean>;
2116
- upsertOne(entity: TCreateDto, options?: {
2117
- merge?: boolean;
2118
- }): Promise<TKey>;
2119
- aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2120
- custom<Req, Res>(request: Req): Promise<void>;
2352
+ /**
2353
+ * Deletes one or more entity records via the server filter-only bulk command API.
2354
+ */
2355
+ declare class AXPEntityDeletePerformService {
2356
+ private readonly entityRegistry;
2357
+ private readonly dialogService;
2358
+ private readonly loadingDialog;
2359
+ private readonly translationService;
2360
+ private readonly settingsService;
2361
+ private readonly entityEvents;
2362
+ private readonly bulkCommands;
2363
+ perform(input: AXPEntityDeletePerformInput): Promise<{
2364
+ success: boolean;
2365
+ }>;
2366
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDeletePerformService, never>;
2367
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDeletePerformService>;
2121
2368
  }
2122
2369
 
2123
2370
  interface AXPEntityConfigs {
@@ -2162,12 +2409,37 @@ declare class AXPEntityResolver {
2162
2409
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityResolver>;
2163
2410
  }
2164
2411
 
2412
+ /**
2413
+ * Loads entity layouts from the domain-definition store via runtime queries.
2414
+ * Replaces per-module entity providers after contracts → server entity migration.
2415
+ */
2416
+ declare class AXPDomainQueryEntityDefinitionLoader implements AXPEntityDefinitionLoader {
2417
+ private readonly queryService;
2418
+ private readonly layoutCache;
2419
+ /** In-flight layout fetches keyed by `module.entity` — coalesces concurrent callers. */
2420
+ private readonly pendingGets;
2421
+ private listCache;
2422
+ private pendingList;
2423
+ get(moduleName: string, entityName: string): Promise<AXPEntity | null>;
2424
+ list(): Promise<AXPEntityListInput[]>;
2425
+ private fetchLayout;
2426
+ private fetchList;
2427
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDomainQueryEntityDefinitionLoader, never>;
2428
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDomainQueryEntityDefinitionLoader>;
2429
+ }
2430
+
2165
2431
  declare class AXPAttachmentsPluginModule {
2166
2432
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAttachmentsPluginModule, never>;
2167
2433
  static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPAttachmentsPluginModule, never, never, never>;
2168
2434
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPAttachmentsPluginModule>;
2169
2435
  }
2170
2436
 
2437
+ declare class AXPClientLocalPluginModule {
2438
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPClientLocalPluginModule, never>;
2439
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPClientLocalPluginModule, never, never, never>;
2440
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPClientLocalPluginModule>;
2441
+ }
2442
+
2171
2443
  declare class AXPGalleryPluginModule {
2172
2444
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPGalleryPluginModule, never>;
2173
2445
  static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPGalleryPluginModule, never, never, never>;
@@ -2177,14 +2449,14 @@ declare class AXPGalleryPluginModule {
2177
2449
  declare class AXPEntityModule {
2178
2450
  constructor();
2179
2451
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
2180
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof AXPAttachmentsPluginModule, typeof AXPGalleryPluginModule, typeof i4.AXPWidgetCoreModule, typeof i5.LayoutBuilderModule], never>;
2452
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof AXPAttachmentsPluginModule, typeof AXPClientLocalPluginModule, typeof AXPGalleryPluginModule, typeof i5.AXPWidgetCoreModule, typeof i6.LayoutBuilderModule], never>;
2181
2453
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
2182
2454
  }
2183
2455
 
2184
2456
  /**
2185
2457
  * Maps storage middleware failures to a command result the details view can surface.
2186
2458
  */
2187
- declare function mapEntityStorageErrorToCommandResult(error: unknown, fallback?: string): AXPExecuteCommandResult;
2459
+ declare function mapEntityStorageErrorToCommandResult(error: unknown, fallback?: string): AXPRuntimeCommandResult;
2188
2460
  /**
2189
2461
  * Data accessor for entity operations.
2190
2462
  * Provides methods to query and execute commands with smart resolution:
@@ -2202,6 +2474,7 @@ declare class EntityDataAccessor<TKey = any, TDetailDto extends AXPEntityDetailD
2202
2474
  private entityDef;
2203
2475
  private entityDefPromise;
2204
2476
  constructor(module: string, entity: string, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService, injector: Injector);
2477
+ private canRunAppScopedEntityAccess;
2205
2478
  /**
2206
2479
  * Lazily creates the CRUD fallback inside an injection context so {@link AXMEntityCrudServiceImpl}
2207
2480
  * can resolve {@link AXPEntityStorageService} via `inject()`.
@@ -2305,6 +2578,13 @@ declare class AXPEntityService {
2305
2578
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityService>;
2306
2579
  }
2307
2580
 
2581
+ interface AXPEntityActionPlugin {
2582
+ name: string;
2583
+ order?: number;
2584
+ apply: (ctx: AXPEntityModifierContext, options?: any) => Promise<void> | void;
2585
+ }
2586
+ declare const AXP_ENTITY_ACTION_PLUGIN: InjectionToken<AXPEntityActionPlugin[]>;
2587
+
2308
2588
  /** How to show attachments in entity single/create/update: as a section (default) or as a separate page. */
2309
2589
  type AttachmentsDisplayMode = 'section' | 'page';
2310
2590
  /** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
@@ -2357,6 +2637,35 @@ type AttachmentsPluginOptions = {
2357
2637
  */
2358
2638
  declare const attachmentsPlugin: AXPEntityActionPlugin;
2359
2639
 
2640
+ declare const AXP_CLIENT_LOCAL_PLUGIN_NAME = "client-local";
2641
+ /** Options for `plugins: [{ name: 'client-local', options }]`. */
2642
+ interface AXPClientLocalPluginOptions {
2643
+ mode?: AXPLocalEntityPolicy['mode'];
2644
+ maxItems?: number;
2645
+ role?: AXPLocalEntityPolicy['role'];
2646
+ sortField?: string;
2647
+ related?: AXPLocalEntityRelatedOption[];
2648
+ }
2649
+ /**
2650
+ * Wraps entity CRUD/query execute to use {@link AXPLocalEntityEngine}.
2651
+ * Must run after {@link AXPCrudModifier} so remote execute exists to decorate.
2652
+ */
2653
+ declare const clientLocalPlugin: AXPEntityActionPlugin;
2654
+ /** Re-export default for option docs / tests. */
2655
+ declare const AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS = 100;
2656
+
2657
+ /**
2658
+ * Depth-1 related warm-up after a host hot sync.
2659
+ * - `referenced-ids`: load missing FK targets via byKey into the target local store
2660
+ * - `catalog`: load a hot page of the target entity into its local store
2661
+ */
2662
+ declare function prefetchClientLocalRelated(args: {
2663
+ engine: AXPLocalEntityEngine;
2664
+ entityService: AXPEntityService;
2665
+ hostPolicy: AXPLocalEntityPolicy;
2666
+ hostItems: Record<string, unknown>[];
2667
+ }): Promise<void>;
2668
+
2360
2669
  /** How to show gallery in entity single view: as a section (default) or as a separate page. */
2361
2670
  type GalleryDisplayMode = 'section' | 'page';
2362
2671
  /** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
@@ -2392,60 +2701,6 @@ type GalleryPluginOptions = {
2392
2701
  */
2393
2702
  declare const galleryPlugin: AXPEntityActionPlugin;
2394
2703
 
2395
- interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
2396
- op: AXPEntityOp;
2397
- entityName: string;
2398
- id?: TKey;
2399
- data?: TCreateDto | Omit<Partial<TUpdateDto>, 'id'>;
2400
- request?: AXPQueryRequest;
2401
- previous?: TDetailDto;
2402
- result?: any;
2403
- locals: Map<string, unknown>;
2404
- backend: {
2405
- getOne: (entityName: string, id: TKey) => Promise<TDetailDto>;
2406
- insertOne: (entityName: string, entity: TCreateDto) => Promise<TKey>;
2407
- query: (entityName: string, request: AXPQueryRequest) => Promise<AXPPagedListResult<TListItemDto>>;
2408
- updateOne: (entityName: string, id: TKey, data: Partial<TUpdateDto>) => Promise<TDetailDto>;
2409
- deleteOne: (entityName: string, id: TKey) => Promise<void>;
2410
- count: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>) => Promise<number>;
2411
- queryAll: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions) => Promise<AXPEntityQueryAllResult<TListItemDto>>;
2412
- getMany: (entityName: string, ids: TKey[]) => Promise<(TListItemDto | null)[]>;
2413
- exists: (entityName: string, id: TKey) => Promise<boolean>;
2414
- upsertOne: (entityName: string, entity: TCreateDto, options?: {
2415
- merge?: boolean;
2416
- }) => Promise<TKey>;
2417
- aggregate: (entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions) => Promise<AXPEntityAggregateResult>;
2418
- };
2419
- }
2420
- interface AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
2421
- target?: {
2422
- ops?: AXPEntityOp[];
2423
- entity?: string | RegExp;
2424
- predicate?: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => boolean;
2425
- order?: number;
2426
- };
2427
- execute: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, next: () => Promise<void>) => Promise<void>;
2428
- }
2429
- /**
2430
- * Error type that can be thrown by middlewares to abort the chain with a structured payload.
2431
- */
2432
- declare class AXPMiddlewareAbortError extends Error {
2433
- readonly message: string;
2434
- readonly options: {
2435
- code?: string;
2436
- status?: number;
2437
- details?: any;
2438
- };
2439
- constructor(message: string, options?: {
2440
- code?: string;
2441
- status?: number;
2442
- details?: any;
2443
- });
2444
- toResponse(): AXPMiddlewareErrorResponse;
2445
- }
2446
- /** Type guard for AXPMiddlewareAbortError */
2447
- declare function isAXPMiddlewareAbortError(error: unknown): error is AXPMiddlewareAbortError;
2448
-
2449
2704
  declare const eventDispatchMiddleware: AXPEntityStorageMiddleware;
2450
2705
 
2451
2706
  /**
@@ -2554,6 +2809,57 @@ declare const defaultMultiLanguageMiddlewareProvider: AXPEntityModifierProvider;
2554
2809
  declare const defaultCardLayoutMiddleware: AXPEntityModifier;
2555
2810
  declare const defaultCardLayoutMiddlewareProvider: AXPEntityModifierProvider;
2556
2811
 
2812
+ declare const entityCreateBridgeMiddleware: AXPCommandMiddleware;
2813
+ declare const entityUpdateBridgeMiddleware: AXPCommandMiddleware;
2814
+ declare const entityDeleteBridgeMiddleware: AXPCommandMiddleware;
2815
+ declare const entityGetOneBridgeMiddleware: AXPQueryMiddleware;
2816
+ declare const entityQueryBridgeMiddleware: AXPQueryMiddleware;
2817
+ /** @deprecated */
2818
+ declare const entityStorageCreateBridgeMiddleware: AXPCommandMiddleware;
2819
+ /** @deprecated */
2820
+ declare const entityStorageUpdateBridgeMiddleware: AXPCommandMiddleware;
2821
+ /** @deprecated */
2822
+ declare const entityStorageDeleteBridgeMiddleware: AXPCommandMiddleware;
2823
+ /** @deprecated */
2824
+ declare const entityStorageGetOneBridgeMiddleware: AXPQueryMiddleware;
2825
+ /** @deprecated */
2826
+ declare const entityStorageQueryBridgeMiddleware: AXPQueryMiddleware;
2827
+ /**
2828
+ * Runs `AXP_ENTITY_MIDDLEWARE` around default entity runtime keys only.
2829
+ * Custom `Module.Entity:Operation` keys must register their own middleware if needed.
2830
+ */
2831
+ declare function provideEntityMiddlewareBridge(): EnvironmentProviders[];
2832
+ /** @deprecated Use {@link provideEntityMiddlewareBridge} */
2833
+ declare const provideEntityStorageMiddlewareBridge: typeof provideEntityMiddlewareBridge;
2834
+
2835
+ declare function ensureListActions(ctx: AXPEntityModifierContext): void;
2836
+ declare function actionExists(actions: any[] | undefined, commandName: string, name?: string): boolean;
2837
+ interface AXPEntityLayoutSectionLike {
2838
+ id: string;
2839
+ }
2840
+ interface AXPEntityLayoutPropertyLike {
2841
+ name: string;
2842
+ }
2843
+ interface AXPEntityLayoutLike<TSection extends AXPEntityLayoutSectionLike = AXPEntityLayoutSectionLike, TProperty extends AXPEntityLayoutPropertyLike = AXPEntityLayoutPropertyLike> {
2844
+ sections: TSection[];
2845
+ properties?: TProperty[];
2846
+ }
2847
+ /** Layout order for the shared appearance section (after entity-defined groups). */
2848
+ declare const AXP_APPEARANCE_SECTION_ORDER = 900;
2849
+ /** Layout order for the shared classification section (after appearance). */
2850
+ declare const AXP_CLASSIFICATION_SECTION_ORDER = 910;
2851
+ /**
2852
+ * Clones `sections` and `properties` arrays to prevent accidental cross-interface mutations.
2853
+ * Many entity definitions reuse the same array instances across create/update/single interfaces.
2854
+ */
2855
+ declare function cloneLayoutArrays<TLayout extends AXPEntityLayoutLike>(layout: TLayout): TLayout & {
2856
+ properties: NonNullable<TLayout['properties']>;
2857
+ };
2858
+ declare function ensureLayoutSection<TLayout extends AXPEntityLayoutLike>(layout: TLayout, section: TLayout['sections'][number]): void;
2859
+ declare function ensureLayoutPropertyView<TLayout extends AXPEntityLayoutLike>(layout: TLayout & {
2860
+ properties: NonNullable<TLayout['properties']>;
2861
+ }, prop: NonNullable<TLayout['properties']>[number]): void;
2862
+
2557
2863
  /**
2558
2864
  * Registers entity CRUD commands and queries for the given entity keys.
2559
2865
  * Use in app/module providers; consumes AXPEntityService from this package.
@@ -2565,10 +2871,8 @@ interface AXPGetEntityDetailsQueryInput {
2565
2871
  id: string;
2566
2872
  }
2567
2873
  interface AXPGetEntityDetailsQueryResult {
2568
- success: boolean;
2569
- entityDefinition?: AXPEntity;
2570
- entityData?: any;
2571
- error?: string;
2874
+ entityDefinition: AXPEntity;
2875
+ entityData: any;
2572
2876
  }
2573
2877
  /**
2574
2878
  * Generic query to get entity details including entity definition and entity data
@@ -2581,7 +2885,7 @@ declare class AXPGetEntityDetailsQuery implements AXPQuery<AXPGetEntityDetailsQu
2581
2885
  * Execute the query to fetch entity definition and data
2582
2886
  * @param input - Query input containing entity and ID information
2583
2887
  */
2584
- fetch(input: AXPGetEntityDetailsQueryInput): Promise<AXPGetEntityDetailsQueryResult>;
2888
+ fetch(input: AXPGetEntityDetailsQueryInput): AXPQueryFetchResultPromise<AXPGetEntityDetailsQueryResult>;
2585
2889
  /**
2586
2890
  * Get entity data using the entity's CRUD service
2587
2891
  * @param entity - Full entity path (ModuleName.EntityName)
@@ -2717,6 +3021,8 @@ declare class AXPRelatedColumnMetadataResolver {
2717
3021
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnMetadataResolver>;
2718
3022
  }
2719
3023
 
3024
+ /** Footer command: validate, persist main entity, merge context, advance wizard. */
3025
+ declare const ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE = "entity-form-first-step-continue";
2720
3026
  interface IEntitySelectorStage {
2721
3027
  /** Select target entity using "module.entity" format */
2722
3028
  entity(fullName: string): IInterfaceSelectorStage;
@@ -2784,40 +3090,6 @@ type CompatFormFieldBuilder = {
2784
3090
  customWidget(type: string, options?: any): any;
2785
3091
  } & Partial<IFormFieldBuilder>;
2786
3092
 
2787
- declare const AXP_ENTITY_STORAGE_BACKEND: InjectionToken<AXPEntityStorageService<any, any, any, any, any>>;
2788
- declare const AXP_ENTITY_STORAGE_MIDDLEWARE: InjectionToken<AXPEntityStorageMiddleware<any, any, any, any, any>[]>;
2789
-
2790
- 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> {
2791
- private readonly backend;
2792
- private readonly allMiddlewares;
2793
- private readonly injector;
2794
- /** In-flight read requests - identical parallel requests share one execution */
2795
- private readonly inFlight;
2796
- get dbName(): string;
2797
- private filterMiddlewares;
2798
- private compose;
2799
- private run;
2800
- private createCtx;
2801
- initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
2802
- getOne(entityName: string, id: TKey): Promise<TDetailDto>;
2803
- updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2804
- deleteOne(entityName: string, id: TKey): Promise<void>;
2805
- insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
2806
- getAll(entityName: string): Promise<TListItemDto[]>;
2807
- query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2808
- count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2809
- queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2810
- getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
2811
- exists(entityName: string, id: TKey): Promise<boolean>;
2812
- upsertOne(entityName: string, entity: TCreateDto, options?: {
2813
- merge?: boolean;
2814
- }): Promise<TKey>;
2815
- aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2816
- private runWithDedup;
2817
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
2818
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
2819
- }
2820
-
2821
3093
  type AXPEntityChangeSet = {
2822
3094
  [key: string]: {
2823
3095
  oldValue: any;
@@ -3391,12 +3663,11 @@ declare class AXPEntityListToolbarService {
3391
3663
  declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3392
3664
  #private;
3393
3665
  protected entityService: AXPEntityDefinitionRegistryService;
3394
- protected workflowEventService: AXPWorkflowEventService;
3666
+ protected entityEvents: AXPEntityBroadcastService;
3395
3667
  protected entityListTableService: AXPEntityListTableService;
3396
3668
  protected entityListToolbarService: AXPEntityListToolbarService;
3397
3669
  protected deviceService: AXPDeviceService;
3398
3670
  protected commandService: AXPCommandService;
3399
- protected eventService: AXPBroadcastEventService;
3400
3671
  private readonly expressionEvaluator;
3401
3672
  private readonly columnWidthService;
3402
3673
  private readonly route;
@@ -3410,6 +3681,12 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3410
3681
  protected selectedItems: _angular_core.WritableSignal<any[]>;
3411
3682
  protected toolbarNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
3412
3683
  protected destroyed: Subject<void>;
3684
+ /** Invalidates in-flight filter/refresh work on remount, rapid page switches, or destroy. */
3685
+ private opGeneration;
3686
+ private isViewDestroyed;
3687
+ private initListTimeoutId;
3688
+ /** Unpatched data-list refresh (hits the grid). Prefer this over the scoped patch to avoid recursion. */
3689
+ private boundDataListRefresh;
3413
3690
  protected entitySource: _angular_core.Signal<any>;
3414
3691
  protected excludeColumns: _angular_core.Signal<string[]>;
3415
3692
  protected includeColumns: _angular_core.Signal<string[]>;
@@ -3438,6 +3715,7 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3438
3715
  /**
3439
3716
  * Route `filters` apply only when the active details `page` matches this list's entity
3440
3717
  * (e.g. WorkOrder filters must not affect FailureRegister on the same asset layout).
3718
+ * page-list sidebar pages use `page-list-{module.entity}` as their page id.
3441
3719
  */
3442
3720
  private shouldApplyRouteFilters;
3443
3721
  /**
@@ -3445,19 +3723,41 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3445
3723
  */
3446
3724
  private mergeToolbarFilters;
3447
3725
  private getMergedToolbarFilters;
3726
+ private beginOp;
3727
+ private isOpStale;
3728
+ private delay;
3448
3729
  /**
3449
3730
  * Applies merged route + parent-scope filters to the widget value and data source.
3450
3731
  */
3451
3732
  private applyMergedRouteFiltersToList;
3452
- /** Syncs toolbar filters to context and AXDataSource (retries until data-list is mounted). */
3733
+ /**
3734
+ * Syncs toolbar filters to context and AXDataSource (retries until data-list is mounted).
3735
+ * Stale generations (destroy / newer op) exit without touching the grid.
3736
+ */
3453
3737
  private reapplyScopedFiltersToDataSource;
3454
3738
  /**
3455
3739
  * Entity lists use `fetchDataMode: 'manual'`; after scoped filters reach the data source,
3456
- * the grid must be refreshed once (initial #effect may run before the data-list is ready).
3740
+ * the grid must be refreshed once. Retries until the data-table view child accepts refresh
3741
+ * so rapid relatedEntity page switches cannot leave the table on "no data loaded yet".
3457
3742
  */
3458
3743
  private triggerInitialLoadIfNeeded;
3744
+ /**
3745
+ * Calls the unpatched data-list refresh until the grid is ready or the op is stale.
3746
+ */
3747
+ private refreshWhenGridReady;
3748
+ /**
3749
+ * Prefer the bound original refresh (pre-patch). Falls back to an unpatched instance refresh.
3750
+ */
3751
+ private resolveDataListRefresh;
3752
+ private refreshWhenGridReadyWith;
3753
+ /**
3754
+ * Parent-scoped related filters must have a real PK. Empty/undefined values would otherwise
3755
+ * load unscoped rows (other employees' assignments) in create wizards.
3756
+ */
3757
+ private isUsableRelatedFilterValue;
3459
3758
  /**
3460
3759
  * Re-evaluates related-entity list filters from the live dialog form context (e.g. after create saves the main row id).
3760
+ * When the parent id is not ready yet, installs a never-match filter so the grid cannot leak other rows.
3461
3761
  */
3462
3762
  private applyRelatedFiltersFromContext;
3463
3763
  /**
@@ -3474,10 +3774,19 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3474
3774
  * Writes toolbar filters from specs and pushes them onto the data source so refresh/reload keeps the parent scope.
3475
3775
  */
3476
3776
  private applyRelatedFiltersFromContextAndDatasource;
3777
+ /**
3778
+ * Applies parent-scoped filters then loads/refreshes the grid.
3779
+ * Used when dialog context gains a persisted root id (create-and-continue).
3780
+ */
3781
+ private syncRelatedFiltersFromContextAndReload;
3477
3782
  /**
3478
3783
  * Refreshes the embedded data list (toolbar / commands). In wizard mode, `refresh` is patched to re-apply scoped filters first.
3479
3784
  */
3480
3785
  private refreshGridWithParentScopedFilters;
3786
+ /**
3787
+ * Re-applies parent-scoped filters then refreshes the grid, ignoring stale overlapping calls.
3788
+ */
3789
+ private runScopedDataListRefresh;
3481
3790
  protected queries: undefined;
3482
3791
  /**
3483
3792
  * Validates that all required dependencies are available
@@ -3622,7 +3931,7 @@ interface AXPEntityDataSelectorSelectionOptions {
3622
3931
  allowUnselect?: boolean;
3623
3932
  }
3624
3933
  interface AXPEntityDataSelectorGridOptions {
3625
- columns?: string[];
3934
+ columns?: AXPEntitySelectorColumnInput[];
3626
3935
  pageSize?: number;
3627
3936
  }
3628
3937
  interface AXPEntityDataSelectorFilterOptions {
@@ -3657,6 +3966,11 @@ interface AXPEntityDataSelectorCreateOptions {
3657
3966
  mode?: AXPDataSelectorAllowCreate;
3658
3967
  /** Prefilled entity create form values; may use {{ context.eval() }} expressions. */
3659
3968
  context?: AXPContextData;
3969
+ /**
3970
+ * Optional create-dialog header title (i18n key or plain text).
3971
+ * When set, replaces the default `Create {entity title}` header.
3972
+ */
3973
+ title?: string;
3660
3974
  }
3661
3975
  /** Nested options for {@link AXPEntityDataSelectorService.open}. */
3662
3976
  interface AXPEntityDataSelectorOpenOptions {
@@ -3687,7 +4001,7 @@ interface AXPEntityDataSelectorOptions {
3687
4001
  allowUnselect?: boolean;
3688
4002
  filters?: AXDataSourceFilterOption | null;
3689
4003
  parentFilters?: AXDataSourceFilterOption | null;
3690
- columns?: string[];
4004
+ columns?: AXPEntitySelectorColumnInput[];
3691
4005
  sortedFields?: {
3692
4006
  name: string;
3693
4007
  dir: 'asc' | 'desc';
@@ -3728,6 +4042,14 @@ declare function mapLegacyEntityDataSelectorOptions(legacy: AXPEntityDataSelecto
3728
4042
  * When both shapes are mixed, nested groups take precedence over mapped legacy values.
3729
4043
  */
3730
4044
  declare function normalizeEntityDataSelectorOptions(options: AXPEntityDataSelectorOpenInput): AXPEntityDataSelectorOpenOptions;
4045
+ /**
4046
+ * Normalizes selector columns to `{ name, visible }`.
4047
+ * Strings are visible. Objects default `visible` to true.
4048
+ */
4049
+ declare function normalizeEntityDataSelectorColumnSpecs(columns: AXPEntitySelectorColumnInput[] | undefined): Array<{
4050
+ name: string;
4051
+ visible: boolean;
4052
+ }>;
3731
4053
  declare class AXPEntityDataSelectorService {
3732
4054
  private readonly dataSelectorService;
3733
4055
  private readonly filterOperatorMiddleware;
@@ -3751,7 +4073,7 @@ declare class AXPEntityDataSelectorService {
3751
4073
  * Execute Entity:Create and return created item.
3752
4074
  * Used by lookup widget and data selector for inline create.
3753
4075
  */
3754
- executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick', initialData?: Record<string, unknown>): Promise<any | null>;
4076
+ executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick', initialData?: Record<string, unknown>, title?: string): Promise<any | null>;
3755
4077
  /**
3756
4078
  * Normalize item's phones/emails for expose/display.
3757
4079
  * Call this when receiving items from any source (create, API, selector).
@@ -3770,9 +4092,15 @@ declare class AXPEntityDataSelectorService {
3770
4092
  */
3771
4093
  private createDataSource;
3772
4094
  /**
3773
- * Create columns configuration from entity definition
4095
+ * Create columns configuration from entity definition.
4096
+ * Requested columns keep their `visible` flag so hidden fields (e.g. `id`) are fetched but not shown.
3774
4097
  */
3775
4098
  private createColumns;
4099
+ /**
4100
+ * Builds query `fields` from all selector columns (visible and hidden) plus entity dataPaths.
4101
+ * `id` and tree keys are always included even when they are not grid columns.
4102
+ */
4103
+ private buildQueryFields;
3776
4104
  /**
3777
4105
  * Get searchable fields from entity properties
3778
4106
  */
@@ -3841,7 +4169,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
3841
4169
  protected expose: _angular_core.Signal<string | any[] | undefined>;
3842
4170
  protected entity: _angular_core.Signal<string>;
3843
4171
  protected disabled: _angular_core.Signal<string | boolean>;
3844
- protected columns: _angular_core.Signal<string[]>;
4172
+ protected columns: _angular_core.Signal<AXPEntitySelectorColumnInput[]>;
3845
4173
  protected textField: _angular_core.Signal<string>;
3846
4174
  /**
3847
4175
  * Template for select look (`ax-select-box`). Uses `textTemplate` when set, otherwise
@@ -3933,7 +4261,7 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
3933
4261
  protected isMorePopoverOpen: _angular_core.WritableSignal<boolean>;
3934
4262
  protected selectedItemIndex: _angular_core.WritableSignal<number>;
3935
4263
  protected resolvedPopoverItems: _angular_core.WritableSignal<any[]>;
3936
- protected resolveStatus: _angular_core.WritableSignal<"idle" | "loading" | "ready" | "error">;
4264
+ protected resolveStatus: _angular_core.WritableSignal<"error" | "idle" | "loading" | "ready">;
3937
4265
  protected resolveError: _angular_core.WritableSignal<string | null>;
3938
4266
  protected summaryLabel: _angular_core.WritableSignal<string>;
3939
4267
  protected popoverHeader: _angular_core.WritableSignal<string>;
@@ -4508,19 +4836,14 @@ declare class AXPSelectorStructureWidgetViewComponent extends AXPValueWidgetComp
4508
4836
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetViewComponent, "axp-selector-structure-widget-view", never, {}, {}, never, never, true, never>;
4509
4837
  }
4510
4838
 
4511
- declare const AXPEntityCreateEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
4512
- entity: string;
4513
- meta?: unknown;
4514
- }>;
4515
- declare const AXPEntityModifyEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
4516
- entity: string;
4517
- values: Record<string, unknown>;
4518
- }>;
4519
- declare const AXPEntityDeletedEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
4520
- entity: string;
4521
- ids: string[];
4522
- meta?: unknown;
4523
- }>;
4839
+ declare function dispatchEntityModifiedSideEffects(entityEvents: AXPEntityBroadcastService, entity: string, values: Record<string, unknown>, parentKey?: string): void;
4840
+
4841
+ /**
4842
+ * Maps `entity.mutation` realtime signals to:
4843
+ * - master-list refresh + row highlight
4844
+ * - local-entity engine delta (when the entity is managed / client-local)
4845
+ */
4846
+ declare function provideEntityRealtimeHandlers(): Provider[];
4524
4847
 
4525
- export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPDataSeederService, AXPDeleteEntityCommand, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityFormBuilderService, AXPEntityLifecycleHookKeys, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyEvent, AXPEntityModule, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPOpenEntityListCommand, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowFileUploaderPopupCommand, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_APPEARANCE_SECTION_ORDER, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_CLASSIFICATION_SECTION_ORDER, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, ENTITY_MASTER_LIST_TRACE_NS, EntityBuilder, EntityDataAccessor, GALLERY_PAGE_COMPONENT_KEY, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentNeedsHydration, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, axpDeleteEntityCommandDefinition, axpOpenEntityListCommandDefinition, axpShowFileUploaderPopupCommandDefinition, buildDataSourceTraceSnapshot, canPersistEntityListState, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, fireEntityLifecycleHook, formatLookupItemDisplay, formatLookupItemDisplayAsync, galleryPlugin, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, hasFileUploaderTitleOrDescriptionFields, hydrateAttachmentFieldToFileList, isAXPMiddlewareAbortError, isAttachmentFieldPresentOnRow, isAttachmentListEntry, isAttachmentStorageRef, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, persistedAttachments, provideEntity, resolveAttachmentFieldPath, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, resolveLookupEntityKey, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry, traceEntityMasterList };
4526
- export type { AXPDataSeeder, AXPDeleteEntityCommandInput, AXPEntityActionPlugin, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupDisplayEvalDeps, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPOpenEntityListCommandInput, AXPOpenEntityListCondition, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowFileUploaderPopupCommandInput, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, EntityMasterListTraceArea, GalleryDisplayMode, GalleryPluginOptions, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };
4848
+ export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPClientLocalPluginModule, AXPCreateEntityCommand, AXPDataSeederService, AXPDeleteEntityCommand, AXPDomainQueryEntityDefinitionLoader, AXPEditFileUploaderCommand, AXPEntityBulkPatchPerformService, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletePerformService, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityFormBuilderService, AXPEntityLifecycleHookKeys, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddlewareSkipContext, AXPEntityModule, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityRuntimeAccessorService, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService as AXPMiddlewareEntityService, AXPMiddlewareEntityStorageService, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPOpenEntityListCommand, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowFileUploaderPopupCommand, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPUpdateEntityStatusCommand, AXPViewEntityDetailsCommand, AXP_APPEARANCE_SECTION_ORDER, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXP_CLASSIFICATION_SECTION_ORDER, AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS, AXP_CLIENT_LOCAL_PLUGIN_NAME, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MIDDLEWARE, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, ENTITY_MASTER_LIST_TRACE_NS, EntityBuilder, EntityDataAccessor, GALLERY_PAGE_COMPONENT_KEY, TREE_CHILDREN_QUERY_TAKE, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentNeedsHydration, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, axpDeleteEntityCommandDefinition, axpOpenEntityListCommandDefinition, axpShowFileUploaderPopupCommandDefinition, axpUpdateEntityStatusCommandDefinition, buildDataSourceTraceSnapshot, canPersistEntityListState, clientLocalPlugin, cloneLayoutArrays, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, committedAttachments, composeEntityMiddlewares, composeEntityStorageMiddlewares, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createEntityMiddlewareContext, createEntityStorageContext, createLayoutOrderingMiddlewareProvider, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, dispatchEntityModifiedSideEffects, ensureHierarchicalRootFilter, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityCreateBridgeMiddleware, entityDeleteBridgeMiddleware, entityGetOneBridgeMiddleware, entityQueryBridgeMiddleware, entityStorageCreateBridgeMiddleware, entityStorageDeleteBridgeMiddleware, entityStorageGetOneBridgeMiddleware, entityStorageQueryBridgeMiddleware, entityStorageUpdateBridgeMiddleware, entityUpdateBridgeMiddleware, eventDispatchMiddleware, filterEntityMiddlewares, filterEntityStorageMiddlewares, filterSortEntityRows, filterTouchesParentKey, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, fireEntityLifecycleHook, formatLookupItemDisplay, formatLookupItemDisplayAsync, galleryPlugin, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, hasFileUploaderTitleOrDescriptionFields, hydrateAttachmentFieldToFileList, isAXPMiddlewareAbortError, isAttachmentFieldPresentOnRow, isAttachmentListEntry, isAttachmentStorageRef, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, normalizeEntityDataSelectorColumnSpecs, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, persistedAttachments, prefetchClientLocalRelated, provideEntity, provideEntityMiddlewareBridge, provideEntityRealtimeHandlers, provideEntityStorageMiddlewareBridge, resetPagingForTreeChildrenLoad, resolveAttachmentFieldPath, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, resolveLookupEntityKey, resolveMasterInterfacePropertyOrder, restoreEntityListExpandedRows, runEntityMiddlewarePipeline, runEntityQuery, runEntityStorageMiddlewarePipeline, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry, traceEntityMasterList };
4849
+ export type { AXPClientLocalPluginOptions, AXPDataSeeder, AXPDeleteEntityCommandInput, AXPEntityAccessPort, AXPEntityActionPlugin, AXPEntityBulkPatchPerformInput, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDeletePerformInput, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityMiddleware, AXPEntityMiddlewareContext, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityPreloadEntity, AXPEntityStorageBackend, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesQueryInput, AXPFileUploaderLoadFilesQueryResult, AXPFileUploaderSaveFilesCommandInput, AXPFileUploaderSaveFilesCommandResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupDisplayEvalDeps, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPOpenEntityListCommandInput, AXPOpenEntityListCondition, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowFileUploaderPopupCommandInput, AXPUpdateEntityStatusCommandInput, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, EntityMasterListTraceArea, GalleryDisplayMode, GalleryPluginOptions, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };