@acorex/platform 20.7.10 → 20.7.12

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.
@@ -17,8 +17,6 @@ import { AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';
17
17
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
18
18
  import { AXCalendarService } from '@acorex/core/date-time';
19
19
  import { AXTreeViewNode, AXTreeViewDragBehavior, AXTreeViewDragArea, AXTreeViewComponent, AXTreeViewBeforeDropEvent, AXTreeViewDropEvent } from '@acorex/components/tree-view';
20
- import { AXDialogService } from '@acorex/components/dialog';
21
- import { AXToastService } from '@acorex/components/toast';
22
20
  import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
23
21
  import { AXFormComponent } from '@acorex/components/form';
24
22
  import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
@@ -771,39 +769,77 @@ declare class AXPImageEditorService {
771
769
  }
772
770
 
773
771
  /**
774
- * Menu item interface for customizer
772
+ * Menu item type definitions.
773
+ * - 'menu': Standard navigable menu item
774
+ * - 'group': Menu group/category header
775
+ * - 'break': Visual separator/divider
776
+ */
777
+ type AXPMenuCustomizerItemType = 'menu' | 'group' | 'break';
778
+ /**
779
+ * Menu item interface for customizer.
780
+ * Represents a single menu item with its properties.
775
781
  */
776
782
  interface AXPMenuCustomizerItem {
783
+ /** Unique identifier/key for the menu item */
777
784
  name?: string;
785
+ /** Display text (can be an i18n key) */
778
786
  text?: string;
787
+ /** Icon class (e.g., 'fa-light fa-home') */
779
788
  icon?: string;
789
+ /** Navigation path/route */
780
790
  path?: string;
781
- type?: 'menu' | 'group' | 'break';
791
+ /** Type of menu item */
792
+ type?: AXPMenuCustomizerItemType;
793
+ /** Priority for ordering (lower = higher priority) */
782
794
  priority?: number;
795
+ /** Description/tooltip text */
783
796
  description?: string;
797
+ /** Child menu items */
784
798
  children?: AXPMenuCustomizerItem[];
785
799
  }
786
800
  /**
787
- * Metadata for menu tree nodes
801
+ * Metadata for menu tree nodes.
802
+ * Contains flags and original values for tracking customizations.
788
803
  */
789
804
  interface AXPMenuCustomizerNodeMetadata {
805
+ /** Whether this is a built-in (system) menu item */
790
806
  isBuiltIn: boolean;
807
+ /** Whether this is a custom (user-created) menu item */
791
808
  isCustom: boolean;
809
+ /** Whether this menu item is currently hidden */
792
810
  isHidden: boolean;
811
+ /** Original priority before any customizations */
793
812
  originalPriority?: number;
813
+ /** Original parent name before any move operations */
794
814
  originalParentName?: string;
795
815
  }
796
816
  /**
797
- * Data structure for tree node combining menu item with metadata
817
+ * Data structure for tree node combining menu item with metadata.
818
+ * This is stored in the tree node's 'data' field.
798
819
  */
799
820
  interface AXPMenuCustomizerNodeData {
821
+ /** The menu item properties */
800
822
  menuItem: AXPMenuCustomizerItem;
823
+ /** Metadata about the menu item's state */
801
824
  metadata: AXPMenuCustomizerNodeMetadata;
802
825
  }
803
826
  /**
804
- * Available actions that can be performed on menu items
827
+ * Available actions that can be performed on menu items.
805
828
  */
806
829
  type AXPMenuCustomizerAction = 'show' | 'hide' | 'edit' | 'delete' | 'add-child' | 'move';
830
+ /**
831
+ * Component state for loading/error handling.
832
+ */
833
+ type AXPMenuCustomizerState = {
834
+ status: 'idle';
835
+ } | {
836
+ status: 'loading';
837
+ } | {
838
+ status: 'success';
839
+ } | {
840
+ status: 'error';
841
+ message: string;
842
+ };
807
843
  /**
808
844
  * Abstract service interface for menu customization operations.
809
845
  * Implement this interface and provide it via AXP_MENU_CUSTOMIZER_SERVICE token.
@@ -856,101 +892,228 @@ declare const AXP_MENU_CUSTOMIZER_SERVICE: InjectionToken<AXPMenuCustomizerServi
856
892
  * and manage menu items using a tree-like interface.
857
893
  * Can be used standalone or within popups/dialogs.
858
894
  *
859
- * Requires providing AXP_MENU_CUSTOMIZER_SERVICE with an implementation of AXPMenuCustomizerService.
895
+ * @description
896
+ * This component provides a visual interface for customizing menu structures.
897
+ * It supports:
898
+ * - Drag and drop reordering of menu items
899
+ * - Showing/hiding menu items
900
+ * - Adding custom menu items
901
+ * - Editing menu item properties
902
+ * - Resetting customizations to defaults
903
+ *
904
+ * @example
905
+ * ```html
906
+ * <axp-menu-customizer
907
+ * [scopeKey]="'edition:my-edition'"
908
+ * [showToolbar]="true"
909
+ * [allowAddItems]="true"
910
+ * (saved)="onSaved()"
911
+ * />
912
+ * ```
913
+ *
914
+ * @requires AXP_MENU_CUSTOMIZER_SERVICE - Must provide an implementation of AXPMenuCustomizerService
860
915
  */
861
- declare class AXPMenuCustomizerComponent implements OnInit, OnDestroy {
862
- private menuCustomizerService;
863
- private layoutBuilder;
864
- protected dialogService: AXDialogService;
865
- protected toastService: AXToastService;
866
- private translationService;
916
+ declare class AXPMenuCustomizerComponent implements OnInit {
917
+ private readonly menuCustomizerService;
918
+ private readonly layoutBuilder;
919
+ private readonly dialogService;
920
+ private readonly toastService;
921
+ private readonly translationService;
922
+ private readonly destroyRef;
867
923
  /** The scope key for loading/saving menu customizations (e.g., 'edition:{id}', 'tenant:{id}') */
868
924
  scopeKey: _angular_core.InputSignal<string>;
869
925
  /** Whether to show the toolbar with collapse/expand/reset actions */
870
926
  showToolbar: _angular_core.InputSignal<boolean>;
871
927
  /** Whether to allow adding custom menu items */
872
928
  allowAddItems: _angular_core.InputSignal<boolean>;
873
- /** Drag behavior for the tree view: 'none' | 'move' | 'copy' */
929
+ /** Drag behavior for the tree view: 'none' | 'order-only' | 'move' | 'both' */
874
930
  dragBehavior: _angular_core.InputSignal<AXTreeViewDragBehavior>;
875
- /** Drag area for the tree view: 'node' | 'handler' */
931
+ /** Drag area for the tree view: 'handler' | 'item' */
876
932
  dragArea: _angular_core.InputSignal<AXTreeViewDragArea>;
877
933
  /** Emitted when changes are saved */
878
934
  saved: _angular_core.OutputEmitterRef<void>;
879
935
  /** Emitted when the customizer is closed/cancelled */
880
936
  cancelled: _angular_core.OutputEmitterRef<void>;
881
- protected tree: _angular_core.Signal<AXTreeViewComponent | undefined>;
882
- protected treeNodes: _angular_core.WritableSignal<AXTreeViewNode[]>;
883
- protected isLoading: _angular_core.WritableSignal<boolean>;
884
- protected error: _angular_core.WritableSignal<string>;
937
+ /** Reference to the tree view component */
938
+ protected readonly tree: _angular_core.Signal<AXTreeViewComponent | undefined>;
939
+ /** Tree nodes data source */
940
+ protected readonly treeNodes: _angular_core.WritableSignal<AXTreeViewNode[]>;
941
+ /** Current loading/error state */
942
+ protected readonly state: _angular_core.WritableSignal<AXPMenuCustomizerState>;
943
+ /** Flag to prevent concurrent sync operations */
885
944
  private isSyncing;
886
- private destroy$;
945
+ /** Whether the component is currently loading */
946
+ protected readonly isLoading: _angular_core.Signal<boolean>;
947
+ /** Whether there is an error state */
948
+ protected readonly hasError: _angular_core.Signal<boolean>;
949
+ /** The current error message, if any */
950
+ protected readonly errorMessage: _angular_core.Signal<string>;
951
+ /** Whether the tree has nodes to display */
952
+ protected readonly hasNodes: _angular_core.Signal<boolean>;
953
+ /** Whether to show the content (tree view) */
954
+ protected readonly showContent: _angular_core.Signal<boolean>;
955
+ /** Whether to show the empty state */
956
+ protected readonly showEmptyState: _angular_core.Signal<boolean>;
887
957
  ngOnInit(): Promise<void>;
888
- ngOnDestroy(): void;
889
958
  /**
890
- * Handle before drop validation
959
+ * Handle before drop validation.
960
+ * Prevents dropping into items with paths (leaf nodes that can't have children).
961
+ *
962
+ * @param event - The before drop event from tree view
963
+ */
964
+ protected handleBeforeDrop(event: AXTreeViewBeforeDropEvent): void;
965
+ /**
966
+ * Handle order change event (reordering within the same parent).
967
+ *
968
+ * @param event - The drop event from tree view
891
969
  */
892
- handleBeforeDrop(e: AXTreeViewBeforeDropEvent): Promise<void>;
970
+ protected handleOrderChange(event: AXTreeViewDropEvent): Promise<void>;
893
971
  /**
894
- * Handle after drop event to sync changes
895
- * The event contains information about the moved node and its new position
972
+ * Handle move change event (moving to a different parent).
973
+ *
974
+ * @param event - The drop event from tree view
896
975
  */
897
- handleAfterDrop(event: AXTreeViewDropEvent): Promise<void>;
976
+ protected handleMoveChange(event: AXTreeViewDropEvent): Promise<void>;
898
977
  /**
899
- * Load menu tree for current scope
978
+ * Load menu tree for current scope.
979
+ * Updates the component state to loading, then success or error.
980
+ * Creates new array reference to ensure UI updates.
900
981
  */
901
982
  loadMenuItems(): Promise<void>;
902
983
  /**
903
- * Sync tree changes to backend
984
+ * Sync tree changes to backend.
985
+ * Prevents concurrent sync operations using the isSyncing flag.
986
+ * Reloads data with new reference after successful sync.
904
987
  */
905
988
  private syncTreeChanges;
906
989
  /**
907
- * Collapse all tree nodes
990
+ * Collapse all tree nodes.
908
991
  */
909
992
  collapseAll(): void;
910
993
  /**
911
- * Expand all tree nodes
994
+ * Expand all tree nodes.
912
995
  */
913
- expandAll(): void;
996
+ expandAll(): Promise<void>;
914
997
  /**
915
- * Reset all customizations
998
+ * Reset all customizations to defaults.
999
+ * Shows a confirmation dialog before resetting.
916
1000
  */
917
1001
  resetCustomizations(): Promise<void>;
918
1002
  /**
919
- * Add new root menu item
1003
+ * Add new root menu item.
1004
+ * Opens the menu item dialog without a parent.
920
1005
  */
921
1006
  addRootMenuItem(): Promise<void>;
922
1007
  /**
923
- * Handle menu item action
1008
+ * Reload the menu items from the service.
1009
+ * Useful for external refresh triggers.
1010
+ */
1011
+ refresh(): Promise<void>;
1012
+ /**
1013
+ * Handle menu item action dispatched from the template.
1014
+ *
1015
+ * @param action - The action to perform
1016
+ * @param nodeData - The node data to perform the action on
924
1017
  */
925
1018
  protected onAction(action: AXPMenuCustomizerAction, nodeData: AXPMenuCustomizerNodeData): Promise<void>;
926
1019
  /**
927
- * Add new child menu item
1020
+ * Add new child menu item to a parent.
1021
+ *
1022
+ * @param parentNodeData - The parent node data
928
1023
  */
929
- protected addChildMenuItem(parentNodeData: AXPMenuCustomizerNodeData): Promise<void>;
1024
+ private addChildMenuItem;
930
1025
  /**
931
- * Show menu item
1026
+ * Show a hidden menu item.
1027
+ *
1028
+ * @param nodeData - The node data containing the menu item to show
932
1029
  */
933
1030
  private showMenuItem;
934
1031
  /**
935
- * Hide menu item
1032
+ * Hide a menu item.
1033
+ *
1034
+ * @param nodeData - The node data containing the menu item to hide
936
1035
  */
937
1036
  private hideMenuItem;
938
1037
  /**
939
- * Edit menu item
1038
+ * Edit a menu item.
1039
+ *
1040
+ * @param nodeData - The node data containing the menu item to edit
940
1041
  */
941
1042
  private editMenuItem;
942
1043
  /**
943
- * Delete custom menu item
1044
+ * Delete a custom menu item.
1045
+ * Shows a confirmation dialog before deleting.
1046
+ *
1047
+ * @param nodeData - The node data containing the menu item to delete
944
1048
  */
945
1049
  private deleteMenuItem;
946
1050
  /**
947
- * Show menu item dialog (add/edit)
1051
+ * Show menu item dialog (add/edit).
1052
+ *
1053
+ * @param nodeData - The node data for editing, or null for adding
1054
+ * @param parentName - The parent menu name for adding child items
948
1055
  */
949
1056
  private showMenuItemDialog;
950
1057
  /**
951
- * Execute a menu action with common error handling
1058
+ * Build the dialog context for add/edit dialog.
1059
+ *
1060
+ * @param item - The menu item to build context for, or undefined for new items
1061
+ */
1062
+ private buildDialogContext;
1063
+ /**
1064
+ * Build the dialog form fields.
1065
+ * Note: Priority is not included as item order is controlled by drag-drop.
1066
+ *
1067
+ * @param flex - The flex layout builder
1068
+ * @param isEdit - Whether this is an edit operation
1069
+ * @param isBuiltIn - Whether the item is built-in
1070
+ */
1071
+ private buildDialogFields;
1072
+ /**
1073
+ * Save menu item (create or update).
1074
+ *
1075
+ * @param formData - The form data from the dialog
1076
+ * @param nodeData - The original node data (for edit) or null (for add)
1077
+ * @param parentName - The parent menu name (for add child)
1078
+ * @param isEdit - Whether this is an edit operation
1079
+ */
1080
+ private saveMenuItem;
1081
+ /**
1082
+ * Execute a menu action with common error handling and reload.
1083
+ *
1084
+ * @param action - The action to execute
1085
+ * @param successMessageKey - The i18n key for success message
1086
+ * @param errorMessageKey - The i18n key for error message
952
1087
  */
953
1088
  private executeMenuAction;
1089
+ /**
1090
+ * Show a confirmation dialog.
1091
+ *
1092
+ * @param titleKey - The i18n key for the dialog title
1093
+ * @param messageKey - The i18n key for the dialog message
1094
+ * @returns True if confirmed, false otherwise
1095
+ */
1096
+ private confirmAction;
1097
+ /**
1098
+ * Show a success toast message.
1099
+ *
1100
+ * @param messageKey - The i18n key for the message
1101
+ */
1102
+ private showSuccessMessage;
1103
+ /**
1104
+ * Show an error toast message.
1105
+ *
1106
+ * @param messageKey - The i18n key for the message
1107
+ */
1108
+ private showErrorMessage;
1109
+ /**
1110
+ * Show a warning toast message.
1111
+ *
1112
+ * @param messageKey - The i18n key for the message
1113
+ */
1114
+ private showWarningMessage;
1115
+ private readonly eff;
1116
+ private readonly eff2;
954
1117
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPMenuCustomizerComponent, never>;
955
1118
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMenuCustomizerComponent, "axp-menu-customizer", never, { "scopeKey": { "alias": "scopeKey"; "required": true; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "allowAddItems": { "alias": "allowAddItems"; "required": false; "isSignal": true; }; "dragBehavior": { "alias": "dragBehavior"; "required": false; "isSignal": true; }; "dragArea": { "alias": "dragArea"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
956
1119
  }
@@ -1997,4 +2160,4 @@ declare class AXPWidgetPropertyViewerService {
1997
2160
  }
1998
2161
 
1999
2162
  export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPImageEditorPopupComponent, AXPImageEditorService, AXPLogoComponent, AXPMenuBadgeHelper, AXPMenuCustomizerComponent, AXPMenuCustomizerService, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPSpreadsheetComponent, AXPStateMessageComponent, AXPStopwatchComponent, AXPTableColumnsEditorComponent, AXPTableColumnsEditorPopupComponent, AXPTableColumnsEditorService, AXPTableDataEditorComponent, AXPTableDataEditorPopupComponent, AXPTableDataEditorService, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_MENU_CUSTOMIZER_SERVICE, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, buildTableColumnsEditorLayout };
2000
- export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPImageEditorOpenOptions, AXPMenuCustomizerAction, AXPMenuCustomizerItem, AXPMenuCustomizerNodeData, AXPMenuCustomizerNodeMetadata, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPTableColumnDefinition, AXPTableColumnsEditorOpenOptions, AXPTableDataEditorOpenOptions, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, StateMode };
2163
+ export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPImageEditorOpenOptions, AXPMenuCustomizerAction, AXPMenuCustomizerItem, AXPMenuCustomizerItemType, AXPMenuCustomizerNodeData, AXPMenuCustomizerNodeMetadata, AXPMenuCustomizerState, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPTableColumnDefinition, AXPTableColumnsEditorOpenOptions, AXPTableDataEditorOpenOptions, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, StateMode };
@@ -1,4 +1,4 @@
1
- import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPUserReference, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPExpressionEvaluatorService, AXPActionMenuItem } from '@acorex/platform/core';
1
+ import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPUserReference, AXPQueryRequest, AXPPagedListResult, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem } from '@acorex/platform/core';
2
2
  import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
3
3
  import * as _angular_core from '@angular/core';
4
4
  import { ElementRef, InjectionToken, Injector, Type, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
@@ -1864,7 +1864,6 @@ declare class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
1864
1864
  protected deviceService: AXPDeviceService;
1865
1865
  protected commandService: AXPCommandService;
1866
1866
  protected eventService: AXPBroadcastEventService;
1867
- protected expressionEvaluator: AXPExpressionEvaluatorService;
1868
1867
  protected isMounted: _angular_core.WritableSignal<boolean>;
1869
1868
  readonly entity: _angular_core.WritableSignal<AXPEntity | null>;
1870
1869
  protected listNode: _angular_core.WritableSignal<AXPWidgetNode | null>;
@@ -2388,6 +2388,7 @@ declare class AXPGalleryWidgetEditComponent extends AXPValueWidgetComponent<AXPF
2388
2388
  protected header: _angular_core.Signal<boolean>;
2389
2389
  protected fileInfo: _angular_core.Signal<boolean>;
2390
2390
  protected fullScreenButton: _angular_core.Signal<boolean>;
2391
+ protected downloadButton: _angular_core.Signal<boolean>;
2391
2392
  protected allowUploadTypes: _angular_core.Signal<string[]>;
2392
2393
  protected allowUpload: _angular_core.Signal<boolean>;
2393
2394
  protected plugins: _angular_core.Signal<{
@@ -2399,6 +2400,8 @@ declare class AXPGalleryWidgetEditComponent extends AXPValueWidgetComponent<AXPF
2399
2400
  private readonly hooks;
2400
2401
  private readonly fileActionsService;
2401
2402
  private readonly fileStorageService;
2403
+ private readonly loadingDialog;
2404
+ private readonly translationService;
2402
2405
  private gallery;
2403
2406
  /**
2404
2407
  * Convert AXPFileListItem[] to AXMediaViewerData[] for display in media viewer.
@@ -2408,6 +2411,8 @@ declare class AXPGalleryWidgetEditComponent extends AXPValueWidgetComponent<AXPF
2408
2411
  private readonly innerActions;
2409
2412
  protected readonly fileActions: _angular_core.Signal<AXCFileUploaderAction[]>;
2410
2413
  ngOnInit(): void;
2414
+ /** Downloads the file at the current media viewer index. */
2415
+ protected download(): Promise<void>;
2411
2416
  private loadActions;
2412
2417
  /**
2413
2418
  * Format file size with appropriate unit (B, KB, MB, GB, etc.)
@@ -2450,13 +2455,20 @@ interface AXPMediaInfo {
2450
2455
  }
2451
2456
 
2452
2457
  declare class AXPGalleryWidgetViewComponent extends AXPValueWidgetComponent<any> {
2458
+ private readonly loadingDialog;
2459
+ private readonly translationService;
2453
2460
  protected internalValue: Signal<any[]>;
2454
2461
  protected multiple: Signal<boolean>;
2455
2462
  protected height: Signal<string>;
2463
+ protected header: Signal<boolean>;
2464
+ protected fullScreenButton: Signal<boolean>;
2465
+ protected downloadButton: Signal<boolean>;
2456
2466
  protected thumbnails: Signal<AXPMediaItem[]>;
2457
2467
  protected activeMedia: WritableSignal<AXPMediaItem | undefined>;
2458
2468
  ngAfterViewInit(): void;
2459
2469
  changeMediaSelected(media: AXPMediaItem): void;
2470
+ /** Downloads the currently active media file. */
2471
+ protected download(): Promise<void>;
2460
2472
  protected getMediaInfo(mediaName: string): AXPMediaInfo;
2461
2473
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPGalleryWidgetViewComponent, never>;
2462
2474
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPGalleryWidgetViewComponent, "axp-gallery-widget-view", never, {}, {}, never, never, true, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/platform",
3
- "version": "20.7.10",
3
+ "version": "20.7.12",
4
4
  "peerDependencies": {
5
5
  "@acorex/cdk": "^19.0.0 || ^20.0.0 || ^21.0.0-next.0",
6
6
  "@acorex/core": "^19.0.0 || ^20.0.0 || ^21.0.0-next.0",
@@ -67,6 +67,10 @@
67
67
  "types": "./layout/designer/index.d.ts",
68
68
  "default": "./fesm2022/acorex-platform-layout-designer.mjs"
69
69
  },
70
+ "./layout/entity": {
71
+ "types": "./layout/entity/index.d.ts",
72
+ "default": "./fesm2022/acorex-platform-layout-entity.mjs"
73
+ },
70
74
  "./layout/views": {
71
75
  "types": "./layout/views/index.d.ts",
72
76
  "default": "./fesm2022/acorex-platform-layout-views.mjs"
@@ -79,10 +83,6 @@
79
83
  "types": "./layout/widgets/index.d.ts",
80
84
  "default": "./fesm2022/acorex-platform-layout-widgets.mjs"
81
85
  },
82
- "./layout/entity": {
83
- "types": "./layout/entity/index.d.ts",
84
- "default": "./fesm2022/acorex-platform-layout-entity.mjs"
85
- },
86
86
  "./themes/default": {
87
87
  "types": "./themes/default/index.d.ts",
88
88
  "default": "./fesm2022/acorex-platform-themes-default.mjs"