@acorex/platform 20.2.4-next.0 → 20.2.4-next.2

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 (58) hide show
  1. package/common/index.d.ts +82 -1
  2. package/core/index.d.ts +24 -2
  3. package/fesm2022/acorex-platform-common.mjs +1 -1
  4. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-layout-builder.mjs +47 -5
  6. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-components.mjs +943 -39
  8. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-designer.mjs +15 -122
  10. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-entity.mjs +1329 -568
  12. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-views.mjs +152 -40
  14. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  15. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-ezrf2oBR.mjs → acorex-platform-themes-default-entity-master-list-view.component-DXGLsVis.mjs} +174 -50
  16. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DXGLsVis.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-D8r3S2lI.mjs → acorex-platform-themes-default-entity-master-single-view.component-CVaJzWb2.mjs} +14 -11
  18. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CVaJzWb2.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-themes-default.mjs +19 -7
  20. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  21. package/fesm2022/{acorex-platform-themes-shared-color-chooser-column.component-DjKLg513.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-DjKLg513.mjs} +1 -1
  22. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DjKLg513.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-themes-shared-color-chooser-view.component-DE0wO98F.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-DE0wO98F.mjs} +1 -1
  24. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DE0wO98F.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-themes-shared.mjs +11 -13
  26. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  27. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-B3SJUnGQ.mjs +50 -0
  28. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-B3SJUnGQ.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-BLR0JkRt.mjs +42 -0
  30. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-BLR0JkRt.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-hzR2FgOm.mjs +55 -0
  32. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-hzR2FgOm.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-IDm6Clua.mjs +50 -0
  34. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-IDm6Clua.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-BRO9tYDa.mjs +48 -0
  36. package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-BRO9tYDa.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-CkpLimyW.mjs +42 -0
  38. package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-CkpLimyW.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-DFbPO0ud.mjs → acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs} +66 -3
  40. package/fesm2022/acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-widgets.mjs +824 -136
  42. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-workflow.mjs +3 -0
  44. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  45. package/layout/builder/index.d.ts +12 -2
  46. package/layout/components/index.d.ts +172 -6
  47. package/layout/designer/index.d.ts +3 -46
  48. package/layout/entity/index.d.ts +70 -7
  49. package/layout/views/index.d.ts +53 -7
  50. package/package.json +1 -1
  51. package/themes/default/index.d.ts +4 -1
  52. package/widgets/index.d.ts +20 -11
  53. package/workflow/index.d.ts +3 -1
  54. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-ezrf2oBR.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-D8r3S2lI.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-themes-shared-color-chooser-column.component-DjKLg513.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-themes-shared-color-chooser-view.component-DE0wO98F.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-widgets-file-list-popup.component-DFbPO0ud.mjs.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders, QueryList } from '@angular/core';
2
+ import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders, WritableSignal, QueryList, EventEmitter } from '@angular/core';
3
3
  import * as _acorex_platform_core from '@acorex/platform/core';
4
- import { AXPActivityLog, AXPSystemActionType, AXPColumnQuery, AXPContextData, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPViewQuery } from '@acorex/platform/core';
4
+ import { AXPActivityLog, AXPSystemActionType, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPViewQuery } from '@acorex/platform/core';
5
5
  import { AXPMenuItem } from '@acorex/platform/common';
6
6
  import { AXValueChangedEvent, AXHtmlEvent, AXEvent } from '@acorex/cdk/common';
7
7
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
8
- import { AXPWidgetNode, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';
8
+ import { AXPWidgetNode, AXPLayoutContextChangeEvent, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/builder';
9
9
  import * as _ngrx_signals from '@ngrx/signals';
10
10
  import { AXFormComponent } from '@acorex/components/form';
11
11
  import { AXPopoverComponent } from '@acorex/components/popover';
@@ -14,7 +14,7 @@ import { AXCalendarService } from '@acorex/core/date-time';
14
14
  import { AXTranslationService } from '@acorex/core/translation';
15
15
  import { Observable } from 'rxjs';
16
16
  import { AXPopupService } from '@acorex/components/popup';
17
- import { AXTabsComponent } from '@acorex/components/tabs';
17
+ import { AXTabsComponent, AXTabStripChangedEvent } from '@acorex/components/tabs';
18
18
 
19
19
  declare class AXPActivityLogComponent {
20
20
  private readonly translateService;
@@ -469,6 +469,130 @@ declare class AXPDynamicFormComponent implements OnInit {
469
469
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormComponent, "axp-dynamic-form", never, { "formDefinition": { "alias": "formDefinition"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": true; "isSignal": true; }; "layoutStyle": { "alias": "layoutStyle"; "required": false; "isSignal": true; }; "layoutConfig": { "alias": "layoutConfig"; "required": false; "isSignal": true; }; }, { "contextChange": "contextChange"; "contextInitiated": "contextInitiated"; "validityChange": "validityChange"; }, never, never, true, never>;
470
470
  }
471
471
 
472
+ /**
473
+ * Describes a schema-only definition for an extra property (no value).
474
+ */
475
+ interface AXPExtraPropertySchemaItem {
476
+ /** Unique key for the property (used as identifier) */
477
+ key: string;
478
+ /** Human-readable title/label */
479
+ title: string;
480
+ /** Widget name/id to render (e.g., 'text-editor', 'checkbox-editor') */
481
+ type: string;
482
+ /** Optional widget-specific options */
483
+ options?: AXPOptionsData;
484
+ }
485
+ /**
486
+ * Describes a single extra property row.
487
+ */
488
+ interface AXPExtraPropertyItem extends AXPExtraPropertySchemaItem {
489
+ /** Current value bound to the rendered widget */
490
+ value: unknown;
491
+ }
492
+ /**
493
+ * Describes an available extra property type that user can select when adding rows.
494
+ */
495
+ interface AXPExtraPropertyType {
496
+ /** Unique id for the type (it should be the same as the widget name) */
497
+ id: string;
498
+ /** UI title for selection dropdown */
499
+ title: string;
500
+ /** Default widget options applied on create */
501
+ defaultOptions?: AXPOptionsData;
502
+ }
503
+ /**
504
+ * Injection token to provide available extra property types.
505
+ */
506
+ declare const AXP_EXTRA_PROPERTY_TYPES: InjectionToken<AXPExtraPropertyType[]>;
507
+
508
+ declare class AXPExtraPropertiesComponent {
509
+ items: _angular_core.InputSignal<AXPExtraPropertyItem[]>;
510
+ mode: _angular_core.InputSignal<"edit" | "view">;
511
+ protected onContextChanged(event: AXPLayoutContextChangeEvent): void;
512
+ itemsChange: _angular_core.OutputEmitterRef<AXPExtraPropertyItem[]>;
513
+ private readonly providedTypes;
514
+ private readonly translationService;
515
+ protected newKey: WritableSignal<string>;
516
+ protected newTitle: WritableSignal<string>;
517
+ protected newTypeId: WritableSignal<string>;
518
+ protected newValue: WritableSignal<any>;
519
+ /** Local, ephemeral context for widget rendering */
520
+ protected internalContext: WritableSignal<Record<string, any>>;
521
+ private lastTypeByKey;
522
+ protected draftVersion: WritableSignal<number>;
523
+ protected draftKey: _angular_core.Signal<string>;
524
+ protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
525
+ protected presetTypes: _angular_core.Signal<AXPExtraPropertyType[]>;
526
+ protected canAdd: _angular_core.Signal<boolean>;
527
+ /** Sync incoming items' values into internal context for rendering */
528
+ private readonly syncContextFromItems;
529
+ /**
530
+ * Clear item values when their widget type changes to avoid incompatible stale values
531
+ */
532
+ private readonly clearValueOnTypeChange;
533
+ protected handleAddItem(): void;
534
+ protected handleRemoveItem(key: string): void;
535
+ protected handleDrop(event: CdkDragDrop<AXPExtraPropertyItem[]>): void;
536
+ protected selectPreset(id: string): void;
537
+ private nodeCache;
538
+ private draftNodeCache?;
539
+ protected getNode(item: AXPExtraPropertyItem): AXPWidgetNode;
540
+ protected draftNode(): AXPWidgetNode;
541
+ protected newTypeChanged(val: string): void;
542
+ protected ngOnInit(): void;
543
+ protected handleTitleChange(val: string): void;
544
+ protected sanitizeKey(input: string): string;
545
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesComponent, never>;
546
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPExtraPropertiesComponent, "axp-extra-properties", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "itemsChange": "itemsChange"; }, never, never, true, never>;
547
+ }
548
+
549
+ declare class AXPExtraPropertiesSchemaComponent {
550
+ schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
551
+ mode: _angular_core.InputSignal<"edit" | "view">;
552
+ schemaChange: _angular_core.OutputEmitterRef<AXPExtraPropertySchemaItem[]>;
553
+ private readonly providedTypes;
554
+ private readonly translationService;
555
+ protected newTitle: WritableSignal<string>;
556
+ protected newTypeId: WritableSignal<string>;
557
+ protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
558
+ protected canAdd: _angular_core.Signal<boolean>;
559
+ protected selectedKey: WritableSignal<string | null>;
560
+ protected selectedItem: _angular_core.Signal<AXPExtraPropertySchemaItem | null>;
561
+ constructor();
562
+ protected handleAdd(): void;
563
+ protected handleRemove(key: string): void;
564
+ protected handleDrop(event: CdkDragDrop<AXPExtraPropertySchemaItem[]>): void;
565
+ protected handleUpdateTitle(key: string, title: string): void;
566
+ protected handleUpdateType(key: string, typeId: string): void;
567
+ protected newTypeChanged(val: string): void;
568
+ protected handleTitleChange(val: string): void;
569
+ protected handleSelect(key: string): void;
570
+ protected handleViewerChanged(e: {
571
+ values: any;
572
+ mode: 'init' | 'update';
573
+ }): void;
574
+ protected deriveKey(input: string): string;
575
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesSchemaComponent, never>;
576
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPExtraPropertiesSchemaComponent, "axp-extra-properties-schema", never, { "schema": { "alias": "schema"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "schemaChange": "schemaChange"; }, never, never, true, never>;
577
+ }
578
+
579
+ declare class AXPExtraPropertiesValuesComponent {
580
+ schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
581
+ values: _angular_core.InputSignal<Record<string, any>>;
582
+ mode: _angular_core.InputSignal<"edit" | "view">;
583
+ valuesChange: _angular_core.OutputEmitterRef<Record<string, any>>;
584
+ private readonly translationService;
585
+ protected internalContext: _angular_core.WritableSignal<Record<string, any>>;
586
+ private nodeCache;
587
+ private lastTypeByKey;
588
+ protected onContextChanged(event: AXPLayoutContextChangeEvent): void;
589
+ private readonly syncContextFromInputs;
590
+ private readonly clearOnSchemaTypeChange;
591
+ protected getNode(item: AXPExtraPropertySchemaItem): AXPWidgetNode;
592
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesValuesComponent, never>;
593
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPExtraPropertiesValuesComponent, "axp-extra-properties-values", never, { "schema": { "alias": "schema"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "valuesChange": "valuesChange"; }, never, never, true, never>;
594
+ }
595
+
472
596
  declare class AXPQueryFiltersComponent {
473
597
  #private;
474
598
  protected translate: AXTranslationService;
@@ -690,5 +814,47 @@ declare class AXPWidgetItemComponent {
690
814
  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>;
691
815
  }
692
816
 
693
- export { AXPActivityLogComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDynamicFormComponent, AXPMenuBadgeHelper, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, 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 };
694
- export type { AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDynamicFormDefinition, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLayoutConfig, AXPDynamicFormLayoutStyle, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData };
817
+ interface AXPWidgetPropertyTab {
818
+ name: string;
819
+ title: string;
820
+ groups: {
821
+ name: string;
822
+ title: string;
823
+ isCollapsed: boolean;
824
+ props: AXPWidgetProperty[];
825
+ }[];
826
+ }
827
+ interface AXPWidgetPropertiesChangedEvent {
828
+ values: any;
829
+ mode: 'init' | 'update';
830
+ }
831
+ declare class AXPWidgetPropertyViewerComponent {
832
+ widget: _angular_core.InputSignal<AXPWidgetNode>;
833
+ mode: _angular_core.InputSignal<"simple" | "advanced">;
834
+ private widgetRegistryService;
835
+ protected currentTabIndex: WritableSignal<number>;
836
+ protected config: WritableSignal<AXPWidgetConfig<any> | null>;
837
+ protected allPoperties: AXPWidgetProperty[];
838
+ protected tabs: WritableSignal<AXPWidgetPropertyTab[]>;
839
+ protected groups: _angular_core.Signal<{
840
+ name: string;
841
+ title: string;
842
+ isCollapsed: boolean;
843
+ props: AXPWidgetProperty[];
844
+ }[]>;
845
+ protected groupCollapsedStates: Map<string, boolean>;
846
+ onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
847
+ protected context: WritableSignal<any>;
848
+ protected initialContext: any;
849
+ constructor();
850
+ update(values: any): void;
851
+ private fillTabs;
852
+ protected handleContextChange(e: AXPLayoutContextChangeEvent): void;
853
+ protected handleTabChange(event: AXTabStripChangedEvent): void;
854
+ protected handleCollapsedChange(group: string, collapsed: boolean): void;
855
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
856
+ 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>;
857
+ }
858
+
859
+ export { AXPActivityLogComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDynamicFormComponent, AXPExtraPropertiesComponent, AXPExtraPropertiesSchemaComponent, AXPExtraPropertiesValuesComponent, AXPMenuBadgeHelper, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXP_EXTRA_PROPERTY_TYPES, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER };
860
+ export type { AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDynamicFormDefinition, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLayoutConfig, AXPDynamicFormLayoutStyle, AXPExtraPropertyItem, AXPExtraPropertySchemaItem, AXPExtraPropertyType, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyTab };
@@ -4,7 +4,7 @@ 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, AXPLayoutContextChangeEvent, AXPWidgetProperty } from '@acorex/platform/layout/builder';
7
+ import { AXPWidgetConfig, AXPWidgetCategory, AXPWidgetGroupEnum, AXPWidgetNode, AXPBaseWidgetComponent, AXPWidgetRegistryService, AXPLayoutWidgetComponent, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';
8
8
  import { AXPWidgetItemData, AXPWidgetItemClickEvent } from '@acorex/platform/layout/components';
9
9
  import { AXMenuItem } from '@acorex/components/menu';
10
10
  import { Subject } from 'rxjs';
@@ -404,48 +404,5 @@ declare class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {
404
404
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutDesignerPreviewComponent, "axp-layout-preview", never, {}, {}, never, never, true, never>;
405
405
  }
406
406
 
407
- interface AXPWidgetPropertyTab {
408
- name: string;
409
- title: string;
410
- groups: {
411
- name: string;
412
- title: string;
413
- isCollapsed: boolean;
414
- props: AXPWidgetProperty[];
415
- }[];
416
- }
417
- interface AXPWidgetPropertiesChangedEvent {
418
- values: any;
419
- mode: 'init' | 'update';
420
- }
421
- declare class AXPWidgetPropertyViewerComponent {
422
- widget: _angular_core.InputSignal<AXPWidgetNode>;
423
- mode: _angular_core.InputSignal<"simple" | "advanced">;
424
- private widgetRegistryService;
425
- protected connector: AXPDesignerConnector<any>;
426
- protected currentTabIndex: WritableSignal<number>;
427
- protected config: WritableSignal<AXPWidgetConfig<any> | null>;
428
- protected allPoperties: AXPWidgetProperty[];
429
- protected tabs: WritableSignal<AXPWidgetPropertyTab[]>;
430
- protected groups: _angular_core.Signal<{
431
- name: string;
432
- title: string;
433
- isCollapsed: boolean;
434
- props: AXPWidgetProperty[];
435
- }[]>;
436
- protected groupCollapsedStates: Map<string, boolean>;
437
- onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
438
- protected context: WritableSignal<any>;
439
- protected initialContext: any;
440
- constructor();
441
- update(values: any): void;
442
- private fillTabs;
443
- protected handleContextChange(e: AXPLayoutContextChangeEvent): void;
444
- protected handleTabChange(event: AXTabStripChangedEvent): void;
445
- protected handleCollapsedChange(group: string, collapsed: boolean): void;
446
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
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>;
448
- }
449
-
450
- export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXPWidgetPropertyViewerComponent, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, cloneWidgetMenu };
451
- export type { AXPDesignerAddNodeCommand, AXPDesignerAddNodeEvent, AXPDesignerContent, AXPDesignerFocusCommand, AXPDesignerFocusEvent, AXPDesignerMode, AXPDesignerPreviewMessage, AXPDesignerPreviewSize, AXPDesignerRefreshCommand, AXPDesignerRefreshEvent, AXPDesignerRegisterCommand, AXPDesignerSaveFormMessage, AXPDesignerSelectCommand, AXPDesignerSelectEvent, AXPDesignerUpdateCommand, AXPDesignerUpdateEvent, AXPDesignerWidgetComponent, AXPDisplayWidgetConfig, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyTab };
407
+ export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, cloneWidgetMenu };
408
+ export type { AXPDesignerAddNodeCommand, AXPDesignerAddNodeEvent, AXPDesignerContent, AXPDesignerFocusCommand, AXPDesignerFocusEvent, AXPDesignerMode, AXPDesignerPreviewMessage, AXPDesignerPreviewSize, AXPDesignerRefreshCommand, AXPDesignerRefreshEvent, AXPDesignerRegisterCommand, AXPDesignerSaveFormMessage, AXPDesignerSelectCommand, AXPDesignerSelectEvent, AXPDesignerUpdateCommand, AXPDesignerUpdateEvent, AXPDesignerWidgetComponent, AXPDisplayWidgetConfig };
@@ -2,12 +2,13 @@ import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, Injector, Type } from '@angular/core';
3
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, AXPEntityPropertyLayoutConfig, 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, AXPEntityMasterListView, 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';
9
9
  import * as i1 from '@angular/router';
10
10
  import { ResolveFn } from '@angular/router';
11
+ import * as rxjs from 'rxjs';
11
12
  import { Subject } from 'rxjs';
12
13
  import * as i2 from '@acorex/platform/workflow';
13
14
  import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
@@ -86,7 +87,17 @@ declare class AXPEntityDetailListViewModel {
86
87
  applyFilterAndSort(): Promise<void>;
87
88
  columns: _angular_core.Signal<AXPEntityListViewColumnViewModel[]>;
88
89
  executeCommand(commandName: string, data?: any): Promise<void>;
89
- private evaluateExpressions;
90
+ evaluateExpressions: (actionData: {
91
+ [key: string]: string;
92
+ } | string) => Promise<any>;
93
+ /**
94
+ * Evaluate hidden/disabled expressions for primary actions and return the visible list.
95
+ */
96
+ getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
97
+ /**
98
+ * Evaluate hidden/disabled expressions for secondary actions and return the visible list.
99
+ */
100
+ getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]>;
90
101
  }
91
102
 
92
103
  declare class AXPEntityCreateViewSectionViewModel {
@@ -174,9 +185,12 @@ declare class AXPEntityMasterListViewModel {
174
185
  private readonly settings;
175
186
  private readonly widgetResolver;
176
187
  private readonly expressionEvaluator;
188
+ private readonly commandService;
177
189
  private readonly filterOperatorMiddleware;
178
190
  private settingEntityKey;
179
191
  private readonly destroyed;
192
+ private lastAppliedSortKey;
193
+ private lastAppliedFilterKey;
180
194
  events$: Subject<{
181
195
  action: string;
182
196
  meta?: any;
@@ -187,7 +201,7 @@ declare class AXPEntityMasterListViewModel {
187
201
  dataSource: AXDataSource<unknown>;
188
202
  constructor(injector: Injector, config: AXPEntity);
189
203
  applySettings(): Promise<void>;
190
- saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize', data?: any): Promise<void>;
204
+ saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'filters' | 'sorts', data?: any): Promise<void>;
191
205
  selectedItems: _angular_core.WritableSignal<any[]>;
192
206
  parentKey: _angular_core.Signal<string | undefined>;
193
207
  hasSelectedItems: _angular_core.Signal<boolean>;
@@ -280,10 +294,14 @@ declare class AXPEntityMasterSingleViewModel {
280
294
  private readonly session;
281
295
  private readonly formatService;
282
296
  private readonly workflow;
297
+ private readonly commandService;
283
298
  private readonly destroyed;
284
299
  private translateService;
285
300
  private entityService;
286
301
  private expressionEvaluator;
302
+ private entityDefinitionRegistryService;
303
+ private _updateTrigger;
304
+ readonly updateTrigger: _angular_core.Signal<number>;
287
305
  constructor(injector: Injector, config: AXPEntity, entityData: any);
288
306
  context: _angular_core.WritableSignal<any>;
289
307
  private actions;
@@ -440,6 +458,10 @@ interface AXPEntityModifierContext {
440
458
  get(): AXPEntityMasterSingleLayoutView | undefined;
441
459
  update(updater: (c: AXPEntityMasterSingleLayoutView | undefined) => AXPEntityMasterSingleLayoutView): AXPEntityModifierContext;
442
460
  };
461
+ list: {
462
+ get(): AXPEntityMasterListView | undefined;
463
+ update(updater: (c: AXPEntityMasterListView | undefined) => AXPEntityMasterListView): AXPEntityModifierContext;
464
+ };
443
465
  };
444
466
  detail: {
445
467
  get(): NonNullable<AXPEntity['interfaces']>['detail'] | undefined;
@@ -464,7 +486,7 @@ declare function actionExists(actions: any[] | undefined, commandName: string, n
464
486
  interface AXPEntityActionPlugin {
465
487
  name: string;
466
488
  order?: number;
467
- apply: (ctx: AXPEntityModifierContext, options?: any) => void;
489
+ apply: (ctx: AXPEntityModifierContext, options?: any) => Promise<void> | void;
468
490
  }
469
491
  declare const AXP_ENTITY_ACTION_PLUGIN: InjectionToken<AXPEntityActionPlugin[]>;
470
492
 
@@ -473,9 +495,10 @@ declare class AXPEntityMiddleware {
473
495
  private patternModifiers;
474
496
  protected providedModifiers: AXPEntityModifierProvider[];
475
497
  protected providedActionPlugins: AXPEntityActionPlugin[];
498
+ protected injector: Injector;
476
499
  constructor();
477
500
  register(entityName: string | RegExp, modifier: AXPEntityModifier): void;
478
- process(entity: AXPEntity): AXPEntity;
501
+ process(entity: AXPEntity): Promise<AXPEntity>;
479
502
  private wildcardToRegExp;
480
503
  private normalizeRegExp;
481
504
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityMiddleware, never>;
@@ -636,9 +659,25 @@ declare class AXPEntityDefinitionRegistryService {
636
659
  private providers;
637
660
  private resolver;
638
661
  private middleware;
662
+ private onChanged;
663
+ get onChanged$(): rxjs.Observable<{
664
+ name: string;
665
+ }>;
639
666
  preload(): Promise<void>;
640
667
  private entities;
641
668
  private entityResolver;
669
+ /**
670
+ * Force re-load and re-process entity definitions, then re-register them.
671
+ * Overloads:
672
+ * - refresh(): refresh all registered entities
673
+ * - refresh(fullName: string): refresh by fully-qualified name `<module>.<entity>`
674
+ * - refresh(moduleName: string, entityName: string): refresh by parts
675
+ */
676
+ refresh(): Promise<void>;
677
+ refresh(fullName: string): Promise<void>;
678
+ refresh(moduleName: string, entityName: string): Promise<void>;
679
+ /** Executes the actual refresh for a single entity */
680
+ private refreshOne;
642
681
  /**
643
682
  * Registers a new entity configuration. Entities are identified uniquely by a combination
644
683
  * of their module and name.
@@ -894,5 +933,29 @@ declare function detectEntityChanges(oldObj: any, newObj: any): AXPEntityChangeS
894
933
 
895
934
  declare const eventDispatchMiddleware: AXPEntityStorageMiddleware;
896
935
 
897
- export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, 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, actionExists, createModifierContext, detectEntityChanges, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware };
898
- export type { AXPAuditable, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOp, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto };
936
+ /**
937
+ * Map of column name -> width value
938
+ * Example: { title: '300px', description: '300px' }
939
+ */
940
+ type ColumnWidthConfig = Record<string, string | number>;
941
+ /**
942
+ * Default widths for common text columns
943
+ */
944
+ declare const DEFAULT_COLUMN_WIDTHS: ColumnWidthConfig;
945
+ /**
946
+ * Factory to create a column width middleware using provided config map.
947
+ * Sets width for columns defined in the map if not already defined on the column.
948
+ */
949
+ declare const columnWidthMiddlewareFactory: (widths: ColumnWidthConfig) => AXPEntityModifier;
950
+ /**
951
+ * Helper to create a provider for the column width middleware.
952
+ * By default it applies to all entities using the '*' pattern.
953
+ */
954
+ declare const createColumnWidthMiddlewareProvider: (widths: ColumnWidthConfig, entityName?: string | RegExp) => AXPEntityModifierProvider;
955
+ /**
956
+ * Default provider registered with the default map.
957
+ */
958
+ declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
959
+
960
+ export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, 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, DEFAULT_COLUMN_WIDTHS, actionExists, columnWidthMiddlewareFactory, columnWidthMiddlewareProvider, createColumnWidthMiddlewareProvider, createModifierContext, detectEntityChanges, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware };
961
+ export type { AXPAuditable, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOp, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, ColumnWidthConfig };
@@ -16,7 +16,8 @@ import { AXPSessionService } from '@acorex/platform/auth';
16
16
  import { AXPHomePageService } from '@acorex/platform/common';
17
17
  import { AXBasePageComponent } from '@acorex/components/page';
18
18
  import * as _acorex_platform_layout_builder from '@acorex/platform/layout/builder';
19
- import { AXPWidgetNode, AXPPageStatus, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';
19
+ import { AXPWidgetNode, AXPPageStatus, AXPWidgetContainerComponent, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';
20
+ import { AXFormComponent } from '@acorex/components/form';
20
21
  import * as _acorex_platform_layout_views from '@acorex/platform/layout/views';
21
22
 
22
23
  declare abstract class AXPPageLayoutBase {
@@ -426,6 +427,7 @@ interface AXPLayoutDetailsViewTabItem {
426
427
  interface AXPLayoutDetailsViewPage {
427
428
  id: string;
428
429
  title: string;
430
+ label: string;
429
431
  description?: string;
430
432
  icon?: string;
431
433
  content?: AXPWidgetNode[];
@@ -463,13 +465,18 @@ interface AXPLayoutDetailsViewAdapter {
463
465
 
464
466
  declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
465
467
  adapter: _angular_core.Signal<AXPLayoutDetailsViewAdapter | null>;
466
- adapterContext: _angular_core.Signal<Record<string, any>>;
468
+ rootContext: _angular_core.Signal<Record<string, any>>;
467
469
  previousContext: _angular_core.Signal<Record<string, any>>;
468
470
  context: _angular_core.Signal<Record<string, any>>;
469
471
  scope: _angular_core.Signal<AXPExpressionEvaluatorScope | null>;
470
472
  status: _angular_core.Signal<AXPPageStatus>;
471
473
  currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
472
474
  currentTab: _angular_core.Signal<AXPLayoutDetailsViewTabItem | null>;
475
+ pageSelectedRows: _angular_core.Signal<any[]>;
476
+ renderedTabsCache: _angular_core.Signal<Record<string, {
477
+ tabId: string;
478
+ tab: AXPLayoutDetailsViewTabItem;
479
+ }[]>>;
473
480
  icon: _angular_core.Signal<string | null>;
474
481
  content: _angular_core.Signal<_acorex_platform_layout_builder.AXPWidgetNode[]>;
475
482
  showPages: _angular_core.Signal<boolean>;
@@ -477,11 +484,18 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
477
484
  isBusy: _angular_core.Signal<boolean>;
478
485
  isSaving: _angular_core.Signal<boolean>;
479
486
  isDirty: _angular_core.Signal<boolean>;
487
+ changesCount: _angular_core.Signal<number>;
480
488
  isLoaded: _angular_core.Signal<boolean>;
489
+ currentPageSelectedRows: _angular_core.Signal<any[]>;
490
+ currentPageRenderedTabs: _angular_core.Signal<{
491
+ tabId: string;
492
+ tab: AXPLayoutDetailsViewTabItem;
493
+ }[]>;
481
494
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
482
495
  loadPage: (pageId?: string) => Promise<void>;
483
496
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
484
497
  updateContext: (context: any) => void;
498
+ updatePageSelectedRows: (rows: any[]) => void;
485
499
  currentPageTitle: () => string | null;
486
500
  currentPageDescription: () => string | null;
487
501
  currentPagePrimaryActions: () => Promise<any>;
@@ -491,6 +505,8 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
491
505
  setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
492
506
  setCurrentTab: (tab: AXPLayoutDetailsViewTabItem) => void;
493
507
  getCurrentTabContent: () => _acorex_platform_layout_builder.AXPWidgetNode[];
508
+ getRenderedTabContent: (tabId: string) => _acorex_platform_layout_builder.AXPWidgetNode[];
509
+ clearPageTabCache: (pageId: string) => void;
494
510
  title: () => string | null;
495
511
  description: () => string | null;
496
512
  primaryActions: () => Promise<any>;
@@ -502,16 +518,21 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
502
518
  command?: AXPExecuteCommand;
503
519
  }[]>;
504
520
  discard: () => Promise<void>;
505
- save: (command: AXPExecuteCommand) => Promise<void>;
521
+ save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<void>;
506
522
  } & _ngrx_signals.StateSource<{
507
523
  adapter: AXPLayoutDetailsViewAdapter | null;
508
- adapterContext: Record<string, any>;
524
+ rootContext: Record<string, any>;
509
525
  previousContext: Record<string, any>;
510
526
  context: Record<string, any>;
511
527
  scope: AXPExpressionEvaluatorScope | null;
512
528
  status: AXPPageStatus;
513
529
  currentPage: AXPLayoutDetailsViewPage | null;
514
530
  currentTab: AXPLayoutDetailsViewTabItem | null;
531
+ pageSelectedRows: any[];
532
+ renderedTabsCache: Record<string, Array<{
533
+ tabId: string;
534
+ tab: AXPLayoutDetailsViewTabItem;
535
+ }>>;
515
536
  }>>;
516
537
 
517
538
  declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
@@ -519,13 +540,18 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
519
540
  adapter: _angular_core.InputSignal<AXPLayoutDetailsViewAdapter>;
520
541
  protected vm: {
521
542
  adapter: _angular_core.Signal<AXPLayoutDetailsViewAdapter | null>;
522
- adapterContext: _angular_core.Signal<Record<string, any>>;
543
+ rootContext: _angular_core.Signal<Record<string, any>>;
523
544
  previousContext: _angular_core.Signal<Record<string, any>>;
524
545
  context: _angular_core.Signal<Record<string, any>>;
525
546
  scope: _angular_core.Signal<_acorex_platform_core.AXPExpressionEvaluatorScope | null>;
526
547
  status: _angular_core.Signal<_acorex_platform_layout_builder.AXPPageStatus>;
527
548
  currentPage: _angular_core.Signal<AXPLayoutDetailsViewPage | null>;
528
549
  currentTab: _angular_core.Signal<_acorex_platform_layout_views.AXPLayoutDetailsViewTabItem | null>;
550
+ pageSelectedRows: _angular_core.Signal<any[]>;
551
+ renderedTabsCache: _angular_core.Signal<Record<string, {
552
+ tabId: string;
553
+ tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
554
+ }[]>>;
529
555
  icon: _angular_core.Signal<string | null>;
530
556
  content: _angular_core.Signal<_acorex_platform_layout_builder.AXPWidgetNode[]>;
531
557
  showPages: _angular_core.Signal<boolean>;
@@ -533,11 +559,18 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
533
559
  isBusy: _angular_core.Signal<boolean>;
534
560
  isSaving: _angular_core.Signal<boolean>;
535
561
  isDirty: _angular_core.Signal<boolean>;
562
+ changesCount: _angular_core.Signal<number>;
536
563
  isLoaded: _angular_core.Signal<boolean>;
564
+ currentPageSelectedRows: _angular_core.Signal<any[]>;
565
+ currentPageRenderedTabs: _angular_core.Signal<{
566
+ tabId: string;
567
+ tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
568
+ }[]>;
537
569
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
538
570
  loadPage: (pageId?: string) => Promise<void>;
539
571
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
540
572
  updateContext: (context: any) => void;
573
+ updatePageSelectedRows: (rows: any[]) => void;
541
574
  currentPageTitle: () => string | null;
542
575
  currentPageDescription: () => string | null;
543
576
  currentPagePrimaryActions: () => Promise<any>;
@@ -547,6 +580,8 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
547
580
  setCurrentPage: (page: AXPLayoutDetailsViewPage | null) => void;
548
581
  setCurrentTab: (tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem) => void;
549
582
  getCurrentTabContent: () => _acorex_platform_layout_builder.AXPWidgetNode[];
583
+ getRenderedTabContent: (tabId: string) => _acorex_platform_layout_builder.AXPWidgetNode[];
584
+ clearPageTabCache: (pageId: string) => void;
550
585
  title: () => string | null;
551
586
  description: () => string | null;
552
587
  primaryActions: () => Promise<any>;
@@ -558,23 +593,33 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
558
593
  command?: AXPExecuteCommand;
559
594
  }[]>;
560
595
  discard: () => Promise<void>;
561
- save: (command: AXPExecuteCommand) => Promise<void>;
596
+ save: (command: AXPExecuteCommand, form: AXFormComponent) => Promise<void>;
562
597
  } & _ngrx_signals.StateSource<{
563
598
  adapter: AXPLayoutDetailsViewAdapter | null;
564
- adapterContext: Record<string, any>;
599
+ rootContext: Record<string, any>;
565
600
  previousContext: Record<string, any>;
566
601
  context: Record<string, any>;
567
602
  scope: _acorex_platform_core.AXPExpressionEvaluatorScope | null;
568
603
  status: _acorex_platform_layout_builder.AXPPageStatus;
569
604
  currentPage: AXPLayoutDetailsViewPage | null;
570
605
  currentTab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem | null;
606
+ pageSelectedRows: any[];
607
+ renderedTabsCache: Record<string, Array<{
608
+ tabId: string;
609
+ tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
610
+ }>>;
571
611
  }>;
612
+ private onSelectionChangeSubscription?;
613
+ protected form: _angular_core.Signal<AXFormComponent | undefined>;
614
+ protected widgetContainer: _angular_core.Signal<AXPWidgetContainerComponent | undefined>;
572
615
  protected footerPrimaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
573
616
  protected footerSecondaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
574
617
  protected footerActions: _angular_core.Signal<AXPActionMenuItem[]>;
575
618
  protected hasVisibleFooterPrimaryActions: _angular_core.Signal<boolean>;
576
619
  protected hasVisibleFooterSecondaryActions: _angular_core.Signal<boolean>;
620
+ protected hasFooter: _angular_core.Signal<boolean>;
577
621
  ngOnInit(): Promise<void>;
622
+ ngAfterViewInit(): Promise<void>;
578
623
  ngOnDestroy(): void;
579
624
  protected handleOnContextChanged(e: AXPLayoutContextChangeEvent): void;
580
625
  protected handleSelectPage(page: AXPLayoutDetailsViewPage): void;
@@ -588,6 +633,7 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
588
633
  protected getPageTitle(): Promise<string>;
589
634
  getPageDescription(): Promise<string | null>;
590
635
  getBackButton(): Promise<AXPBackButton | null>;
636
+ getPageBadge(): Promise<AXPBadge | null>;
591
637
  onBackButtonClick(): Promise<void>;
592
638
  execute(command: AXPExecuteCommand): Promise<void>;
593
639
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutDetailsViewComponent, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/platform",
3
- "version": "20.2.4-next.0",
3
+ "version": "20.2.4-next.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=19.0.0",
6
6
  "@angular/core": ">=19.0.0",