@acorex/platform 21.0.0-next.51 → 21.0.0-next.53

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