@acorex/platform 20.2.0-next.1 → 20.2.0-next.3

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 (95) hide show
  1. package/auth/index.d.ts +71 -17
  2. package/common/index.d.ts +25 -42
  3. package/core/index.d.ts +104 -9
  4. package/fesm2022/acorex-platform-auth.mjs +320 -121
  5. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-common.mjs +133 -115
  7. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-core.mjs +276 -37
  9. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-domain.mjs +16 -16
  11. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-builder.mjs +88 -67
  13. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-components.mjs +137 -83
  15. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-designer.mjs +262 -218
  17. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-layout-entity.mjs +1040 -104
  19. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-layout-views.mjs +15 -15
  21. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-native.mjs +7 -7
  23. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-runtime.mjs +40 -40
  25. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  26. package/fesm2022/{acorex-platform-themes-default-create-entity-view.component-CzHp6G3a.mjs → acorex-platform-themes-default-create-entity-view.component-DBkuhSDb.mjs} +4 -4
  27. package/fesm2022/{acorex-platform-themes-default-create-entity-view.component-CzHp6G3a.mjs.map → acorex-platform-themes-default-create-entity-view.component-DBkuhSDb.mjs.map} +1 -1
  28. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-8S2CXBAi.mjs +115 -0
  29. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-8S2CXBAi.mjs.map +1 -0
  30. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DJdedfa_.mjs → acorex-platform-themes-default-entity-master-list-view.component-Bf8N5e5h.mjs} +27 -25
  31. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DJdedfa_.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-Bf8N5e5h.mjs.map} +1 -1
  32. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-Cn-0fTWn.mjs → acorex-platform-themes-default-entity-master-modify-view.component-DF0gS61P.mjs} +5 -5
  33. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DF0gS61P.mjs.map +1 -0
  34. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-B8XrO58H.mjs → acorex-platform-themes-default-entity-master-single-view.component-CEnHe_cU.mjs} +8 -8
  35. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CEnHe_cU.mjs.map +1 -0
  36. package/fesm2022/{acorex-platform-themes-default-error-401.component-Ycd9latx.mjs → acorex-platform-themes-default-error-401.component-BYI4xP23.mjs} +4 -4
  37. package/fesm2022/{acorex-platform-themes-default-error-401.component-Ycd9latx.mjs.map → acorex-platform-themes-default-error-401.component-BYI4xP23.mjs.map} +1 -1
  38. package/fesm2022/{acorex-platform-themes-default-error-404.component-DHbzH27Q.mjs → acorex-platform-themes-default-error-404.component-1gM0Vlbv.mjs} +4 -4
  39. package/fesm2022/{acorex-platform-themes-default-error-404.component-DHbzH27Q.mjs.map → acorex-platform-themes-default-error-404.component-1gM0Vlbv.mjs.map} +1 -1
  40. package/fesm2022/{acorex-platform-themes-default-error-offline.component-BSdZOCbW.mjs → acorex-platform-themes-default-error-offline.component-Y3w3K60c.mjs} +4 -4
  41. package/fesm2022/{acorex-platform-themes-default-error-offline.component-BSdZOCbW.mjs.map → acorex-platform-themes-default-error-offline.component-Y3w3K60c.mjs.map} +1 -1
  42. package/fesm2022/acorex-platform-themes-default.mjs +66 -54
  43. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  44. package/fesm2022/{acorex-platform-themes-shared-color-chooser-column.component-EZGn900W.mjs → acorex-platform-themes-shared-color-chooser-column.component-BLFvyMvH.mjs} +4 -4
  45. package/fesm2022/{acorex-platform-themes-shared-color-chooser-column.component-EZGn900W.mjs.map → acorex-platform-themes-shared-color-chooser-column.component-BLFvyMvH.mjs.map} +1 -1
  46. package/fesm2022/{acorex-platform-themes-shared-color-chooser-view.component-DTLYX00a.mjs → acorex-platform-themes-shared-color-chooser-view.component-CN1lEEOY.mjs} +4 -4
  47. package/fesm2022/{acorex-platform-themes-shared-color-chooser-view.component-DTLYX00a.mjs.map → acorex-platform-themes-shared-color-chooser-view.component-CN1lEEOY.mjs.map} +1 -1
  48. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-DMPET9Fu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-UJ2abdzQ.mjs} +4 -4
  49. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-DMPET9Fu.mjs.map → acorex-platform-themes-shared-icon-chooser-view.component-UJ2abdzQ.mjs.map} +1 -1
  50. package/fesm2022/acorex-platform-themes-shared.mjs +65 -52
  51. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  52. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-BUx-nksc.mjs → acorex-platform-widgets-button-widget-designer.component-BMsEt6Lq.mjs} +4 -4
  53. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-BUx-nksc.mjs.map → acorex-platform-widgets-button-widget-designer.component-BMsEt6Lq.mjs.map} +1 -1
  54. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CezBQ0iO.mjs +85 -0
  55. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CezBQ0iO.mjs.map +1 -0
  56. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-Dj3Go0tj.mjs → acorex-platform-widgets-checkbox-widget-designer.component-BkH4hBUc.mjs} +4 -4
  57. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-Dj3Go0tj.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-BkH4hBUc.mjs.map} +1 -1
  58. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-Y12esByc.mjs → acorex-platform-widgets-checkbox-widget-view.component-BwlHVBRW.mjs} +19 -6
  59. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BwlHVBRW.mjs.map +1 -0
  60. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-CihtTd0F.mjs → acorex-platform-widgets-color-box-widget-designer.component-BPLG8mY4.mjs} +4 -4
  61. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-CihtTd0F.mjs.map → acorex-platform-widgets-color-box-widget-designer.component-BPLG8mY4.mjs.map} +1 -1
  62. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-n3nuXZNq.mjs → acorex-platform-widgets-file-list-popup.component-Bwbrw1xo.mjs} +4 -4
  63. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-n3nuXZNq.mjs.map → acorex-platform-widgets-file-list-popup.component-Bwbrw1xo.mjs.map} +1 -1
  64. package/fesm2022/{acorex-platform-widgets-file-rename-popup.component-DBRV6X7W.mjs → acorex-platform-widgets-file-rename-popup.component-CXRHtjFu.mjs} +4 -4
  65. package/fesm2022/{acorex-platform-widgets-file-rename-popup.component-DBRV6X7W.mjs.map → acorex-platform-widgets-file-rename-popup.component-CXRHtjFu.mjs.map} +1 -1
  66. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-D_970YBz.mjs → acorex-platform-widgets-page-widget-designer.component-Cf5bTu-k.mjs} +6 -6
  67. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-Cf5bTu-k.mjs.map +1 -0
  68. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-DPuTM42n.mjs → acorex-platform-widgets-rich-text-popup.component-DOGwSrH1.mjs} +4 -4
  69. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-DPuTM42n.mjs.map → acorex-platform-widgets-rich-text-popup.component-DOGwSrH1.mjs.map} +1 -1
  70. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-BH1_BkJh.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-CFg2-tyF.mjs} +4 -4
  71. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-BH1_BkJh.mjs.map → acorex-platform-widgets-tabular-data-edit-popup.component-CFg2-tyF.mjs.map} +1 -1
  72. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-DCsLuXR9.mjs → acorex-platform-widgets-tabular-data-view-popup.component-BvVF-vJF.mjs} +4 -4
  73. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-DCsLuXR9.mjs.map → acorex-platform-widgets-tabular-data-view-popup.component-BvVF-vJF.mjs.map} +1 -1
  74. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-C_iu3jCG.mjs → acorex-platform-widgets-text-block-widget-designer.component-BhXq3JZ1.mjs} +4 -4
  75. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-C_iu3jCG.mjs.map → acorex-platform-widgets-text-block-widget-designer.component-BhXq3JZ1.mjs.map} +1 -1
  76. package/fesm2022/acorex-platform-widgets.mjs +744 -701
  77. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  78. package/fesm2022/acorex-platform-workflow.mjs +33 -25
  79. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  80. package/layout/builder/index.d.ts +6 -29
  81. package/layout/components/index.d.ts +62 -2
  82. package/layout/designer/index.d.ts +11 -20
  83. package/layout/entity/index.d.ts +302 -7
  84. package/package.json +5 -5
  85. package/themes/default/index.d.ts +2 -1
  86. package/widgets/index.d.ts +14 -16
  87. package/workflow/index.d.ts +154 -18
  88. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-nzWNHDO7.mjs +0 -115
  89. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-nzWNHDO7.mjs.map +0 -1
  90. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Cn-0fTWn.mjs.map +0 -1
  91. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B8XrO58H.mjs.map +0 -1
  92. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-C7mpTEda.mjs +0 -56
  93. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-C7mpTEda.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-Y12esByc.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-D_970YBz.mjs.map +0 -1
@@ -541,11 +541,14 @@ declare abstract class AXPValueWidgetComponent<T = any | null> extends AXPLayout
541
541
  }
542
542
  declare abstract class AXPDataListWidgetComponent extends AXPValueWidgetComponent<any> {
543
543
  private dataService;
544
- protected dataSource: _angular_core.WritableSignal<AXDataSource<unknown>>;
545
544
  protected textField: _angular_core.Signal<string>;
546
545
  protected valueField: _angular_core.Signal<string>;
546
+ protected dataSource: _angular_core.WritableSignal<AXDataSource<unknown>>;
547
+ protected isReady: _angular_core.Signal<boolean>;
547
548
  selectedItems: _angular_core.WritableSignal<any[]>;
548
549
  private rf;
550
+ protected extractItem(item: unknown): Promise<any>;
551
+ private effect2;
549
552
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataListWidgetComponent, never>;
550
553
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataListWidgetComponent>;
551
554
  }
@@ -658,32 +661,6 @@ declare class AXPLayoutBuilderModule {
658
661
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPLayoutBuilderModule>;
659
662
  }
660
663
 
661
- interface AXPWidgetDataSourceColumn {
662
- name: string;
663
- title: string;
664
- type?: string;
665
- }
666
- interface AXPWidgetDataSource<T = any> {
667
- name: string;
668
- title: string;
669
- valueField: string;
670
- textField: string;
671
- columns: AXPWidgetDataSourceColumn[];
672
- samples?: any[];
673
- source: () => AXDataSource<T> | Promise<AXDataSource<T>>;
674
- }
675
- interface AXPWidgetDataSourceProvider {
676
- items(): Promise<AXPWidgetDataSource[]>;
677
- }
678
- declare const AXP_WIDGET_DATASOURCE_PROVIDER: InjectionToken<AXPWidgetDataSourceProvider[]>;
679
- declare class AXPWidgetDataSourceProviderService implements AXPWidgetDataSourceProvider {
680
- private providers;
681
- items(): Promise<AXPWidgetDataSource[]>;
682
- get(name: string): Promise<AXPWidgetDataSource | undefined>;
683
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetDataSourceProviderService, never>;
684
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetDataSourceProviderService>;
685
- }
686
-
687
664
  interface AXPMetaDataDefinition {
688
665
  name: string;
689
666
  title: string;
@@ -693,5 +670,5 @@ interface AXPMetaDataDefinition {
693
670
 
694
671
  declare const AXPWidgetsCatalog: AXPWidgetTypesMap;
695
672
 
696
- export { AXPBaseWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPLayoutBuilderContextStore, AXPLayoutBuilderModule, AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPLayoutElement, AXPLayoutWidgetComponent, AXPPageStatus, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetDataSourceProviderService, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetStatus, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_DATASOURCE_PROVIDER, AXP_WIDGET_TOKEN, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty };
697
- export type { AXPExtractWidgetConfig, AXPLayoutBuilderModuleConfigs, AXPLayoutBuilderStatusChangedEvent, AXPLayoutContextState, AXPLayoutElementAPI, AXPMetaDataDefinition, AXPWidgetCategory, AXPWidgetColumnNode, AXPWidgetColumnNodeToken, AXPWidgetComponentConfig, AXPWidgetConfig, AXPWidgetConfigComponents, AXPWidgetDataSource, AXPWidgetDataSourceColumn, AXPWidgetDataSourceProvider, AXPWidgetDesignerOptionsMap, AXPWidgetGroup, AXPWidgetNode, AXPWidgetNodeToken, AXPWidgetProperty, AXPWidgetPropertyGroup, AXPWidgetRenderMode, AXPWidgetRendererDirectiveOptions, AXPWidgetTypesMap, AXPWidgetViewType, extendedWidget };
673
+ export { AXPBaseWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPLayoutBuilderContextStore, AXPLayoutBuilderModule, AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPLayoutElement, AXPLayoutWidgetComponent, AXPPageStatus, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetStatus, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty };
674
+ export type { AXPExtractWidgetConfig, AXPLayoutBuilderModuleConfigs, AXPLayoutBuilderStatusChangedEvent, AXPLayoutContextState, AXPLayoutElementAPI, AXPMetaDataDefinition, AXPWidgetCategory, AXPWidgetColumnNode, AXPWidgetColumnNodeToken, AXPWidgetComponentConfig, AXPWidgetConfig, AXPWidgetConfigComponents, AXPWidgetDesignerOptionsMap, AXPWidgetGroup, AXPWidgetNode, AXPWidgetNodeToken, AXPWidgetProperty, AXPWidgetPropertyGroup, AXPWidgetRenderMode, AXPWidgetRendererDirectiveOptions, AXPWidgetTypesMap, AXPWidgetViewType, extendedWidget };
@@ -591,5 +591,65 @@ declare class AXPUserAvatarComponent implements OnInit, OnDestroy {
591
591
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPUserAvatarComponent, "axp-user-avatar", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "userId": { "alias": "userId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
592
592
  }
593
593
 
594
- export { AXPActivityLogComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDynamicFormComponent, AXPLayoutFiltersComponent, AXPMenuBadgeHelper, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER };
595
- export type { AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDynamicFormDefinition, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLayoutConfig, AXPDynamicFormLayoutStyle, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus };
594
+ /**
595
+ * Generic interface for widget item data
596
+ */
597
+ interface AXPWidgetItemData {
598
+ /** Display title of the widget */
599
+ title: string;
600
+ /** Description text for the widget */
601
+ description?: string;
602
+ /** Icon class (e.g., FontAwesome classes) */
603
+ icon?: string;
604
+ /** Whether the widget is pinned/favorited */
605
+ isPinned: boolean;
606
+ /** Generic data payload - can be any type based on use case */
607
+ data?: unknown;
608
+ }
609
+ /**
610
+ * Event data for widget item interactions
611
+ */
612
+ interface AXPWidgetItemClickEvent<T = unknown> {
613
+ /** The mouse event */
614
+ event: MouseEvent;
615
+ /** The widget item data */
616
+ widget: AXPWidgetItemData & {
617
+ data?: T;
618
+ };
619
+ }
620
+
621
+ /**
622
+ * Generic widget item component for displaying selectable widgets with icons, titles, and descriptions.
623
+ * Can be used across different modules for consistent widget display and interaction.
624
+ */
625
+ declare class AXPWidgetItemComponent {
626
+ /** The widget data to display */
627
+ widget: _angular_core.InputSignal<AXPWidgetItemData>;
628
+ /** Whether this widget is currently selected */
629
+ isSelected: _angular_core.InputSignal<boolean>;
630
+ /** Whether to show the pin button */
631
+ showPinButton: _angular_core.InputSignal<boolean>;
632
+ /** Custom CSS classes to apply to the widget item */
633
+ customClasses: _angular_core.InputSignal<string>;
634
+ /** Emitted when the widget item is clicked */
635
+ onWidgetClick: _angular_core.OutputEmitterRef<AXPWidgetItemClickEvent<unknown>>;
636
+ /** Emitted when the pin button is clicked */
637
+ onPinClick: _angular_core.OutputEmitterRef<AXPWidgetItemClickEvent<unknown>>;
638
+ /**
639
+ * Handle widget item click event
640
+ */
641
+ handleClick(event: MouseEvent): void;
642
+ /**
643
+ * Handle pin button click event
644
+ */
645
+ handlePinClick(event: MouseEvent): void;
646
+ /**
647
+ * Get the effective icon to display
648
+ */
649
+ getIconClass(): string;
650
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetItemComponent, never>;
651
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetItemComponent, "axp-widget-item", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "isSelected": { "alias": "isSelected"; "required": false; "isSignal": true; }; "showPinButton": { "alias": "showPinButton"; "required": false; "isSignal": true; }; "customClasses": { "alias": "customClasses"; "required": false; "isSignal": true; }; }, { "onWidgetClick": "onWidgetClick"; "onPinClick": "onPinClick"; }, never, never, true, never>;
652
+ }
653
+
654
+ export { AXPActivityLogComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDynamicFormComponent, AXPLayoutFiltersComponent, AXPMenuBadgeHelper, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetItemComponent, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER };
655
+ export type { AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDynamicFormDefinition, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLayoutConfig, AXPDynamicFormLayoutStyle, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData };
@@ -4,7 +4,8 @@ import { EventEmitter, OnChanges, OnDestroy, WritableSignal, NgZone, SimpleChang
4
4
  import { AXBasePageComponent } from '@acorex/components/page';
5
5
  import { AXTabStripChangedEvent } from '@acorex/components/tabs';
6
6
  import * as _acorex_platform_layout_builder from '@acorex/platform/layout/builder';
7
- import { AXPWidgetConfig, AXPWidgetCategory, AXPWidgetGroupEnum, AXPWidgetNode, AXPBaseWidgetComponent, AXPWidgetRegistryService, AXPLayoutWidgetComponent, AXPWidgetDataSourceProviderService, AXPLayoutContextChangeEvent, AXPWidgetDataSource, AXPWidgetProperty } from '@acorex/platform/layout/builder';
7
+ import { AXPWidgetConfig, AXPWidgetCategory, AXPWidgetGroupEnum, AXPWidgetNode, AXPBaseWidgetComponent, AXPWidgetRegistryService, AXPLayoutWidgetComponent, AXPLayoutContextChangeEvent, AXPWidgetProperty } from '@acorex/platform/layout/builder';
8
+ import { AXPWidgetItemData, AXPWidgetItemClickEvent } from '@acorex/platform/layout/components';
8
9
  import { AXMenuItem } from '@acorex/components/menu';
9
10
  import { Subject } from 'rxjs';
10
11
  import { AXPBroadcastEventService } from '@acorex/platform/core';
@@ -50,7 +51,7 @@ declare class AXPDesignerGridDrawerComponent {
50
51
  protected rangeC: _angular_core.WritableSignal<number>;
51
52
  protected handleMouseHover(r: number, c: number): void;
52
53
  protected handleClick(r: number, c: number): void;
53
- private handleMouseLeave;
54
+ protected handleMouseLeave(event: MouseEvent): void;
54
55
  private get __style();
55
56
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDesignerGridDrawerComponent, never>;
56
57
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDesignerGridDrawerComponent, "axp-designer-grid-drawer", never, { "rowsCount": { "alias": "rows"; "required": false; "isSignal": true; }; "colsCount": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "rowsCount": "rowsChange"; "colsCount": "columnsChange"; "onSelect": "onSelect"; }, never, never, true, never>;
@@ -71,6 +72,8 @@ declare class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
71
72
  private orderedList;
72
73
  protected pinnedList: _angular_core.Signal<AXPDisplayWidgetConfig[]>;
73
74
  protected regularList: _angular_core.Signal<AXPDisplayWidgetConfig[]>;
75
+ protected pinnedWidgetItems: _angular_core.Signal<AXPWidgetItemData[]>;
76
+ protected regularWidgetItems: _angular_core.Signal<AXPWidgetItemData[]>;
74
77
  protected categories: _angular_core.Signal<AXPWidgetCategory[]>;
75
78
  protected tabs: _angular_core.Signal<AXPWidgetCategory[]>;
76
79
  protected maxVisibleWidgets: _angular_core.Signal<number>;
@@ -78,9 +81,10 @@ declare class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
78
81
  protected selectedTab: _angular_core.Signal<AXPWidgetCategory>;
79
82
  protected ngOnInit(): Promise<void>;
80
83
  protected handleTabChange(event: AXTabStripChangedEvent): void;
81
- protected handleClick(event: MouseEvent, widget: AXPDisplayWidgetConfig): void;
82
- protected handlePinClick(e: MouseEvent, widget: AXPDisplayWidgetConfig): Promise<void>;
84
+ protected handleWidgetClick(clickEvent: AXPWidgetItemClickEvent): void;
85
+ protected handleWidgetPinClick(clickEvent: AXPWidgetItemClickEvent): Promise<void>;
83
86
  protected isWidgetSelected(widget: AXPDisplayWidgetConfig): boolean;
87
+ protected isWidgetItemSelected(widgetItem: AXPWidgetItemData): boolean;
84
88
  protected handleConfirmSelection(): void;
85
89
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDesignerWidgetPickerComponent, never>;
86
90
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDesignerWidgetPickerComponent, "ng-component", never, { "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; }, { "searchTerm": "searchTermChange"; }, never, never, true, never>;
@@ -325,11 +329,13 @@ declare function cloneWidgetMenu(item: AXMenuItem, options?: Partial<AXMenuItem>
325
329
  declare class AXPWidgetDesignerRendererDirective implements OnChanges, OnDestroy {
326
330
  protected mergedOptions: WritableSignal<any>;
327
331
  private injector;
328
- protected widgetRegistery: AXPWidgetRegistryService;
332
+ protected widgetRegistry: AXPWidgetRegistryService;
329
333
  protected zone: NgZone;
330
334
  protected isLoading: WritableSignal<boolean>;
331
335
  private instance;
332
336
  private config?;
337
+ private isLoadingComponent;
338
+ private currentNodeId;
333
339
  private service;
334
340
  private viewContainerRef;
335
341
  parentNode: _angular_core.InputSignal<AXPLayoutWidgetComponent | null | undefined>;
@@ -367,17 +373,12 @@ declare class AXPLayoutDesignerPreviewViewerComponent {
367
373
  protected readonly document: _angular_core.WritableSignal<AXPWidgetNode>;
368
374
  protected readonly currentPageIndex: _angular_core.WritableSignal<number>;
369
375
  protected connector: AXPDesignerConnector<any>;
370
- protected dataSourceProvider: AXPWidgetDataSourceProviderService;
371
376
  protected eventService: AXPBroadcastEventService;
372
377
  protected unsubscriber: AXUnsubscriber;
373
378
  protected readonly currentPage: _angular_core.Signal<AXPWidgetNode>;
374
379
  constructor();
375
380
  ngAfterViewInit(): void;
376
381
  protected handleContextChanged(e: AXPLayoutContextChangeEvent): void;
377
- protected functions: {
378
- getDataSourceNames: (name: string) => Promise<AXPWidgetDataSource | undefined>;
379
- };
380
- private getDataSources;
381
382
  ngOnDestroy(): void;
382
383
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDesignerPreviewViewerComponent, never>;
383
384
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerPreviewViewerComponent, "axp-layout-builder-viewer", never, {}, {}, never, never, true, never>;
@@ -422,7 +423,6 @@ declare class AXPWidgetPropertyViewerComponent {
422
423
  mode: _angular_core.InputSignal<"simple" | "advanced">;
423
424
  private widgetRegistryService;
424
425
  protected connector: AXPDesignerConnector<any>;
425
- protected dataSourceProvider: AXPWidgetDataSourceProviderService;
426
426
  protected currentTabIndex: WritableSignal<number>;
427
427
  protected config: WritableSignal<AXPWidgetConfig<any> | null>;
428
428
  protected allPoperties: AXPWidgetProperty[];
@@ -443,15 +443,6 @@ declare class AXPWidgetPropertyViewerComponent {
443
443
  protected handleContextChange(e: AXPLayoutContextChangeEvent): void;
444
444
  protected handleTabChange(event: AXTabStripChangedEvent): void;
445
445
  protected handleCollapsedChange(group: string, collapsed: boolean): void;
446
- protected functions: {
447
- getDataSourceNames: () => Promise<{
448
- id: string;
449
- title: string;
450
- valueField: string;
451
- textField: string;
452
- }[]>;
453
- };
454
- private getDataSourceNames;
455
446
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
456
447
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerComponent, "axp-widget-property-viewer", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "onChanged": "onChanged"; }, never, never, true, never>;
457
448
  }
@@ -1,8 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Injector, Type } from '@angular/core';
3
- import { AXStyleColorType, AXDataSource } from '@acorex/cdk/common';
2
+ import { InjectionToken, Injector, EnvironmentProviders, Type } from '@angular/core';
3
+ import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption } from '@acorex/cdk/common';
4
4
  import * as _acorex_platform_common from '@acorex/platform/common';
5
- import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPRelatedEntity, AXPEntitySectionView, AXPGridLayoutOptions, AXPEntityPropertyCreateView, AXPQueryView, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityDetailListView, AXPQueryFilter } from '@acorex/platform/common';
5
+ import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPRelatedEntity, AXPEntitySectionView, AXPGridLayoutOptions, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityDetailListView, AXPQueryFilter } from '@acorex/platform/common';
6
6
  import { AXPMetaData, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPAppStartUpService } from '@acorex/platform/core';
7
7
  import * as i3 from '@acorex/platform/layout/builder';
8
8
  import { AXPWidgetColumnNode, AXPWidgetNode, AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
@@ -112,7 +112,7 @@ declare class AXPEntityCreateViewElementViewModel {
112
112
  description: _angular_core.WritableSignal<string | undefined>;
113
113
  editable: _angular_core.Signal<boolean>;
114
114
  isRequired: _angular_core.Signal<boolean>;
115
- layout: _angular_core.Signal<AXPGridLayoutOptions>;
115
+ layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
116
116
  node: _angular_core.Signal<AXPWidgetNode>;
117
117
  }
118
118
  declare class AXPEntityMasterCreateViewModel {
@@ -250,6 +250,7 @@ declare class AXPEntityMasterSingleViewGroupViewModel {
250
250
  group: _acorex_platform_common.AXPEntityPropertyGroup;
251
251
  name: _angular_core.WritableSignal<string>;
252
252
  isLoading: _angular_core.WritableSignal<boolean>;
253
+ type: _angular_core.WritableSignal<"wrapper" | "section">;
253
254
  title: _angular_core.Signal<string>;
254
255
  description: _angular_core.Signal<string | null | undefined>;
255
256
  layout: _angular_core.Signal<AXPGridLayoutOptions>;
@@ -283,6 +284,7 @@ declare class AXPEntityMasterSingleViewModel {
283
284
  private readonly destroyed;
284
285
  private translateService;
285
286
  private entityService;
287
+ private expressionEvaluator;
286
288
  constructor(injector: Injector, config: AXPEntity, entityData: any);
287
289
  context: _angular_core.WritableSignal<any>;
288
290
  private actions;
@@ -293,6 +295,7 @@ declare class AXPEntityMasterSingleViewModel {
293
295
  title: _angular_core.Signal<string>;
294
296
  description: _angular_core.Signal<string | null>;
295
297
  beardcrumbs: _angular_core.Signal<AXPBreadcrumbItem[]>;
298
+ private evaluateExpressions;
296
299
  relatedEntities: _angular_core.Signal<Promise<AXPEntityDetailListViewModel[]>>;
297
300
  executeCommand(commandName: string, data?: any): Promise<void>;
298
301
  execute(command: AXPExecuteCommand): Promise<void>;
@@ -317,7 +320,7 @@ declare class AXPEntityMasterUpdateElementViewModel {
317
320
  description: _angular_core.WritableSignal<string | undefined>;
318
321
  editable: _angular_core.Signal<boolean>;
319
322
  isRequired: _angular_core.Signal<boolean>;
320
- layout: _angular_core.Signal<AXPGridLayoutOptions>;
323
+ layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
321
324
  node: _angular_core.Signal<AXPWidgetNode>;
322
325
  }
323
326
  declare class AXPEntityMasterUpdateViewModel {
@@ -595,6 +598,7 @@ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailD
595
598
  deleteOne(id: TKey): Promise<void>;
596
599
  updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
597
600
  query(request?: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
601
+ findOne(filter: AXDataSourceFilterOption): Promise<TListItemDto>;
598
602
  getRoots(request: {}): Promise<AXPPagedListResult<TListItemDto>>;
599
603
  getChildren(request: {
600
604
  parentId: TKey;
@@ -607,6 +611,296 @@ declare class AXMEntityCrudServiceImpl<TKey, TDetailDto extends AXPEntityDetailD
607
611
  get storageService(): AXPEntityStorageService<any, any, any, any, any>;
608
612
  }
609
613
 
614
+ /**
615
+ * Context object for entity storage operations
616
+ */
617
+ interface AXPEntityStorageContext<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
618
+ /** Operation type being performed */
619
+ operation: 'getOne' | 'getAll' | 'insertOne' | 'updateOne' | 'deleteOne' | 'query' | 'initial';
620
+ /** Entity name */
621
+ entityName: string;
622
+ /** Database name */
623
+ dbName: string;
624
+ /** Input parameters for the operation */
625
+ input: {
626
+ id?: TKey;
627
+ entity?: TCreateDto;
628
+ keyValues?: Omit<Partial<TUpdateDto>, 'id'>;
629
+ request?: AXPQueryRequest;
630
+ collection?: TCreateDto[];
631
+ options?: {
632
+ mergeType?: 'merge' | 'replace';
633
+ uniqueKeys?: string[];
634
+ };
635
+ };
636
+ /** Metadata for the operation */
637
+ metadata: {
638
+ startTime: number;
639
+ requestId: string;
640
+ user?: any;
641
+ [key: string]: any;
642
+ };
643
+ }
644
+ /**
645
+ * Entity Storage Middleware function type
646
+ */
647
+ type AXPEntityStorageMiddleware<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any, TResult = any> = (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, next: (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => Promise<TResult>) => Promise<TResult>;
648
+ /**
649
+ * Compose entity storage middlewares into a pipeline
650
+ */
651
+ declare function composeEntityStorageMiddlewares<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any, TResult = any>(middlewares: AXPEntityStorageMiddleware<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto, TResult>[]): (handler: (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => Promise<TResult>) => (context: AXPEntityStorageContext<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>) => Promise<TResult>;
652
+ /**
653
+ * Helper function to generate unique request ID
654
+ */
655
+ declare function generateRequestId(): string;
656
+
657
+ /**
658
+ * Registry for managing entity storage middlewares
659
+ */
660
+ declare class AXPEntityStorageRegistry {
661
+ private globalMiddlewares;
662
+ private entitySpecificMiddlewares;
663
+ private operationSpecificMiddlewares;
664
+ /**
665
+ * Add a global middleware that applies to all operations
666
+ */
667
+ useGlobal(middleware: AXPEntityStorageMiddleware): void;
668
+ /**
669
+ * Add middleware for specific entity
670
+ */
671
+ useForEntity(entityName: string, middleware: AXPEntityStorageMiddleware): void;
672
+ /**
673
+ * Add middleware for specific operation (getOne, insertOne, etc.)
674
+ */
675
+ useForOperation(operation: string, middleware: AXPEntityStorageMiddleware): void;
676
+ /**
677
+ * Get all applicable middlewares for a given context
678
+ */
679
+ getMiddlewares(entityName: string, operation: string): AXPEntityStorageMiddleware[];
680
+ /**
681
+ * Get all global middlewares
682
+ */
683
+ getGlobalMiddlewares(): readonly AXPEntityStorageMiddleware[];
684
+ /**
685
+ * Remove middleware from global middlewares
686
+ */
687
+ removeGlobalMiddleware(middleware: AXPEntityStorageMiddleware): boolean;
688
+ /**
689
+ * Clear all middlewares
690
+ */
691
+ clear(): void;
692
+ /**
693
+ * Get registered entity names that have specific middlewares
694
+ */
695
+ getRegisteredEntityNames(): string[];
696
+ /**
697
+ * Get registered operation names that have specific middlewares
698
+ */
699
+ getRegisteredOperations(): string[];
700
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityStorageRegistry, never>;
701
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityStorageRegistry>;
702
+ }
703
+
704
+ /**
705
+ * Executor that wraps entity storage operations with middleware pipeline
706
+ */
707
+ declare class AXPEntityStorageExecutor<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> {
708
+ private storageService;
709
+ private readonly injector;
710
+ private readonly registry;
711
+ constructor(storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>);
712
+ /**
713
+ * Execute getOne operation with middleware pipeline
714
+ */
715
+ getOne(entityName: string, id: TKey): Promise<TDetailDto>;
716
+ /**
717
+ * Execute getAll operation with middleware pipeline
718
+ */
719
+ getAll(entityName: string): Promise<TListItemDto[]>;
720
+ /**
721
+ * Execute insertOne operation with middleware pipeline
722
+ */
723
+ insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
724
+ /**
725
+ * Execute updateOne operation with middleware pipeline
726
+ */
727
+ updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
728
+ /**
729
+ * Execute deleteOne operation with middleware pipeline
730
+ */
731
+ deleteOne(entityName: string, id: TKey): Promise<void>;
732
+ /**
733
+ * Execute query operation with middleware pipeline
734
+ */
735
+ query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
736
+ /**
737
+ * Execute initial operation with middleware pipeline
738
+ */
739
+ initial(entityName: string, collection: TCreateDto[], options?: {
740
+ mergeType?: 'merge' | 'replace';
741
+ uniqueKeys?: string[];
742
+ }): Promise<TCreateDto[]>;
743
+ /**
744
+ * Execute operation with middleware pipeline
745
+ */
746
+ private executeWithMiddleware;
747
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityStorageExecutor<any, any, any, any, any>, never>;
748
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityStorageExecutor<any, any, any, any, any>>;
749
+ }
750
+
751
+ /**
752
+ * Entity Storage Service with middleware support
753
+ *
754
+ * This service wraps the original AXPEntityStorageService and adds middleware pipeline support.
755
+ * It delegates all operations to the middleware executor which applies the middleware chain.
756
+ */
757
+ declare class AXPEntityStorageWithMiddlewareService<TKey = any, TDetailDto extends AXPEntityDetailDto<TKey> = any, TListItemDto extends AXPEntityListItemDto<TKey> = any, TCreateDto extends AXPEntityCreateDto = any, TUpdateDto extends AXPEntityUpdateDto<TKey> = any> extends AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto> {
758
+ private originalStorageService;
759
+ private registry;
760
+ private executor;
761
+ constructor(originalStorageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>, registry: AXPEntityStorageRegistry);
762
+ get dbName(): string;
763
+ /**
764
+ * Add a global middleware that applies to all operations
765
+ */
766
+ useGlobal(middleware: AXPEntityStorageMiddleware): void;
767
+ /**
768
+ * Add middleware for specific entity
769
+ */
770
+ useForEntity(entityName: string, middleware: AXPEntityStorageMiddleware): void;
771
+ /**
772
+ * Add middleware for specific operation
773
+ */
774
+ useForOperation(operation: string, middleware: AXPEntityStorageMiddleware): void;
775
+ initial(entityName: string, collection: TCreateDto[], options?: {
776
+ mergeType?: 'merge' | 'replace';
777
+ uniqueKeys?: string[];
778
+ }): Promise<TCreateDto[]>;
779
+ getOne(entityName: string, id: TKey): Promise<TDetailDto>;
780
+ updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;
781
+ deleteOne(entityName: string, id: TKey): Promise<void>;
782
+ insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;
783
+ getAll(entityName: string): Promise<TListItemDto[]>;
784
+ query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;
785
+ get originalService(): AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>;
786
+ get middlewareRegistry(): AXPEntityStorageRegistry;
787
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityStorageWithMiddlewareService<any, any, any, any, any>, never>;
788
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityStorageWithMiddlewareService<any, any, any, any, any>>;
789
+ }
790
+
791
+ /**
792
+ * Injection token for entity storage middleware setup
793
+ */
794
+ declare const AXP_ENTITY_STORAGE_MIDDLEWARE_SETUP: InjectionToken<void>;
795
+ /**
796
+ * Injection token for entity storage middleware extensions
797
+ */
798
+ declare const AXP_ENTITY_STORAGE_EXTENSION: InjectionToken<{
799
+ target: string | RegExp;
800
+ middleware: AXPEntityStorageMiddleware;
801
+ }>;
802
+ /**
803
+ * Configuration for entity-specific middleware
804
+ */
805
+ interface AXPEntityStorageMiddlewareConfig {
806
+ /** Global middlewares that apply to all operations */
807
+ global?: AXPEntityStorageMiddleware[];
808
+ /** Entity-specific middlewares */
809
+ entities?: {
810
+ [entityName: string]: AXPEntityStorageMiddleware[];
811
+ };
812
+ /** Operation-specific middlewares */
813
+ operations?: {
814
+ [operation: string]: AXPEntityStorageMiddleware[];
815
+ };
816
+ /** Advanced middleware configurations with targets */
817
+ extensions?: {
818
+ target: string | RegExp;
819
+ middleware: AXPEntityStorageMiddleware;
820
+ }[];
821
+ }
822
+ /**
823
+ * Provide entity storage middleware configuration
824
+ */
825
+ declare function provideEntityStorageMiddleware(config: AXPEntityStorageMiddlewareConfig): EnvironmentProviders;
826
+ /**
827
+ * Simplified provider for global middleware only
828
+ */
829
+ declare function provideGlobalEntityStorageMiddleware(middlewares: AXPEntityStorageMiddleware[]): EnvironmentProviders;
830
+ /**
831
+ * Provider for entity-specific middlewares
832
+ */
833
+ declare function provideEntitySpecificMiddleware(entityName: string, middlewares: AXPEntityStorageMiddleware[]): EnvironmentProviders;
834
+ /**
835
+ * Provider for operation-specific middlewares
836
+ */
837
+ declare function provideOperationSpecificMiddleware(operation: string, middlewares: AXPEntityStorageMiddleware[]): EnvironmentProviders;
838
+
839
+ /**
840
+ * Logging middleware for entity storage operations
841
+ */
842
+ declare const loggingMiddleware: AXPEntityStorageMiddleware;
843
+ /**
844
+ * Performance monitoring middleware
845
+ */
846
+ declare const performanceMiddleware: AXPEntityStorageMiddleware;
847
+ /**
848
+ * Error handling middleware with retry logic
849
+ */
850
+ declare const errorHandlingMiddleware: AXPEntityStorageMiddleware;
851
+ /**
852
+ * Validation middleware
853
+ */
854
+ declare const validationMiddleware: AXPEntityStorageMiddleware;
855
+ /**
856
+ * Caching middleware (simple in-memory cache)
857
+ */
858
+ declare const cachingMiddleware: AXPEntityStorageMiddleware;
859
+
860
+ /**
861
+ * Audit trail entry interface
862
+ */
863
+ interface AXPAuditEntry {
864
+ id: string;
865
+ entityName: string;
866
+ operation: string;
867
+ entityId?: any;
868
+ changes?: any;
869
+ user?: string;
870
+ timestamp: Date;
871
+ requestId: string;
872
+ metadata?: any;
873
+ }
874
+ /**
875
+ * Audit trail storage interface
876
+ */
877
+ interface AXPAuditStorage {
878
+ save(entry: AXPAuditEntry): Promise<void>;
879
+ }
880
+ /**
881
+ * Simple in-memory audit storage (for demo purposes)
882
+ */
883
+ declare class InMemoryAuditStorage implements AXPAuditStorage {
884
+ private entries;
885
+ save(entry: AXPAuditEntry): Promise<void>;
886
+ getEntries(): AXPAuditEntry[];
887
+ getEntriesForEntity(entityName: string): AXPAuditEntry[];
888
+ clear(): void;
889
+ }
890
+ declare const auditStorage: InMemoryAuditStorage;
891
+ /**
892
+ * Audit middleware that tracks all entity operations
893
+ */
894
+ declare const auditMiddleware: AXPEntityStorageMiddleware;
895
+ /**
896
+ * User context middleware - adds user information to context
897
+ */
898
+ declare const userContextMiddleware: AXPEntityStorageMiddleware;
899
+ /**
900
+ * Data sanitization middleware - removes sensitive data from logs
901
+ */
902
+ declare const dataSanitizationMiddleware: AXPEntityStorageMiddleware;
903
+
610
904
  interface AXPEntityConfigs {
611
905
  viewers: {
612
906
  root: () => Type<any> | Promise<Type<any>>;
@@ -781,10 +1075,11 @@ declare function entityMasterBulkDeleteAction(): AXPEntityAction;
781
1075
  declare function entityMasterViewAction(): AXPEntityAction;
782
1076
  declare function entityMasterDeleteAction(): AXPEntityAction;
783
1077
  declare function entityMasterCrudActions(): AXPEntityAction[];
1078
+ declare function entityMasterRecordActions(): AXPEntityAction[];
784
1079
  declare function entityDetailsCreateActions(parentId: string): AXPEntityAction;
785
1080
  declare function entityDetailsSimpleCondition(fk: string): AXPQueryFilter;
786
1081
  declare function entityDetailsEditAction(): AXPEntityAction;
787
1082
  declare function entityDetailsCrudActions(parentId: string): AXPEntityAction[];
788
1083
 
789
- export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPModifyEntitySectionWorkflow, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, createModifierContext, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterViewAction };
790
- export type { AXPAuditable, AXPDataSeeder, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityUpdateDto };
1084
+ export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageExecutor, AXPEntityStorageRegistry, AXPEntityStorageService, AXPEntityStorageWithMiddlewareService, AXPModifyEntitySectionWorkflow, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_EXTENSION, AXP_ENTITY_STORAGE_MIDDLEWARE_SETUP, auditMiddleware, auditStorage, cachingMiddleware, composeEntityStorageMiddlewares, createModifierContext, dataSanitizationMiddleware, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, errorHandlingMiddleware, generateRequestId, loggingMiddleware, performanceMiddleware, provideEntitySpecificMiddleware, provideEntityStorageMiddleware, provideGlobalEntityStorageMiddleware, provideOperationSpecificMiddleware, userContextMiddleware, validationMiddleware };
1085
+ export type { AXPAuditEntry, AXPAuditStorage, AXPAuditable, AXPDataSeeder, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityStorageMiddlewareConfig, AXPEntityUpdateDto };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/platform",
3
- "version": "20.2.0-next.1",
3
+ "version": "20.2.0-next.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=19.0.0",
6
6
  "@angular/core": ">=19.0.0",
@@ -44,14 +44,14 @@
44
44
  "types": "./auth/index.d.ts",
45
45
  "default": "./fesm2022/acorex-platform-auth.mjs"
46
46
  },
47
- "./common": {
48
- "types": "./common/index.d.ts",
49
- "default": "./fesm2022/acorex-platform-common.mjs"
50
- },
51
47
  "./core": {
52
48
  "types": "./core/index.d.ts",
53
49
  "default": "./fesm2022/acorex-platform-core.mjs"
54
50
  },
51
+ "./common": {
52
+ "types": "./common/index.d.ts",
53
+ "default": "./fesm2022/acorex-platform-common.mjs"
54
+ },
55
55
  "./domain": {
56
56
  "types": "./domain/index.d.ts",
57
57
  "default": "./fesm2022/acorex-platform-domain.mjs"
@@ -3,8 +3,8 @@ import * as _ngrx_signals from '@ngrx/signals';
3
3
  import * as _angular_core from '@angular/core';
4
4
  import { Signal } from '@angular/core';
5
5
  import * as _acorex_platform_themes_shared from '@acorex/platform/themes/shared';
6
- import { AXActionSheetService } from '@acorex/components/action-sheet';
7
6
  import { AXValueChangedEvent } from '@acorex/cdk/common';
7
+ import { AXActionSheetService } from '@acorex/components/action-sheet';
8
8
  import { AXDataTableComponent, AXDataTableRowDbClick, AXRowCommandItem, AXRowCommandItemClickEvent } from '@acorex/components/data-table';
9
9
  import { AXUnsubscriber } from '@acorex/core/utils';
10
10
  import { AXPEntityDetailListViewModel } from '@acorex/platform/layout/entity';
@@ -478,6 +478,7 @@ declare class AXPRootLayoutComponent {
478
478
  private sessionService;
479
479
  private unsubscriber;
480
480
  private workflowService;
481
+ private contextStore;
481
482
  ngOnInit(): void;
482
483
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPRootLayoutComponent, never>;
483
484
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRootLayoutComponent, "ng-component", never, {}, {}, never, never, true, never>;