@acorex/platform 21.0.0-beta.14 → 21.0.0-beta.15

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.
@@ -1,8 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnDestroy, OnInit, Type, QueryList, OnChanges, EventEmitter, WritableSignal } from '@angular/core';
3
- import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPContextChangeEvent, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery, AXPMultiLanguageString, AXPActionMenuItem, AXPExecuteCommand, AXPExecuteCommandResult, containsHtmlMarkup } from '@acorex/platform/core';
2
+ import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnDestroy, OnInit, QueryList, OnChanges, Type, EventEmitter, WritableSignal } from '@angular/core';
3
+ import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPContextChangeEvent, AXPMultiLanguageString, AXPActionMenuItem, AXPExecuteCommand, AXPExecuteCommandResult, containsHtmlMarkup, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
4
+ import { AXHtmlEvent, AXValueChangedEvent, AXClickEvent, AXDataSource, AXDataSourceFilterOption, AXDataSourceOperator, AXFilterLogic, AXEvent, AXRange } from '@acorex/cdk/common';
4
5
  import { AXPMenuItem } from '@acorex/platform/common';
5
- import { AXValueChangedEvent, AXClickEvent, AXDataSource, AXDataSourceFilterOption, AXDataSourceOperator, AXFilterLogic, AXHtmlEvent, AXEvent, AXRange } from '@acorex/cdk/common';
6
6
  import { AXTreeViewDataSource, AXTreeViewNodeClickEvent, AXTreeViewNodeToggleEvent, AXTreeViewNode, AXTreeViewDragBehavior, AXTreeViewDragArea, AXTreeViewComponent, AXTreeViewBeforeDropEvent, AXTreeViewDropEvent } from '@acorex/components/tree-view';
7
7
  import { AXPopoverComponent } from '@acorex/components/popover';
8
8
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
@@ -16,13 +16,13 @@ import { AXCalendarService } from '@acorex/core/date-time';
16
16
  import * as _acorex_core_translation from '@acorex/core/translation';
17
17
  import { AXTranslationService } from '@acorex/core/translation';
18
18
  import { AXFormComponent } from '@acorex/components/form';
19
+ import { AXSelectBoxComponent } from '@acorex/components/select-box';
19
20
  import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
20
21
  import { AXValidationSummary } from '@acorex/core/validation';
21
22
  import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
22
- import { Observable, Subject } from 'rxjs';
23
- import { AXSelectBoxComponent } from '@acorex/components/select-box';
24
23
  import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
25
24
  import { AXSchedulerComponent, AXSchedulerView, AXSchedulerResource, AXSchedulerAppointment, AXSchedulerDateRange } from '@acorex/components/scheduler';
25
+ import { Subject, Observable } from 'rxjs';
26
26
  import * as _acorex_platform_layout_components from '@acorex/platform/layout/components';
27
27
 
28
28
  declare class AXPActivityLogComponent {
@@ -87,6 +87,37 @@ declare class AXPActivityLogComponent {
87
87
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPActivityLogComponent, "axp-activity-log", never, { "activities": { "alias": "activities"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
88
88
  }
89
89
 
90
+ /**
91
+ * Generic avatar renderer with image and initials fallback.
92
+ */
93
+ declare class AXPAvatarComponent {
94
+ /** Avatar size in pixels. */
95
+ readonly size: _angular_core.InputSignal<number>;
96
+ /** Optional image source for the avatar. */
97
+ readonly src: _angular_core.InputSignal<string | undefined>;
98
+ /** Display name used for title and initials fallback. */
99
+ readonly fullName: _angular_core.InputSignal<string | undefined>;
100
+ /** Optional override for fallback text shown when image is not available. */
101
+ readonly fallbackText: _angular_core.InputSignal<string | undefined>;
102
+ /** Forces placeholder mode and '?' fallback. */
103
+ readonly placeholder: _angular_core.InputSignal<boolean>;
104
+ protected readonly isAvatarLoaded: _angular_core.WritableSignal<boolean>;
105
+ protected readonly normalizedName: _angular_core.Signal<string>;
106
+ protected readonly resolvedSrc: _angular_core.Signal<string>;
107
+ protected readonly hasAvatar: _angular_core.Signal<boolean>;
108
+ protected readonly isLoading: _angular_core.Signal<boolean>;
109
+ protected readonly avatarText: _angular_core.Signal<string>;
110
+ protected readonly avatarColor: _angular_core.Signal<string>;
111
+ protected readonly title: _angular_core.Signal<string>;
112
+ protected onImageError(event: AXHtmlEvent<ErrorEvent>): void;
113
+ protected onImageLoad(event: AXHtmlEvent<Event>): void;
114
+ private computeInitials;
115
+ private hashString;
116
+ private pickColor;
117
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAvatarComponent, never>;
118
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPAvatarComponent, "axp-avatar", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "fullName": { "alias": "fullName"; "required": false; "isSignal": true; }; "fallbackText": { "alias": "fallbackText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
119
+ }
120
+
90
121
  declare class AXPTaskBadgeService {
91
122
  private badgeMap;
92
123
  private providers;
@@ -565,102 +596,6 @@ declare class AXPDataSelectorService {
565
596
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataSelectorService>;
566
597
  }
567
598
 
568
- /**
569
- * Definition for a page component that can be registered and loaded dynamically
570
- */
571
- interface AXPPageComponentDefinition {
572
- /**
573
- * Unique key to identify the component
574
- */
575
- key: string;
576
- /**
577
- * Loader function that returns the component type (supports lazy loading)
578
- */
579
- loader: () => Type<any> | Promise<Type<any>>;
580
- }
581
- /**
582
- * Provider interface for registering page components
583
- * Similar to AXPDataSourceDefinitionProvider pattern
584
- */
585
- interface AXPPageComponentProvider {
586
- /**
587
- * Returns all component definitions provided by this provider
588
- */
589
- components(): Promise<AXPPageComponentDefinition[]>;
590
- }
591
-
592
- /**
593
- * Service for managing page components from multiple providers
594
- * Similar to AXPDataSourceDefinitionProviderService pattern
595
- *
596
- * @example
597
- * ```typescript
598
- * // In a module providers array:
599
- * {
600
- * provide: AXP_PAGE_COMPONENT_PROVIDER,
601
- * useClass: MyPageComponentProvider,
602
- * multi: true,
603
- * }
604
- *
605
- * // Example provider implementation:
606
- * export class MyPageComponentProvider implements AXPPageComponentProvider {
607
- * async components(): Promise<AXPPageComponentDefinition[]> {
608
- * return [
609
- * {
610
- * key: 'my-custom-page',
611
- * loader: () => import('./my-page.component').then(m => m.MyPageComponent),
612
- * },
613
- * ];
614
- * }
615
- * }
616
- *
617
- * // Later, get the component loader:
618
- * const loader = await pageComponentService.find('my-custom-page');
619
- * if (loader) {
620
- * const ComponentType = await loader();
621
- * // Use ComponentType
622
- * }
623
- * ```
624
- */
625
- declare class AXPPageComponentRegistryService {
626
- private providers;
627
- /**
628
- * Get all component definitions from all providers
629
- */
630
- components(): Promise<AXPPageComponentDefinition[]>;
631
- /**
632
- * Find a component loader by key
633
- */
634
- find(key: string): Promise<(() => Type<any> | Promise<Type<any>>) | undefined>;
635
- /**
636
- * Check if a component exists by key
637
- */
638
- exists(key: string): Promise<boolean>;
639
- /**
640
- * Get all registered component keys
641
- */
642
- getAll(): Promise<string[]>;
643
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageComponentRegistryService, never>;
644
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPageComponentRegistryService>;
645
- }
646
-
647
- /**
648
- * Injection token for page component providers
649
- * Use with multi: true to register multiple providers
650
- *
651
- * @example
652
- * ```typescript
653
- * providers: [
654
- * {
655
- * provide: AXP_PAGE_COMPONENT_PROVIDER,
656
- * useClass: MyPageComponentProvider,
657
- * multi: true,
658
- * }
659
- * ]
660
- * ```
661
- */
662
- declare const AXP_PAGE_COMPONENT_PROVIDER: InjectionToken<AXPPageComponentProvider[]>;
663
-
664
599
  interface AXPDragDropListItem {
665
600
  id: string;
666
601
  content: string;
@@ -1033,6 +968,160 @@ declare class AXPImageEditorService {
1033
968
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPImageEditorService>;
1034
969
  }
1035
970
 
971
+ /**
972
+ * One selectable entry for {@link AXPItemConfiguratorComponent}.
973
+ * Parents map external data into this shape. {@link propertyDefinitions} drive {@link AXPPropertyViewerService} tabs.
974
+ */
975
+ interface ItemConfiguratorListItem {
976
+ id: string;
977
+ /** Shown in the list and in the configure dialog title; plain string, i18n key, or locale map. */
978
+ title: AXPMultiLanguageString;
979
+ icon?: string;
980
+ description?: AXPMultiLanguageString;
981
+ propertyDefinitions?: AXPWidgetProperty[];
982
+ }
983
+ interface ItemConfiguratorSelectRow {
984
+ value: string;
985
+ text: string;
986
+ icon?: string;
987
+ description?: string;
988
+ }
989
+ /**
990
+ * Select an item from a list and edit its settings via {@link AXPPropertyViewerService}.
991
+ * Bound state: {@link selectedItemId} and {@link values} (context returned from the viewer). Not tied to {@link AXPWidgetNode}.
992
+ */
993
+ declare class AXPItemConfiguratorComponent {
994
+ /** Selected list entry id ({@link ItemConfiguratorListItem.id}). */
995
+ selectedItemId: _angular_core.ModelSignal<string>;
996
+ /** Values edited in the property viewer (merged from dialog result). */
997
+ values: _angular_core.ModelSignal<Record<string, unknown>>;
998
+ label: _angular_core.InputSignal<string>;
999
+ readonly: _angular_core.InputSignal<boolean>;
1000
+ items: _angular_core.InputSignal<ItemConfiguratorListItem[]>;
1001
+ headerActions: _angular_core.InputSignal<AXPActionMenuItem[]>;
1002
+ private readonly propertyViewerService;
1003
+ private readonly translationService;
1004
+ private readonly workflow;
1005
+ private readonly commandExecutor;
1006
+ protected isEditMode: _angular_core.WritableSignal<boolean>;
1007
+ protected availableItems: _angular_core.Signal<ItemConfiguratorSelectRow[]>;
1008
+ protected selectedListItem: _angular_core.Signal<ItemConfiguratorListItem | null>;
1009
+ protected resolvedPropertyDefinitions: _angular_core.Signal<AXPWidgetProperty[]>;
1010
+ protected currentItemConfig: _angular_core.Signal<{
1011
+ title: string;
1012
+ description: _acorex_core_translation.AXMultiLanguageString | undefined;
1013
+ icon: string | undefined;
1014
+ hasProperties: boolean;
1015
+ } | null>;
1016
+ protected canConfigure: _angular_core.Signal<boolean>;
1017
+ protected isConfigured: _angular_core.Signal<boolean>;
1018
+ protected visibleHeaderActions: _angular_core.Signal<AXPActionMenuItem[]>;
1019
+ protected itemSelectBox: _angular_core.Signal<AXSelectBoxComponent | undefined>;
1020
+ protected enterEditMode(): void;
1021
+ protected exitEditMode(): void;
1022
+ constructor();
1023
+ protected onSelectionChange(event: {
1024
+ value?: string | null;
1025
+ }): Promise<void>;
1026
+ protected openConfigureDialog(): Promise<void>;
1027
+ protected onHeaderActionClick(action: AXPActionMenuItem): void;
1028
+ protected isHeaderActionDisabled(action: AXPActionMenuItem): boolean;
1029
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPItemConfiguratorComponent, never>;
1030
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPItemConfiguratorComponent, "axp-item-configurator", never, { "selectedItemId": { "alias": "selectedItemId"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; }, { "selectedItemId": "selectedItemIdChange"; "values": "valuesChange"; }, never, never, true, never>;
1031
+ }
1032
+
1033
+ /**
1034
+ * Floating zoom controls for canvas-style views (org chart, workflow designer, etc.).
1035
+ * Parent container should be `position: relative` so the bar anchors to the bottom-end.
1036
+ */
1037
+ declare class AXPLayoutFloatingZoomBarComponent {
1038
+ /** Zoom level as a percentage (e.g. 100 for 100%). */
1039
+ readonly zoomLevel: _angular_core.InputSignal<number>;
1040
+ readonly zoomIn: _angular_core.OutputEmitterRef<void>;
1041
+ readonly zoomOut: _angular_core.OutputEmitterRef<void>;
1042
+ readonly zoomReset: _angular_core.OutputEmitterRef<void>;
1043
+ protected readonly zoomLabel: _angular_core.Signal<string>;
1044
+ protected onZoomIn(): void;
1045
+ protected onZoomOut(): void;
1046
+ protected onZoomReset(): void;
1047
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutFloatingZoomBarComponent, never>;
1048
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutFloatingZoomBarComponent, "axp-layout-floating-zoom-bar", never, { "zoomLevel": { "alias": "zoomLevel"; "required": false; "isSignal": true; }; }, { "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; }, never, never, true, never>;
1049
+ }
1050
+
1051
+ /** Leading icon chip in the panel header (optional). */
1052
+ interface AXPLayoutSideDetailPanelHeaderIcon {
1053
+ /** Full class list for the `<i>` element (e.g. `fa-solid fa-lg fa-fw fa-sitemap`). */
1054
+ iconClass: string;
1055
+ /** CSS custom properties for icon color (e.g. `--node-bg-color`). */
1056
+ surfaceVars?: Record<string, string>;
1057
+ /** When true, renders the shortcut overlay glyph (document explorer). */
1058
+ shortcut?: boolean;
1059
+ }
1060
+ interface AXPLayoutSideDetailPanelHeader {
1061
+ primaryTitle: string;
1062
+ secondaryTitle?: string;
1063
+ icon?: AXPLayoutSideDetailPanelHeaderIcon;
1064
+ }
1065
+ /** Shown when nothing is selected; copy is supplied by the parent. */
1066
+ interface AXPLayoutSideDetailPanelEmptyState {
1067
+ primaryTitle: string;
1068
+ message: string;
1069
+ icon?: AXPLayoutSideDetailPanelHeaderIcon;
1070
+ }
1071
+ type AXPLayoutSideDetailPanelRowFormat = 'datetime' | 'date' | 'filesize' | 'number' | 'string';
1072
+ interface AXPLayoutSideDetailPanelRow {
1073
+ label: string;
1074
+ value: string | number | Date | null | undefined;
1075
+ format?: AXPLayoutSideDetailPanelRowFormat;
1076
+ }
1077
+ interface AXPLayoutSideDetailPanelSection {
1078
+ /** Section heading; omit for a flat block of rows. */
1079
+ title?: string;
1080
+ rows?: AXPLayoutSideDetailPanelRow[];
1081
+ /**
1082
+ * Renders projected content from `[axpLayoutSideDetailPanelSection="<key>"]` instead of rows
1083
+ * (e.g. document metadata widget).
1084
+ */
1085
+ projectionKey?: string;
1086
+ }
1087
+
1088
+ /** Projects custom section body into {@link AXPLayoutSideDetailPanelComponent} by `projectionKey`. */
1089
+ declare class AXPLayoutSideDetailPanelSectionDirective {
1090
+ readonly key: _angular_core.InputSignal<string>;
1091
+ readonly template: TemplateRef<any>;
1092
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutSideDetailPanelSectionDirective, never>;
1093
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXPLayoutSideDetailPanelSectionDirective, "[axpLayoutSideDetailPanelSection]", never, { "key": { "alias": "axpLayoutSideDetailPanelSection"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1094
+ }
1095
+
1096
+ /**
1097
+ * Side detail panel for canvas-style layouts (org chart, workflow designer, document drive, etc.).
1098
+ * Visual language matches organization-chart / document-explorer detail panels.
1099
+ */
1100
+ declare class AXPLayoutSideDetailPanelComponent {
1101
+ /** When set, shows the multi-selection header (e.g. document explorer). */
1102
+ readonly multiSelectLabel: _angular_core.InputSignal<string | null>;
1103
+ /** Selected item header; omit with {@link emptyState} when nothing is selected. */
1104
+ readonly header: _angular_core.InputSignal<AXPLayoutSideDetailPanelHeader | null>;
1105
+ /** One or more titled sections of label/value rows and/or projected custom sections. */
1106
+ readonly sections: _angular_core.InputSignal<AXPLayoutSideDetailPanelSection[]>;
1107
+ /** Flat rows without wrapping sections (optional {@link rowsSectionTitle}). */
1108
+ readonly rows: _angular_core.InputSignal<AXPLayoutSideDetailPanelRow[]>;
1109
+ /** Section title when only {@link rows} is used. */
1110
+ readonly rowsSectionTitle: _angular_core.InputSignal<string | null>;
1111
+ /** Message when {@link header} is set but there are no rows/sections. */
1112
+ readonly noRowsMessage: _angular_core.InputSignal<string | null>;
1113
+ /** Empty selection state (customizable copy from parent). */
1114
+ readonly emptyState: _angular_core.InputSignal<AXPLayoutSideDetailPanelEmptyState | null>;
1115
+ readonly panelClose: _angular_core.OutputEmitterRef<void>;
1116
+ private readonly projectedSections;
1117
+ protected onClose(): void;
1118
+ protected sectionTrack(section: AXPLayoutSideDetailPanelSection, index: number): string;
1119
+ protected templateForProjectionKey(key: string): TemplateRef<unknown> | null;
1120
+ protected surfaceStyle(icon: AXPLayoutSideDetailPanelHeaderIcon | undefined): Record<string, string>;
1121
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLayoutSideDetailPanelComponent, never>;
1122
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLayoutSideDetailPanelComponent, "axp-layout-side-detail-panel", never, { "multiSelectLabel": { "alias": "multiSelectLabel"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "rowsSectionTitle": { "alias": "rowsSectionTitle"; "required": false; "isSignal": true; }; "noRowsMessage": { "alias": "noRowsMessage"; "required": false; "isSignal": true; }; "emptyState": { "alias": "emptyState"; "required": false; "isSignal": true; }; }, { "panelClose": "panelClose"; }, ["projectedSections"], never, true, never>;
1123
+ }
1124
+
1036
1125
  declare class AXPLogoComponent implements OnInit, OnChanges {
1037
1126
  source: any;
1038
1127
  protected logoType: string;
@@ -1446,50 +1535,146 @@ declare class AXPMenuCustomizerComponent implements OnInit {
1446
1535
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPMenuCustomizerComponent, "axp-menu-customizer", never, { "scopeKey": { "alias": "scopeKey"; "required": true; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "allowAddItems": { "alias": "allowAddItems"; "required": false; "isSignal": true; }; "dragBehavior": { "alias": "dragBehavior"; "required": false; "isSignal": true; }; "dragArea": { "alias": "dragArea"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
1447
1536
  }
1448
1537
 
1449
- interface AXPPropertyViewerGroup {
1450
- name: string;
1451
- title: string;
1452
- isCollapsed: boolean;
1453
- props: AXPWidgetProperty[];
1454
- }
1455
- interface AXPPropertyViewerTab {
1456
- name: string;
1457
- title: string;
1458
- groups: AXPPropertyViewerGroup[];
1459
- }
1460
- interface AXPPropertyViewerChangedEvent {
1461
- values: any;
1462
- mode: 'init' | 'update';
1463
- }
1464
- /** Payload when the property viewer popup closes after Apply. */
1465
- type AXPPropertyViewerResult = AXPPropertyViewerChangedEvent;
1466
1538
  /**
1467
- * Dialog-style ref passed to property viewer `onAction` (same shape as the layout dialog `AXPDialogRef`).
1539
+ * Definition for a page component that can be registered and loaded dynamically
1468
1540
  */
1469
- interface AXPPropertyViewerActionRef {
1470
- close(): void;
1471
- context(): any;
1472
- action(): string | undefined;
1473
- setLoading(loading: boolean): void;
1474
- }
1475
-
1476
- declare class AXPPropertyViewerComponent {
1477
- private readonly defaultMultiLanguageConfig;
1541
+ interface AXPPageComponentDefinition {
1478
1542
  /**
1479
- * List of tabs that should be rendered inside the property viewer.
1543
+ * Unique key to identify the component
1480
1544
  */
1481
- tabsInput: _angular_core.InputSignal<AXPPropertyViewerTab[]>;
1545
+ key: string;
1482
1546
  /**
1483
- * Determines rendering mode.
1547
+ * Loader function that returns the component type (supports lazy loading)
1484
1548
  */
1485
- mode: _angular_core.InputSignal<"simple" | "advanced">;
1549
+ loader: () => Type<any> | Promise<Type<any>>;
1550
+ }
1551
+ /**
1552
+ * Provider interface for registering page components
1553
+ * Similar to AXPDataSourceDefinitionProvider pattern
1554
+ */
1555
+ interface AXPPageComponentProvider {
1486
1556
  /**
1487
- * When a property uses binding expressions, controls how the expression is edited:
1488
- * `inline` — code editor in the panel (default); `popup` — button that opens the dialog editor.
1557
+ * Returns all component definitions provided by this provider
1489
1558
  */
1490
- bindingExpressionEditorMode: _angular_core.InputSignal<"inline" | "popup">;
1491
- /**
1492
- * Emits when property context changes.
1559
+ components(): Promise<AXPPageComponentDefinition[]>;
1560
+ }
1561
+
1562
+ /**
1563
+ * Service for managing page components from multiple providers
1564
+ * Similar to AXPDataSourceDefinitionProviderService pattern
1565
+ *
1566
+ * @example
1567
+ * ```typescript
1568
+ * // In a module providers array:
1569
+ * {
1570
+ * provide: AXP_PAGE_COMPONENT_PROVIDER,
1571
+ * useClass: MyPageComponentProvider,
1572
+ * multi: true,
1573
+ * }
1574
+ *
1575
+ * // Example provider implementation:
1576
+ * export class MyPageComponentProvider implements AXPPageComponentProvider {
1577
+ * async components(): Promise<AXPPageComponentDefinition[]> {
1578
+ * return [
1579
+ * {
1580
+ * key: 'my-custom-page',
1581
+ * loader: () => import('./my-page.component').then(m => m.MyPageComponent),
1582
+ * },
1583
+ * ];
1584
+ * }
1585
+ * }
1586
+ *
1587
+ * // Later, get the component loader:
1588
+ * const loader = await pageComponentService.find('my-custom-page');
1589
+ * if (loader) {
1590
+ * const ComponentType = await loader();
1591
+ * // Use ComponentType
1592
+ * }
1593
+ * ```
1594
+ */
1595
+ declare class AXPPageComponentRegistryService {
1596
+ private providers;
1597
+ /**
1598
+ * Get all component definitions from all providers
1599
+ */
1600
+ components(): Promise<AXPPageComponentDefinition[]>;
1601
+ /**
1602
+ * Find a component loader by key
1603
+ */
1604
+ find(key: string): Promise<(() => Type<any> | Promise<Type<any>>) | undefined>;
1605
+ /**
1606
+ * Check if a component exists by key
1607
+ */
1608
+ exists(key: string): Promise<boolean>;
1609
+ /**
1610
+ * Get all registered component keys
1611
+ */
1612
+ getAll(): Promise<string[]>;
1613
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPageComponentRegistryService, never>;
1614
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPageComponentRegistryService>;
1615
+ }
1616
+
1617
+ /**
1618
+ * Injection token for page component providers
1619
+ * Use with multi: true to register multiple providers
1620
+ *
1621
+ * @example
1622
+ * ```typescript
1623
+ * providers: [
1624
+ * {
1625
+ * provide: AXP_PAGE_COMPONENT_PROVIDER,
1626
+ * useClass: MyPageComponentProvider,
1627
+ * multi: true,
1628
+ * }
1629
+ * ]
1630
+ * ```
1631
+ */
1632
+ declare const AXP_PAGE_COMPONENT_PROVIDER: InjectionToken<AXPPageComponentProvider[]>;
1633
+
1634
+ interface AXPPropertyViewerGroup {
1635
+ name: string;
1636
+ title: string;
1637
+ isCollapsed: boolean;
1638
+ props: AXPWidgetProperty[];
1639
+ }
1640
+ interface AXPPropertyViewerTab {
1641
+ name: string;
1642
+ title: string;
1643
+ groups: AXPPropertyViewerGroup[];
1644
+ }
1645
+ interface AXPPropertyViewerChangedEvent {
1646
+ values: any;
1647
+ mode: 'init' | 'update';
1648
+ }
1649
+ /** Payload when the property viewer popup closes after Apply. */
1650
+ type AXPPropertyViewerResult = AXPPropertyViewerChangedEvent;
1651
+ /**
1652
+ * Dialog-style ref passed to property viewer `onAction` (same shape as the layout dialog `AXPDialogRef`).
1653
+ */
1654
+ interface AXPPropertyViewerActionRef {
1655
+ close(): void;
1656
+ context(): any;
1657
+ action(): string | undefined;
1658
+ setLoading(loading: boolean): void;
1659
+ }
1660
+
1661
+ declare class AXPPropertyViewerComponent {
1662
+ private readonly defaultMultiLanguageConfig;
1663
+ /**
1664
+ * List of tabs that should be rendered inside the property viewer.
1665
+ */
1666
+ tabsInput: _angular_core.InputSignal<AXPPropertyViewerTab[]>;
1667
+ /**
1668
+ * Determines rendering mode.
1669
+ */
1670
+ mode: _angular_core.InputSignal<"simple" | "advanced">;
1671
+ /**
1672
+ * When a property uses binding expressions, controls how the expression is edited:
1673
+ * `inline` — code editor in the panel (default); `popup` — button that opens the dialog editor.
1674
+ */
1675
+ bindingExpressionEditorMode: _angular_core.InputSignal<"inline" | "popup">;
1676
+ /**
1677
+ * Emits when property context changes.
1493
1678
  */
1494
1679
  onChanged: EventEmitter<AXPPropertyViewerChangedEvent>;
1495
1680
  protected currentTabIndex: WritableSignal<number>;
@@ -1715,87 +1900,338 @@ declare class AXPRepeaterRowsLayoutComponent {
1715
1900
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPRepeaterRowsLayoutComponent, "axp-repeater-rows-layout", never, { "count": { "alias": "count"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasControls": { "alias": "hasControls"; "required": false; "isSignal": true; }; "allowReorder": { "alias": "allowReorder"; "required": false; "isSignal": true; }; "rowTemplate": { "alias": "rowTemplate"; "required": true; "isSignal": true; }; "addItemLabelKey": { "alias": "addItemLabelKey"; "required": false; "isSignal": true; }; "emptyTitleKey": { "alias": "emptyTitleKey"; "required": false; "isSignal": true; }; "emptyDescriptionKey": { "alias": "emptyDescriptionKey"; "required": false; "isSignal": true; }; "addFirstItemLabelKey": { "alias": "addFirstItemLabelKey"; "required": false; "isSignal": true; }; }, { "addClick": "addClick"; "removeClick": "removeClick"; "drop": "drop"; }, never, never, true, never>;
1716
1901
  }
1717
1902
 
1718
- declare class AXPQuerySortsComponent {
1719
- sortDefinitions: _angular_core.ModelSignal<AXPSortDefinition[]>;
1720
- sortQueries: _angular_core.WritableSignal<AXPSortQuery[]>;
1721
- initialSortQueries: _angular_core.InputSignal<AXPSortQuery[]>;
1722
- sortQueriesChange: _angular_core.OutputEmitterRef<AXPSortQuery[]>;
1903
+ /** Scheduler appointment with optional provider tag for context menu routing. */
1904
+ type AppointmentWithProvider = AXSchedulerAppointment & {
1905
+ provider?: string;
1906
+ };
1907
+ declare class AXPResourceAppointmentComponent implements OnInit {
1908
+ /** Show resource headers in the timeline views. */
1909
+ showResourceHeaders: _angular_core.InputSignal<boolean>;
1910
+ /** Show appointments that have no resourceId. */
1911
+ showUnassignedAppointments: _angular_core.InputSignal<boolean>;
1912
+ /** Optional provider name to filter the board (e.g. from route param). */
1913
+ providerName: _angular_core.InputSignal<string | undefined>;
1914
+ private readonly resourceAppointmentService;
1915
+ private readonly formatService;
1916
+ private readonly translateService;
1917
+ private readonly contextMenu;
1918
+ protected readonly schedulerRef: _angular_core.Signal<AXSchedulerComponent | undefined>;
1919
+ protected readonly isReady: _angular_core.WritableSignal<boolean>;
1920
+ protected readonly currentDate: _angular_core.WritableSignal<Date>;
1921
+ protected readonly currentView: _angular_core.WritableSignal<AXSchedulerView>;
1922
+ private readonly currentAppointment;
1923
+ /** Raw resources returned by providers. */
1924
+ private readonly rawResources;
1925
+ /** Scheduler resources derived from provider data. */
1926
+ protected readonly schedulerResources: _angular_core.Signal<AXSchedulerResource[]>;
1927
+ /** Flat list of scheduler appointments derived from provider data. */
1928
+ protected readonly schedulerAppointments: _angular_core.Signal<AppointmentWithProvider[]>;
1929
+ /** Formatted date range text for the toolbar. */
1930
+ protected readonly timeText: _angular_core.Signal<string>;
1723
1931
  constructor();
1724
- protected drop(event: CdkDragDrop<unknown[]>): void;
1725
- getSortDirection(item: AXPSortDefinition): "desc" | "asc" | undefined;
1726
- protected changeItemSort(item: AXPSortDefinition): void;
1727
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQuerySortsComponent, never>;
1728
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQuerySortsComponent, "axp-query-sorts", never, { "sortDefinitions": { "alias": "sortDefinitions"; "required": false; "isSignal": true; }; "initialSortQueries": { "alias": "initialSortQueries"; "required": false; "isSignal": true; }; }, { "sortDefinitions": "sortDefinitionsChange"; "sortQueriesChange": "sortQueriesChange"; }, never, never, true, never>;
1932
+ ngOnInit(): Promise<void>;
1933
+ private resolveProvidersAndReady;
1934
+ /** Fetches resource + appointment data from providers and updates signals. */
1935
+ private loadData;
1936
+ /** Re-load data when the scheduler view range changes and sync toolbar date. */
1937
+ protected handleRangeChanged(range: AXSchedulerDateRange): void;
1938
+ /** Navigate to previous/next period based on current view. */
1939
+ protected changeDate(forward: boolean): void;
1940
+ /** Fallback formatted date range when scheduler ref is not yet available. */
1941
+ private formatCurrentDateRange;
1942
+ protected handleAppointmentClick(event: {
1943
+ appointment: AXSchedulerAppointment;
1944
+ nativeEvent: MouseEvent;
1945
+ }): void;
1946
+ protected handleContextMenuOpening(event: AXContextMenuOpeningEvent): Promise<void>;
1947
+ protected handleContextMenuItemClick(event: AXContextMenuItemsClickEvent): void;
1948
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPResourceAppointmentComponent, never>;
1949
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPResourceAppointmentComponent, "axp-resource-appointment", never, { "showResourceHeaders": { "alias": "showResourceHeaders"; "required": false; "isSignal": true; }; "showUnassignedAppointments": { "alias": "showUnassignedAppointments"; "required": false; "isSignal": true; }; "providerName": { "alias": "providerName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1729
1950
  }
1730
1951
 
1731
1952
  /**
1732
- * Represents a spreadsheet item (row or column header) with id, text, and optional description
1953
+ * Minimal appointment data for resource appointment board.
1954
+ * Providers return this; the component converts to scheduler/task shape as needed.
1733
1955
  */
1734
- interface AXPSpreadsheetItem {
1735
- id: string;
1956
+ interface AXPResourceAppointmentItem {
1957
+ readonly id: string | number;
1736
1958
  title: string;
1959
+ startDate: Date;
1960
+ endDate: Date;
1961
+ resourceId?: string | number;
1737
1962
  description?: string;
1738
- /**
1739
- * Optional CSS class for cell styling (e.g., 'bg-success-lightest text-success' for green)
1740
- * Used when this item is used as a cell value to color-code the cell
1741
- * Allows proper control of both background and text colors
1742
- */
1743
- cssClass?: string;
1963
+ allDay?: boolean;
1744
1964
  }
1745
1965
  /**
1746
- * Represents the value structure for spreadsheet cells
1747
- * Stores only the ID reference to the item in cellOptions
1748
- */
1749
- type AXPSpreadsheetCellValue = string | null;
1750
- /**
1751
- * Matrix data structure: { [rowId]: { [columnId]: cellValueId } }
1752
- * cellValueId is the ID of an item from cellOptions
1966
+ * Represents a status option for the resource appointment board (e.g. column or filter).
1967
+ * Aligned with task board status shape for provider compatibility.
1753
1968
  */
1754
- type AXPSpreadsheetData = Record<string, Record<string, AXPSpreadsheetCellValue>>;
1969
+ interface AXPResourceAppointmentStatus {
1970
+ key: string;
1971
+ index: number;
1972
+ title: string;
1973
+ color?: string;
1974
+ }
1755
1975
  /**
1756
- * Represents a column definition in the spreadsheet
1976
+ * Action menu item for resource appointment board with optional priority.
1977
+ * Primary actions are shown as icon-only buttons, secondary in a dropdown.
1757
1978
  */
1758
- interface AXPSpreadsheetColumn {
1759
- /**
1760
- * Column identifier (unique name)
1761
- */
1762
- name: string;
1763
- /**
1764
- * Display title for column header
1765
- */
1979
+ type AXPResourceAppointmentActionMenuItem = AXPActionMenuItem & {
1980
+ priority?: 'primary' | 'secondary';
1981
+ };
1982
+ interface AXPResourceAppointmentResource {
1983
+ readonly id: string | number;
1766
1984
  title: string;
1767
- /**
1768
- * Optional description for column header
1769
- */
1770
1985
  description?: string;
1771
- /**
1772
- * Path to access row property (e.g., 'user.name', 'age')
1773
- * Used to get/set values in row objects
1774
- */
1775
- path: string;
1776
- /**
1777
- * Widget configuration for this column
1778
- * All cells in this column will use this widget
1779
- */
1780
- widget: AXPWidgetNode;
1781
- /**
1782
- * Optional column width
1783
- */
1784
- width?: string;
1785
- /**
1786
- * Column-level readonly override
1787
- */
1788
- readonly?: boolean;
1986
+ icon?: string;
1987
+ appointments: AXPResourceAppointmentItem[];
1789
1988
  }
1790
- /**
1791
- * Spreadsheet row mode
1792
- * - 'fixed': Rows are provided as input, cannot add/remove (like matrix)
1793
- * - 'dynamic': Users can add/remove rows dynamically (like Excel)
1794
- */
1795
- type AXPSpreadsheetRowMode = 'fixed' | 'dynamic';
1796
- /**
1797
- * Event emitted when a single cell value changes
1798
- */
1989
+ interface AXPResourceAppointmentBoardFilter {
1990
+ range?: AXRange<Date>;
1991
+ statuses?: (string | number)[];
1992
+ resourceIds?: (string | number)[];
1993
+ /** When set, only these providers are queried. */
1994
+ providerNames?: string[];
1995
+ }
1996
+ declare abstract class AXPResourceAppointmentBoardProvider<T = Record<string, unknown>> {
1997
+ abstract get name(): string;
1998
+ abstract get title(): string;
1999
+ abstract get icon(): string;
2000
+ abstract getList(filter?: AXPResourceAppointmentBoardFilter): Promise<AXPResourceAppointmentResource[]>;
2001
+ abstract getStatuses(): Promise<AXPResourceAppointmentStatus[]>;
2002
+ abstract getActions(context?: AXPResourceAppointmentItem): Promise<AXPResourceAppointmentActionMenuItem[]>;
2003
+ abstract executeCommand(command: AXPExecuteCommand): Promise<AXPExecuteCommandResult>;
2004
+ }
2005
+ declare const AXP_RESOURCE_APPOINTMENT_PROVIDER: InjectionToken<AXPResourceAppointmentBoardProvider<Record<string, unknown>>[] | Promise<AXPResourceAppointmentBoardProvider<Record<string, unknown>>>[]>;
2006
+
2007
+ declare class AXPResourceAppointmentService {
2008
+ private readonly calendarService;
2009
+ private readonly providers;
2010
+ private resolvedProviders;
2011
+ refresh$: Subject<void>;
2012
+ /**
2013
+ * Resolves providers from injected AXP_RESOURCE_APPOINTMENT_PROVIDER.
2014
+ * The service must be provided in an injector that has access to the token (e.g. component providers).
2015
+ */
2016
+ resolveProviders(): Promise<AXPResourceAppointmentBoardProvider[]>;
2017
+ getProviderTypes(): Promise<AXPResourceAppointmentBoardProvider[]>;
2018
+ getProvider(name: string | undefined): AXPResourceAppointmentBoardProvider | null;
2019
+ getList(filter?: AXPResourceAppointmentBoardFilter): Promise<AXPResourceAppointmentResource[]>;
2020
+ getStatuses(providerName: string): Promise<AXPResourceAppointmentStatus[]>;
2021
+ getActions(context: AXPResourceAppointmentItem | undefined, providerName: string): Promise<AXPResourceAppointmentActionMenuItem[]>;
2022
+ executeCommand(command: AXPExecuteCommand, providerName: string): Promise<AXPExecuteCommandResult>;
2023
+ rangeCalculator(type: string): AXRange<Date> | undefined;
2024
+ private findProvider;
2025
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPResourceAppointmentService, never>;
2026
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPResourceAppointmentService>;
2027
+ }
2028
+
2029
+ /**
2030
+ * Host-owned item row. Required keys are stable; additional keys are persisted by the host mapper.
2031
+ */
2032
+ interface AXPBuilderItem {
2033
+ id: string;
2034
+ order: number;
2035
+ [key: string]: unknown;
2036
+ }
2037
+ /**
2038
+ * Host-owned section. Items live under `items` (not nested host-specific names).
2039
+ */
2040
+ interface AXPBuilderSection {
2041
+ id: string;
2042
+ order: number;
2043
+ items: AXPBuilderItem[];
2044
+ [key: string]: unknown;
2045
+ }
2046
+ interface AXPBuilderValue {
2047
+ sections: AXPBuilderSection[];
2048
+ }
2049
+ type AXPBuilderBadgeVariant = 'neutral' | 'accent' | 'warning' | 'danger' | 'success';
2050
+ interface AXPBuilderBadge {
2051
+ /** Translation key (e.g. `@general:...`) or plain text. */
2052
+ text: string;
2053
+ variant?: AXPBuilderBadgeVariant;
2054
+ }
2055
+ type AXPBuilderItemIconTone = 'default' | 'easy' | 'medium' | 'hard';
2056
+ /**
2057
+ * View model for one item row (icons, labels, badges). Built by {@link AXPBuilderDefinition.mapItemToView}.
2058
+ */
2059
+ interface AXPBuilderItemViewModel {
2060
+ icon: string;
2061
+ iconTone?: AXPBuilderItemIconTone;
2062
+ title: string;
2063
+ name?: string;
2064
+ description?: string;
2065
+ badges: AXPBuilderBadge[];
2066
+ }
2067
+ interface AXPBuilderTexts {
2068
+ addSection: string;
2069
+ addItem: string;
2070
+ emptySectionsTitle: string;
2071
+ emptySectionsDescription: string;
2072
+ emptyItemsTitle: string;
2073
+ emptyItemsDescription: string;
2074
+ /** Shown when {@link AXPBuilderDefinition.isDefaultSection} is true */
2075
+ defaultSectionBadge?: string;
2076
+ }
2077
+ /**
2078
+ * Declarative configuration for {@link AXPSectionItemsBuilderComponent}.
2079
+ * Prompts return domain slices; the builder assigns `id` / `order` / `items` where needed.
2080
+ */
2081
+ interface AXPBuilderDefinition {
2082
+ texts: AXPBuilderTexts;
2083
+ mapItemToView: (item: AXPBuilderItem, section: AXPBuilderSection) => AXPBuilderItemViewModel;
2084
+ /** When true, renders section technical `name` next to the title (parentheses). */
2085
+ showSectionTechnicalName?: boolean;
2086
+ isDefaultSection?(section: AXPBuilderSection): boolean;
2087
+ /** Minimum number of sections (default 1). */
2088
+ minSectionCount?: number;
2089
+ promptAddSection?(value: AXPBuilderValue): Promise<Record<string, unknown> | null>;
2090
+ promptEditSection?(section: AXPBuilderSection, value: AXPBuilderValue): Promise<Record<string, unknown> | null>;
2091
+ promptAddItems?(sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem[] | null>;
2092
+ promptEditItem?(item: AXPBuilderItem, sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem | null>;
2093
+ confirmRemoveSection?(section: AXPBuilderSection): Promise<boolean>;
2094
+ confirmRemoveItem?(item: AXPBuilderItem, sectionId: string): Promise<boolean>;
2095
+ }
2096
+
2097
+ declare class AXPSectionItemsBuilderComponent {
2098
+ /** Used in template to branch between escaped text and sanitized HTML. */
2099
+ protected readonly containsHtmlMarkup: typeof containsHtmlMarkup;
2100
+ readonly value: _angular_core.InputSignal<AXPBuilderValue>;
2101
+ readonly definition: _angular_core.InputSignal<AXPBuilderDefinition>;
2102
+ readonly readonlyMode: _angular_core.InputSignal<boolean>;
2103
+ readonly valueChange: _angular_core.OutputEmitterRef<AXPBuilderValue>;
2104
+ private readonly vm;
2105
+ protected readonly sectionsModel: _angular_core.Signal<AXPBuilderValue>;
2106
+ protected readonly sectionRows: _angular_core.Signal<{
2107
+ section: AXPBuilderSection;
2108
+ itemRows: {
2109
+ item: AXPBuilderItem;
2110
+ view: _acorex_platform_layout_components.AXPBuilderItemViewModel;
2111
+ }[];
2112
+ }[]>;
2113
+ protected readonly itemDropListIds: _angular_core.Signal<string[]>;
2114
+ protected readonly canRemoveSection: _angular_core.Signal<boolean>;
2115
+ constructor();
2116
+ /**
2117
+ * Opens add-section flow (same as primary "Add section" control). For page commands / ViewChild.
2118
+ */
2119
+ addSection(): Promise<void>;
2120
+ protected onAddSectionClick(): Promise<void>;
2121
+ protected onEditSection(section: AXPBuilderSection): Promise<void>;
2122
+ protected onRemoveSection(section: AXPBuilderSection): Promise<void>;
2123
+ protected onAddItems(section: AXPBuilderSection): Promise<void>;
2124
+ protected onEditItem(item: AXPBuilderItem, sectionId: string): Promise<void>;
2125
+ protected onRemoveItem(item: AXPBuilderItem, sectionId: string): Promise<void>;
2126
+ protected onSectionDrop(event: CdkDragDrop<AXPBuilderSection[]>): void;
2127
+ protected onItemDrop(event: CdkDragDrop<AXPBuilderItem[]>, targetSectionId: string): void;
2128
+ protected sectionItemsListId(sectionId: string): string;
2129
+ protected parseSectionIdFromDropListId(listId: string): string | null;
2130
+ protected isDefaultSection(section: AXPBuilderSection): boolean;
2131
+ protected isTranslationKey(text: string): boolean;
2132
+ /** Tooltip for rich HTML rows: plain text, no tags. */
2133
+ protected tooltipPlainTextForHtml(html: string): string;
2134
+ /**
2135
+ * Prefer raw section fields for display so {@link AXPMultiLanguageString} maps are not
2136
+ * lost when {@link AXPBuilderDefinition#mapItemToView} stringifies them on items.
2137
+ */
2138
+ protected sectionTitleValue(section: AXPBuilderSection): AXPMultiLanguageString | string;
2139
+ protected sectionNameValue(section: AXPBuilderSection): AXPMultiLanguageString | string | undefined;
2140
+ protected sectionDescriptionValue(section: AXPBuilderSection): AXPMultiLanguageString | string | undefined;
2141
+ /**
2142
+ * Resolves item title/name/description for display: use raw item values when present
2143
+ * (including ML maps); fall back to {@link AXPBuilderItemViewModel} only when needed.
2144
+ */
2145
+ protected itemMultilingualField(item: AXPBuilderItem, field: 'title' | 'name' | 'description', viewFallback?: string | null): AXPMultiLanguageString | string;
2146
+ private commit;
2147
+ private normalizeValue;
2148
+ private reindexSections;
2149
+ private reindexItems;
2150
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSectionItemsBuilderComponent, never>;
2151
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSectionItemsBuilderComponent, "axp-section-items-builder", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "definition": { "alias": "definition"; "required": true; "isSignal": true; }; "readonlyMode": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2152
+ }
2153
+
2154
+ declare class AXPQuerySortsComponent {
2155
+ sortDefinitions: _angular_core.ModelSignal<AXPSortDefinition[]>;
2156
+ sortQueries: _angular_core.WritableSignal<AXPSortQuery[]>;
2157
+ initialSortQueries: _angular_core.InputSignal<AXPSortQuery[]>;
2158
+ sortQueriesChange: _angular_core.OutputEmitterRef<AXPSortQuery[]>;
2159
+ constructor();
2160
+ protected drop(event: CdkDragDrop<unknown[]>): void;
2161
+ getSortDirection(item: AXPSortDefinition): "desc" | "asc" | undefined;
2162
+ protected changeItemSort(item: AXPSortDefinition): void;
2163
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQuerySortsComponent, never>;
2164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQuerySortsComponent, "axp-query-sorts", never, { "sortDefinitions": { "alias": "sortDefinitions"; "required": false; "isSignal": true; }; "initialSortQueries": { "alias": "initialSortQueries"; "required": false; "isSignal": true; }; }, { "sortDefinitions": "sortDefinitionsChange"; "sortQueriesChange": "sortQueriesChange"; }, never, never, true, never>;
2165
+ }
2166
+
2167
+ /**
2168
+ * Represents a spreadsheet item (row or column header) with id, text, and optional description
2169
+ */
2170
+ interface AXPSpreadsheetItem {
2171
+ id: string;
2172
+ title: string;
2173
+ description?: string;
2174
+ /**
2175
+ * Optional CSS class for cell styling (e.g., 'bg-success-lightest text-success' for green)
2176
+ * Used when this item is used as a cell value to color-code the cell
2177
+ * Allows proper control of both background and text colors
2178
+ */
2179
+ cssClass?: string;
2180
+ }
2181
+ /**
2182
+ * Represents the value structure for spreadsheet cells
2183
+ * Stores only the ID reference to the item in cellOptions
2184
+ */
2185
+ type AXPSpreadsheetCellValue = string | null;
2186
+ /**
2187
+ * Matrix data structure: { [rowId]: { [columnId]: cellValueId } }
2188
+ * cellValueId is the ID of an item from cellOptions
2189
+ */
2190
+ type AXPSpreadsheetData = Record<string, Record<string, AXPSpreadsheetCellValue>>;
2191
+ /**
2192
+ * Represents a column definition in the spreadsheet
2193
+ */
2194
+ interface AXPSpreadsheetColumn {
2195
+ /**
2196
+ * Column identifier (unique name)
2197
+ */
2198
+ name: string;
2199
+ /**
2200
+ * Display title for column header
2201
+ */
2202
+ title: string;
2203
+ /**
2204
+ * Optional description for column header
2205
+ */
2206
+ description?: string;
2207
+ /**
2208
+ * Path to access row property (e.g., 'user.name', 'age')
2209
+ * Used to get/set values in row objects
2210
+ */
2211
+ path: string;
2212
+ /**
2213
+ * Widget configuration for this column
2214
+ * All cells in this column will use this widget
2215
+ */
2216
+ widget: AXPWidgetNode;
2217
+ /**
2218
+ * Optional column width
2219
+ */
2220
+ width?: string;
2221
+ /**
2222
+ * Column-level readonly override
2223
+ */
2224
+ readonly?: boolean;
2225
+ }
2226
+ /**
2227
+ * Spreadsheet row mode
2228
+ * - 'fixed': Rows are provided as input, cannot add/remove (like matrix)
2229
+ * - 'dynamic': Users can add/remove rows dynamically (like Excel)
2230
+ */
2231
+ type AXPSpreadsheetRowMode = 'fixed' | 'dynamic';
2232
+ /**
2233
+ * Event emitted when a single cell value changes
2234
+ */
1799
2235
  interface AXPSpreadsheetCellChangeEvent {
1800
2236
  /**
1801
2237
  * Row identifier (name for fixed mode, generated ID for dynamic mode)
@@ -2064,16 +2500,84 @@ declare class AXPSpreadsheetComponent {
2064
2500
  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>;
2065
2501
  }
2066
2502
 
2067
- type StateMode = 'empty' | 'error' | 'loading' | 'warning' | 'info' | 'success';
2068
- declare class AXPStateMessageComponent {
2069
- mode: _angular_core.InputSignal<StateMode>;
2070
- icon: _angular_core.InputSignal<string>;
2071
- title: _angular_core.InputSignal<string>;
2072
- description: _angular_core.InputSignal<string>;
2073
- look: _angular_core.InputSignal<"default" | "compact" | "minimal">;
2074
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStateMessageComponent, never>;
2075
- 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; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=actions]"], true, never>;
2076
- }
2503
+ /**
2504
+ * Host configuration for {@link AXPStandardSectionItemsBuilderComponent}.
2505
+ * Section add/edit UI (identity, content, visibility) and delete prompts are standardized;
2506
+ * item flows stay host-specific.
2507
+ */
2508
+ interface AXPStandardSectionItemsBuilderConfig {
2509
+ mapItemToView: AXPBuilderDefinition['mapItemToView'];
2510
+ /** When set, used instead of the built-in section add dialog. */
2511
+ promptAddSection?: AXPBuilderDefinition['promptAddSection'];
2512
+ /** When set, used instead of the built-in section edit dialog. */
2513
+ promptEditSection?: AXPBuilderDefinition['promptEditSection'];
2514
+ promptAddItems?: AXPBuilderDefinition['promptAddItems'];
2515
+ promptEditItem?: AXPBuilderDefinition['promptEditItem'];
2516
+ /** Merged over built-in empty-state / action labels */
2517
+ texts?: Partial<AXPBuilderTexts>;
2518
+ showSectionTechnicalName?: boolean;
2519
+ isDefaultSection?: AXPBuilderDefinition['isDefaultSection'];
2520
+ minSectionCount?: number;
2521
+ /**
2522
+ * Property viewer tabs for section add/edit.
2523
+ * Default: {@link STANDARD_SECTION_ITEMS_SECTION_TABS}.
2524
+ */
2525
+ sectionEditTabs?: AXPPropertyViewerTab[];
2526
+ /** Override default delete-section confirmation. */
2527
+ confirmRemoveSection?: AXPBuilderDefinition['confirmRemoveSection'];
2528
+ /** Override default delete-item confirmation. */
2529
+ confirmRemoveItem?: AXPBuilderDefinition['confirmRemoveItem'];
2530
+ }
2531
+ /** Context shape bound to the default section property viewer (paths match keys). */
2532
+ interface AXPStandardSectionFormContext {
2533
+ /** Unique technical name (section `name` in the builder model). */
2534
+ name?: string;
2535
+ tags?: unknown;
2536
+ title?: string | AXPMultiLanguageString;
2537
+ description?: string | AXPMultiLanguageString;
2538
+ isVisible?: boolean;
2539
+ }
2540
+
2541
+ /**
2542
+ * Default section editor: Identity (name, tags), Content (title, description), Visibility.
2543
+ */
2544
+ declare const STANDARD_SECTION_ITEMS_SECTION_TABS: AXPPropertyViewerTab[];
2545
+
2546
+ declare class AXPStandardSectionItemsBuilderComponent {
2547
+ readonly value: _angular_core.InputSignal<AXPBuilderValue>;
2548
+ readonly config: _angular_core.InputSignal<AXPStandardSectionItemsBuilderConfig>;
2549
+ readonly readonlyMode: _angular_core.InputSignal<boolean>;
2550
+ readonly valueChange: _angular_core.OutputEmitterRef<AXPBuilderValue>;
2551
+ private readonly inner;
2552
+ private readonly dialogService;
2553
+ private readonly translationService;
2554
+ private readonly propertyViewerService;
2555
+ protected readonly mergedDefinition: _angular_core.Signal<AXPBuilderDefinition>;
2556
+ /** Same entry as page commands / toolbar: open standardized add-section dialog. */
2557
+ addSection(): Promise<void>;
2558
+ private isDuplicateSectionName;
2559
+ /**
2560
+ * `AXPBuilderSection` uses `[key: string]: unknown`; cast to form-bound type without resolving ML.
2561
+ */
2562
+ private sectionFieldForForm;
2563
+ private buildSectionContext;
2564
+ private openSectionDialog;
2565
+ private defaultConfirmRemoveSection;
2566
+ private defaultConfirmRemoveItem;
2567
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStandardSectionItemsBuilderComponent, never>;
2568
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStandardSectionItemsBuilderComponent, "axp-standard-section-items-builder", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "readonlyMode": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2569
+ }
2570
+
2571
+ type StateMode = 'empty' | 'error' | 'loading' | 'warning' | 'info' | 'success';
2572
+ declare class AXPStateMessageComponent {
2573
+ mode: _angular_core.InputSignal<StateMode>;
2574
+ icon: _angular_core.InputSignal<string>;
2575
+ title: _angular_core.InputSignal<string>;
2576
+ description: _angular_core.InputSignal<string>;
2577
+ look: _angular_core.InputSignal<"default" | "compact" | "minimal">;
2578
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStateMessageComponent, never>;
2579
+ 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; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=actions]"], true, never>;
2580
+ }
2077
2581
 
2078
2582
  declare class AXPStopwatchComponent implements OnDestroy {
2079
2583
  mode: _angular_core.InputSignal<"count-up" | "count-down">;
@@ -2246,37 +2750,6 @@ declare class AXPTemplateViewerService {
2246
2750
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPTemplateViewerService>;
2247
2751
  }
2248
2752
 
2249
- /**
2250
- * Generic avatar renderer with image and initials fallback.
2251
- */
2252
- declare class AXPAvatarComponent {
2253
- /** Avatar size in pixels. */
2254
- readonly size: _angular_core.InputSignal<number>;
2255
- /** Optional image source for the avatar. */
2256
- readonly src: _angular_core.InputSignal<string | undefined>;
2257
- /** Display name used for title and initials fallback. */
2258
- readonly fullName: _angular_core.InputSignal<string | undefined>;
2259
- /** Optional override for fallback text shown when image is not available. */
2260
- readonly fallbackText: _angular_core.InputSignal<string | undefined>;
2261
- /** Forces placeholder mode and '?' fallback. */
2262
- readonly placeholder: _angular_core.InputSignal<boolean>;
2263
- protected readonly isAvatarLoaded: _angular_core.WritableSignal<boolean>;
2264
- protected readonly normalizedName: _angular_core.Signal<string>;
2265
- protected readonly resolvedSrc: _angular_core.Signal<string>;
2266
- protected readonly hasAvatar: _angular_core.Signal<boolean>;
2267
- protected readonly isLoading: _angular_core.Signal<boolean>;
2268
- protected readonly avatarText: _angular_core.Signal<string>;
2269
- protected readonly avatarColor: _angular_core.Signal<string>;
2270
- protected readonly title: _angular_core.Signal<string>;
2271
- protected onImageError(event: AXHtmlEvent<ErrorEvent>): void;
2272
- protected onImageLoad(event: AXHtmlEvent<Event>): void;
2273
- private computeInitials;
2274
- private hashString;
2275
- private pickColor;
2276
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAvatarComponent, never>;
2277
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPAvatarComponent, "axp-avatar", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "fullName": { "alias": "fullName"; "required": false; "isSignal": true; }; "fallbackText": { "alias": "fallbackText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2278
- }
2279
-
2280
2753
  type AXPUserAvatarSize = 'small' | 'medium' | 'large';
2281
2754
  type AXPUserAvatarStatus = 'online' | 'offline';
2282
2755
  type AXPUserAvatarData = {
@@ -2372,68 +2845,6 @@ declare class AXPQueryViewsComponent {
2372
2845
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQueryViewsComponent, "axp-query-views", never, { "views": { "alias": "views"; "required": false; "isSignal": true; }; "selectedView": { "alias": "selectedView"; "required": true; "isSignal": true; }; }, { "views": "viewsChange"; "selectedView": "selectedViewChange"; }, never, never, true, never>;
2373
2846
  }
2374
2847
 
2375
- /**
2376
- * One selectable entry for {@link AXPItemConfiguratorComponent}.
2377
- * Parents map external data into this shape. {@link propertyDefinitions} drive {@link AXPPropertyViewerService} tabs.
2378
- */
2379
- interface ItemConfiguratorListItem {
2380
- id: string;
2381
- /** Shown in the list and in the configure dialog title; plain string, i18n key, or locale map. */
2382
- title: AXPMultiLanguageString;
2383
- icon?: string;
2384
- description?: AXPMultiLanguageString;
2385
- propertyDefinitions?: AXPWidgetProperty[];
2386
- }
2387
- interface ItemConfiguratorSelectRow {
2388
- value: string;
2389
- text: string;
2390
- icon?: string;
2391
- description?: string;
2392
- }
2393
- /**
2394
- * Select an item from a list and edit its settings via {@link AXPPropertyViewerService}.
2395
- * Bound state: {@link selectedItemId} and {@link values} (context returned from the viewer). Not tied to {@link AXPWidgetNode}.
2396
- */
2397
- declare class AXPItemConfiguratorComponent {
2398
- /** Selected list entry id ({@link ItemConfiguratorListItem.id}). */
2399
- selectedItemId: _angular_core.ModelSignal<string>;
2400
- /** Values edited in the property viewer (merged from dialog result). */
2401
- values: _angular_core.ModelSignal<Record<string, unknown>>;
2402
- label: _angular_core.InputSignal<string>;
2403
- readonly: _angular_core.InputSignal<boolean>;
2404
- items: _angular_core.InputSignal<ItemConfiguratorListItem[]>;
2405
- headerActions: _angular_core.InputSignal<AXPActionMenuItem[]>;
2406
- private readonly propertyViewerService;
2407
- private readonly translationService;
2408
- private readonly workflow;
2409
- private readonly commandExecutor;
2410
- protected isEditMode: _angular_core.WritableSignal<boolean>;
2411
- protected availableItems: _angular_core.Signal<ItemConfiguratorSelectRow[]>;
2412
- protected selectedListItem: _angular_core.Signal<ItemConfiguratorListItem | null>;
2413
- protected resolvedPropertyDefinitions: _angular_core.Signal<AXPWidgetProperty[]>;
2414
- protected currentItemConfig: _angular_core.Signal<{
2415
- title: string;
2416
- description: _acorex_core_translation.AXMultiLanguageString | undefined;
2417
- icon: string | undefined;
2418
- hasProperties: boolean;
2419
- } | null>;
2420
- protected canConfigure: _angular_core.Signal<boolean>;
2421
- protected isConfigured: _angular_core.Signal<boolean>;
2422
- protected visibleHeaderActions: _angular_core.Signal<AXPActionMenuItem[]>;
2423
- protected itemSelectBox: _angular_core.Signal<AXSelectBoxComponent | undefined>;
2424
- protected enterEditMode(): void;
2425
- protected exitEditMode(): void;
2426
- constructor();
2427
- protected onSelectionChange(event: {
2428
- value?: string | null;
2429
- }): Promise<void>;
2430
- protected openConfigureDialog(): Promise<void>;
2431
- protected onHeaderActionClick(action: AXPActionMenuItem): void;
2432
- protected isHeaderActionDisabled(action: AXPActionMenuItem): boolean;
2433
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPItemConfiguratorComponent, never>;
2434
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPItemConfiguratorComponent, "axp-item-configurator", never, { "selectedItemId": { "alias": "selectedItemId"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "headerActions": { "alias": "headerActions"; "required": false; "isSignal": true; }; }, { "selectedItemId": "selectedItemIdChange"; "values": "valuesChange"; }, never, never, true, never>;
2435
- }
2436
-
2437
2848
  /**
2438
2849
  * Widget field configurator for entity forms: composes {@link AXPItemConfiguratorComponent} with
2439
2850
  * {@link AXPWidgetRegistryService} list items and widget preview.
@@ -2655,324 +3066,5 @@ declare class AXPWidgetPropertyViewerService {
2655
3066
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
2656
3067
  }
2657
3068
 
2658
- /** Scheduler appointment with optional provider tag for context menu routing. */
2659
- type AppointmentWithProvider = AXSchedulerAppointment & {
2660
- provider?: string;
2661
- };
2662
- declare class AXPResourceAppointmentComponent implements OnInit {
2663
- /** Show resource headers in the timeline views. */
2664
- showResourceHeaders: _angular_core.InputSignal<boolean>;
2665
- /** Show appointments that have no resourceId. */
2666
- showUnassignedAppointments: _angular_core.InputSignal<boolean>;
2667
- /** Optional provider name to filter the board (e.g. from route param). */
2668
- providerName: _angular_core.InputSignal<string | undefined>;
2669
- private readonly resourceAppointmentService;
2670
- private readonly formatService;
2671
- private readonly translateService;
2672
- private readonly contextMenu;
2673
- protected readonly schedulerRef: _angular_core.Signal<AXSchedulerComponent | undefined>;
2674
- protected readonly isReady: _angular_core.WritableSignal<boolean>;
2675
- protected readonly currentDate: _angular_core.WritableSignal<Date>;
2676
- protected readonly currentView: _angular_core.WritableSignal<AXSchedulerView>;
2677
- private readonly currentAppointment;
2678
- /** Raw resources returned by providers. */
2679
- private readonly rawResources;
2680
- /** Scheduler resources derived from provider data. */
2681
- protected readonly schedulerResources: _angular_core.Signal<AXSchedulerResource[]>;
2682
- /** Flat list of scheduler appointments derived from provider data. */
2683
- protected readonly schedulerAppointments: _angular_core.Signal<AppointmentWithProvider[]>;
2684
- /** Formatted date range text for the toolbar. */
2685
- protected readonly timeText: _angular_core.Signal<string>;
2686
- constructor();
2687
- ngOnInit(): Promise<void>;
2688
- private resolveProvidersAndReady;
2689
- /** Fetches resource + appointment data from providers and updates signals. */
2690
- private loadData;
2691
- /** Re-load data when the scheduler view range changes and sync toolbar date. */
2692
- protected handleRangeChanged(range: AXSchedulerDateRange): void;
2693
- /** Navigate to previous/next period based on current view. */
2694
- protected changeDate(forward: boolean): void;
2695
- /** Fallback formatted date range when scheduler ref is not yet available. */
2696
- private formatCurrentDateRange;
2697
- protected handleAppointmentClick(event: {
2698
- appointment: AXSchedulerAppointment;
2699
- nativeEvent: MouseEvent;
2700
- }): void;
2701
- protected handleContextMenuOpening(event: AXContextMenuOpeningEvent): Promise<void>;
2702
- protected handleContextMenuItemClick(event: AXContextMenuItemsClickEvent): void;
2703
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPResourceAppointmentComponent, never>;
2704
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPResourceAppointmentComponent, "axp-resource-appointment", never, { "showResourceHeaders": { "alias": "showResourceHeaders"; "required": false; "isSignal": true; }; "showUnassignedAppointments": { "alias": "showUnassignedAppointments"; "required": false; "isSignal": true; }; "providerName": { "alias": "providerName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2705
- }
2706
-
2707
- /**
2708
- * Minimal appointment data for resource appointment board.
2709
- * Providers return this; the component converts to scheduler/task shape as needed.
2710
- */
2711
- interface AXPResourceAppointmentItem {
2712
- readonly id: string | number;
2713
- title: string;
2714
- startDate: Date;
2715
- endDate: Date;
2716
- resourceId?: string | number;
2717
- description?: string;
2718
- allDay?: boolean;
2719
- }
2720
- /**
2721
- * Represents a status option for the resource appointment board (e.g. column or filter).
2722
- * Aligned with task board status shape for provider compatibility.
2723
- */
2724
- interface AXPResourceAppointmentStatus {
2725
- key: string;
2726
- index: number;
2727
- title: string;
2728
- color?: string;
2729
- }
2730
- /**
2731
- * Action menu item for resource appointment board with optional priority.
2732
- * Primary actions are shown as icon-only buttons, secondary in a dropdown.
2733
- */
2734
- type AXPResourceAppointmentActionMenuItem = AXPActionMenuItem & {
2735
- priority?: 'primary' | 'secondary';
2736
- };
2737
- interface AXPResourceAppointmentResource {
2738
- readonly id: string | number;
2739
- title: string;
2740
- description?: string;
2741
- icon?: string;
2742
- appointments: AXPResourceAppointmentItem[];
2743
- }
2744
- interface AXPResourceAppointmentBoardFilter {
2745
- range?: AXRange<Date>;
2746
- statuses?: (string | number)[];
2747
- resourceIds?: (string | number)[];
2748
- /** When set, only these providers are queried. */
2749
- providerNames?: string[];
2750
- }
2751
- declare abstract class AXPResourceAppointmentBoardProvider<T = Record<string, unknown>> {
2752
- abstract get name(): string;
2753
- abstract get title(): string;
2754
- abstract get icon(): string;
2755
- abstract getList(filter?: AXPResourceAppointmentBoardFilter): Promise<AXPResourceAppointmentResource[]>;
2756
- abstract getStatuses(): Promise<AXPResourceAppointmentStatus[]>;
2757
- abstract getActions(context?: AXPResourceAppointmentItem): Promise<AXPResourceAppointmentActionMenuItem[]>;
2758
- abstract executeCommand(command: AXPExecuteCommand): Promise<AXPExecuteCommandResult>;
2759
- }
2760
- declare const AXP_RESOURCE_APPOINTMENT_PROVIDER: InjectionToken<AXPResourceAppointmentBoardProvider<Record<string, unknown>>[] | Promise<AXPResourceAppointmentBoardProvider<Record<string, unknown>>>[]>;
2761
-
2762
- declare class AXPResourceAppointmentService {
2763
- private readonly calendarService;
2764
- private readonly providers;
2765
- private resolvedProviders;
2766
- refresh$: Subject<void>;
2767
- /**
2768
- * Resolves providers from injected AXP_RESOURCE_APPOINTMENT_PROVIDER.
2769
- * The service must be provided in an injector that has access to the token (e.g. component providers).
2770
- */
2771
- resolveProviders(): Promise<AXPResourceAppointmentBoardProvider[]>;
2772
- getProviderTypes(): Promise<AXPResourceAppointmentBoardProvider[]>;
2773
- getProvider(name: string | undefined): AXPResourceAppointmentBoardProvider | null;
2774
- getList(filter?: AXPResourceAppointmentBoardFilter): Promise<AXPResourceAppointmentResource[]>;
2775
- getStatuses(providerName: string): Promise<AXPResourceAppointmentStatus[]>;
2776
- getActions(context: AXPResourceAppointmentItem | undefined, providerName: string): Promise<AXPResourceAppointmentActionMenuItem[]>;
2777
- executeCommand(command: AXPExecuteCommand, providerName: string): Promise<AXPExecuteCommandResult>;
2778
- rangeCalculator(type: string): AXRange<Date> | undefined;
2779
- private findProvider;
2780
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPResourceAppointmentService, never>;
2781
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPResourceAppointmentService>;
2782
- }
2783
-
2784
- /**
2785
- * Host-owned item row. Required keys are stable; additional keys are persisted by the host mapper.
2786
- */
2787
- interface AXPBuilderItem {
2788
- id: string;
2789
- order: number;
2790
- [key: string]: unknown;
2791
- }
2792
- /**
2793
- * Host-owned section. Items live under `items` (not nested host-specific names).
2794
- */
2795
- interface AXPBuilderSection {
2796
- id: string;
2797
- order: number;
2798
- items: AXPBuilderItem[];
2799
- [key: string]: unknown;
2800
- }
2801
- interface AXPBuilderValue {
2802
- sections: AXPBuilderSection[];
2803
- }
2804
- type AXPBuilderBadgeVariant = 'neutral' | 'accent' | 'warning' | 'danger' | 'success';
2805
- interface AXPBuilderBadge {
2806
- /** Translation key (e.g. `@general:...`) or plain text. */
2807
- text: string;
2808
- variant?: AXPBuilderBadgeVariant;
2809
- }
2810
- type AXPBuilderItemIconTone = 'default' | 'easy' | 'medium' | 'hard';
2811
- /**
2812
- * View model for one item row (icons, labels, badges). Built by {@link AXPBuilderDefinition.mapItemToView}.
2813
- */
2814
- interface AXPBuilderItemViewModel {
2815
- icon: string;
2816
- iconTone?: AXPBuilderItemIconTone;
2817
- title: string;
2818
- name?: string;
2819
- description?: string;
2820
- badges: AXPBuilderBadge[];
2821
- }
2822
- interface AXPBuilderTexts {
2823
- addSection: string;
2824
- addItem: string;
2825
- emptySectionsTitle: string;
2826
- emptySectionsDescription: string;
2827
- emptyItemsTitle: string;
2828
- emptyItemsDescription: string;
2829
- /** Shown when {@link AXPBuilderDefinition.isDefaultSection} is true */
2830
- defaultSectionBadge?: string;
2831
- }
2832
- /**
2833
- * Declarative configuration for {@link AXPSectionItemsBuilderComponent}.
2834
- * Prompts return domain slices; the builder assigns `id` / `order` / `items` where needed.
2835
- */
2836
- interface AXPBuilderDefinition {
2837
- texts: AXPBuilderTexts;
2838
- mapItemToView: (item: AXPBuilderItem, section: AXPBuilderSection) => AXPBuilderItemViewModel;
2839
- /** When true, renders section technical `name` next to the title (parentheses). */
2840
- showSectionTechnicalName?: boolean;
2841
- isDefaultSection?(section: AXPBuilderSection): boolean;
2842
- /** Minimum number of sections (default 1). */
2843
- minSectionCount?: number;
2844
- promptAddSection?(value: AXPBuilderValue): Promise<Record<string, unknown> | null>;
2845
- promptEditSection?(section: AXPBuilderSection, value: AXPBuilderValue): Promise<Record<string, unknown> | null>;
2846
- promptAddItems?(sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem[] | null>;
2847
- promptEditItem?(item: AXPBuilderItem, sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem | null>;
2848
- confirmRemoveSection?(section: AXPBuilderSection): Promise<boolean>;
2849
- confirmRemoveItem?(item: AXPBuilderItem, sectionId: string): Promise<boolean>;
2850
- }
2851
-
2852
- declare class AXPSectionItemsBuilderComponent {
2853
- /** Used in template to branch between escaped text and sanitized HTML. */
2854
- protected readonly containsHtmlMarkup: typeof containsHtmlMarkup;
2855
- readonly value: _angular_core.InputSignal<AXPBuilderValue>;
2856
- readonly definition: _angular_core.InputSignal<AXPBuilderDefinition>;
2857
- readonly readonlyMode: _angular_core.InputSignal<boolean>;
2858
- readonly valueChange: _angular_core.OutputEmitterRef<AXPBuilderValue>;
2859
- private readonly vm;
2860
- protected readonly sectionsModel: _angular_core.Signal<AXPBuilderValue>;
2861
- protected readonly sectionRows: _angular_core.Signal<{
2862
- section: AXPBuilderSection;
2863
- itemRows: {
2864
- item: AXPBuilderItem;
2865
- view: _acorex_platform_layout_components.AXPBuilderItemViewModel;
2866
- }[];
2867
- }[]>;
2868
- protected readonly itemDropListIds: _angular_core.Signal<string[]>;
2869
- protected readonly canRemoveSection: _angular_core.Signal<boolean>;
2870
- constructor();
2871
- /**
2872
- * Opens add-section flow (same as primary "Add section" control). For page commands / ViewChild.
2873
- */
2874
- addSection(): Promise<void>;
2875
- protected onAddSectionClick(): Promise<void>;
2876
- protected onEditSection(section: AXPBuilderSection): Promise<void>;
2877
- protected onRemoveSection(section: AXPBuilderSection): Promise<void>;
2878
- protected onAddItems(section: AXPBuilderSection): Promise<void>;
2879
- protected onEditItem(item: AXPBuilderItem, sectionId: string): Promise<void>;
2880
- protected onRemoveItem(item: AXPBuilderItem, sectionId: string): Promise<void>;
2881
- protected onSectionDrop(event: CdkDragDrop<AXPBuilderSection[]>): void;
2882
- protected onItemDrop(event: CdkDragDrop<AXPBuilderItem[]>, targetSectionId: string): void;
2883
- protected sectionItemsListId(sectionId: string): string;
2884
- protected parseSectionIdFromDropListId(listId: string): string | null;
2885
- protected isDefaultSection(section: AXPBuilderSection): boolean;
2886
- protected isTranslationKey(text: string): boolean;
2887
- /** Tooltip for rich HTML rows: plain text, no tags. */
2888
- protected tooltipPlainTextForHtml(html: string): string;
2889
- /**
2890
- * Prefer raw section fields for display so {@link AXPMultiLanguageString} maps are not
2891
- * lost when {@link AXPBuilderDefinition#mapItemToView} stringifies them on items.
2892
- */
2893
- protected sectionTitleValue(section: AXPBuilderSection): AXPMultiLanguageString | string;
2894
- protected sectionNameValue(section: AXPBuilderSection): AXPMultiLanguageString | string | undefined;
2895
- protected sectionDescriptionValue(section: AXPBuilderSection): AXPMultiLanguageString | string | undefined;
2896
- /**
2897
- * Resolves item title/name/description for display: use raw item values when present
2898
- * (including ML maps); fall back to {@link AXPBuilderItemViewModel} only when needed.
2899
- */
2900
- protected itemMultilingualField(item: AXPBuilderItem, field: 'title' | 'name' | 'description', viewFallback?: string | null): AXPMultiLanguageString | string;
2901
- private commit;
2902
- private normalizeValue;
2903
- private reindexSections;
2904
- private reindexItems;
2905
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSectionItemsBuilderComponent, never>;
2906
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSectionItemsBuilderComponent, "axp-section-items-builder", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "definition": { "alias": "definition"; "required": true; "isSignal": true; }; "readonlyMode": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2907
- }
2908
-
2909
- /**
2910
- * Host configuration for {@link AXPStandardSectionItemsBuilderComponent}.
2911
- * Section add/edit UI (identity, content, visibility) and delete prompts are standardized;
2912
- * item flows stay host-specific.
2913
- */
2914
- interface AXPStandardSectionItemsBuilderConfig {
2915
- mapItemToView: AXPBuilderDefinition['mapItemToView'];
2916
- /** When set, used instead of the built-in section add dialog. */
2917
- promptAddSection?: AXPBuilderDefinition['promptAddSection'];
2918
- /** When set, used instead of the built-in section edit dialog. */
2919
- promptEditSection?: AXPBuilderDefinition['promptEditSection'];
2920
- promptAddItems?: AXPBuilderDefinition['promptAddItems'];
2921
- promptEditItem?: AXPBuilderDefinition['promptEditItem'];
2922
- /** Merged over built-in empty-state / action labels */
2923
- texts?: Partial<AXPBuilderTexts>;
2924
- showSectionTechnicalName?: boolean;
2925
- isDefaultSection?: AXPBuilderDefinition['isDefaultSection'];
2926
- minSectionCount?: number;
2927
- /**
2928
- * Property viewer tabs for section add/edit.
2929
- * Default: {@link STANDARD_SECTION_ITEMS_SECTION_TABS}.
2930
- */
2931
- sectionEditTabs?: AXPPropertyViewerTab[];
2932
- /** Override default delete-section confirmation. */
2933
- confirmRemoveSection?: AXPBuilderDefinition['confirmRemoveSection'];
2934
- /** Override default delete-item confirmation. */
2935
- confirmRemoveItem?: AXPBuilderDefinition['confirmRemoveItem'];
2936
- }
2937
- /** Context shape bound to the default section property viewer (paths match keys). */
2938
- interface AXPStandardSectionFormContext {
2939
- /** Unique technical name (section `name` in the builder model). */
2940
- name?: string;
2941
- tags?: unknown;
2942
- title?: string | AXPMultiLanguageString;
2943
- description?: string | AXPMultiLanguageString;
2944
- isVisible?: boolean;
2945
- }
2946
-
2947
- /**
2948
- * Default section editor: Identity (name, tags), Content (title, description), Visibility.
2949
- */
2950
- declare const STANDARD_SECTION_ITEMS_SECTION_TABS: AXPPropertyViewerTab[];
2951
-
2952
- declare class AXPStandardSectionItemsBuilderComponent {
2953
- readonly value: _angular_core.InputSignal<AXPBuilderValue>;
2954
- readonly config: _angular_core.InputSignal<AXPStandardSectionItemsBuilderConfig>;
2955
- readonly readonlyMode: _angular_core.InputSignal<boolean>;
2956
- readonly valueChange: _angular_core.OutputEmitterRef<AXPBuilderValue>;
2957
- private readonly inner;
2958
- private readonly dialogService;
2959
- private readonly translationService;
2960
- private readonly propertyViewerService;
2961
- protected readonly mergedDefinition: _angular_core.Signal<AXPBuilderDefinition>;
2962
- /** Same entry as page commands / toolbar: open standardized add-section dialog. */
2963
- addSection(): Promise<void>;
2964
- private isDuplicateSectionName;
2965
- /**
2966
- * `AXPBuilderSection` uses `[key: string]: unknown`; cast to form-bound type without resolving ML.
2967
- */
2968
- private sectionFieldForForm;
2969
- private buildSectionContext;
2970
- private openSectionDialog;
2971
- private defaultConfirmRemoveSection;
2972
- private defaultConfirmRemoveItem;
2973
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStandardSectionItemsBuilderComponent, never>;
2974
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStandardSectionItemsBuilderComponent, "axp-standard-section-items-builder", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "readonlyMode": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
2975
- }
2976
-
2977
- export { AXPActivityLogComponent, AXPAvatarComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPConditionBuilderComponent, AXPConditionBuilderConditionComponent, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPExpressionFieldDefinitions, AXPImageEditorPopupComponent, AXPImageEditorService, AXPItemConfiguratorComponent, AXPLogoComponent, AXPMarkdownTemplateDirective, AXPMarkdownViewerComponent, AXPMenuBadgeHelper, AXPMenuCustomizerComponent, AXPMenuCustomizerService, AXPPageComponentRegistryService, AXPPreloadFiltersComponent, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPRepeaterRowsLayoutComponent, AXPResourceAppointmentBoardProvider, AXPResourceAppointmentComponent, AXPResourceAppointmentService, AXPSectionItemsBuilderComponent, AXPSpreadsheetComponent, AXPStandardSectionItemsBuilderComponent, AXPStateMessageComponent, AXPStopwatchComponent, AXPTableColumnsEditorComponent, AXPTableColumnsEditorPopupComponent, AXPTableColumnsEditorService, AXPTableDataEditorComponent, AXPTableDataEditorPopupComponent, AXPTableDataEditorService, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXPRESSION_LOGIC_DEFINITIONS, AXP_EXPRESSION_OPERATION_DEFINITIONS, AXP_MENU_CUSTOMIZER_SERVICE, AXP_PAGE_COMPONENT_PROVIDER, AXP_RESOURCE_APPOINTMENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, STANDARD_SECTION_ITEMS_SECTION_TABS, buildPropertyViewerInitialContextFromProperties, buildPropertyViewerTabsFromProperties, buildTableColumnsEditorLayout, getFieldDefinitions, getLogicDefinition, getOperationDefinition, isPropertyBindingExpressionFormValue, preparePropertyForViewer, preparePropertyViewerTabs, registerFieldDefinitions, withValidationsOnEditorNode };
2978
- export type { AXPBuilderBadge, AXPBuilderBadgeVariant, AXPBuilderDefinition, AXPBuilderItem, AXPBuilderItemIconTone, AXPBuilderItemViewModel, AXPBuilderSection, AXPBuilderTexts, AXPBuilderValue, AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPDataSelectorAllowCreate, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPExpressionFieldDefinition, AXPExpressionGroupNode, AXPExpressionLogicDefinition, AXPExpressionLogicType, AXPExpressionNode, AXPExpressionNodeId, AXPExpressionOperationDefinition, AXPExpressionOperationNode, AXPExpressionOperationType, AXPExpressionTree, AXPExpressionValueOperand, AXPExpressionValueSourceType, AXPImageEditorOpenOptions, AXPMenuCustomizerAction, AXPMenuCustomizerItem, AXPMenuCustomizerItemType, AXPMenuCustomizerNodeData, AXPMenuCustomizerNodeMetadata, AXPMenuCustomizerState, AXPPageComponentDefinition, AXPPageComponentProvider, AXPPreloadFiltersApplyEvent, AXPPropertyViewerActionRef, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPResourceAppointmentActionMenuItem, AXPResourceAppointmentBoardFilter, AXPResourceAppointmentItem, AXPResourceAppointmentResource, AXPResourceAppointmentStatus, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPStandardSectionFormContext, AXPStandardSectionItemsBuilderConfig, AXPTableColumnDefinition, AXPTableColumnsEditorOpenOptions, AXPTableDataEditorOpenOptions, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, ConditionBuilderSelectedField, IAXPPropertyViewerDialogBuilder, IAXPPropertyViewerRoot, IAXPWidgetPropertyViewerDialogBuilder, IAXPWidgetPropertyViewerRoot, ItemConfiguratorListItem, StateMode };
3069
+ export { AXPActivityLogComponent, AXPAvatarComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPConditionBuilderComponent, AXPConditionBuilderConditionComponent, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPExpressionFieldDefinitions, AXPImageEditorPopupComponent, AXPImageEditorService, AXPItemConfiguratorComponent, AXPLayoutFloatingZoomBarComponent, AXPLayoutSideDetailPanelComponent, AXPLayoutSideDetailPanelSectionDirective, AXPLogoComponent, AXPMarkdownTemplateDirective, AXPMarkdownViewerComponent, AXPMenuBadgeHelper, AXPMenuCustomizerComponent, AXPMenuCustomizerService, AXPPageComponentRegistryService, AXPPreloadFiltersComponent, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPRepeaterRowsLayoutComponent, AXPResourceAppointmentBoardProvider, AXPResourceAppointmentComponent, AXPResourceAppointmentService, AXPSectionItemsBuilderComponent, AXPSpreadsheetComponent, AXPStandardSectionItemsBuilderComponent, AXPStateMessageComponent, AXPStopwatchComponent, AXPTableColumnsEditorComponent, AXPTableColumnsEditorPopupComponent, AXPTableColumnsEditorService, AXPTableDataEditorComponent, AXPTableDataEditorPopupComponent, AXPTableDataEditorService, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXPRESSION_LOGIC_DEFINITIONS, AXP_EXPRESSION_OPERATION_DEFINITIONS, AXP_MENU_CUSTOMIZER_SERVICE, AXP_PAGE_COMPONENT_PROVIDER, AXP_RESOURCE_APPOINTMENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, STANDARD_SECTION_ITEMS_SECTION_TABS, buildPropertyViewerInitialContextFromProperties, buildPropertyViewerTabsFromProperties, buildTableColumnsEditorLayout, getFieldDefinitions, getLogicDefinition, getOperationDefinition, isPropertyBindingExpressionFormValue, preparePropertyForViewer, preparePropertyViewerTabs, registerFieldDefinitions, withValidationsOnEditorNode };
3070
+ export type { AXPBuilderBadge, AXPBuilderBadgeVariant, AXPBuilderDefinition, AXPBuilderItem, AXPBuilderItemIconTone, AXPBuilderItemViewModel, AXPBuilderSection, AXPBuilderTexts, AXPBuilderValue, AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPDataSelectorAllowCreate, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPExpressionFieldDefinition, AXPExpressionGroupNode, AXPExpressionLogicDefinition, AXPExpressionLogicType, AXPExpressionNode, AXPExpressionNodeId, AXPExpressionOperationDefinition, AXPExpressionOperationNode, AXPExpressionOperationType, AXPExpressionTree, AXPExpressionValueOperand, AXPExpressionValueSourceType, AXPImageEditorOpenOptions, AXPLayoutSideDetailPanelEmptyState, AXPLayoutSideDetailPanelHeader, AXPLayoutSideDetailPanelHeaderIcon, AXPLayoutSideDetailPanelRow, AXPLayoutSideDetailPanelRowFormat, AXPLayoutSideDetailPanelSection, AXPMenuCustomizerAction, AXPMenuCustomizerItem, AXPMenuCustomizerItemType, AXPMenuCustomizerNodeData, AXPMenuCustomizerNodeMetadata, AXPMenuCustomizerState, AXPPageComponentDefinition, AXPPageComponentProvider, AXPPreloadFiltersApplyEvent, AXPPropertyViewerActionRef, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPResourceAppointmentActionMenuItem, AXPResourceAppointmentBoardFilter, AXPResourceAppointmentItem, AXPResourceAppointmentResource, AXPResourceAppointmentStatus, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPStandardSectionFormContext, AXPStandardSectionItemsBuilderConfig, AXPTableColumnDefinition, AXPTableColumnsEditorOpenOptions, AXPTableDataEditorOpenOptions, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, ConditionBuilderSelectedField, IAXPPropertyViewerDialogBuilder, IAXPPropertyViewerRoot, IAXPWidgetPropertyViewerDialogBuilder, IAXPWidgetPropertyViewerRoot, ItemConfiguratorListItem, StateMode };