@acorex/platform 21.0.0-next.0 → 21.0.0-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 (69) hide show
  1. package/auth/index.d.ts +238 -92
  2. package/common/index.d.ts +42 -606
  3. package/core/index.d.ts +432 -574
  4. package/fesm2022/acorex-platform-auth.mjs +200 -153
  5. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-common.mjs +112 -1009
  7. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-core.mjs +416 -694
  9. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-domain.mjs +11 -54
  11. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-builder.mjs +272 -414
  13. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-components.mjs +3105 -2064
  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 +648 -756
  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 +174 -248
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs +50 -0
  25. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs.map +1 -0
  26. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs +42 -0
  27. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs.map +1 -0
  28. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs +55 -0
  29. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs +50 -0
  31. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs.map +1 -0
  32. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs +48 -0
  33. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs +42 -0
  35. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs.map +1 -0
  36. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs} +2 -2
  37. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs.map +1 -0
  38. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs} +2 -2
  39. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs.map +1 -0
  40. package/fesm2022/acorex-platform-layout-widgets.mjs +974 -2994
  41. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  42. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs → acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs} +5 -26
  43. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs.map +1 -0
  44. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs → acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs} +5 -4
  45. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs.map +1 -0
  46. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs +101 -0
  47. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs.map +1 -0
  48. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs} +3 -3
  49. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs.map +1 -0
  50. package/fesm2022/acorex-platform-themes-default.mjs +30 -166
  51. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  52. package/fesm2022/acorex-platform-themes-shared.mjs +27 -27
  53. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  54. package/layout/builder/index.d.ts +1 -4
  55. package/layout/components/index.d.ts +327 -405
  56. package/layout/designer/index.d.ts +3 -3
  57. package/layout/entity/index.d.ts +108 -163
  58. package/layout/widget-core/index.d.ts +49 -39
  59. package/layout/widgets/index.d.ts +54 -368
  60. package/package.json +1 -1
  61. package/themes/default/index.d.ts +2 -15
  62. package/themes/shared/index.d.ts +10 -10
  63. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
  64. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
  65. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
  66. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
  67. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
  68. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
  69. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
@@ -1,18 +1,19 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders, QueryList, OnChanges, EventEmitter, WritableSignal } 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, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
4
+ import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPGridLayoutOptions, 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, AXPWidgetRendererDirective, AXPWidgetCoreContextChangeEvent, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/widget-core';
11
+ import { AXPWidgetNode, AXPWidgetCoreContextChangeEvent, AXPWidgetRendererDirective, 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';
16
17
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
17
18
  import { AXCalendarService } from '@acorex/core/date-time';
18
19
  import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
@@ -425,7 +426,6 @@ interface AXPComponentSlotConfig {
425
426
  priority?: number;
426
427
  component?: Type<any>;
427
428
  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,7 +446,6 @@ declare class AXPComponentSlotDirective implements OnInit {
446
446
  private registryService;
447
447
  private injector;
448
448
  private evaluator;
449
- private sessionService;
450
449
  viewContainerRef: ViewContainerRef;
451
450
  contextStore: {
452
451
  data: _angular_core.Signal<AXPContextData>;
@@ -478,7 +477,6 @@ declare class AXPComponentSlotDirective implements OnInit {
478
477
  isEmpty: _angular_core.Signal<boolean>;
479
478
  private _viewCount;
480
479
  private componentRefs;
481
- private placeholderRefs;
482
480
  constructor();
483
481
  ngOnInit(): Promise<void>;
484
482
  loadComponents(): Promise<void>;
@@ -530,7 +528,6 @@ interface AXPDataSelectorConfig {
530
528
  parentField?: string;
531
529
  allowCreate?: boolean;
532
530
  filters?: AXDataSourceFilterOption;
533
- selectedItemIds?: string[] | number[];
534
531
  categoryFilter?: {
535
532
  enabled: boolean;
536
533
  title: string;
@@ -546,11 +543,8 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
546
543
  protected searchPlaceholderText: _angular_core.WritableSignal<string>;
547
544
  protected filter: AXDataSourceFilterOption;
548
545
  protected grid: _angular_core.Signal<AXDataTableComponent | undefined>;
546
+ protected initialSelectedItems: any[];
549
547
  protected selectedItems: _angular_core.WritableSignal<any[]>;
550
- private initialSelectionApplied;
551
- private userHasInteracted;
552
- private isApplyingInitialSelection;
553
- private initialSelectedItems;
554
548
  protected activeCategoryFilter: _angular_core.WritableSignal<{
555
549
  node: AXPCategoryEntity;
556
550
  filterValue: any;
@@ -560,7 +554,6 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
560
554
  private readonly translationService;
561
555
  constructor();
562
556
  protected allowSelect: _angular_core.Signal<boolean>;
563
- protected selectedCount: _angular_core.Signal<number>;
564
557
  protected hasSearch: _angular_core.Signal<boolean | undefined>;
565
558
  protected categoryTreeConfig: _angular_core.Signal<{
566
559
  textField: string;
@@ -579,7 +572,7 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
579
572
  canCreateChild: boolean;
580
573
  }>;
581
574
  protected ngOnInit(): void;
582
- protected ngAfterViewInit(): Promise<void>;
575
+ protected ngAfterViewInit(): void;
583
576
  protected handleRowDbClick(e: AXDataTableRowDbClick): void;
584
577
  protected handleRowClick(e: AXDataTableRowClick): void;
585
578
  protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
@@ -594,11 +587,6 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
594
587
  private applyFilterAndSort;
595
588
  private applyCategoryFilter;
596
589
  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;
602
590
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorComponent, never>;
603
591
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDataSelectorComponent, "axp-data-selector", never, {}, {}, never, never, true, never>;
604
592
  }
@@ -663,12 +651,328 @@ declare class AXPDragDropListComponent {
663
651
  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>;
664
652
  }
665
653
 
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
+
666
970
  declare class AXPQueryFiltersComponent {
667
971
  #private;
668
972
  protected translate: AXTranslationService;
669
973
  protected calendarService: AXCalendarService;
670
974
  private filterOperatorMiddleware;
671
- private settingsService;
975
+ private settingService;
672
976
  filtersDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
673
977
  initialFilters: _angular_core.InputSignal<AXPFilterQuery[]>;
674
978
  onFiltersChanged: _angular_core.OutputEmitterRef<AXPFilterQuery[]>;
@@ -749,353 +1053,6 @@ declare class AXPImageEditorService {
749
1053
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPImageEditorService>;
750
1054
  }
751
1055
 
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
-
1099
1056
  interface AXPPropertyViewerGroup {
1100
1057
  name: string;
1101
1058
  title: string;
@@ -1215,32 +1172,6 @@ declare class AXPStateMessageComponent {
1215
1172
  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>;
1216
1173
  }
1217
1174
 
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
-
1244
1175
  interface AXPTemplateViewerConfig {
1245
1176
  template: AXPWidgetNode | string;
1246
1177
  title?: string;
@@ -1363,7 +1294,6 @@ declare class AXPUserAvatarComponent implements OnInit, OnDestroy {
1363
1294
  avatarColor: _angular_core.Signal<string>;
1364
1295
  protected hasAvatar: _angular_core.Signal<boolean>;
1365
1296
  protected isAvatarLoaded: _angular_core.WritableSignal<boolean>;
1366
- protected isLoading: _angular_core.Signal<boolean>;
1367
1297
  protected onImageError(event: AXHtmlEvent<ErrorEvent>): void;
1368
1298
  protected onImageLoad(event: AXHtmlEvent<Event>): void;
1369
1299
  ngOnInit(): void;
@@ -1413,13 +1343,9 @@ declare class AXPWidgetFieldConfiguratorComponent {
1413
1343
  */
1414
1344
  label: _angular_core.InputSignal<string>;
1415
1345
  /**
1416
- * Field name (technical identifier, used for form field path)
1346
+ * Field name (used in property viewer title)
1417
1347
  */
1418
1348
  fieldName: _angular_core.InputSignal<string>;
1419
- /**
1420
- * Field title (display name, used in UI labels and titles)
1421
- */
1422
- fieldTitle: _angular_core.InputSignal<string>;
1423
1349
  /**
1424
1350
  * Readonly mode
1425
1351
  */
@@ -1484,7 +1410,7 @@ declare class AXPWidgetFieldConfiguratorComponent {
1484
1410
  */
1485
1411
  protected openPreview(): Promise<void>;
1486
1412
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetFieldConfiguratorComponent, 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>;
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>;
1488
1414
  }
1489
1415
 
1490
1416
  /**
@@ -1618,10 +1544,6 @@ interface AXPWidgetPropertyViewerConfig {
1618
1544
  title: string;
1619
1545
  widget: AXPWidgetNode;
1620
1546
  mode?: 'simple' | 'advanced';
1621
- /**
1622
- * Property names to exclude from the viewer.
1623
- */
1624
- exclude?: string[];
1625
1547
  /**
1626
1548
  * Custom property injection configuration.
1627
1549
  */
@@ -1665,5 +1587,5 @@ declare class AXPWidgetPropertyViewerService {
1665
1587
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
1666
1588
  }
1667
1589
 
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 };
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 };