@acorex-platform/framework-client 0.0.18 → 0.0.21

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 +2666 -693
  6. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-core.mjs +685 -721
  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 +124 -72
  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 +2988 -857
  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 -27090
  31. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +382 -154
  33. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +646 -280
  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 +4868 -2548
  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 +421 -265
  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 +613 -87
  90. package/types/acorex-platform-framework-client-core.d.ts +213 -206
  91. package/types/acorex-platform-framework-client-layout-builder.d.ts +14 -8
  92. package/types/acorex-platform-framework-client-layout-components.d.ts +392 -28
  93. package/types/acorex-platform-framework-client-layout-entity.d.ts +667 -417
  94. package/types/acorex-platform-framework-client-layout-views.d.ts +31 -11
  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 +294 -67
  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 +11 -35
  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, AXPEntityModifiedEventPayload } 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,8 +711,10 @@ 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
  }
@@ -766,12 +735,12 @@ interface AXPUpdateEntityStatusCommandInput {
766
735
  * Default handler for status-chip transitions when no custom transition.command is set.
767
736
  * Patches only the status field via the entity update path (no edit dialog).
768
737
  */
769
- declare class AXPUpdateEntityStatusCommand implements AXPCommand<AXPUpdateEntityStatusCommandInput, AXPExecuteCommandResult> {
738
+ declare class AXPUpdateEntityStatusCommand implements AXPCommand<AXPUpdateEntityStatusCommandInput> {
770
739
  private readonly entityService;
771
740
  private readonly entityRegistry;
772
741
  private readonly translationService;
773
- private readonly workflowEventService;
774
- execute(input: AXPUpdateEntityStatusCommandInput): Promise<AXPExecuteCommandResult>;
742
+ private readonly entityEvents;
743
+ execute(input: AXPUpdateEntityStatusCommandInput): AXPCommandExecuteResultPromise;
775
744
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPUpdateEntityStatusCommand, never>;
776
745
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPUpdateEntityStatusCommand>;
777
746
  }
@@ -812,7 +781,7 @@ declare const axpUpdateEntityStatusCommandDefinition: {
812
781
  ai: {
813
782
  tags: string[];
814
783
  };
815
- categories: node_modules__acorex_platform_framework_shared_core_src_lib.AXPDefinitionCategory[];
784
+ categories: _acorex_platform_framework_shared_core.AXPDefinitionCategory[];
816
785
  };
817
786
 
818
787
  declare class AXPViewEntityDetailsCommand implements AXPCommand<any, any> {
@@ -821,37 +790,28 @@ declare class AXPViewEntityDetailsCommand implements AXPCommand<any, any> {
821
790
  private readonly translationService;
822
791
  private readonly expressionEvaluator;
823
792
  private readonly contextEvalFactory;
824
- execute(input: any): Promise<AXPExecuteCommandResult<any>>;
793
+ execute(input?: AXPEntityActionCommandInput & {
794
+ excludeProperties?: unknown;
795
+ }): AXPCommandExecuteResultPromise<any>;
825
796
  private resolveDialogTitle;
826
797
  private loadRecordContext;
827
798
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPViewEntityDetailsCommand, never>;
828
799
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPViewEntityDetailsCommand>;
829
800
  }
830
801
 
831
- interface AXPOpenEntityDetailsCommandInput {
832
- entity?: string;
833
- data?: {
834
- id: string;
835
- };
836
- __context__?: {
837
- entity?: string;
838
- data?: {
839
- id: string;
840
- };
841
- };
842
- }
802
+ type AXPOpenEntityDetailsCommandInput = AXPEntityActionCommandInput;
843
803
  /**
844
804
  * Generic command to open entity details view
845
805
  * Can be used by any entity to navigate to its detail page
846
806
  */
847
- declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput, AXPExecuteCommandResult> {
807
+ declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput> {
848
808
  private readonly router;
849
809
  private readonly sessionService;
850
810
  /**
851
811
  * Execute the command to navigate to entity details
852
812
  * @param input - Command input containing entity and data information
853
813
  */
854
- execute(input?: AXPOpenEntityDetailsCommandInput): Promise<AXPExecuteCommandResult>;
814
+ execute(input?: AXPOpenEntityDetailsCommandInput): AXPCommandExecuteResultPromise;
855
815
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityDetailsCommand, never>;
856
816
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
857
817
  }
@@ -974,25 +934,21 @@ declare class AXPEntityPreloadFiltersContainerComponent extends AXPPageLayoutBas
974
934
  onApply(event: AXPPreloadFiltersApplyEvent): Promise<void>;
975
935
  onShowAll(): Promise<void>;
976
936
  private buildPreloadFilterQueries;
937
+ /**
938
+ * Filter widgets store `{ value, operation, displayText? }`; plain values are treated as equal filters.
939
+ */
940
+ private unwrapFilterWidgetEntry;
977
941
  private buildListQueryFilter;
978
942
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityPreloadFiltersContainerComponent, never>;
979
943
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityPreloadFiltersContainerComponent, "axp-entity-preload-filters-container", never, {}, {}, never, never, true, never>;
980
944
  }
981
945
 
982
- /**
983
- * Data source definition provider that returns all entity names
984
- * from entity loaders' list() (const.ts in each module).
985
- */
986
- declare class AXPEntitiesListDataSourceDefinition implements AXPDataSourceDefinitionProvider {
987
- private readonly entityResolver;
988
- items(): Promise<AXPDataSourceDefinition[]>;
989
- }
990
-
991
946
  /**
992
947
  * Built-in entity detail tabs from plugins. Sidebar order (after related page-list / page-detail
993
- * 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).
994
950
  */
995
- type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'gallery' | 'documents' | 'comments' | 'dashboard' | 'history';
951
+ type EntityDetailPluginPageSlot = 'meta-data-builder' | 'attachments' | 'gallery' | 'documents' | 'comments' | 'dashboard' | 'reports' | 'history';
996
952
  /** Identifies an `entity.pages` entry when skipping its order during recomputation. */
997
953
  interface SkipEntityComponentPageRef {
998
954
  componentKey: string;
@@ -1020,8 +976,8 @@ interface ResolveEntityPluginDetailPageOrderOptions {
1020
976
  *
1021
977
  * 1. Assigns finite `layout.order` values to related `page-list` / `page-detail` rows that omit
1022
978
  * `order` (the composer otherwise treats them as +Infinity).
1023
- * 2. Places plugin tabs in a fixed relative order: meta-data-builder → attachments → documents →
1024
- * 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.
1025
981
  */
1026
982
  declare function resolveEntityPluginDetailPageOrder(input: {
1027
983
  relatedEntities?: AXPRelatedEntity[];
@@ -1165,9 +1121,14 @@ declare class AXPEntityEventDispatcherService {
1165
1121
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityEventDispatcherService>;
1166
1122
  }
1167
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;
1168
1129
  /**
1169
1130
  * Sort key for entries in `interfaces.master.{create|update|single}.properties`.
1170
- * 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.
1171
1132
  */
1172
1133
  declare function getMasterInterfacePropertySortKey(interfaceRow: {
1173
1134
  layout?: AXPEntityPropertyLayoutConfig | undefined;
@@ -1207,6 +1168,29 @@ interface AXPEntityListPagingState {
1207
1168
  take: number;
1208
1169
  skip: number;
1209
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;
1210
1194
  /**
1211
1195
  * Applies take/skip to the data source without triggering {@link AXDataSource.load}.
1212
1196
  */
@@ -1327,14 +1311,13 @@ declare class AXPEntityMasterListViewModel {
1327
1311
  private readonly _viewDef;
1328
1312
  private readonly formatService;
1329
1313
  private readonly session;
1330
- private readonly workflowEventService;
1314
+ private readonly entityEvents;
1331
1315
  private readonly settings;
1332
1316
  private readonly widgetResolver;
1333
1317
  private readonly expressionEvaluator;
1334
1318
  private readonly contextEvalFactory;
1335
1319
  private readonly translation;
1336
1320
  private readonly commandService;
1337
- private readonly eventService;
1338
1321
  private readonly queryExecutor;
1339
1322
  private readonly filterOperatorMiddleware;
1340
1323
  private readonly entityDefinitionRegistry;
@@ -1344,6 +1327,7 @@ declare class AXPEntityMasterListViewModel {
1344
1327
  private lastAppliedFilterKey;
1345
1328
  private hasQueryParamsFilters;
1346
1329
  private routeQueryContextKey;
1330
+ private settingsUpdateChain;
1347
1331
  private initialListSettingsApplied;
1348
1332
  /** Persisted expanded row ids for hierarchical lists (per view). */
1349
1333
  private readonly expandedRowIds;
@@ -1481,6 +1465,11 @@ declare class AXPEntityMasterListViewModel {
1481
1465
  */
1482
1466
  updateExpandedRowId(rowId: string, expanded: boolean): void;
1483
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;
1484
1473
  saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'listPaging' | 'filters' | 'sorts' | 'expandedRows' | 'listLayout' | 'cardContentExpanded', data?: unknown): Promise<void>;
1485
1474
  selectedItems: _angular_core.WritableSignal<any[]>;
1486
1475
  /**
@@ -1543,13 +1532,18 @@ declare class AXPEntityMasterListViewModel {
1543
1532
  */
1544
1533
  applyFiltersFromQueryParams(filtersJson: string | null): boolean;
1545
1534
  /**
1546
- * 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
1547
1536
  * subscription emission does not re-sync unnecessarily.
1537
+ *
1538
+ * @param overrides Merged over the snapshot (e.g. pending `view` written via `replaceUrl`).
1548
1539
  */
1549
- markRouteQueryContextSynced(queryParamMap: ParamMap): void;
1540
+ markRouteQueryContextSynced(queryParamMap: ParamMap, overrides?: Record<string, string | null | undefined>): void;
1550
1541
  /**
1551
1542
  * Reacts to any route query param change while the list route is reused (`reuse: queryParamsChange`).
1552
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.
1553
1547
  */
1554
1548
  syncFromRouteQueryParams(queryParamMap: ParamMap): Promise<{
1555
1549
  reloadList: boolean;
@@ -1568,15 +1562,31 @@ declare class AXPEntityMasterListViewModel {
1568
1562
  get preloadFiltersDef(): AXPEntityListFilterDefinition[];
1569
1563
  applyViewFilters(): Promise<void>;
1570
1564
  resetFilters(): void;
1571
- applyFilterAndSort(): Promise<void>;
1565
+ applyFilterAndSort(options?: {
1566
+ resetPagination?: boolean;
1567
+ }): Promise<void>;
1572
1568
  private updateAppliedInlineFilterHighlightText;
1573
1569
  private resolveMergeDetailProperty;
1574
1570
  private allAvailableColumns;
1575
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;
1576
1577
  columns: _angular_core.WritableSignal<AXPEntityListViewColumnViewModel[]>;
1577
- resetColumns(): void;
1578
+ resetColumns(): Promise<void>;
1578
1579
  onColumnsChanged(columns: AXPEntityListViewColumnViewModel[]): Promise<void>;
1579
- 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;
1580
1590
  onColumnsOrderChanged(event: any): void;
1581
1591
  private mergeDisplayFieldWithColumn;
1582
1592
  private buildVirtualDisplayProperty;
@@ -1686,7 +1696,7 @@ declare class AXPEntityMasterSingleViewModel {
1686
1696
  private readonly _viewDef;
1687
1697
  private readonly session;
1688
1698
  private readonly formatService;
1689
- private readonly workflowEventService;
1699
+ private readonly entityEvents;
1690
1700
  private readonly commandService;
1691
1701
  private readonly destroyed;
1692
1702
  private translateService;
@@ -1776,6 +1786,267 @@ declare class AXPEntityMasterUpdateViewModelFactory {
1776
1786
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMasterUpdateViewModelFactory>;
1777
1787
  }
1778
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
+
1779
2050
  type AXPEntityMasterListCardLayout = NonNullable<NonNullable<AXPEntityMasterListView['layouts']>['card']>;
1780
2051
  interface AXPEntityModifierContext {
1781
2052
  readonly entity: AXPEntity;
@@ -1899,60 +2170,6 @@ interface AXPEntityModifierProvider {
1899
2170
  order?: number;
1900
2171
  }
1901
2172
 
1902
- declare function ensureListActions(ctx: AXPEntityModifierContext): void;
1903
- declare function actionExists(actions: any[] | undefined, commandName: string, name?: string): boolean;
1904
- interface AXPEntityLayoutSectionLike {
1905
- id: string;
1906
- }
1907
- interface AXPEntityLayoutPropertyLike {
1908
- name: string;
1909
- }
1910
- interface AXPEntityLayoutLike<TSection extends AXPEntityLayoutSectionLike = AXPEntityLayoutSectionLike, TProperty extends AXPEntityLayoutPropertyLike = AXPEntityLayoutPropertyLike> {
1911
- sections: TSection[];
1912
- properties?: TProperty[];
1913
- }
1914
- /** Layout order for the shared appearance section (after entity-defined groups). */
1915
- declare const AXP_APPEARANCE_SECTION_ORDER = 900;
1916
- /** Layout order for the shared classification section (after appearance). */
1917
- declare const AXP_CLASSIFICATION_SECTION_ORDER = 910;
1918
- /**
1919
- * Clones `sections` and `properties` arrays to prevent accidental cross-interface mutations.
1920
- * Many entity definitions reuse the same array instances across create/update/single interfaces.
1921
- */
1922
- declare function cloneLayoutArrays<TLayout extends AXPEntityLayoutLike>(layout: TLayout): TLayout & {
1923
- properties: NonNullable<TLayout['properties']>;
1924
- };
1925
- declare function ensureLayoutSection<TLayout extends AXPEntityLayoutLike>(layout: TLayout, section: TLayout['sections'][number]): void;
1926
- declare function ensureLayoutPropertyView<TLayout extends AXPEntityLayoutLike>(layout: TLayout & {
1927
- properties: NonNullable<TLayout['properties']>;
1928
- }, prop: NonNullable<TLayout['properties']>[number]): void;
1929
-
1930
- interface AXPEntityActionPlugin {
1931
- name: string;
1932
- order?: number;
1933
- apply: (ctx: AXPEntityModifierContext, options?: any) => Promise<void> | void;
1934
- }
1935
- declare const AXP_ENTITY_ACTION_PLUGIN: InjectionToken<AXPEntityActionPlugin[]>;
1936
-
1937
- declare class AXPEntityMiddleware {
1938
- private exactModifiers;
1939
- private patternModifiers;
1940
- protected providedModifiers: AXPEntityModifierProvider[];
1941
- protected providedActionPlugins: AXPEntityActionPlugin[];
1942
- protected injector: Injector;
1943
- constructor();
1944
- register(entityName: string | RegExp, modifier: AXPEntityModifier, order?: number): void;
1945
- process(entity: AXPEntity): Promise<AXPEntity>;
1946
- private createModifierStep;
1947
- private createPluginStep;
1948
- private wildcardToRegExp;
1949
- private normalizeRegExp;
1950
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMiddleware, never>;
1951
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityMiddleware>;
1952
- }
1953
-
1954
- declare function createModifierContext(entity: AXPEntity): AXPEntityModifierContext;
1955
-
1956
2173
  declare const AXP_ENTITY_MODIFIER: InjectionToken<AXPEntityModifierProvider[]>;
1957
2174
 
1958
2175
  declare class AXPEntityPreloadFiltersViewModel {
@@ -1972,7 +2189,7 @@ declare class AXPEntityPreloadFiltersViewModel {
1972
2189
  */
1973
2190
  description: _angular_core.Signal<string | null>;
1974
2191
  /**
1975
- * All filter definitions for properties with preload enabled
2192
+ * Preload filter definitions with a single `contains` operator (hides the filter operations menu).
1976
2193
  */
1977
2194
  preloadFiltersDef: _angular_core.Signal<AXPFilterDefinition[]>;
1978
2195
  /**
@@ -2002,6 +2219,8 @@ declare class AXPEntityDefinitionRegistryService {
2002
2219
  name: string;
2003
2220
  }>;
2004
2221
  private entities;
2222
+ /** In-flight resolve() calls keyed by `module.entity` — coalesces concurrent callers. */
2223
+ private readonly pendingResolves;
2005
2224
  private entityResolver;
2006
2225
  /**
2007
2226
  * Force re-load and re-process entity definitions, then re-register them.
@@ -2045,6 +2264,7 @@ declare class AXPEntityDefinitionRegistryService {
2045
2264
  * @throws Error if the entity configuration cannot be resolved.
2046
2265
  */
2047
2266
  resolve(moduleName: string, entityName: string): Promise<AXPEntity>;
2267
+ private loadAndRegister;
2048
2268
  exists(moduleName: string, entityName: string): Promise<boolean>;
2049
2269
  /**
2050
2270
  * Creates a unique key for an entity based on its module and name.
@@ -2082,107 +2302,69 @@ declare function isCategoryFilter(filter: any): boolean;
2082
2302
  * without pagination.
2083
2303
  */
2084
2304
  declare function filterSortEntityRows<T = unknown>(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort' | 'params'>, adapters: RunEntityQueryAdapters<T>, sortLocale?: string): Promise<T[]>;
2085
- /**
2086
- * Shared entity query logic: sort, filter (including recursive category filter), childrenCount, pagination.
2087
- */
2088
- declare function runEntityQuery<T = unknown>(entityName: string, request: AXPQueryRequest, adapters: RunEntityQueryAdapters<T>, sortLocale?: string): Promise<AXPPagedListResult<T>>;
2089
-
2090
- 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> {
2091
- abstract get dbName(): string;
2092
- abstract initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
2093
- abstract getOne(entityName: string, id: TKey): Promise<TDetailDto>;
2094
- abstract updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2095
- abstract deleteOne(entityName: string, id: TKey): Promise<void>;
2096
- abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
2097
- abstract getAll(entityName: string): Promise<TListItemDto[]>;
2098
- abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2099
- abstract count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2100
- abstract queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2101
- abstract getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
2102
- abstract exists(entityName: string, id: TKey): Promise<boolean>;
2103
- abstract upsertOne(entityName: string, entity: TCreateDto, options?: {
2104
- merge?: boolean;
2105
- }): Promise<TKey>;
2106
- abstract aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2305
+ /**
2306
+ * Shared entity query logic: sort, filter (including recursive category filter), childrenCount, pagination.
2307
+ */
2308
+ declare function runEntityQuery<T = unknown>(entityName: string, request: AXPQueryRequest, adapters: RunEntityQueryAdapters<T>, sortLocale?: string): Promise<AXPPagedListResult<T>>;
2309
+
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;
2107
2324
  }
2108
- 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> {
2109
- abstract get entityName(): string;
2110
- abstract initial(collection: TCreateDto[]): Promise<void>;
2111
- abstract getOne(id: TKey): Promise<TDetailDto>;
2112
- abstract getAll(): Promise<TListItemDto[]>;
2113
- abstract updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2114
- abstract deleteOne(id: TKey): Promise<void>;
2115
- abstract insertOne(entity: TCreateDto): Promise<TKey>;
2116
- abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2117
- abstract count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2118
- abstract queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2119
- abstract getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
2120
- abstract exists(id: TKey): Promise<boolean>;
2121
- abstract upsertOne(entity: TCreateDto, options?: {
2122
- merge?: boolean;
2123
- }): Promise<TKey>;
2124
- 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>;
2125
2340
  }
2126
- 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> {
2127
- private storageService;
2128
- entityName: string;
2129
- constructor(storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, entityName: string);
2130
- initial(collection: TCreateDto[]): Promise<void>;
2131
- getOne(id: TKey): Promise<TDetailDto>;
2132
- getAll(): Promise<TListItemDto[]>;
2133
- query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2134
- updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2135
- deleteOne(id: TKey): Promise<void>;
2136
- insertOne(entity: TCreateDto): Promise<TKey>;
2137
- count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2138
- queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2139
- getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
2140
- exists(id: TKey): Promise<boolean>;
2141
- upsertOne(entity: TCreateDto, options?: {
2142
- merge?: boolean;
2143
- }): Promise<TKey>;
2144
- aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2341
+
2342
+ interface AXPEntityDeleteOptions {
2343
+ source: string;
2344
+ ids: string[];
2145
2345
  }
2146
- 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> {
2147
- abstract insertOne(request: TCreateDto): Promise<TKey>;
2148
- abstract getOne(id: TKey): Promise<TDetailDto>;
2149
- abstract deleteOne(id: TKey): Promise<void>;
2150
- abstract updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2151
- abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2346
+ interface AXPEntityDeletePerformInput {
2347
+ entity?: string;
2348
+ data?: unknown;
2349
+ entities?: AXPEntityDeleteOptions[];
2350
+ meta?: unknown;
2152
2351
  }
2153
- 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> {
2154
- private entityName;
2155
- private _storageService;
2156
- private entityRegistery;
2157
- private _entityDataProvider;
2158
- private _entityCategoryDataProvider;
2159
- constructor(entityName: string);
2160
- insertOne(request: TCreateDto): Promise<TKey>;
2161
- getOne(id: TKey): Promise<TDetailDto>;
2162
- deleteOne(id: TKey): Promise<void>;
2163
- updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2164
- query(request?: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2165
- findOne(filter: AXDataSourceFilterOption): Promise<TListItemDto>;
2166
- getRoots(request: {}): Promise<AXPPagedListResult<TListItemDto>>;
2167
- getChildren(request: {
2168
- parentId: TKey;
2169
- parentKey?: string;
2170
- }): Promise<AXPPagedListResult<TListItemDto>>;
2171
- getByCategory(request: {
2172
- categoryId: TKey;
2173
- categoryKey?: string;
2174
- }): Promise<AXPPagedListResult<TListItemDto>>;
2175
- getCategoriesList(request?: AXPQueryRequest): Promise<AXPPagedListResult<AXPCategoryEntity<TKey>>>;
2176
- get storageService(): AXPEntityStorageService<any, any, any, any, any>;
2177
- count(request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2178
- queryAll(request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2179
- getMany(ids: TKey[]): Promise<(TListItemDto | null)[]>;
2180
- exists(id: TKey): Promise<boolean>;
2181
- upsertOne(entity: TCreateDto, options?: {
2182
- merge?: boolean;
2183
- }): Promise<TKey>;
2184
- aggregate(request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2185
- 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>;
2186
2368
  }
2187
2369
 
2188
2370
  interface AXPEntityConfigs {
@@ -2227,12 +2409,37 @@ declare class AXPEntityResolver {
2227
2409
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityResolver>;
2228
2410
  }
2229
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
+
2230
2431
  declare class AXPAttachmentsPluginModule {
2231
2432
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAttachmentsPluginModule, never>;
2232
2433
  static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPAttachmentsPluginModule, never, never, never>;
2233
2434
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPAttachmentsPluginModule>;
2234
2435
  }
2235
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
+
2236
2443
  declare class AXPGalleryPluginModule {
2237
2444
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPGalleryPluginModule, never>;
2238
2445
  static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPGalleryPluginModule, never, never, never>;
@@ -2242,14 +2449,14 @@ declare class AXPGalleryPluginModule {
2242
2449
  declare class AXPEntityModule {
2243
2450
  constructor();
2244
2451
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
2245
- 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>;
2246
2453
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
2247
2454
  }
2248
2455
 
2249
2456
  /**
2250
2457
  * Maps storage middleware failures to a command result the details view can surface.
2251
2458
  */
2252
- declare function mapEntityStorageErrorToCommandResult(error: unknown, fallback?: string): AXPExecuteCommandResult;
2459
+ declare function mapEntityStorageErrorToCommandResult(error: unknown, fallback?: string): AXPRuntimeCommandResult;
2253
2460
  /**
2254
2461
  * Data accessor for entity operations.
2255
2462
  * Provides methods to query and execute commands with smart resolution:
@@ -2267,6 +2474,7 @@ declare class EntityDataAccessor<TKey = any, TDetailDto extends AXPEntityDetailD
2267
2474
  private entityDef;
2268
2475
  private entityDefPromise;
2269
2476
  constructor(module: string, entity: string, entityRegistry: AXPEntityDefinitionRegistryService, queryExecutor: AXPQueryExecutor, commandService: AXPCommandService, injector: Injector);
2477
+ private canRunAppScopedEntityAccess;
2270
2478
  /**
2271
2479
  * Lazily creates the CRUD fallback inside an injection context so {@link AXMEntityCrudServiceImpl}
2272
2480
  * can resolve {@link AXPEntityStorageService} via `inject()`.
@@ -2370,6 +2578,13 @@ declare class AXPEntityService {
2370
2578
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityService>;
2371
2579
  }
2372
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
+
2373
2588
  /** How to show attachments in entity single/create/update: as a section (default) or as a separate page. */
2374
2589
  type AttachmentsDisplayMode = 'section' | 'page';
2375
2590
  /** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
@@ -2422,6 +2637,35 @@ type AttachmentsPluginOptions = {
2422
2637
  */
2423
2638
  declare const attachmentsPlugin: AXPEntityActionPlugin;
2424
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
+
2425
2669
  /** How to show gallery in entity single view: as a section (default) or as a separate page. */
2426
2670
  type GalleryDisplayMode = 'section' | 'page';
2427
2671
  /** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
@@ -2457,60 +2701,6 @@ type GalleryPluginOptions = {
2457
2701
  */
2458
2702
  declare const galleryPlugin: AXPEntityActionPlugin;
2459
2703
 
2460
- interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
2461
- op: AXPEntityOp;
2462
- entityName: string;
2463
- id?: TKey;
2464
- data?: TCreateDto | Omit<Partial<TUpdateDto>, 'id'>;
2465
- request?: AXPQueryRequest;
2466
- previous?: TDetailDto;
2467
- result?: any;
2468
- locals: Map<string, unknown>;
2469
- backend: {
2470
- getOne: (entityName: string, id: TKey) => Promise<TDetailDto>;
2471
- insertOne: (entityName: string, entity: TCreateDto) => Promise<TKey>;
2472
- query: (entityName: string, request: AXPQueryRequest) => Promise<AXPPagedListResult<TListItemDto>>;
2473
- updateOne: (entityName: string, id: TKey, data: Partial<TUpdateDto>) => Promise<TDetailDto>;
2474
- deleteOne: (entityName: string, id: TKey) => Promise<void>;
2475
- count: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>) => Promise<number>;
2476
- queryAll: (entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions) => Promise<AXPEntityQueryAllResult<TListItemDto>>;
2477
- getMany: (entityName: string, ids: TKey[]) => Promise<(TListItemDto | null)[]>;
2478
- exists: (entityName: string, id: TKey) => Promise<boolean>;
2479
- upsertOne: (entityName: string, entity: TCreateDto, options?: {
2480
- merge?: boolean;
2481
- }) => Promise<TKey>;
2482
- aggregate: (entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions) => Promise<AXPEntityAggregateResult>;
2483
- };
2484
- }
2485
- interface AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
2486
- target?: {
2487
- ops?: AXPEntityOp[];
2488
- entity?: string | RegExp;
2489
- predicate?: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => boolean;
2490
- order?: number;
2491
- };
2492
- execute: (ctx: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, next: () => Promise<void>) => Promise<void>;
2493
- }
2494
- /**
2495
- * Error type that can be thrown by middlewares to abort the chain with a structured payload.
2496
- */
2497
- declare class AXPMiddlewareAbortError extends Error {
2498
- readonly message: string;
2499
- readonly options: {
2500
- code?: string;
2501
- status?: number;
2502
- details?: any;
2503
- };
2504
- constructor(message: string, options?: {
2505
- code?: string;
2506
- status?: number;
2507
- details?: any;
2508
- });
2509
- toResponse(): AXPMiddlewareErrorResponse;
2510
- }
2511
- /** Type guard for AXPMiddlewareAbortError */
2512
- declare function isAXPMiddlewareAbortError(error: unknown): error is AXPMiddlewareAbortError;
2513
-
2514
2704
  declare const eventDispatchMiddleware: AXPEntityStorageMiddleware;
2515
2705
 
2516
2706
  /**
@@ -2619,6 +2809,57 @@ declare const defaultMultiLanguageMiddlewareProvider: AXPEntityModifierProvider;
2619
2809
  declare const defaultCardLayoutMiddleware: AXPEntityModifier;
2620
2810
  declare const defaultCardLayoutMiddlewareProvider: AXPEntityModifierProvider;
2621
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
+
2622
2863
  /**
2623
2864
  * Registers entity CRUD commands and queries for the given entity keys.
2624
2865
  * Use in app/module providers; consumes AXPEntityService from this package.
@@ -2630,10 +2871,8 @@ interface AXPGetEntityDetailsQueryInput {
2630
2871
  id: string;
2631
2872
  }
2632
2873
  interface AXPGetEntityDetailsQueryResult {
2633
- success: boolean;
2634
- entityDefinition?: AXPEntity;
2635
- entityData?: any;
2636
- error?: string;
2874
+ entityDefinition: AXPEntity;
2875
+ entityData: any;
2637
2876
  }
2638
2877
  /**
2639
2878
  * Generic query to get entity details including entity definition and entity data
@@ -2646,7 +2885,7 @@ declare class AXPGetEntityDetailsQuery implements AXPQuery<AXPGetEntityDetailsQu
2646
2885
  * Execute the query to fetch entity definition and data
2647
2886
  * @param input - Query input containing entity and ID information
2648
2887
  */
2649
- fetch(input: AXPGetEntityDetailsQueryInput): Promise<AXPGetEntityDetailsQueryResult>;
2888
+ fetch(input: AXPGetEntityDetailsQueryInput): AXPQueryFetchResultPromise<AXPGetEntityDetailsQueryResult>;
2650
2889
  /**
2651
2890
  * Get entity data using the entity's CRUD service
2652
2891
  * @param entity - Full entity path (ModuleName.EntityName)
@@ -2782,6 +3021,8 @@ declare class AXPRelatedColumnMetadataResolver {
2782
3021
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPRelatedColumnMetadataResolver>;
2783
3022
  }
2784
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";
2785
3026
  interface IEntitySelectorStage {
2786
3027
  /** Select target entity using "module.entity" format */
2787
3028
  entity(fullName: string): IInterfaceSelectorStage;
@@ -2849,40 +3090,6 @@ type CompatFormFieldBuilder = {
2849
3090
  customWidget(type: string, options?: any): any;
2850
3091
  } & Partial<IFormFieldBuilder>;
2851
3092
 
2852
- declare const AXP_ENTITY_STORAGE_BACKEND: InjectionToken<AXPEntityStorageService<any, any, any, any, any>>;
2853
- declare const AXP_ENTITY_STORAGE_MIDDLEWARE: InjectionToken<AXPEntityStorageMiddleware<any, any, any, any, any>[]>;
2854
-
2855
- 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> {
2856
- private readonly backend;
2857
- private readonly allMiddlewares;
2858
- private readonly injector;
2859
- /** In-flight read requests - identical parallel requests share one execution */
2860
- private readonly inFlight;
2861
- get dbName(): string;
2862
- private filterMiddlewares;
2863
- private compose;
2864
- private run;
2865
- private createCtx;
2866
- initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;
2867
- getOne(entityName: string, id: TKey): Promise<TDetailDto>;
2868
- updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
2869
- deleteOne(entityName: string, id: TKey): Promise<void>;
2870
- insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
2871
- getAll(entityName: string): Promise<TListItemDto[]>;
2872
- query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
2873
- count(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>): Promise<number>;
2874
- queryAll(entityName: string, request: Pick<AXPQueryRequest, 'filter' | 'sort'>, options?: AXPEntityQueryAllOptions): Promise<AXPEntityQueryAllResult<TListItemDto>>;
2875
- getMany(entityName: string, ids: TKey[]): Promise<(TListItemDto | null)[]>;
2876
- exists(entityName: string, id: TKey): Promise<boolean>;
2877
- upsertOne(entityName: string, entity: TCreateDto, options?: {
2878
- merge?: boolean;
2879
- }): Promise<TKey>;
2880
- aggregate(entityName: string, request: AXPEntityAggregateRequest, options?: AXPEntityAggregateOptions): Promise<AXPEntityAggregateResult>;
2881
- private runWithDedup;
2882
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>, never>;
2883
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPMiddlewareEntityStorageService<any, any, any, any, any>>;
2884
- }
2885
-
2886
3093
  type AXPEntityChangeSet = {
2887
3094
  [key: string]: {
2888
3095
  oldValue: any;
@@ -3456,12 +3663,11 @@ declare class AXPEntityListToolbarService {
3456
3663
  declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3457
3664
  #private;
3458
3665
  protected entityService: AXPEntityDefinitionRegistryService;
3459
- protected workflowEventService: AXPWorkflowEventService;
3666
+ protected entityEvents: AXPEntityBroadcastService;
3460
3667
  protected entityListTableService: AXPEntityListTableService;
3461
3668
  protected entityListToolbarService: AXPEntityListToolbarService;
3462
3669
  protected deviceService: AXPDeviceService;
3463
3670
  protected commandService: AXPCommandService;
3464
- protected eventService: AXPBroadcastEventService;
3465
3671
  private readonly expressionEvaluator;
3466
3672
  private readonly columnWidthService;
3467
3673
  private readonly route;
@@ -3475,6 +3681,12 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3475
3681
  protected selectedItems: _angular_core.WritableSignal<any[]>;
3476
3682
  protected toolbarNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
3477
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;
3478
3690
  protected entitySource: _angular_core.Signal<any>;
3479
3691
  protected excludeColumns: _angular_core.Signal<string[]>;
3480
3692
  protected includeColumns: _angular_core.Signal<string[]>;
@@ -3503,6 +3715,7 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3503
3715
  /**
3504
3716
  * Route `filters` apply only when the active details `page` matches this list's entity
3505
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.
3506
3719
  */
3507
3720
  private shouldApplyRouteFilters;
3508
3721
  /**
@@ -3510,17 +3723,33 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3510
3723
  */
3511
3724
  private mergeToolbarFilters;
3512
3725
  private getMergedToolbarFilters;
3726
+ private beginOp;
3727
+ private isOpStale;
3728
+ private delay;
3513
3729
  /**
3514
3730
  * Applies merged route + parent-scope filters to the widget value and data source.
3515
3731
  */
3516
3732
  private applyMergedRouteFiltersToList;
3517
- /** 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
+ */
3518
3737
  private reapplyScopedFiltersToDataSource;
3519
3738
  /**
3520
3739
  * Entity lists use `fetchDataMode: 'manual'`; after scoped filters reach the data source,
3521
- * 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".
3522
3742
  */
3523
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;
3524
3753
  /**
3525
3754
  * Parent-scoped related filters must have a real PK. Empty/undefined values would otherwise
3526
3755
  * load unscoped rows (other employees' assignments) in create wizards.
@@ -3554,6 +3783,10 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
3554
3783
  * Refreshes the embedded data list (toolbar / commands). In wizard mode, `refresh` is patched to re-apply scoped filters first.
3555
3784
  */
3556
3785
  private refreshGridWithParentScopedFilters;
3786
+ /**
3787
+ * Re-applies parent-scoped filters then refreshes the grid, ignoring stale overlapping calls.
3788
+ */
3789
+ private runScopedDataListRefresh;
3557
3790
  protected queries: undefined;
3558
3791
  /**
3559
3792
  * Validates that all required dependencies are available
@@ -3698,7 +3931,7 @@ interface AXPEntityDataSelectorSelectionOptions {
3698
3931
  allowUnselect?: boolean;
3699
3932
  }
3700
3933
  interface AXPEntityDataSelectorGridOptions {
3701
- columns?: string[];
3934
+ columns?: AXPEntitySelectorColumnInput[];
3702
3935
  pageSize?: number;
3703
3936
  }
3704
3937
  interface AXPEntityDataSelectorFilterOptions {
@@ -3733,6 +3966,11 @@ interface AXPEntityDataSelectorCreateOptions {
3733
3966
  mode?: AXPDataSelectorAllowCreate;
3734
3967
  /** Prefilled entity create form values; may use {{ context.eval() }} expressions. */
3735
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;
3736
3974
  }
3737
3975
  /** Nested options for {@link AXPEntityDataSelectorService.open}. */
3738
3976
  interface AXPEntityDataSelectorOpenOptions {
@@ -3763,7 +4001,7 @@ interface AXPEntityDataSelectorOptions {
3763
4001
  allowUnselect?: boolean;
3764
4002
  filters?: AXDataSourceFilterOption | null;
3765
4003
  parentFilters?: AXDataSourceFilterOption | null;
3766
- columns?: string[];
4004
+ columns?: AXPEntitySelectorColumnInput[];
3767
4005
  sortedFields?: {
3768
4006
  name: string;
3769
4007
  dir: 'asc' | 'desc';
@@ -3804,6 +4042,14 @@ declare function mapLegacyEntityDataSelectorOptions(legacy: AXPEntityDataSelecto
3804
4042
  * When both shapes are mixed, nested groups take precedence over mapped legacy values.
3805
4043
  */
3806
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
+ }>;
3807
4053
  declare class AXPEntityDataSelectorService {
3808
4054
  private readonly dataSelectorService;
3809
4055
  private readonly filterOperatorMiddleware;
@@ -3827,7 +4073,7 @@ declare class AXPEntityDataSelectorService {
3827
4073
  * Execute Entity:Create and return created item.
3828
4074
  * Used by lookup widget and data selector for inline create.
3829
4075
  */
3830
- 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>;
3831
4077
  /**
3832
4078
  * Normalize item's phones/emails for expose/display.
3833
4079
  * Call this when receiving items from any source (create, API, selector).
@@ -3846,9 +4092,15 @@ declare class AXPEntityDataSelectorService {
3846
4092
  */
3847
4093
  private createDataSource;
3848
4094
  /**
3849
- * 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.
3850
4097
  */
3851
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;
3852
4104
  /**
3853
4105
  * Get searchable fields from entity properties
3854
4106
  */
@@ -3917,7 +4169,7 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
3917
4169
  protected expose: _angular_core.Signal<string | any[] | undefined>;
3918
4170
  protected entity: _angular_core.Signal<string>;
3919
4171
  protected disabled: _angular_core.Signal<string | boolean>;
3920
- protected columns: _angular_core.Signal<string[]>;
4172
+ protected columns: _angular_core.Signal<AXPEntitySelectorColumnInput[]>;
3921
4173
  protected textField: _angular_core.Signal<string>;
3922
4174
  /**
3923
4175
  * Template for select look (`ax-select-box`). Uses `textTemplate` when set, otherwise
@@ -4009,7 +4261,7 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
4009
4261
  protected isMorePopoverOpen: _angular_core.WritableSignal<boolean>;
4010
4262
  protected selectedItemIndex: _angular_core.WritableSignal<number>;
4011
4263
  protected resolvedPopoverItems: _angular_core.WritableSignal<any[]>;
4012
- protected resolveStatus: _angular_core.WritableSignal<"idle" | "loading" | "ready" | "error">;
4264
+ protected resolveStatus: _angular_core.WritableSignal<"error" | "idle" | "loading" | "ready">;
4013
4265
  protected resolveError: _angular_core.WritableSignal<string | null>;
4014
4266
  protected summaryLabel: _angular_core.WritableSignal<string>;
4015
4267
  protected popoverHeader: _angular_core.WritableSignal<string>;
@@ -4584,16 +4836,14 @@ declare class AXPSelectorStructureWidgetViewComponent extends AXPValueWidgetComp
4584
4836
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSelectorStructureWidgetViewComponent, "axp-selector-structure-widget-view", never, {}, {}, never, never, true, never>;
4585
4837
  }
4586
4838
 
4587
- declare const AXPEntityCreateEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
4588
- entity: string;
4589
- meta?: unknown;
4590
- }>;
4591
- declare const AXPEntityModifyEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<AXPEntityModifiedEventPayload>;
4592
- declare const AXPEntityDeletedEvent: _acorex_platform_framework_client_workflow.AXPWorkflowEventCreator<{
4593
- entity: string;
4594
- ids: string[];
4595
- meta?: unknown;
4596
- }>;
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[];
4597
4847
 
4598
- 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, AXPUpdateEntityStatusCommand, 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, axpUpdateEntityStatusCommandDefinition, 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 };
4599
- 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, AXPUpdateEntityStatusCommandInput, 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 };