@acorex/platform 21.0.0-next.70 → 21.0.0-next.71

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 (32) hide show
  1. package/fesm2022/acorex-platform-common.mjs +11 -0
  2. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-core.mjs +332 -76
  4. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-layout-builder.mjs +563 -44
  6. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-components.mjs +83 -67
  8. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-entity.mjs +543 -237
  10. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-views.mjs +319 -66
  12. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-widget-core.mjs +54 -6
  14. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-widgets.mjs +198 -91
  16. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-themes-default.mjs +13 -14
  18. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-themes-shared.mjs +50 -30
  20. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/types/acorex-platform-common.d.ts +11 -0
  23. package/types/acorex-platform-core.d.ts +137 -47
  24. package/types/acorex-platform-layout-builder.d.ts +90 -13
  25. package/types/acorex-platform-layout-components.d.ts +21 -17
  26. package/types/acorex-platform-layout-entity.d.ts +63 -10
  27. package/types/acorex-platform-layout-views.d.ts +68 -6
  28. package/types/acorex-platform-layout-widget-core.d.ts +43 -8
  29. package/types/acorex-platform-layout-widgets.d.ts +21 -6
  30. package/types/acorex-platform-themes-default.d.ts +24 -4
  31. package/types/acorex-platform-themes-shared.d.ts +6 -0
  32. package/types/acorex-platform-workflow.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as _acorex_platform_core from '@acorex/platform/core';
2
- import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPFileListItem, AXPContextChangeEvent } from '@acorex/platform/core';
2
+ import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPFileListItem, AXPContextUpdateOrigin, AXPContextChangeEvent } from '@acorex/platform/core';
3
3
  import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
@@ -1632,6 +1632,14 @@ declare class AXPEntityModule {
1632
1632
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
1633
1633
  }
1634
1634
 
1635
+ /**
1636
+ * Maps storage middleware failures to a command result the details view can surface.
1637
+ */
1638
+ declare function mapEntityStorageErrorToCommandResult(error: unknown, fallback?: string): AXPExecuteCommandResult;
1639
+ /**
1640
+ * Best-effort plain string for thrown {@link Error} messages from command results (no i18n lookup).
1641
+ */
1642
+ declare function commandMessageTextForError(value: AXPMultiLanguageString | undefined | null): string;
1635
1643
  /**
1636
1644
  * Data accessor for entity operations.
1637
1645
  * Provides methods to query and execute commands with smart resolution:
@@ -2925,6 +2933,10 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
2925
2933
  * Analyzes what has changed between current and previous queries
2926
2934
  */
2927
2935
  private analyzeChanges;
2936
+ /**
2937
+ * Maps toolbar sort queries ({ name, dir }) to AXDataSource sort options ({ field, dir }).
2938
+ */
2939
+ private toDataSourceSortOptions;
2928
2940
  /**
2929
2941
  * Applies filter and sort changes to the data source
2930
2942
  */
@@ -2989,7 +3001,11 @@ declare class AXPEditFileUploaderCommand implements AXPCommand<{
2989
3001
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEditFileUploaderCommand>;
2990
3002
  }
2991
3003
 
3004
+ /** Visual layout for `axp-file-list`. */
3005
+ type AXPFileListLook = 'rows' | 'links';
3006
+
2992
3007
  declare class AXPFileListComponent implements OnInit, OnDestroy {
3008
+ private static readonly DOWNLOAD_DEBOUNCE_MS;
2993
3009
  private fileTypeService;
2994
3010
  private fileStorageService;
2995
3011
  private commandExecutor;
@@ -3004,6 +3020,14 @@ declare class AXPFileListComponent implements OnInit, OnDestroy {
3004
3020
  /** When true, edit dialog shows name, title and description fields. Default false. */
3005
3021
  enableTitleDescription: _angular_core.InputSignal<boolean>;
3006
3022
  multiple: _angular_core.InputSignal<boolean>;
3023
+ /** `rows`: file-type icons and action buttons; `links`: compact paperclip links (download on click). */
3024
+ look: _angular_core.InputSignal<AXPFileListLook>;
3025
+ /** i18n key for links look label (template adds trailing colon). */
3026
+ titleKey: _angular_core.InputSignal<string>;
3027
+ /** When false, links look omits the label (e.g. popover body). */
3028
+ showLabel: _angular_core.InputSignal<boolean>;
3029
+ /** `inline`: label + divider; `menu`: compact list for popovers/panels. */
3030
+ linksLayout: _angular_core.InputSignal<"inline" | "menu">;
3007
3031
  files: _angular_core.InputSignal<AXPFileListItem[]>;
3008
3032
  plugins: _angular_core.InputSignal<{
3009
3033
  name: string;
@@ -3018,6 +3042,8 @@ declare class AXPFileListComponent implements OnInit, OnDestroy {
3018
3042
  displayFiles: _angular_core.Signal<AXPFileListItem[]>;
3019
3043
  private fileIdToActions;
3020
3044
  private globalActions;
3045
+ /** Suppress duplicate downloads from double-click (two click events). */
3046
+ private readonly recentDownloadAtByKey;
3021
3047
  private filesChangeEffect;
3022
3048
  private getDefaultActions;
3023
3049
  /** True when the widget is readonly or this file row is locked (`readOnly`). */
@@ -3026,11 +3052,19 @@ declare class AXPFileListComponent implements OnInit, OnDestroy {
3026
3052
  private loadActionsFor;
3027
3053
  ngOnInit(): Promise<void>;
3028
3054
  private loadGlobalActions;
3055
+ private shouldSkipDuplicateDownload;
3056
+ private downloadDedupeKey;
3057
+ /** Ensures `source` is set for links look and legacy rows that only carry storage id on `id`. */
3058
+ private resolveFileForDownload;
3029
3059
  protected getFileInfo(fileName: string): {
3030
3060
  icon: string;
3031
3061
  type: string;
3032
3062
  };
3033
- handleFileDownload(event: AXClickEvent, file: AXPFileListItem): Promise<void>;
3063
+ /**
3064
+ * Double-click on a file row (rows look) or link row triggers download.
3065
+ */
3066
+ protected handleFileRowActivate(event: Event, file: AXPFileListItem): void;
3067
+ handleFileDownload(event: AXClickEvent | Event, file: AXPFileListItem): Promise<void>;
3034
3068
  handleFileRemove(event: AXClickEvent, file: AXPFileListItem): Promise<void>;
3035
3069
  /**
3036
3070
  * Handle revert action – emit the file so parent components can update the status.
@@ -3044,7 +3078,7 @@ declare class AXPFileListComponent implements OnInit, OnDestroy {
3044
3078
  runAction(action: any): Promise<void>;
3045
3079
  protected getActionColor(action: any): string;
3046
3080
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileListComponent, never>;
3047
- 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; }; "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>;
3081
+ 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>;
3048
3082
  }
3049
3083
 
3050
3084
  /** Stable fingerprint for one file row; ignores Blob binary content. */
@@ -3120,12 +3154,29 @@ declare function isFileUploaderEditDialogAuto(editDialog?: AXPFileUploaderEditDi
3120
3154
  declare function hasFileUploaderTitleOrDescriptionFields(editDialog?: AXPFileUploaderEditDialogOptions): boolean;
3121
3155
 
3122
3156
  declare class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent<AXPFileListItem[]> {
3123
- protected fileCount: _angular_core.WritableSignal<number>;
3157
+ private readonly queryExecutor;
3158
+ private readonly entityResolver;
3159
+ private readonly formatService;
3160
+ private readonly translation;
3161
+ protected readonly fileListTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
3162
+ protected readonly fileListPopover: _angular_core.Signal<AXPopoverComponent | undefined>;
3163
+ protected readonly fileCount: _angular_core.WritableSignal<number>;
3164
+ protected readonly popoverFiles: _angular_core.WritableSignal<AXPFileListItem[]>;
3165
+ protected readonly loadStatus: _angular_core.WritableSignal<"error" | "idle" | "loading" | "ready">;
3166
+ protected readonly loadError: _angular_core.WritableSignal<string | null>;
3167
+ protected readonly isPopoverOpen: _angular_core.WritableSignal<boolean>;
3168
+ private readonly entityDef;
3124
3169
  private loadRequestId;
3125
- private fileService;
3126
- private queryExecutor;
3170
+ private popoverLoadRequestId;
3171
+ private previousRowId;
3172
+ protected readonly entityScope: _angular_core.Signal<_acorex_platform_layout_entity.AXPFileUploaderEntityFilesScope | undefined>;
3173
+ protected readonly popoverTitle: _angular_core.Signal<_acorex_core_translation.AXMultiLanguageString>;
3127
3174
  constructor();
3128
- openFileList(): Promise<void>;
3175
+ protected openFileListPopover(): void;
3176
+ protected onPopoverOpenChange(event: unknown): void;
3177
+ private openPopoverFromRef;
3178
+ private ensurePopoverFilesLoaded;
3179
+ private coercePopoverOpenEvent;
3129
3180
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetColumnComponent, never>;
3130
3181
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetColumnComponent, "axp-file-uploader-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
3131
3182
  }
@@ -3693,7 +3744,9 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
3693
3744
  protected handleCreateClick(_e: AXClickEvent): Promise<void>;
3694
3745
  private executeCreate;
3695
3746
  protected setLoading: (loading: boolean) => void;
3696
- protected setItems: (items: any[]) => void;
3747
+ protected setItems: (items: any[], options?: {
3748
+ origin?: AXPContextUpdateOrigin;
3749
+ }) => void;
3697
3750
  /**
3698
3751
  * Writes expose targets into context using per-path updates.
3699
3752
  * Avoids `contextService.patch()` with nested objects: patch shallow-merges top-level keys only,
@@ -4435,5 +4488,5 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
4435
4488
  }
4436
4489
  declare const AXPShowListViewWorkflow: AXPWorkflow;
4437
4490
 
4438
- export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, 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, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, buildAXPRecordWorkflowInfo, canPersistEntityListState, cloneLayoutArrays, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, hasFileUploaderTitleOrDescriptionFields, isAXPMiddlewareAbortError, isAttachmentListEntry, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, isUnresolvedLookupDisplayTemplate, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapLegacyEntityDataSelectorOptions, mergeForeignKeyFieldIntoCreateActions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, normalizeLookupDisplayTemplate, persistedAttachments, provideEntity, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
4439
- export type { AXPAuditEvent, AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayOptions, AXPLookupPopoverOptions, AXPLookupSelectorRowActionsConfig, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRecordWorkflowInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowListViewCondition, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };
4491
+ export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, 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, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, buildAXPRecordWorkflowInfo, canPersistEntityListState, cloneLayoutArrays, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, commandMessageTextForError, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, hasFileUploaderTitleOrDescriptionFields, isAXPMiddlewareAbortError, isAttachmentListEntry, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, isUnresolvedLookupDisplayTemplate, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapEntityStorageErrorToCommandResult, mapLegacyEntityDataSelectorOptions, mergeForeignKeyFieldIntoCreateActions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, normalizeLookupDisplayTemplate, persistedAttachments, provideEntity, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
4492
+ export type { AXPAuditEvent, AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPFileListLook, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayOptions, AXPLookupPopoverOptions, AXPLookupSelectorRowActionsConfig, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRecordWorkflowInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowListViewCondition, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };
@@ -65,6 +65,7 @@ declare class AXPPageLayoutComponent {
65
65
  overlayLoadingTaskCount: _angular_core.Signal<number>;
66
66
  navigationLoadingTaskCount: _angular_core.Signal<number>;
67
67
  sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
68
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
68
69
  sideMenuWidth: _angular_core.Signal<number>;
69
70
  sideMenuCompactWidth: _angular_core.Signal<number>;
70
71
  menuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -77,6 +78,7 @@ declare class AXPPageLayoutComponent {
77
78
  isOverlayLoading: _angular_core.Signal<boolean>;
78
79
  isNavigationLoading: _angular_core.Signal<boolean>;
79
80
  isMenuHorizontal: _angular_core.Signal<boolean>;
81
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
80
82
  sideMenuDrawerWidth: _angular_core.Signal<number>;
81
83
  changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
82
84
  openSideMenu: () => void;
@@ -101,6 +103,7 @@ declare class AXPPageLayoutComponent {
101
103
  overlayLoadingTaskCount: number;
102
104
  navigationLoadingTaskCount: number;
103
105
  sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
106
+ overlaySideMenuOpen: boolean;
104
107
  sideMenuWidth: number;
105
108
  sideMenuCompactWidth: number;
106
109
  menuVerticalMode: _acorex_platform_themes_shared.AXPMenuVerticalMode;
@@ -139,6 +142,7 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
139
142
  overlayLoadingTaskCount: _angular_core.Signal<number>;
140
143
  navigationLoadingTaskCount: _angular_core.Signal<number>;
141
144
  sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
145
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
142
146
  sideMenuWidth: _angular_core.Signal<number>;
143
147
  sideMenuCompactWidth: _angular_core.Signal<number>;
144
148
  menuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -151,6 +155,7 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
151
155
  isOverlayLoading: _angular_core.Signal<boolean>;
152
156
  isNavigationLoading: _angular_core.Signal<boolean>;
153
157
  isMenuHorizontal: _angular_core.Signal<boolean>;
158
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
154
159
  sideMenuDrawerWidth: _angular_core.Signal<number>;
155
160
  changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
156
161
  openSideMenu: () => void;
@@ -175,6 +180,7 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
175
180
  overlayLoadingTaskCount: number;
176
181
  navigationLoadingTaskCount: number;
177
182
  sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
183
+ overlaySideMenuOpen: boolean;
178
184
  sideMenuWidth: number;
179
185
  sideMenuCompactWidth: number;
180
186
  menuVerticalMode: _acorex_platform_themes_shared.AXPMenuVerticalMode;
@@ -267,6 +273,7 @@ declare class AXPPopupLayoutComponent {
267
273
  overlayLoadingTaskCount: _angular_core.Signal<number>;
268
274
  navigationLoadingTaskCount: _angular_core.Signal<number>;
269
275
  sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
276
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
270
277
  sideMenuWidth: _angular_core.Signal<number>;
271
278
  sideMenuCompactWidth: _angular_core.Signal<number>;
272
279
  menuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -279,6 +286,7 @@ declare class AXPPopupLayoutComponent {
279
286
  isOverlayLoading: _angular_core.Signal<boolean>;
280
287
  isNavigationLoading: _angular_core.Signal<boolean>;
281
288
  isMenuHorizontal: _angular_core.Signal<boolean>;
289
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
282
290
  sideMenuDrawerWidth: _angular_core.Signal<number>;
283
291
  changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
284
292
  openSideMenu: () => void;
@@ -303,6 +311,7 @@ declare class AXPPopupLayoutComponent {
303
311
  overlayLoadingTaskCount: number;
304
312
  navigationLoadingTaskCount: number;
305
313
  sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
314
+ overlaySideMenuOpen: boolean;
306
315
  sideMenuWidth: number;
307
316
  sideMenuCompactWidth: number;
308
317
  menuVerticalMode: _acorex_platform_themes_shared.AXPMenuVerticalMode;
@@ -333,6 +342,7 @@ declare abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {
333
342
  overlayLoadingTaskCount: _angular_core.Signal<number>;
334
343
  navigationLoadingTaskCount: _angular_core.Signal<number>;
335
344
  sideMenuState: _angular_core.Signal<_acorex_platform_themes_shared.AXPSideMenuState>;
345
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
336
346
  sideMenuWidth: _angular_core.Signal<number>;
337
347
  sideMenuCompactWidth: _angular_core.Signal<number>;
338
348
  menuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
@@ -345,6 +355,7 @@ declare abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {
345
355
  isOverlayLoading: _angular_core.Signal<boolean>;
346
356
  isNavigationLoading: _angular_core.Signal<boolean>;
347
357
  isMenuHorizontal: _angular_core.Signal<boolean>;
358
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_themes_shared.AXPMenuVerticalMode>;
348
359
  sideMenuDrawerWidth: _angular_core.Signal<number>;
349
360
  changeThemeMode: (theme: _acorex_platform_themes_shared.AXPThemeMode) => void;
350
361
  openSideMenu: () => void;
@@ -369,6 +380,7 @@ declare abstract class AXPPopupLayoutBaseComponent extends AXBasePageComponent {
369
380
  overlayLoadingTaskCount: number;
370
381
  navigationLoadingTaskCount: number;
371
382
  sideMenuState: _acorex_platform_themes_shared.AXPSideMenuState;
383
+ overlaySideMenuOpen: boolean;
372
384
  sideMenuWidth: number;
373
385
  sideMenuCompactWidth: number;
374
386
  menuVerticalMode: _acorex_platform_themes_shared.AXPMenuVerticalMode;
@@ -496,6 +508,8 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
496
508
  }[]>>;
497
509
  evaluatedPageContent: _angular_core.Signal<AXPWidgetNode[]>;
498
510
  evaluatedTabContentsById: _angular_core.Signal<Record<string, AXPWidgetNode[]>>;
511
+ formIsDirty: _angular_core.Signal<boolean>;
512
+ formBaselineCommitted: _angular_core.Signal<boolean>;
499
513
  icon: _angular_core.Signal<string | null>;
500
514
  content: _angular_core.Signal<_acorex_platform_layout_views.AXPPageContentItem[]>;
501
515
  showPages: _angular_core.Signal<boolean>;
@@ -503,7 +517,7 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
503
517
  isBusy: _angular_core.Signal<boolean>;
504
518
  isSaving: _angular_core.Signal<boolean>;
505
519
  isDirty: _angular_core.Signal<boolean>;
506
- changesCount: _angular_core.Signal<number>;
520
+ changesCount: _angular_core.Signal<1 | 0>;
507
521
  isLoaded: _angular_core.Signal<boolean>;
508
522
  currentPageSelectedRows: _angular_core.Signal<any[]>;
509
523
  currentPageRenderedTabs: _angular_core.Signal<{
@@ -513,7 +527,9 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
513
527
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
514
528
  loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
515
529
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
516
- updateContext: (context: any) => void;
530
+ updateContext: (context: any, formIsDirty?: boolean) => void;
531
+ markFormBaselineCommitted: () => void;
532
+ resetFormBaselineCommitted: () => void;
517
533
  updatePageSelectedRows: (rows: any[]) => void;
518
534
  currentPagePrimaryActions: () => Promise<any>;
519
535
  currentPageSecondaryActions: () => Promise<any>;
@@ -539,7 +555,7 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
539
555
  command?: AXPExecuteCommand;
540
556
  }[]>;
541
557
  discard: () => Promise<void>;
542
- save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<void>;
558
+ save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<boolean>;
543
559
  goToListPage: () => void;
544
560
  } & _ngrx_signals.StateSource<{
545
561
  adapter: AXPLayoutDetailsViewAdapter | null;
@@ -557,6 +573,8 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
557
573
  }>>;
558
574
  evaluatedPageContent: AXPWidgetNode[];
559
575
  evaluatedTabContentsById: Record<string, AXPWidgetNode[]>;
576
+ formIsDirty: boolean;
577
+ formBaselineCommitted: boolean;
560
578
  }>>;
561
579
 
562
580
  declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
@@ -578,6 +596,8 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
578
596
  }[]>>;
579
597
  evaluatedPageContent: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPWidgetNode[]>;
580
598
  evaluatedTabContentsById: _angular_core.Signal<Record<string, _acorex_platform_layout_widget_core.AXPWidgetNode[]>>;
599
+ formIsDirty: _angular_core.Signal<boolean>;
600
+ formBaselineCommitted: _angular_core.Signal<boolean>;
581
601
  icon: _angular_core.Signal<string | null>;
582
602
  content: _angular_core.Signal<_acorex_platform_layout_views.AXPPageContentItem[]>;
583
603
  showPages: _angular_core.Signal<boolean>;
@@ -585,7 +605,7 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
585
605
  isBusy: _angular_core.Signal<boolean>;
586
606
  isSaving: _angular_core.Signal<boolean>;
587
607
  isDirty: _angular_core.Signal<boolean>;
588
- changesCount: _angular_core.Signal<number>;
608
+ changesCount: _angular_core.Signal<1 | 0>;
589
609
  isLoaded: _angular_core.Signal<boolean>;
590
610
  currentPageSelectedRows: _angular_core.Signal<any[]>;
591
611
  currentPageRenderedTabs: _angular_core.Signal<{
@@ -595,7 +615,9 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
595
615
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
596
616
  loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
597
617
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
598
- updateContext: (context: any) => void;
618
+ updateContext: (context: any, formIsDirty?: boolean) => void;
619
+ markFormBaselineCommitted: () => void;
620
+ resetFormBaselineCommitted: () => void;
599
621
  updatePageSelectedRows: (rows: any[]) => void;
600
622
  currentPagePrimaryActions: () => Promise<any>;
601
623
  currentPageSecondaryActions: () => Promise<any>;
@@ -621,7 +643,7 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
621
643
  command?: AXPExecuteCommand;
622
644
  }[]>;
623
645
  discard: () => Promise<void>;
624
- save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<void>;
646
+ save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<boolean>;
625
647
  goToListPage: () => void;
626
648
  } & _ngrx_signals.StateSource<{
627
649
  adapter: AXPLayoutDetailsViewAdapter | null;
@@ -639,6 +661,8 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
639
661
  }>>;
640
662
  evaluatedPageContent: _acorex_platform_layout_widget_core.AXPWidgetNode[];
641
663
  evaluatedTabContentsById: Record<string, _acorex_platform_layout_widget_core.AXPWidgetNode[]>;
664
+ formIsDirty: boolean;
665
+ formBaselineCommitted: boolean;
642
666
  }>;
643
667
  protected router: Router;
644
668
  protected route: ActivatedRoute;
@@ -646,13 +670,41 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
646
670
  protected deviceService: AXPDeviceService;
647
671
  private onSelectionChangeSubscription?;
648
672
  private readonly destroyed$;
673
+ private formBaselineCaptured;
674
+ private formBaselinePageKey;
675
+ private formBaselineTimer?;
676
+ private suppressDirtySync;
677
+ private footerActionsGeneration;
678
+ private static readonly FORM_BASELINE_IDLE_MS;
679
+ /** Save/discard use live {@link AXPLayoutDetailsViewViewModel.isDirty}; other actions use evaluated `visible`. */
680
+ private static isTruthyActionFlag;
649
681
  protected form: _angular_core.Signal<AXFormComponent | undefined>;
650
682
  protected widgetContainer: _angular_core.Signal<AXPWidgetContainerComponent | undefined>;
651
683
  protected footerPrimaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
652
684
  protected footerSecondaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
653
685
  protected footerActions: _angular_core.Signal<AXPActionMenuItem[]>;
686
+ protected rejectFooterCommand: _angular_core.Signal<{
687
+ title: string;
688
+ icon?: string;
689
+ color: string;
690
+ visible?: string | boolean;
691
+ command: AXPExecuteCommand;
692
+ } | null>;
693
+ protected acceptFooterCommand: _angular_core.Signal<{
694
+ title: string;
695
+ icon?: string;
696
+ color: string;
697
+ visible?: string | boolean;
698
+ command: AXPExecuteCommand;
699
+ } | null>;
700
+ protected hasSaveDiscardFooterCommands: _angular_core.Signal<boolean>;
701
+ /** Entity save/discard — driven live by {@link AXPLayoutDetailsViewViewModel.isDirty}, not evaluated action metadata. */
702
+ protected showSaveDiscardFooter: _angular_core.Signal<boolean>;
654
703
  protected hasVisibleFooterPrimaryActions: _angular_core.Signal<boolean>;
655
704
  protected hasVisibleFooterSecondaryActions: _angular_core.Signal<boolean>;
705
+ protected isSaveDiscardFooterAction(action: AXPActionMenuItem): boolean;
706
+ protected isFooterActionVisible(action: AXPActionMenuItem): boolean;
707
+ protected isFooterActionDisabled(action: AXPActionMenuItem): boolean;
656
708
  protected hasFooter: _angular_core.Signal<boolean>;
657
709
  /**
658
710
  * Append timestamp query param to trigger router to re-run guards/resolvers
@@ -661,7 +713,17 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
661
713
  ngOnInit(): Promise<void>;
662
714
  ngAfterViewInit(): Promise<void>;
663
715
  ngOnDestroy(): void;
716
+ private refreshFooterActions;
664
717
  protected handleOnContextChanged(e: AXPContextChangeEvent): void;
718
+ /**
719
+ * Clears widget-store dirty state and schedules a fresh post-hydration baseline (discard / save).
720
+ */
721
+ private resetFormDirtyBaseline;
722
+ /**
723
+ * Commits a clean baseline immediately when widgets are mounted; otherwise defers to idle commit.
724
+ */
725
+ private finalizeFormCleanState;
726
+ private scheduleFormBaselineCommit;
665
727
  protected handleSelectPage(page: AXPLayoutDetailsViewPage): void;
666
728
  protected getAllPrimaryActions(): Promise<AXPLayoutDetailsViewAction[]>;
667
729
  getPrimaryMenuItems(): Promise<AXPActionMenuItem[]>;
@@ -3,7 +3,7 @@ import { Signal, InjectionToken, ComponentRef, OnInit, EventEmitter, OnChanges,
3
3
  import * as _acorex_platform_layout_widget_core from '@acorex/platform/layout/widget-core';
4
4
  import * as _ngrx_signals from '@ngrx/signals';
5
5
  import * as _acorex_platform_core from '@acorex/platform/core';
6
- import { AXPOptionsData, AXPMultiLanguageString, AXPDefinitionCategory, AXPDataType, AXPExpression, AXPWidgetTriggers, AXPMetaData, AXPValueTransformerFunctions, AXPValidationRules, AXPPartialNested, AXPProperty, AXPContextChangeEvent, AXPExpressionEvaluatorService } from '@acorex/platform/core';
6
+ import { AXPOptionsData, AXPMultiLanguageString, AXPDefinitionCategory, AXPDataType, AXPExpression, AXPWidgetTriggers, AXPMetaData, AXPValueTransformerFunctions, AXPValidationRules, AXPPartialNested, AXPContextUpdateOptions, AXPProperty, AXPContextChangeEvent, AXPExpressionEvaluatorService } from '@acorex/platform/core';
7
7
  export { AXPDefinitionCategory, normalizeDefinitionCategories } from '@acorex/platform/core';
8
8
  import { AXValueChangedEvent, AXDataSource } from '@acorex/cdk/common';
9
9
  import { Subject, BehaviorSubject } from 'rxjs';
@@ -46,6 +46,8 @@ type AXPWidgetCoreElementAction = {
46
46
  zone?: 'header' | 'footer';
47
47
  placement?: 'prefix' | 'suffix';
48
48
  scope?: 'primary' | 'secondary';
49
+ /** Keyboard shortcuts that trigger this action (e.g. `'Enter'`, `'ctrl+s'`). */
50
+ shortcuts?: string[];
49
51
  /** When `command` is not `widget:<name>.<action>`, widget name used to resolve `api` for `hidden` / `disabled` expressions. */
50
52
  predicateApiWidgetName?: string;
51
53
  };
@@ -65,6 +67,9 @@ declare class AXPWidgetCoreService {
65
67
  readonly status: Signal<AXPPageStatus>;
66
68
  readonly isBusy: Signal<boolean>;
67
69
  registeredWidgetsCount: _angular_core.WritableSignal<number>;
70
+ /** Bumped when a widget reports dirty-state changes via `api().isDirty()`. */
71
+ private readonly dirtyWidgetsRevision;
72
+ readonly dirtyWidgetsRevisionSignal: Signal<number>;
68
73
  get variables(): any;
69
74
  get functions(): {
70
75
  [key: string]: Function;
@@ -89,6 +94,12 @@ declare class AXPWidgetCoreService {
89
94
  * Returns a list of registered widget ids (names).
90
95
  */
91
96
  listRegisteredWidgetNames(): string[];
97
+ /** Notifies listeners that a widget's composite dirty state may have changed. */
98
+ notifyWidgetDirtyChanged(): void;
99
+ /**
100
+ * Returns whether any registered widget reports dirty state via `api().isDirty()`.
101
+ */
102
+ hasDirtyWidgets(): boolean;
92
103
  ngOnDestroy(): void;
93
104
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetCoreService, never>;
94
105
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetCoreService>;
@@ -396,27 +407,33 @@ declare abstract class AXPBaseWidgetComponent<TOptions extends Record<string, un
396
407
  state: _angular_core.Signal<_acorex_platform_core.AXPContextState>;
397
408
  initialSnapshot: _angular_core.Signal<{}>;
398
409
  previousSnapshot: _angular_core.Signal<{}>;
410
+ userDirtyPaths: _angular_core.Signal<string[]>;
399
411
  lastChange: _ngrx_signals.DeepSignal<_acorex_platform_core.AXPContextChangeEvent>;
400
412
  isChanged: _angular_core.Signal<boolean>;
401
413
  isReset: _angular_core.Signal<boolean>;
402
414
  isInitiated: _angular_core.Signal<boolean>;
403
415
  isEmpty: _angular_core.Signal<boolean>;
404
416
  isDirty: _angular_core.Signal<boolean>;
417
+ isUserDirty: _angular_core.Signal<boolean>;
405
418
  snapshot: _angular_core.Signal<_acorex_platform_core.AXPContextData>;
406
419
  initial: _angular_core.Signal<{}>;
407
420
  previous: _angular_core.Signal<{}>;
408
421
  changeEvent: _angular_core.Signal<_acorex_platform_core.AXPContextChangeEvent>;
409
- update: (path: string, value: any) => void;
410
- patch: (context: Record<string, any>, skipDirtyTracking?: boolean) => void;
422
+ update: (path: string, value: any, options?: AXPContextUpdateOptions) => void;
423
+ applyObjectPaths: (obj: Record<string, unknown>, options?: AXPContextUpdateOptions, prefix?: string) => void;
424
+ patch: (context: Record<string, any>, second?: boolean | _acorex_platform_core.AXPContextPatchOptions) => void;
411
425
  reset: () => void;
412
426
  set: (initialData: any) => void;
413
427
  getValue: (path: string) => any;
414
428
  hasValue: (path: string) => boolean;
429
+ commitBaseline: () => void;
430
+ clearUserDirtyPaths: () => void;
415
431
  } & _ngrx_signals.StateSource<{
416
432
  data: _acorex_platform_core.AXPContextData;
417
433
  state: _acorex_platform_core.AXPContextState;
418
434
  initialSnapshot: {};
419
435
  previousSnapshot: {};
436
+ userDirtyPaths: string[];
420
437
  lastChange: _acorex_platform_core.AXPContextChangeEvent;
421
438
  }>;
422
439
  readonly config: _acorex_platform_layout_widget_core.AXPWidgetConfig<any>;
@@ -476,7 +493,9 @@ declare abstract class AXPValueWidgetComponent<T = any | null, TOptions extends
476
493
  getValue: _angular_core.Signal<T>;
477
494
  protected validationRules: _angular_core.Signal<AXPValidationRules>;
478
495
  protected extractValue(path: string): any;
479
- setValue(value: T | null | undefined): void;
496
+ setValue(value: T | null | undefined, options?: AXPContextUpdateOptions): void;
497
+ /** Persists a user-initiated value change into the shared context store. */
498
+ setUserValue(value: T | null | undefined): void;
480
499
  protected detectFullPath(): void;
481
500
  protected handleValueChanged(e: AXValueChangedEvent<T>): void;
482
501
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPValueWidgetComponent<any, any>, never>;
@@ -777,38 +796,48 @@ declare class AXPWidgetContainerComponent {
777
796
  state: _angular_core.Signal<_acorex_platform_core.AXPContextState>;
778
797
  initialSnapshot: _angular_core.Signal<{}>;
779
798
  previousSnapshot: _angular_core.Signal<{}>;
799
+ userDirtyPaths: _angular_core.Signal<string[]>;
780
800
  lastChange: _ngrx_signals.DeepSignal<AXPContextChangeEvent>;
781
801
  isChanged: _angular_core.Signal<boolean>;
782
802
  isReset: _angular_core.Signal<boolean>;
783
803
  isInitiated: _angular_core.Signal<boolean>;
784
804
  isEmpty: _angular_core.Signal<boolean>;
785
805
  isDirty: _angular_core.Signal<boolean>;
806
+ isUserDirty: _angular_core.Signal<boolean>;
786
807
  snapshot: _angular_core.Signal<_acorex_platform_core.AXPContextData>;
787
808
  initial: _angular_core.Signal<{}>;
788
809
  previous: _angular_core.Signal<{}>;
789
810
  changeEvent: _angular_core.Signal<AXPContextChangeEvent>;
790
- update: (path: string, value: any) => void;
791
- patch: (context: Record<string, any>, skipDirtyTracking?: boolean) => void;
811
+ update: (path: string, value: any, options?: _acorex_platform_core.AXPContextUpdateOptions) => void;
812
+ applyObjectPaths: (obj: Record<string, unknown>, options?: _acorex_platform_core.AXPContextUpdateOptions, prefix?: string) => void;
813
+ patch: (context: Record<string, any>, second?: boolean | _acorex_platform_core.AXPContextPatchOptions) => void;
792
814
  reset: () => void;
793
815
  set: (initialData: any) => void;
794
816
  getValue: (path: string) => any;
795
817
  hasValue: (path: string) => boolean;
818
+ commitBaseline: () => void;
819
+ clearUserDirtyPaths: () => void;
796
820
  } & _ngrx_signals.StateSource<{
797
821
  data: _acorex_platform_core.AXPContextData;
798
822
  state: _acorex_platform_core.AXPContextState;
799
823
  initialSnapshot: {};
800
824
  previousSnapshot: {};
825
+ userDirtyPaths: string[];
801
826
  lastChange: AXPContextChangeEvent;
802
827
  }>;
803
828
  readonly builderService: AXPWidgetCoreService;
804
829
  readonly onContextChanged: EventEmitter<AXPContextChangeEvent>;
805
830
  set context(value: any);
806
831
  set functions(v: any);
832
+ /** True when user-edited context paths or composite widgets report dirty state. */
833
+ readonly isFormDirty: _angular_core.Signal<boolean>;
807
834
  constructor();
808
835
  status: _angular_core.Signal<_acorex_platform_layout_widget_core.AXPPageStatus>;
809
836
  isBusy: _angular_core.Signal<boolean>;
810
837
  refresh(): void;
811
838
  find(name: string): Promise<_acorex_platform_layout_widget_core.AXPWidgetCoreElement | undefined>;
839
+ /** Replaces context and clears dirty tracking (discard, save reload, external reset). */
840
+ replaceContext(value: unknown): void;
812
841
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetContainerComponent, never>;
813
842
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetContainerComponent, "axp-widgets-container", never, { "context": { "alias": "context"; "required": false; }; "functions": { "alias": "functions"; "required": false; }; }, { "onContextChanged": "onContextChanged"; }, never, ["*"], false, never>;
814
843
  }
@@ -976,27 +1005,33 @@ declare class AXPWidgetRendererDirective {
976
1005
  state: _angular_core.Signal<_acorex_platform_core.AXPContextState>;
977
1006
  initialSnapshot: _angular_core.Signal<{}>;
978
1007
  previousSnapshot: _angular_core.Signal<{}>;
1008
+ userDirtyPaths: _angular_core.Signal<string[]>;
979
1009
  lastChange: _ngrx_signals.DeepSignal<_acorex_platform_core.AXPContextChangeEvent>;
980
1010
  isChanged: _angular_core.Signal<boolean>;
981
1011
  isReset: _angular_core.Signal<boolean>;
982
1012
  isInitiated: _angular_core.Signal<boolean>;
983
1013
  isEmpty: _angular_core.Signal<boolean>;
984
1014
  isDirty: _angular_core.Signal<boolean>;
1015
+ isUserDirty: _angular_core.Signal<boolean>;
985
1016
  snapshot: _angular_core.Signal<_acorex_platform_core.AXPContextData>;
986
1017
  initial: _angular_core.Signal<{}>;
987
1018
  previous: _angular_core.Signal<{}>;
988
1019
  changeEvent: _angular_core.Signal<_acorex_platform_core.AXPContextChangeEvent>;
989
- update: (path: string, value: any) => void;
990
- patch: (context: Record<string, any>, skipDirtyTracking?: boolean) => void;
1020
+ update: (path: string, value: any, options?: _acorex_platform_core.AXPContextUpdateOptions) => void;
1021
+ applyObjectPaths: (obj: Record<string, unknown>, options?: _acorex_platform_core.AXPContextUpdateOptions, prefix?: string) => void;
1022
+ patch: (context: Record<string, any>, second?: boolean | _acorex_platform_core.AXPContextPatchOptions) => void;
991
1023
  reset: () => void;
992
1024
  set: (initialData: any) => void;
993
1025
  getValue: (path: string) => any;
994
1026
  hasValue: (path: string) => boolean;
1027
+ commitBaseline: () => void;
1028
+ clearUserDirtyPaths: () => void;
995
1029
  } & _ngrx_signals.StateSource<{
996
1030
  data: _acorex_platform_core.AXPContextData;
997
1031
  state: _acorex_platform_core.AXPContextState;
998
1032
  initialSnapshot: {};
999
1033
  previousSnapshot: {};
1034
+ userDirtyPaths: string[];
1000
1035
  lastChange: _acorex_platform_core.AXPContextChangeEvent;
1001
1036
  }>;
1002
1037
  protected widgetRegistery: AXPWidgetRegistryService;