@acorex/platform 21.0.0-next.2 → 21.0.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 (69) hide show
  1. package/auth/index.d.ts +97 -238
  2. package/common/index.d.ts +778 -213
  3. package/core/index.d.ts +562 -433
  4. package/fesm2022/acorex-platform-auth.mjs +160 -200
  5. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-common.mjs +1012 -125
  7. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-core.mjs +685 -400
  9. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-domain.mjs +54 -11
  11. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-builder.mjs +412 -270
  13. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-components.mjs +2112 -3153
  15. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-designer.mjs +7 -7
  17. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-layout-entity.mjs +756 -648
  19. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-layout-views.mjs +4 -4
  21. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-layout-widget-core.mjs +248 -174
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  24. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs → acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs} +2 -2
  25. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs} +2 -2
  27. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +1 -0
  28. package/fesm2022/acorex-platform-layout-widgets.mjs +3058 -1038
  29. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  30. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs → acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs} +26 -5
  31. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +1 -0
  32. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs → acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs} +4 -5
  33. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +101 -0
  35. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +1 -0
  36. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs → acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs} +3 -3
  37. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-themes-default.mjs +166 -30
  39. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-themes-shared.mjs +27 -27
  41. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  42. package/layout/builder/index.d.ts +4 -1
  43. package/layout/components/index.d.ts +405 -327
  44. package/layout/designer/index.d.ts +3 -3
  45. package/layout/entity/index.d.ts +163 -108
  46. package/layout/widget-core/index.d.ts +39 -49
  47. package/layout/widgets/index.d.ts +368 -54
  48. package/package.json +5 -5
  49. package/themes/default/index.d.ts +15 -2
  50. package/themes/shared/index.d.ts +10 -10
  51. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs +0 -50
  52. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs +0 -42
  54. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs +0 -55
  56. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs +0 -50
  58. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs +0 -48
  60. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs +0 -42
  62. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs.map +0 -1
  63. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs.map +0 -1
  64. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs.map +0 -1
  65. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs.map +0 -1
  66. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs.map +0 -1
  67. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs +0 -101
  68. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs.map +0 -1
  69. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs.map +0 -1
@@ -1,19 +1,18 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders, WritableSignal, QueryList, EventEmitter } from '@angular/core';
2
+ import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders, QueryList, OnChanges, EventEmitter, WritableSignal } from '@angular/core';
3
3
  import * as _acorex_platform_core from '@acorex/platform/core';
4
- import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPGridLayoutOptions, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
4
+ import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
5
5
  import { AXPMenuItem } from '@acorex/platform/common';
6
6
  import { AXValueChangedEvent, AXClickEvent, AXDataSource, AXDataSourceFilterOption, AXHtmlEvent, AXEvent } from '@acorex/cdk/common';
7
7
  import { AXTreeViewLegacyComponent, AXTreeItemClickBaseEventLegacy } from '@acorex/components/tree-view-legacy';
8
8
  import { AXTranslationService } from '@acorex/core/translation';
9
9
  import { AXPopoverComponent } from '@acorex/components/popover';
10
10
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
11
- import { AXPWidgetNode, AXPWidgetCoreContextChangeEvent, AXPWidgetRendererDirective, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/widget-core';
11
+ import { AXPWidgetNode, AXPWidgetRendererDirective, AXPWidgetCoreContextChangeEvent, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/widget-core';
12
12
  import * as _ngrx_signals from '@ngrx/signals';
13
13
  import { AXDataTableComponent, AXDataTableRowDbClick, AXDataTableRowClick } from '@acorex/components/data-table';
14
14
  import { AXBasePageComponent } from '@acorex/components/page';
15
15
  import { AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';
16
- import { AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormDefinition } from '@acorex/platform/layout/builder';
17
16
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
18
17
  import { AXCalendarService } from '@acorex/core/date-time';
19
18
  import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
@@ -426,6 +425,7 @@ interface AXPComponentSlotConfig {
426
425
  priority?: number;
427
426
  component?: Type<any>;
428
427
  condition?: ((context?: AXPContextData) => (boolean | Promise<boolean>)) | string;
428
+ features?: string[];
429
429
  loadComponent?: () => Type<any> | Promise<Type<any>>;
430
430
  options?: AXPOptionsData | (() => AXPOptionsData) | (() => Promise<AXPOptionsData>);
431
431
  }
@@ -446,6 +446,7 @@ declare class AXPComponentSlotDirective implements OnInit {
446
446
  private registryService;
447
447
  private injector;
448
448
  private evaluator;
449
+ private sessionService;
449
450
  viewContainerRef: ViewContainerRef;
450
451
  contextStore: {
451
452
  data: _angular_core.Signal<AXPContextData>;
@@ -477,6 +478,7 @@ declare class AXPComponentSlotDirective implements OnInit {
477
478
  isEmpty: _angular_core.Signal<boolean>;
478
479
  private _viewCount;
479
480
  private componentRefs;
481
+ private placeholderRefs;
480
482
  constructor();
481
483
  ngOnInit(): Promise<void>;
482
484
  loadComponents(): Promise<void>;
@@ -528,6 +530,7 @@ interface AXPDataSelectorConfig {
528
530
  parentField?: string;
529
531
  allowCreate?: boolean;
530
532
  filters?: AXDataSourceFilterOption;
533
+ selectedItemIds?: string[] | number[];
531
534
  categoryFilter?: {
532
535
  enabled: boolean;
533
536
  title: string;
@@ -543,8 +546,11 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
543
546
  protected searchPlaceholderText: _angular_core.WritableSignal<string>;
544
547
  protected filter: AXDataSourceFilterOption;
545
548
  protected grid: _angular_core.Signal<AXDataTableComponent | undefined>;
546
- protected initialSelectedItems: any[];
547
549
  protected selectedItems: _angular_core.WritableSignal<any[]>;
550
+ private initialSelectionApplied;
551
+ private userHasInteracted;
552
+ private isApplyingInitialSelection;
553
+ private initialSelectedItems;
548
554
  protected activeCategoryFilter: _angular_core.WritableSignal<{
549
555
  node: AXPCategoryEntity;
550
556
  filterValue: any;
@@ -554,6 +560,7 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
554
560
  private readonly translationService;
555
561
  constructor();
556
562
  protected allowSelect: _angular_core.Signal<boolean>;
563
+ protected selectedCount: _angular_core.Signal<number>;
557
564
  protected hasSearch: _angular_core.Signal<boolean | undefined>;
558
565
  protected categoryTreeConfig: _angular_core.Signal<{
559
566
  textField: string;
@@ -572,7 +579,7 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
572
579
  canCreateChild: boolean;
573
580
  }>;
574
581
  protected ngOnInit(): void;
575
- protected ngAfterViewInit(): void;
582
+ protected ngAfterViewInit(): Promise<void>;
576
583
  protected handleRowDbClick(e: AXDataTableRowDbClick): void;
577
584
  protected handleRowClick(e: AXDataTableRowClick): void;
578
585
  protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
@@ -587,6 +594,11 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
587
594
  private applyFilterAndSort;
588
595
  private applyCategoryFilter;
589
596
  private updateSearchPlaceholder;
597
+ /**
598
+ * Apply initial selection based on selectedItemIds from config
599
+ * Loads items by IDs using the data source's byKey method, then selects them in the grid
600
+ */
601
+ private applyInitialSelection;
590
602
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorComponent, never>;
591
603
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDataSelectorComponent, "axp-data-selector", never, {}, {}, never, never, true, never>;
592
604
  }
@@ -651,328 +663,12 @@ declare class AXPDragDropListComponent {
651
663
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDragDropListComponent, "axp-drag-drop-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "listId": { "alias": "listId"; "required": false; "isSignal": true; }; "dropListGroup": { "alias": "dropListGroup"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; "itemClick": "itemClick"; "dropListDropped": "dropListDropped"; }, never, never, true, never>;
652
664
  }
653
665
 
654
- interface AXPDynamicFormDesignerField {
655
- id: string;
656
- name: string;
657
- title: string;
658
- description?: string;
659
- widget: AXPWidgetNode;
660
- mode?: 'view' | 'edit';
661
- layout?: AXPGridLayoutOptions;
662
- validations?: Array<{
663
- rule: string;
664
- options?: Record<string, any>;
665
- }>;
666
- }
667
- interface AXPDynamicFormDesignerGroup {
668
- id: string;
669
- name: string;
670
- title?: string;
671
- description?: string;
672
- fields: AXPDynamicFormDesignerField[];
673
- mode?: 'view' | 'edit';
674
- layout?: AXPGridLayoutOptions;
675
- look?: 'fieldset' | 'card' | 'group' | 'container';
676
- }
677
- interface AXPDynamicFormDesignerState {
678
- groups: AXPDynamicFormDesignerGroup[];
679
- selectedFieldId?: string;
680
- selectedGroupId?: string;
681
- mode: 'designer' | 'preview';
682
- }
683
- /**
684
- * Convert designer field to form field definition
685
- */
686
- declare function convertDesignerFieldToFormField(field: AXPDynamicFormDesignerField): AXPDynamicFormFieldDefinition;
687
- /**
688
- * Convert designer group to form group definition
689
- */
690
- declare function convertDesignerGroupToFormGroup(group: AXPDynamicFormDesignerGroup): AXPDynamicFormGroupDefinition;
691
- /**
692
- * Convert designer state to form definition
693
- */
694
- declare function convertDesignerStateToFormDefinition(state: AXPDynamicFormDesignerState): AXPDynamicFormDefinition;
695
- interface AXPFormElementWidget {
696
- name: string;
697
- title: string;
698
- icon?: string;
699
- description?: string;
700
- type: string;
701
- properties?: any[];
702
- }
703
-
704
- declare class AXPDynamicFormDesignerComponent {
705
- formDefinition: _angular_core.ModelSignal<AXPDynamicFormDefinition>;
706
- readonly: _angular_core.InputSignal<boolean>;
707
- private isInternalUpdate;
708
- private readonly widgetRegistry;
709
- private readonly formBuilderService;
710
- private readonly widgetPropertyViewerService;
711
- private readonly translationService;
712
- private readonly DEFAULT_GROUP_NAME;
713
- protected selectedFieldId: _angular_core.WritableSignal<string | null>;
714
- private designerState;
715
- protected availableWidgets: _angular_core.Signal<AXPFormElementWidget[]>;
716
- protected widgetOptions: _angular_core.Signal<{
717
- value: string;
718
- text: string;
719
- }[]>;
720
- protected getAllFields: _angular_core.Signal<AXPDynamicFormDesignerField[]>;
721
- protected isDefaultGroup: (groupName: string) => boolean;
722
- protected canDeleteGroup: _angular_core.Signal<boolean>;
723
- protected isPreviewDisabled: _angular_core.Signal<boolean>;
724
- protected designerGroups: _angular_core.Signal<AXPDynamicFormDesignerGroup[]>;
725
- /**
726
- * Create the default group for ungrouped fields
727
- */
728
- private createDefaultGroup;
729
- /**
730
- * Ensure form definition has at least the default group
731
- */
732
- private ensureDefaultGroup;
733
- /**
734
- * Effect to log form definition changes
735
- */
736
- private logFormDefinitionChanges;
737
- /**
738
- * Effect to sync form definition model to designer state
739
- */
740
- private syncModelToDesigner;
741
- /**
742
- * Effect to sync designer state changes back to model
743
- */
744
- private syncDesignerToModel;
745
- /**
746
- * Get the current form definition (converted from designer state)
747
- */
748
- getFormDefinition(): AXPDynamicFormDefinition;
749
- /**
750
- * Set the form definition (converted to designer state)
751
- */
752
- setFormDefinition(definition: AXPDynamicFormDefinition): void;
753
- /**
754
- * Add a new field to the form
755
- * @param field The field to add
756
- * @param groupName Optional group name to add the field to. Defaults to the default group or first group.
757
- */
758
- addField(field: AXPDynamicFormDesignerField, groupName?: string): void;
759
- /**
760
- * Update an existing field
761
- * @param fieldId The ID of the field to update
762
- * @param updates The updates to apply
763
- */
764
- updateField(fieldId: string, updates: Partial<AXPDynamicFormDesignerField>): void;
765
- /**
766
- * Remove a field from the form
767
- * @param fieldId The ID of the field to remove
768
- */
769
- removeField(fieldId: string): void;
770
- /**
771
- * Get all available widget types
772
- */
773
- getAvailableWidgets(): AXPFormElementWidget[];
774
- /**
775
- * Add a new group to the form
776
- * @param group The group to add
777
- */
778
- addGroup(group: AXPDynamicFormDesignerGroup): void;
779
- /**
780
- * Remove a group from the form
781
- * @param groupName The name of the group to remove
782
- */
783
- removeGroup(groupName: string): void;
784
- /**
785
- * Reorder groups in the form
786
- * @param fromIndex Source index
787
- * @param toIndex Target index
788
- */
789
- reorderGroups(fromIndex: number, toIndex: number): void;
790
- /**
791
- * Update an existing group
792
- * @param groupName The name of the group to update
793
- * @param updates The updates to apply
794
- */
795
- updateGroup(groupName: string, updates: Partial<AXPDynamicFormDesignerGroup>): void;
796
- /**
797
- * Move a field to a different group
798
- * @param fieldName The name/path of the field to move
799
- * @param targetGroupName The name of the target group
800
- */
801
- moveFieldToGroup(fieldName: string, targetGroupName: string): void;
802
- protected handleAddGroupClick(): Promise<void>;
803
- protected handleAddFieldToGroup(group: AXPDynamicFormDesignerGroup): Promise<void>;
804
- protected handleFieldEdit(field: AXPDynamicFormDesignerField): Promise<void>;
805
- protected handleFieldRemove(field: AXPDynamicFormDesignerField): void;
806
- protected handleGroupEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
807
- protected handleGroupLayoutEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
808
- protected handleGroupRemove(group: AXPDynamicFormDesignerGroup): void;
809
- /**
810
- * Handle field layout editing
811
- */
812
- protected handleFieldLayoutEdit(field: AXPDynamicFormDesignerField, group: AXPDynamicFormDesignerGroup): Promise<void>;
813
- protected handleGroupDrop(event: CdkDragDrop<AXPDynamicFormDesignerGroup[]>): void;
814
- protected handleFieldDrop(event: CdkDragDrop<AXPDynamicFormDesignerField[]>, targetGroupName?: string): void;
815
- protected handlePreviewClick(): Promise<void>;
816
- protected deriveKey(input: string): string;
817
- protected generateId(): string;
818
- protected getWidgetIcon(widgetName: string): string;
819
- protected getWidgetTitle(widgetName: string): string;
820
- protected getWidgetNode(field: AXPDynamicFormDesignerField): AXPWidgetNode;
821
- protected deriveGroupKey(input: string): string;
822
- protected getGroupOptions(): Array<{
823
- value: string;
824
- text: string;
825
- }>;
826
- protected addFieldToGroup(field: AXPDynamicFormDesignerField, groupName: string): void;
827
- protected getAllGroupDropLists(): string[];
828
- /**
829
- * Get the grid column count for a group (always 12 columns)
830
- */
831
- protected getGroupColumnCount(): number;
832
- /**
833
- * Get default field grid layout based on group configuration
834
- */
835
- protected getFieldGridLayout(group: AXPDynamicFormDesignerGroup, fieldIndex?: number): AXPGridLayoutOptions;
836
- private configurePreviewFieldset;
837
- private configurePreviewFormField;
838
- private configureFormFieldWidget;
839
- private extractPreviewWidgetOptions;
840
- private applyDesignerFieldUpdates;
841
- private applyDesignerGroupUpdates;
842
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormDesignerComponent, never>;
843
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormDesignerComponent, "axp-dynamic-form-designer", never, { "formDefinition": { "alias": "formDefinition"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "formDefinition": "formDefinitionChange"; }, never, never, true, never>;
844
- }
845
-
846
- /**
847
- * Describes a schema-only definition for an extra property (no value).
848
- */
849
- interface AXPExtraPropertySchemaItem {
850
- /** Unique key for the property (used as identifier) */
851
- key: string;
852
- /** Human-readable title/label */
853
- title: string;
854
- /** Widget name/id to render (e.g., 'text-editor', 'checkbox-editor') */
855
- type: string;
856
- /** Optional widget-specific options */
857
- options?: AXPOptionsData;
858
- }
859
- /**
860
- * Describes a single extra property row.
861
- */
862
- interface AXPExtraPropertyItem extends AXPExtraPropertySchemaItem {
863
- /** Current value bound to the rendered widget */
864
- value: unknown;
865
- }
866
- /**
867
- * Describes an available extra property type that user can select when adding rows.
868
- */
869
- interface AXPExtraPropertyType {
870
- /** Unique id for the type (it should be the same as the widget name) */
871
- id: string;
872
- /** UI title for selection dropdown */
873
- title: string;
874
- /** Default widget options applied on create */
875
- defaultOptions?: AXPOptionsData;
876
- }
877
- /**
878
- * Injection token to provide available extra property types.
879
- */
880
- declare const AXP_EXTRA_PROPERTY_TYPES: InjectionToken<AXPExtraPropertyType[]>;
881
-
882
- declare class AXPExtraPropertiesComponent {
883
- items: _angular_core.InputSignal<AXPExtraPropertyItem[]>;
884
- mode: _angular_core.InputSignal<"view" | "edit">;
885
- protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
886
- itemsChange: _angular_core.OutputEmitterRef<AXPExtraPropertyItem[]>;
887
- private readonly providedTypes;
888
- private readonly translationService;
889
- protected newKey: WritableSignal<string>;
890
- protected newTitle: WritableSignal<string>;
891
- protected newTypeId: WritableSignal<string>;
892
- protected newValue: WritableSignal<any>;
893
- /** Local, ephemeral context for widget rendering */
894
- protected internalContext: WritableSignal<Record<string, any>>;
895
- private lastTypeByKey;
896
- protected draftVersion: WritableSignal<number>;
897
- protected draftKey: _angular_core.Signal<string>;
898
- protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
899
- protected presetTypes: _angular_core.Signal<AXPExtraPropertyType[]>;
900
- protected canAdd: _angular_core.Signal<boolean>;
901
- /** Sync incoming items' values into internal context for rendering */
902
- private readonly syncContextFromItems;
903
- /**
904
- * Clear item values when their widget type changes to avoid incompatible stale values
905
- */
906
- private readonly clearValueOnTypeChange;
907
- protected handleAddItem(): void;
908
- protected handleRemoveItem(key: string): void;
909
- protected handleDrop(event: CdkDragDrop<AXPExtraPropertyItem[]>): void;
910
- protected selectPreset(id: string): void;
911
- private nodeCache;
912
- private draftNodeCache?;
913
- protected getNode(item: AXPExtraPropertyItem): AXPWidgetNode;
914
- protected draftNode(): AXPWidgetNode;
915
- protected newTypeChanged(val: string): void;
916
- protected ngOnInit(): void;
917
- protected handleTitleChange(val: string): void;
918
- protected sanitizeKey(input: string): string;
919
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesComponent, never>;
920
- 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>;
921
- }
922
-
923
- declare class AXPExtraPropertiesSchemaComponent {
924
- schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
925
- mode: _angular_core.InputSignal<"view" | "edit">;
926
- schemaChange: _angular_core.OutputEmitterRef<AXPExtraPropertySchemaItem[]>;
927
- private readonly providedTypes;
928
- private readonly translationService;
929
- protected newTitle: WritableSignal<string>;
930
- protected newTypeId: WritableSignal<string>;
931
- protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
932
- protected canAdd: _angular_core.Signal<boolean>;
933
- protected selectedKey: WritableSignal<string | null>;
934
- protected selectedItem: _angular_core.Signal<AXPExtraPropertySchemaItem | null>;
935
- constructor();
936
- protected handleAdd(): void;
937
- protected handleRemove(key: string): void;
938
- protected handleDrop(event: CdkDragDrop<AXPExtraPropertySchemaItem[]>): void;
939
- protected handleUpdateTitle(key: string, title: string): void;
940
- protected handleUpdateType(key: string, typeId: string): void;
941
- protected newTypeChanged(val: string): void;
942
- protected handleTitleChange(val: string): void;
943
- protected handleSelect(key: string): void;
944
- protected handleViewerChanged(e: {
945
- values: any;
946
- mode: 'init' | 'update';
947
- }): void;
948
- protected deriveKey(input: string): string;
949
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesSchemaComponent, never>;
950
- 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>;
951
- }
952
-
953
- declare class AXPExtraPropertiesValuesComponent {
954
- schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
955
- values: _angular_core.InputSignal<Record<string, any>>;
956
- mode: _angular_core.InputSignal<"view" | "edit">;
957
- valuesChange: _angular_core.OutputEmitterRef<Record<string, any>>;
958
- isRequired: (item: AXPExtraPropertySchemaItem) => any;
959
- protected internalContext: _angular_core.WritableSignal<Record<string, any>>;
960
- private nodeCache;
961
- private lastTypeByKey;
962
- protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
963
- private readonly syncContextFromInputs;
964
- private readonly clearOnSchemaTypeChange;
965
- protected getNode(item: AXPExtraPropertySchemaItem): AXPWidgetNode;
966
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesValuesComponent, never>;
967
- 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>;
968
- }
969
-
970
666
  declare class AXPQueryFiltersComponent {
971
667
  #private;
972
668
  protected translate: AXTranslationService;
973
669
  protected calendarService: AXCalendarService;
974
670
  private filterOperatorMiddleware;
975
- private settingService;
671
+ private settingsService;
976
672
  filtersDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
977
673
  initialFilters: _angular_core.InputSignal<AXPFilterQuery[]>;
978
674
  onFiltersChanged: _angular_core.OutputEmitterRef<AXPFilterQuery[]>;
@@ -1053,6 +749,353 @@ declare class AXPImageEditorService {
1053
749
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPImageEditorService>;
1054
750
  }
1055
751
 
752
+ /**
753
+ * Represents a spreadsheet item (row or column header) with id, text, and optional description
754
+ */
755
+ interface AXPSpreadsheetItem {
756
+ id: string;
757
+ title: string;
758
+ description?: string;
759
+ /**
760
+ * Optional CSS class for cell styling (e.g., 'ax-bg-success-lightest ax-text-success' for green)
761
+ * Used when this item is used as a cell value to color-code the cell
762
+ * Allows proper control of both background and text colors
763
+ */
764
+ cssClass?: string;
765
+ }
766
+ /**
767
+ * Represents the value structure for spreadsheet cells
768
+ * Stores only the ID reference to the item in cellOptions
769
+ */
770
+ type AXPSpreadsheetCellValue = string | null;
771
+ /**
772
+ * Matrix data structure: { [rowId]: { [columnId]: cellValueId } }
773
+ * cellValueId is the ID of an item from cellOptions
774
+ */
775
+ type AXPSpreadsheetData = Record<string, Record<string, AXPSpreadsheetCellValue>>;
776
+ /**
777
+ * Represents a column definition in the spreadsheet
778
+ */
779
+ interface AXPSpreadsheetColumn {
780
+ /**
781
+ * Column identifier (unique name)
782
+ */
783
+ name: string;
784
+ /**
785
+ * Display title for column header
786
+ */
787
+ title: string;
788
+ /**
789
+ * Optional description for column header
790
+ */
791
+ description?: string;
792
+ /**
793
+ * Path to access row property (e.g., 'user.name', 'age')
794
+ * Used to get/set values in row objects
795
+ */
796
+ path: string;
797
+ /**
798
+ * Widget configuration for this column
799
+ * All cells in this column will use this widget
800
+ */
801
+ widget: AXPWidgetNode;
802
+ /**
803
+ * Optional column width
804
+ */
805
+ width?: string;
806
+ /**
807
+ * Column-level readonly override
808
+ */
809
+ readonly?: boolean;
810
+ }
811
+ /**
812
+ * Spreadsheet row mode
813
+ * - 'fixed': Rows are provided as input, cannot add/remove (like matrix)
814
+ * - 'dynamic': Users can add/remove rows dynamically (like Excel)
815
+ */
816
+ type AXPSpreadsheetRowMode = 'fixed' | 'dynamic';
817
+ /**
818
+ * Event emitted when a single cell value changes
819
+ */
820
+ interface AXPSpreadsheetCellChangeEvent {
821
+ /**
822
+ * Row identifier (name for fixed mode, generated ID for dynamic mode)
823
+ */
824
+ rowId: string;
825
+ /**
826
+ * Column name
827
+ */
828
+ columnName: string;
829
+ /**
830
+ * New cell value (whatever the widget returns)
831
+ */
832
+ value: any;
833
+ /**
834
+ * Full row object after update
835
+ */
836
+ row: Record<string, any>;
837
+ }
838
+ /**
839
+ * Event emitted when a row is added or removed (dynamic mode only)
840
+ */
841
+ interface AXPSpreadsheetRowChangeEvent {
842
+ /**
843
+ * Type of change: 'add' or 'remove'
844
+ */
845
+ type: 'add' | 'remove';
846
+ /**
847
+ * Row identifier
848
+ */
849
+ rowId: string;
850
+ /**
851
+ * Full row object (for 'add' events)
852
+ */
853
+ row?: Record<string, any>;
854
+ /**
855
+ * All rows after the change
856
+ */
857
+ rows: Record<string, any>[];
858
+ }
859
+ /**
860
+ * Configuration for the spreadsheet component
861
+ */
862
+ interface AXPSpreadsheetConfig {
863
+ /**
864
+ * Widget configuration for cell editing (SelectBox)
865
+ */
866
+ cellWidget?: AXPWidgetNode;
867
+ /**
868
+ * Whether the spreadsheet is in readonly mode
869
+ */
870
+ readonly?: boolean;
871
+ /**
872
+ * Placeholder text for empty cells
873
+ */
874
+ emptyCellPlaceholder?: string;
875
+ }
876
+
877
+ declare class AXPSpreadsheetComponent {
878
+ protected readonly translationService: AXTranslationService;
879
+ /**
880
+ * Translated column titles
881
+ */
882
+ protected translatedColumnTitles: _angular_core.WritableSignal<Map<string, string>>;
883
+ /**
884
+ * Title for the spreadsheet (displayed in corner cell)
885
+ */
886
+ title: _angular_core.InputSignal<string>;
887
+ /**
888
+ * Column definitions
889
+ */
890
+ columns: _angular_core.InputSignal<AXPSpreadsheetColumn[]>;
891
+ /**
892
+ * Row mode: 'fixed' or 'dynamic'
893
+ */
894
+ rowMode: _angular_core.InputSignal<AXPSpreadsheetRowMode>;
895
+ /**
896
+ * Rows data (for fixed mode - input only)
897
+ * Each row must have a 'name' property for identification
898
+ */
899
+ rowsInput: _angular_core.InputSignal<Record<string, any>[]>;
900
+ /**
901
+ * Rows data (for dynamic mode - two-way binding)
902
+ */
903
+ rowsModel: _angular_core.ModelSignal<Record<string, any>[]>;
904
+ /**
905
+ * Whether the spreadsheet is in readonly mode
906
+ */
907
+ readonly: _angular_core.InputSignal<boolean>;
908
+ /**
909
+ * Placeholder text for empty cells (default: "–")
910
+ */
911
+ emptyCellPlaceholder: _angular_core.InputSignal<string>;
912
+ /**
913
+ * Path to property in row object to display as row header title
914
+ * Example: 'name', 'title', 'user.name'
915
+ */
916
+ rowTitlePath: _angular_core.InputSignal<string | null>;
917
+ /**
918
+ * Path to property in row object to display as row header description
919
+ * Example: 'description', 'details', 'user.description'
920
+ */
921
+ rowDescriptionPath: _angular_core.InputSignal<string | null>;
922
+ /**
923
+ * Whether to allow adding rows (dynamic mode only, default: true)
924
+ */
925
+ allowAddRows: _angular_core.InputSignal<boolean>;
926
+ /**
927
+ * Whether to allow removing rows (default: true for dynamic mode, false for fixed mode)
928
+ * Can be enabled for fixed mode if needed
929
+ */
930
+ allowRemoveRows: _angular_core.InputSignal<boolean>;
931
+ /**
932
+ * Emitted when a single cell value changes
933
+ */
934
+ cellChange: _angular_core.OutputEmitterRef<AXPSpreadsheetCellChangeEvent>;
935
+ /**
936
+ * Emitted when rows are added or removed (dynamic mode only)
937
+ */
938
+ rowChange: _angular_core.OutputEmitterRef<AXPSpreadsheetRowChangeEvent>;
939
+ /**
940
+ * Emitted when the entire spreadsheet data changes
941
+ */
942
+ spreadsheetChange: _angular_core.OutputEmitterRef<Record<string, any>[]>;
943
+ /**
944
+ * Currently editing cell: { rowId, columnName } | null
945
+ */
946
+ protected editingCell: _angular_core.WritableSignal<{
947
+ rowId: string;
948
+ columnName: string;
949
+ } | null>;
950
+ /**
951
+ * Original value when entering edit mode (for cancel functionality)
952
+ */
953
+ private originalCellValue;
954
+ /**
955
+ * Internal rows state (for fixed mode)
956
+ */
957
+ private internalRows;
958
+ /**
959
+ * Row ID mapping: rowId -> row index (for tracking)
960
+ */
961
+ private rowIdMap;
962
+ /**
963
+ * Cache for widget nodes to prevent re-rendering
964
+ * Key: `${rowIndex}_${columnName}`, Value: AXPWidgetNode
965
+ */
966
+ private widgetNodeCache;
967
+ /**
968
+ * Cache for cell values to detect actual changes
969
+ * Key: `${rowIndex}_${columnName}`, Value: any
970
+ */
971
+ private cellValueCache;
972
+ /**
973
+ * Get current rows based on mode
974
+ */
975
+ protected currentRows: _angular_core.Signal<Record<string, any>[]>;
976
+ /**
977
+ * Context for widgets-container (all rows as an object with rows array)
978
+ * This allows widgets to access their cell via path like: rows[index].column.path
979
+ */
980
+ protected spreadsheetContext: _angular_core.Signal<{
981
+ rows: Record<string, any>[];
982
+ }>;
983
+ /**
984
+ * Get rows with IDs (ensure all rows have identifiers)
985
+ */
986
+ protected rowsWithIds: _angular_core.Signal<{
987
+ rowId: string;
988
+ row: Record<string, any>;
989
+ }[]>;
990
+ /**
991
+ * Check if spreadsheet is empty
992
+ */
993
+ protected isEmpty: _angular_core.Signal<boolean>;
994
+ /**
995
+ * Check if only columns are empty
996
+ */
997
+ protected isColumnsEmpty: _angular_core.Signal<boolean>;
998
+ /**
999
+ * Check if only rows are empty
1000
+ */
1001
+ protected isRowsEmpty: _angular_core.Signal<boolean>;
1002
+ constructor();
1003
+ /**
1004
+ * Get the value for a specific cell by row index
1005
+ */
1006
+ protected getCellValue(rowIndex: number, columnName: string): any;
1007
+ /**
1008
+ * Get row title from row object using rowTitlePath
1009
+ */
1010
+ protected getRowTitle(row: Record<string, any>, path: string): string;
1011
+ /**
1012
+ * Get row description from row object using rowDescriptionPath
1013
+ */
1014
+ protected getRowDescription(row: Record<string, any>, path: string): string;
1015
+ /**
1016
+ * Get row by ID
1017
+ */
1018
+ protected getRowById(rowId: string): Record<string, any> | null;
1019
+ /**
1020
+ * Check if a cell is currently being edited
1021
+ */
1022
+ protected isCellEditing(rowId: string, columnName: string): boolean;
1023
+ /**
1024
+ * Check if a column is readonly
1025
+ */
1026
+ protected isColumnReadonly(column: AXPSpreadsheetColumn): boolean;
1027
+ /**
1028
+ * Get widget node for a cell with dynamic path based on row index
1029
+ * Path format: rows[rowIndex].column.path
1030
+ * Uses caching to prevent unnecessary re-renders
1031
+ */
1032
+ protected getCellWidgetNode(column: AXPSpreadsheetColumn, rowIndex: number): AXPWidgetNode;
1033
+ /**
1034
+ * Handle cell click to start editing
1035
+ */
1036
+ protected handleCellClick(rowId: string, columnName: string, event?: MouseEvent): void;
1037
+ /**
1038
+ * Handle cell value change from widget
1039
+ * The widget sets the value at path like rows[index].column.path
1040
+ */
1041
+ protected handleCellValueChange(rowIndex: number, columnName: string, event: AXPWidgetCoreContextChangeEvent): void;
1042
+ /**
1043
+ * Handle spreadsheet context change from widgets-container
1044
+ * This is called when any widget in the spreadsheet changes
1045
+ */
1046
+ protected handleSpreadsheetContextChange(event: AXPWidgetCoreContextChangeEvent): void;
1047
+ /**
1048
+ * Handle blur event to stop editing (when user clicks away from cell)
1049
+ */
1050
+ protected handleCellBlur(rowId: string, columnName: string): void;
1051
+ /**
1052
+ * Handle Escape key to cancel editing
1053
+ */
1054
+ protected handleKeyDown(event: KeyboardEvent): void;
1055
+ /**
1056
+ * Commit cell edit (save changes and close editing mode)
1057
+ */
1058
+ protected commitCellEdit(): void;
1059
+ /**
1060
+ * Cancel cell edit (discard changes and close editing mode - same as escape)
1061
+ */
1062
+ protected cancelCellEdit(): void;
1063
+ /**
1064
+ * Handle click outside to stop editing
1065
+ */
1066
+ protected handleClickOutside(event: MouseEvent): void;
1067
+ /**
1068
+ * Handle add row (dynamic mode only)
1069
+ */
1070
+ protected handleAddRow(): void;
1071
+ /**
1072
+ * Handle remove row (works for both fixed and dynamic modes)
1073
+ */
1074
+ protected handleRemoveRow(rowId: string, _event: AXClickEvent): void;
1075
+ /**
1076
+ * Generate unique row ID for dynamic mode
1077
+ */
1078
+ private generateRowId;
1079
+ /**
1080
+ * Update rows array (sync internal state)
1081
+ */
1082
+ private updateRows;
1083
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSpreadsheetComponent, never>;
1084
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSpreadsheetComponent, "axp-spreadsheet", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rowMode": { "alias": "rowMode"; "required": false; "isSignal": true; }; "rowsInput": { "alias": "rowsInput"; "required": false; "isSignal": true; }; "rowsModel": { "alias": "rowsModel"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "emptyCellPlaceholder": { "alias": "emptyCellPlaceholder"; "required": false; "isSignal": true; }; "rowTitlePath": { "alias": "rowTitlePath"; "required": false; "isSignal": true; }; "rowDescriptionPath": { "alias": "rowDescriptionPath"; "required": false; "isSignal": true; }; "allowAddRows": { "alias": "allowAddRows"; "required": false; "isSignal": true; }; "allowRemoveRows": { "alias": "allowRemoveRows"; "required": false; "isSignal": true; }; }, { "rowsModel": "rowsModelChange"; "cellChange": "cellChange"; "rowChange": "rowChange"; "spreadsheetChange": "spreadsheetChange"; }, never, never, true, never>;
1085
+ }
1086
+
1087
+ declare class AXPLogoComponent implements OnInit, OnChanges {
1088
+ source: any;
1089
+ protected logoType: string;
1090
+ private platform;
1091
+ ngOnInit(): void;
1092
+ ngOnChanges(): void;
1093
+ protected setLogoType(): void;
1094
+ protected setLogoTheme(): void;
1095
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLogoComponent, never>;
1096
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLogoComponent, "axp-logo", never, { "source": { "alias": "source"; "required": false; }; }, {}, never, never, true, never>;
1097
+ }
1098
+
1056
1099
  interface AXPPropertyViewerGroup {
1057
1100
  name: string;
1058
1101
  title: string;
@@ -1172,6 +1215,32 @@ declare class AXPStateMessageComponent {
1172
1215
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStateMessageComponent, "axp-state-message", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=actions]"], true, never>;
1173
1216
  }
1174
1217
 
1218
+ declare class AXPStopwatchComponent implements OnDestroy {
1219
+ mode: _angular_core.InputSignal<"count-up" | "count-down">;
1220
+ timeLimit: _angular_core.InputSignal<number | undefined>;
1221
+ format: _angular_core.InputSignal<"hh:mm:ss" | "mm:ss" | "ss">;
1222
+ autoStart: _angular_core.InputSignal<boolean>;
1223
+ showControls: _angular_core.InputSignal<boolean>;
1224
+ value: _angular_core.InputSignal<number>;
1225
+ valueChange: _angular_core.OutputEmitterRef<number>;
1226
+ timeUp: _angular_core.OutputEmitterRef<void>;
1227
+ private readonly currentTime;
1228
+ protected readonly isRunning: _angular_core.WritableSignal<boolean>;
1229
+ private intervalId;
1230
+ protected readonly isTimeUp: _angular_core.Signal<boolean>;
1231
+ protected readonly displayTime: _angular_core.Signal<string>;
1232
+ constructor();
1233
+ ngOnDestroy(): void;
1234
+ start(): void;
1235
+ pause(): void;
1236
+ reset(): void;
1237
+ private stop;
1238
+ private onTimeUp;
1239
+ private formatTime;
1240
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStopwatchComponent, never>;
1241
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStopwatchComponent, "axp-stopwatch", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "timeLimit": { "alias": "timeLimit"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "autoStart": { "alias": "autoStart"; "required": false; "isSignal": true; }; "showControls": { "alias": "showControls"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "timeUp": "timeUp"; }, never, never, true, never>;
1242
+ }
1243
+
1175
1244
  interface AXPTemplateViewerConfig {
1176
1245
  template: AXPWidgetNode | string;
1177
1246
  title?: string;
@@ -1294,6 +1363,7 @@ declare class AXPUserAvatarComponent implements OnInit, OnDestroy {
1294
1363
  avatarColor: _angular_core.Signal<string>;
1295
1364
  protected hasAvatar: _angular_core.Signal<boolean>;
1296
1365
  protected isAvatarLoaded: _angular_core.WritableSignal<boolean>;
1366
+ protected isLoading: _angular_core.Signal<boolean>;
1297
1367
  protected onImageError(event: AXHtmlEvent<ErrorEvent>): void;
1298
1368
  protected onImageLoad(event: AXHtmlEvent<Event>): void;
1299
1369
  ngOnInit(): void;
@@ -1343,9 +1413,13 @@ declare class AXPWidgetFieldConfiguratorComponent {
1343
1413
  */
1344
1414
  label: _angular_core.InputSignal<string>;
1345
1415
  /**
1346
- * Field name (used in property viewer title)
1416
+ * Field name (technical identifier, used for form field path)
1347
1417
  */
1348
1418
  fieldName: _angular_core.InputSignal<string>;
1419
+ /**
1420
+ * Field title (display name, used in UI labels and titles)
1421
+ */
1422
+ fieldTitle: _angular_core.InputSignal<string>;
1349
1423
  /**
1350
1424
  * Readonly mode
1351
1425
  */
@@ -1410,7 +1484,7 @@ declare class AXPWidgetFieldConfiguratorComponent {
1410
1484
  */
1411
1485
  protected openPreview(): Promise<void>;
1412
1486
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetFieldConfiguratorComponent, never>;
1413
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetFieldConfiguratorComponent, "axp-widget-field-configurator", never, { "widget": { "alias": "widget"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "fieldName": { "alias": "fieldName"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "widget": "widgetChange"; }, never, never, true, never>;
1487
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetFieldConfiguratorComponent, "axp-widget-field-configurator", never, { "widget": { "alias": "widget"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "fieldName": { "alias": "fieldName"; "required": false; "isSignal": true; }; "fieldTitle": { "alias": "fieldTitle"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "widget": "widgetChange"; }, never, never, true, never>;
1414
1488
  }
1415
1489
 
1416
1490
  /**
@@ -1544,6 +1618,10 @@ interface AXPWidgetPropertyViewerConfig {
1544
1618
  title: string;
1545
1619
  widget: AXPWidgetNode;
1546
1620
  mode?: 'simple' | 'advanced';
1621
+ /**
1622
+ * Property names to exclude from the viewer.
1623
+ */
1624
+ exclude?: string[];
1547
1625
  /**
1548
1626
  * Custom property injection configuration.
1549
1627
  */
@@ -1587,5 +1665,5 @@ declare class AXPWidgetPropertyViewerService {
1587
1665
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
1588
1666
  }
1589
1667
 
1590
- export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPDynamicFormDesignerComponent, AXPExtraPropertiesComponent, AXPExtraPropertiesSchemaComponent, AXPExtraPropertiesValuesComponent, AXPImageEditorPopupComponent, AXPImageEditorService, AXPMenuBadgeHelper, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPStateMessageComponent, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXTRA_PROPERTY_TYPES, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, convertDesignerFieldToFormField, convertDesignerGroupToFormGroup, convertDesignerStateToFormDefinition };
1591
- export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPDynamicFormDesignerField, AXPDynamicFormDesignerGroup, AXPDynamicFormDesignerState, AXPExtraPropertyItem, AXPExtraPropertySchemaItem, AXPExtraPropertyType, AXPFormElementWidget, AXPImageEditorOpenOptions, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyTab, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, StateMode };
1668
+ export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPImageEditorPopupComponent, AXPImageEditorService, AXPLogoComponent, AXPMenuBadgeHelper, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPSpreadsheetComponent, AXPStateMessageComponent, AXPStopwatchComponent, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER };
1669
+ export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPImageEditorOpenOptions, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyTab, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, StateMode };