@acorex-platform/framework-client 0.0.38 → 0.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/fesm2022/acorex-platform-framework-client-auth.mjs +212 -44
  2. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs → acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs} +31 -1
  4. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-framework-client-common.mjs +824 -72
  6. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-core.mjs +212 -94
  8. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +292 -11
  10. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  11. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs} +10 -6
  12. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs +66 -0
  14. package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs +195 -0
  16. package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +3987 -1020
  18. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +1179 -304
  20. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  21. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CvaOWbJx.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dc_NpBx6.mjs} +1619 -246
  22. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dc_NpBx6.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Ds63Rt2n.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-Cx-n7ZuA.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Ds63Rt2n.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-Cx-n7ZuA.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-C0pohwdo.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-BONV249y.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-C0pohwdo.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-BONV249y.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-o2HuZrDN.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-uTG2nFly.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-o2HuZrDN.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-uTG2nFly.mjs.map} +1 -1
  29. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  30. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +3 -3
  31. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +3854 -3278
  33. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CDpzvn6z.mjs +33191 -0
  35. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CDpzvn6z.mjs.map +1 -0
  36. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs} +8 -5
  37. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs +45 -0
  39. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs.map +1 -0
  40. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs +68 -0
  41. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs +88 -0
  43. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs +71 -0
  45. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs.map +1 -0
  46. package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs +81 -0
  47. package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs.map +1 -0
  48. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs} +41 -23
  49. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs.map +1 -0
  50. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cw3NhWL8.mjs} +3 -3
  51. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cw3NhWL8.mjs.map} +1 -1
  52. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs +71 -0
  53. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs.map +1 -0
  54. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs +111 -0
  55. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs.map +1 -0
  56. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs +77 -0
  57. package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs.map +1 -0
  58. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs} +3 -3
  59. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs.map} +1 -1
  60. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BEa-vD6O.mjs} +21 -8
  61. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BEa-vD6O.mjs.map +1 -0
  62. package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs +124 -0
  63. package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs.map +1 -0
  64. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs +345 -0
  65. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs.map +1 -0
  66. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -31985
  67. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
  68. package/fesm2022/acorex-platform-framework-client-realtime.mjs +2 -1
  69. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  70. package/fesm2022/acorex-platform-framework-client-runtime.mjs +2 -2
  71. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
  72. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CHLsBvBE.mjs} +2 -2
  73. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs.map → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CHLsBvBE.mjs.map} +1 -1
  74. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +373 -70
  75. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  76. package/fesm2022/{acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs → acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs} +102 -1
  77. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs.map +1 -0
  78. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +174 -22
  79. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  80. package/package.json +2 -2
  81. package/realtime/README.md +1 -1
  82. package/types/acorex-platform-framework-client-auth.d.ts +18 -1
  83. package/types/acorex-platform-framework-client-common.d.ts +204 -8
  84. package/types/acorex-platform-framework-client-core.d.ts +149 -114
  85. package/types/acorex-platform-framework-client-layout-builder.d.ts +29 -0
  86. package/types/acorex-platform-framework-client-layout-components.d.ts +699 -146
  87. package/types/acorex-platform-framework-client-layout-designer.d.ts +192 -14
  88. package/types/acorex-platform-framework-client-layout-entity.d.ts +155 -91
  89. package/types/acorex-platform-framework-client-layout-views.d.ts +16 -0
  90. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +140 -37
  91. package/types/acorex-platform-framework-client-layout-widgets.d.ts +235 -117
  92. package/types/acorex-platform-framework-client-realtime.d.ts +16 -3
  93. package/types/acorex-platform-framework-client-themes-default.d.ts +62 -11
  94. package/types/acorex-platform-framework-client-themes-shared.d.ts +25 -2
  95. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs +0 -77
  98. package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CvaOWbJx.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnDestroy, OnInit, OnChanges, EventEmitter, EnvironmentProviders, EnvironmentInjector, ApplicationRef, QueryList, Type, WritableSignal } from '@angular/core';
3
3
  import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
4
- import { AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPWidgetNode, AXPContextData, AXPFilterClause, AXPFilterDefinition, AXPFileListItem, AXPFilterQuery, AXPContextChangeEvent, AXPMultiLanguageString, AXPActionMenuItem, AXPExecuteCommand, containsHtmlMarkup, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex-platform/framework-shared/core';
5
- import { AXPActivityLog, AXPDistributedEventListenerProvider } from '@acorex-platform/framework-client/core';
4
+ import { AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPWidgetNode, AXPContextData, AXPFilterDefinition, AXPFilterClause, AXPContextChangeEvent, AXPFileListItem, AXPPlatformScope, AXPFilterQuery, AXPQueryFilterMode, AXPQueryFilterGroupLogic, AXPMultiLanguageString, AXPActionMenuItem, AXPExecuteCommand, containsHtmlMarkup, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex-platform/framework-shared/core';
5
+ import { AXPActivityLog, AXPHookProvider, AXPDeviceService } from '@acorex-platform/framework-client/core';
6
6
  export { AXPLogoComponent } from '@acorex-platform/framework-client/core';
7
7
  import { AXHtmlEvent, AXValueChangedEvent, AXClickEvent, AXDataSource, AXDataSourceFilterOption, AXDataSourceOperator, AXFilterLogic, AXComponentClosedPromise, AXEvent, AXRange } from '@acorex/cdk/common';
8
8
  import * as _ngrx_signals from '@ngrx/signals';
@@ -15,6 +15,7 @@ import { CdkDragDrop } from '@angular/cdk/drag-drop';
15
15
  import { AXDataTableColumnComponent, AXDataTableComponent, AXRowCommandItem, AXDataTableRowDbClick, AXDataTableRowClick, AXRowCommandItemClickEvent } from '@acorex/components/data-table';
16
16
  import { AXBasePageComponent } from '@acorex/components/page';
17
17
  import { AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';
18
+ import { AXPEntityListUserStylingRule, AXPEntityMasterStylingLockedRule, AXPEntityListStylingTargetOption, AXPEntitySortPreset } from '@acorex-platform/framework-shared/entity';
18
19
  import { AXMultiLanguageString, AXTranslationService } from '@acorex/core/translation';
19
20
  import { AXToastService } from '@acorex/components/toast';
20
21
  import { AXMenuItem, AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
@@ -23,9 +24,10 @@ import { AXFileViewerGalleryConfig, AXFileViewerItem, AXFileViewerHeaderActionCl
23
24
  export { AXFileViewerGalleryConfig, AXFileViewerGalleryRef, AXFileViewerHeaderActionClickEvent, AXFileViewerItem, AXFileViewerViewPayload, provideFileViewer, resolveFileViewerFileType } from '@acorex/components/file-viewer';
24
25
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
25
26
  import { AXCalendarService } from '@acorex/core/date-time';
26
- import { AXPWidgetContainerComponent, AXPWidgetRendererDirective } from '@acorex-platform/framework-client/layout/widget-core';
27
+ import * as _acorex_platform_framework_client_layout_widget_core from '@acorex-platform/framework-client/layout/widget-core';
28
+ import { AXPWidgetContainerComponent, AXPWidgetRendererDirective, AXPLocalDataSourceColumn } from '@acorex-platform/framework-client/layout/widget-core';
27
29
  import { AXFormComponent } from '@acorex/components/form';
28
- import { AXPWidgetProperty, AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';
30
+ import { AXPWidgetProperty, AXPLayoutProfileContext, AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';
29
31
  import { AXLookupComponent } from '@acorex/components/lookup';
30
32
  import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
31
33
  import { AXValidationSummary } from '@acorex/core/validation';
@@ -121,6 +123,7 @@ declare class AXPActivityLogComponent {
121
123
  * Generic avatar renderer with image and initials fallback.
122
124
  */
123
125
  declare class AXPAvatarComponent {
126
+ #private;
124
127
  /** Avatar size in pixels. */
125
128
  readonly size: _angular_core.InputSignal<number>;
126
129
  /** Optional image source for the avatar. */
@@ -133,7 +136,11 @@ declare class AXPAvatarComponent {
133
136
  readonly fallbackText: _angular_core.InputSignal<string | undefined>;
134
137
  /** Forces placeholder mode and '?' fallback. */
135
138
  readonly placeholder: _angular_core.InputSignal<boolean>;
139
+ /** External busy state (e.g. while a new avatar file id is being resolved to a display URL). */
140
+ readonly loading: _angular_core.InputSignal<boolean>;
141
+ private readonly imageLoading;
136
142
  protected readonly imageFailed: _angular_core.WritableSignal<boolean>;
143
+ protected readonly showLoadingOverlay: _angular_core.Signal<boolean>;
137
144
  protected readonly normalizedName: _angular_core.Signal<string>;
138
145
  protected readonly resolvedSrc: _angular_core.Signal<string>;
139
146
  protected readonly hasAvatar: _angular_core.Signal<boolean>;
@@ -146,7 +153,7 @@ declare class AXPAvatarComponent {
146
153
  private hashString;
147
154
  private pickColor;
148
155
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAvatarComponent, never>;
149
- 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; }; "showTitle": { "alias": "showTitle"; "required": false; "isSignal": true; }; "fallbackText": { "alias": "fallbackText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
156
+ 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; }; "showTitle": { "alias": "showTitle"; "required": false; "isSignal": true; }; "fallbackText": { "alias": "fallbackText"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
150
157
  }
151
158
 
152
159
  declare class AXPTaskBadgeService {
@@ -192,6 +199,7 @@ declare class AXPTaskBadgeDirective {
192
199
  sideMenuWidth: _angular_core.Signal<number>;
193
200
  sideMenuCompactWidth: _angular_core.Signal<number>;
194
201
  menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
202
+ menuToggleCyclesStyle: _angular_core.Signal<boolean>;
195
203
  menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
196
204
  menuAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuAppearance>;
197
205
  headerAppearance: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPHeaderAppearance>;
@@ -205,6 +213,7 @@ declare class AXPTaskBadgeDirective {
205
213
  overlayTaskCount: _angular_core.Signal<number>;
206
214
  isNavigationLoading: _angular_core.Signal<boolean>;
207
215
  isMenuHorizontal: _angular_core.Signal<boolean>;
216
+ menuToggleCyclesStyleEnabled: _angular_core.Signal<boolean>;
208
217
  effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
209
218
  sideMenuDrawerWidth: _angular_core.Signal<number>;
210
219
  menuDarkEnabled: _angular_core.Signal<boolean>;
@@ -219,6 +228,7 @@ declare class AXPTaskBadgeDirective {
219
228
  setSideMenuWidth: (width: number) => void;
220
229
  setSideMenuCompactWidth: (width: number) => void;
221
230
  setSideMenuDrawerWidth: (width: number) => void;
231
+ setMenuVerticalMode: (mode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode) => void;
222
232
  toggleSideMenu: () => void;
223
233
  setNavigationLoading: (value: boolean, delay?: number) => void;
224
234
  setOverlayLoading: (value: boolean, delay?: number) => void;
@@ -241,6 +251,7 @@ declare class AXPTaskBadgeDirective {
241
251
  sideMenuWidth: number;
242
252
  sideMenuCompactWidth: number;
243
253
  menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
254
+ menuToggleCyclesStyle: boolean;
244
255
  menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
245
256
  menuAppearance: _acorex_platform_framework_client_themes_shared.AXPMenuAppearance;
246
257
  headerAppearance: _acorex_platform_framework_client_themes_shared.AXPHeaderAppearance;
@@ -888,6 +899,81 @@ declare class AXPDragDropListComponent {
888
899
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDragDropListComponent, "axp-drag-drop-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "listId": { "alias": "listId"; "required": false; "isSignal": true; }; "dropListGroup": { "alias": "dropListGroup"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; "itemClick": "itemClick"; "dropListDropped": "dropListDropped"; }, never, never, true, never>;
889
900
  }
890
901
 
902
+ interface AXPEntityListStylingDialogInput {
903
+ rules: readonly AXPEntityListUserStylingRule[];
904
+ lockedRules: readonly AXPEntityMasterStylingLockedRule[];
905
+ filterDefinitions: readonly AXPFilterDefinition[];
906
+ targets: readonly AXPEntityListStylingTargetOption[];
907
+ }
908
+ declare class AXPEntityListStylingDialogService {
909
+ private readonly popupService;
910
+ private readonly translationService;
911
+ open(input: AXPEntityListStylingDialogInput): Promise<AXPEntityListUserStylingRule[] | null>;
912
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListStylingDialogService, never>;
913
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityListStylingDialogService>;
914
+ }
915
+
916
+ type AXPEntityListStylingRulesKind = 'row' | 'field';
917
+ interface AXPEntityListStylingRulesLayoutOptions {
918
+ kind: AXPEntityListStylingRulesKind;
919
+ targets: readonly AXPEntityListStylingTargetOption[];
920
+ filterDefinitions: readonly AXPFilterDefinition[];
921
+ showIcon?: boolean;
922
+ showClassText?: boolean;
923
+ }
924
+ declare function buildEntityListStylingRulesLayout(options: AXPEntityListStylingRulesLayoutOptions): AXPWidgetNode;
925
+
926
+ interface AXPEntityListStylingEditorRow {
927
+ id: string;
928
+ target: string;
929
+ className: string;
930
+ icon?: string;
931
+ condition: AXPFilterClause;
932
+ }
933
+ interface AXPEntityListStylingRowEditorContext {
934
+ rowRules: AXPEntityListStylingEditorRow[];
935
+ }
936
+ interface AXPEntityListStylingFieldEditorContext {
937
+ fieldRules: AXPEntityListStylingEditorRow[];
938
+ }
939
+ declare class AXPEntityListStylingPopupComponent extends AXBasePageComponent {
940
+ private readonly translation;
941
+ private readonly rowLayoutRenderer;
942
+ private readonly fieldLayoutRenderer;
943
+ protected readonly I18N: {
944
+ readonly cancel: "@general:actions.cancel.title";
945
+ readonly save: "@general:actions.save.title";
946
+ readonly builtInHint: "@general:terms.interface.styling.built-in-hint";
947
+ readonly rowRules: "@general:terms.interface.styling.row-rules";
948
+ readonly fieldRules: "@general:terms.interface.styling.field-rules";
949
+ readonly row: "@general:terms.interface.styling.row";
950
+ readonly always: "@general:terms.interface.styling.always";
951
+ };
952
+ protected readonly recordTarget = "record";
953
+ /**
954
+ * Assigned by AXPopupService from `data` (`instance[key] = value`).
955
+ * These must stay plain fields. `input()` is overwritten and then `lockedRules()` throws.
956
+ */
957
+ rules: AXPEntityListUserStylingRule[];
958
+ lockedRules: AXPEntityMasterStylingLockedRule[];
959
+ filterDefinitions: AXPFilterDefinition[];
960
+ targets: AXPEntityListStylingTargetOption[];
961
+ protected readonly rowRulesLayout: _angular_core.WritableSignal<_acorex_platform_framework_shared_core.AXPWidgetNode | null>;
962
+ protected readonly fieldRulesLayout: _angular_core.WritableSignal<_acorex_platform_framework_shared_core.AXPWidgetNode | null>;
963
+ protected readonly rowEditorContext: _angular_core.ModelSignal<AXPEntityListStylingRowEditorContext>;
964
+ protected readonly fieldEditorContext: _angular_core.ModelSignal<AXPEntityListStylingFieldEditorContext>;
965
+ protected get lockedRowRules(): AXPEntityMasterStylingLockedRule[];
966
+ protected get lockedFieldRules(): AXPEntityMasterStylingLockedRule[];
967
+ constructor();
968
+ protected targetLabel(target: string): string;
969
+ protected handleCancel(): void;
970
+ protected handleSave(): void;
971
+ private bootstrapEditor;
972
+ private readEditorRows;
973
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityListStylingPopupComponent, never>;
974
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityListStylingPopupComponent, "axp-entity-list-styling-popup", never, { "rowEditorContext": { "alias": "rowEditorContext"; "required": false; "isSignal": true; }; "fieldEditorContext": { "alias": "fieldEditorContext"; "required": false; "isSignal": true; }; }, { "rowEditorContext": "rowEditorContextChange"; "fieldEditorContext": "fieldEditorContextChange"; }, never, never, true, never>;
975
+ }
976
+
891
977
  /**
892
978
  * Shared types for expression builders (expression-builder, sort-builder, group-builder, etc.)
893
979
  */
@@ -996,6 +1082,8 @@ declare class AXPConditionBuilderConditionComponent implements OnInit {
996
1082
  filterDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
997
1083
  onResolveWidget: _angular_core.InputSignal<((fieldId: string) => string) | undefined>;
998
1084
  showFillByUser: _angular_core.InputSignal<boolean>;
1085
+ compact: _angular_core.InputSignal<boolean>;
1086
+ operationsLook: _angular_core.InputSignal<"select" | "menu">;
999
1087
  itemChange: _angular_core.OutputEmitterRef<ConditionBuilderSelectedField>;
1000
1088
  removeItem: _angular_core.OutputEmitterRef<string>;
1001
1089
  protected selectedField: _angular_core.WritableSignal<ConditionBuilderSelectedField | null>;
@@ -1008,25 +1096,20 @@ declare class AXPConditionBuilderConditionComponent implements OnInit {
1008
1096
  }[]>;
1009
1097
  protected readonly currentFilterDefinition: _angular_core.Signal<AXPFilterDefinition | undefined>;
1010
1098
  protected readonly selectedFieldValue: _angular_core.Signal<string>;
1099
+ protected readonly filterHostKey: _angular_core.Signal<string>;
1100
+ protected readonly filterHostKeys: _angular_core.Signal<string[]>;
1011
1101
  ngOnInit(): void;
1012
1102
  constructor();
1013
1103
  private updateFilterWidgetNode;
1014
1104
  private updateContext;
1015
- onFieldChange(event: AXValueChangedEvent): void;
1016
- onContextChange(event: {
1017
- data?: {
1018
- filter?: {
1019
- value?: unknown;
1020
- operation?: {
1021
- type?: string;
1022
- };
1023
- };
1024
- };
1105
+ onFieldChange(event: AXValueChangedEvent & {
1106
+ isUserInteraction?: boolean;
1025
1107
  }): void;
1108
+ onContextChange(event: AXPContextChangeEvent): void;
1026
1109
  onFillByUserChange(checked: boolean): void;
1027
1110
  onRemoveClick(): void;
1028
1111
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPConditionBuilderConditionComponent, never>;
1029
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPConditionBuilderConditionComponent, "axp-condition-builder-condition", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "filterDefinitions": { "alias": "filterDefinitions"; "required": false; "isSignal": true; }; "onResolveWidget": { "alias": "onResolveWidget"; "required": false; "isSignal": true; }; "showFillByUser": { "alias": "showFillByUser"; "required": false; "isSignal": true; }; }, { "itemChange": "itemChange"; "removeItem": "removeItem"; }, never, never, true, never>;
1112
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPConditionBuilderConditionComponent, "axp-condition-builder-condition", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "filterDefinitions": { "alias": "filterDefinitions"; "required": false; "isSignal": true; }; "onResolveWidget": { "alias": "onResolveWidget"; "required": false; "isSignal": true; }; "showFillByUser": { "alias": "showFillByUser"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "operationsLook": { "alias": "operationsLook"; "required": false; "isSignal": true; }; }, { "itemChange": "itemChange"; "removeItem": "removeItem"; }, never, never, true, never>;
1030
1113
  }
1031
1114
 
1032
1115
  /**
@@ -1046,6 +1129,7 @@ declare class AXPConditionBuilderComponent {
1046
1129
  filterDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
1047
1130
  /** When true, show "Fill by user" checkbox on each condition (e.g. for query parameters) */
1048
1131
  showFillByUser: _angular_core.InputSignal<boolean>;
1132
+ operationsLook: _angular_core.InputSignal<"select" | "menu">;
1049
1133
  valueChange: _angular_core.OutputEmitterRef<AXPFilterClause>;
1050
1134
  protected queryData: _angular_core.WritableSignal<AXPFilterClause>;
1051
1135
  protected readonly logicalOperatorsItems: {
@@ -1055,6 +1139,7 @@ declare class AXPConditionBuilderComponent {
1055
1139
  protected getLogicDisplayText(logic: AXFilterLogic | undefined): string;
1056
1140
  private connectorLayoutRafId;
1057
1141
  private connectorResizeObserver;
1142
+ private lastEmittedValue;
1058
1143
  private initConnectorAutoLayout;
1059
1144
  private scheduleConnectorLayoutUpdate;
1060
1145
  private updateConnectorCssVars;
@@ -1074,7 +1159,7 @@ declare class AXPConditionBuilderComponent {
1074
1159
  reorderGroupItemsEvent(groupId: string, event: AXDropListDroppedEvent): void;
1075
1160
  reorderGroupItems(groupId: string, previousIndex: number, currentIndex: number): void;
1076
1161
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPConditionBuilderComponent, never>;
1077
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPConditionBuilderComponent, "axp-condition-builder", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "filterDefinitions": { "alias": "filterDefinitions"; "required": false; "isSignal": true; }; "showFillByUser": { "alias": "showFillByUser"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
1162
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPConditionBuilderComponent, "axp-condition-builder", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "filterDefinitions": { "alias": "filterDefinitions"; "required": false; "isSignal": true; }; "showFillByUser": { "alias": "showFillByUser"; "required": false; "isSignal": true; }; "operationsLook": { "alias": "operationsLook"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
1078
1163
  }
1079
1164
 
1080
1165
  interface AXPFileChooserContext {
@@ -1124,9 +1209,9 @@ interface AXPFileChooserAfterChosenPayload {
1124
1209
  items: AXPFileListItem[];
1125
1210
  }
1126
1211
 
1127
- declare const AXPFileChooserCompressImagesHook: AXPDistributedEventListenerProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>;
1128
- declare const AXPFileChooserZipFilesHook: AXPDistributedEventListenerProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>;
1129
- declare const AXP_FILE_CHOOSER_HOOK_PROVIDERS: readonly [AXPDistributedEventListenerProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>, AXPDistributedEventListenerProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>];
1212
+ declare const AXPFileChooserCompressImagesHook: AXPHookProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>;
1213
+ declare const AXPFileChooserZipFilesHook: AXPHookProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>;
1214
+ declare const AXP_FILE_CHOOSER_HOOK_PROVIDERS: readonly [AXPHookProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>, AXPHookProvider<AXPFileChooserAfterChosenPayload, AXPFileChooserAfterChosenPayload>];
1130
1215
  declare function provideFileChooserHooks(): EnvironmentProviders;
1131
1216
 
1132
1217
  /**
@@ -1151,16 +1236,68 @@ declare function compressImageFile(file: File, quality?: number, maxDimension?:
1151
1236
  */
1152
1237
  declare function createZipArchive(files: File[], archiveName?: string): Promise<File>;
1153
1238
 
1239
+ interface AXPFileProviderMenuItem {
1240
+ key: string;
1241
+ title: AXMultiLanguageString;
1242
+ icon?: string;
1243
+ disabled?: boolean;
1244
+ /** i18n key shown as a badge when {@link disabled} is true. */
1245
+ disabledBadgeKey?: string;
1246
+ }
1247
+
1248
+ interface AXPFileProviderPromptOptions {
1249
+ titleKey?: string;
1250
+ /** Additional choices (e.g. Gravatar) shown after registered providers. */
1251
+ extraItems?: AXPFileProviderMenuItem[];
1252
+ /** Open the picker even when only one registered provider exists. */
1253
+ forcePicker?: boolean;
1254
+ }
1255
+
1256
+ /** Accept string shared by profile photo and image editor pick flows. */
1257
+ declare const AXP_IMAGE_FILE_CHOOSER_ACCEPT = "image/png, image/jpeg, image/webp";
1258
+ /** Synthetic provider key for profile-photo Gravatar import (not a registered chooser provider). */
1259
+ declare const AXP_PROFILE_PHOTO_GRAVATAR_SOURCE_KEY = "profile-photo:gravatar";
1260
+ /** Converts a chooser item with a blob source into a {@link File}. */
1261
+ declare function fileListItemToImageFile(item: AXPFileListItem): File | null;
1262
+ /**
1263
+ * Prompts for a file provider (when several exist), then returns the first chosen image file.
1264
+ * Matches the file-uploader widget provider flow via {@link AXPFileChooserService.promptChoose}.
1265
+ */
1266
+ declare function pickImageFileViaFileChooser(chooserService: AXPFileChooserService): Promise<File | null>;
1267
+ interface AXPProfilePhotoImagePickOptions {
1268
+ /** When set, shows an Import from Gravatar option and resolves via {@link resolveGravatarImageFile}. */
1269
+ gravatarEmail?: string | null;
1270
+ gravatarTitleKey?: string;
1271
+ pickSourceTitleKey?: string;
1272
+ /** Drive scope for "Choose From Drive". Defaults to the user's personal drive. */
1273
+ driveScope?: AXPPlatformScope;
1274
+ }
1275
+ interface AXPProfilePhotoImagePickResult {
1276
+ file: File | null;
1277
+ gravatarNotFound?: boolean;
1278
+ /** True when the file came from Gravatar (already square — skip the image editor). */
1279
+ fromGravatar?: boolean;
1280
+ }
1281
+ /**
1282
+ * Profile photo source picker: registered providers plus optional Gravatar, then returns an image file.
1283
+ */
1284
+ declare function pickProfilePhotoImageFile(chooserService: AXPFileChooserService, options: AXPProfilePhotoImagePickOptions): Promise<AXPProfilePhotoImagePickResult>;
1285
+
1154
1286
  /**
1155
1287
  * Resolves providers and delegates file selection to them.
1156
1288
  */
1157
1289
  declare class AXPFileChooserService {
1158
- private readonly injector;
1290
+ private readonly environmentInjector;
1159
1291
  private readonly hooks;
1160
1292
  private readonly settingsService;
1161
1293
  private readonly providers;
1162
1294
  private readonly toastService;
1163
1295
  private readonly translateService;
1296
+ private readonly fileProviderPrompt;
1297
+ /**
1298
+ * Opens the file source picker popup and returns the selected provider key.
1299
+ */
1300
+ promptFileProviderKey(providers: AXPFileProviderMenuItem[], titleOrOptions?: string | AXPFileProviderPromptOptions): Promise<string | undefined>;
1164
1301
  getProviders(options?: Record<string, unknown>): AXPFileChooserProvider[];
1165
1302
  choose(providerKey: string | undefined, context: AXPFileChooserContext): Promise<AXPFileListItem[] | undefined>;
1166
1303
  /**
@@ -1171,6 +1308,10 @@ declare class AXPFileChooserService {
1171
1308
  * Prompts for a provider when multiple are registered, then runs file selection.
1172
1309
  */
1173
1310
  promptChoose(context: AXPFileChooserContext): Promise<AXPFileListItem[] | undefined>;
1311
+ /**
1312
+ * Profile photo pick flow (providers, optional Gravatar, then image file).
1313
+ */
1314
+ pickProfilePhotoImage(options?: AXPProfilePhotoImagePickOptions): Promise<AXPProfilePhotoImagePickResult>;
1174
1315
  private resolveProvider;
1175
1316
  private applyChooserValidation;
1176
1317
  private runAfterChosenHook;
@@ -1198,6 +1339,11 @@ interface FileAcceptFilterResult {
1198
1339
  }
1199
1340
  type FileUploaderEmptyStateDescriptionKey = '@general:widgets.file-uploader.empty-state.description' | '@general:widgets.file-uploader.empty-state.description-with-formats' | '@general:widgets.file-uploader.empty-state.description-with-max-size' | '@general:widgets.file-uploader.empty-state.description-with-limits';
1200
1341
  declare function isUnrestrictedFileAccept(accept: string | undefined): boolean;
1342
+ /**
1343
+ * Matches a file name (and optional MIME) against an HTML `accept` string.
1344
+ * Used when the picker only has a name (Drive) rather than a browser {@link File}.
1345
+ */
1346
+ declare function fileNameMatchesAccept(fileName: string, accept: string | undefined, mime?: string): boolean;
1201
1347
  declare function fileMatchesAccept(file: File, accept: string): boolean;
1202
1348
  declare function filterFilesByAcceptAndMaxSize(files: File[], accept: string | undefined, maxFileSize: number | undefined): FileAcceptFilterResult;
1203
1349
  declare function formatAcceptForDisplay(accept: string | undefined, maxLength?: number): string;
@@ -1218,6 +1364,12 @@ declare function validateFileChooserItems(items: AXPFileListItem[] | undefined,
1218
1364
  rejected: FileAcceptRejectedFile[];
1219
1365
  };
1220
1366
 
1367
+ /** MD5 hex digest of a string (Gravatar email hash). */
1368
+ declare function md5Hex(input: string): string;
1369
+ declare function buildGravatarAvatarUrl(email: string, size?: number): string;
1370
+ /** Fetches the Gravatar image for an email, or null when none is registered. */
1371
+ declare function fetchGravatarImageFile(email: string): Promise<File | null>;
1372
+
1221
1373
  /** Gallery open options with platform file list items or pre-built viewer items. */
1222
1374
  interface AXPFileViewerGalleryConfig extends Omit<AXFileViewerGalleryConfig, 'items'> {
1223
1375
  /** Pre-built viewer items (takes precedence over {@link files}). */
@@ -1372,9 +1524,10 @@ interface AXPFileUploaderBeforeUploadPayload {
1372
1524
  * Resolves providers and delegates file upload to them.
1373
1525
  */
1374
1526
  declare class AXPFileUploaderService {
1375
- private readonly injector;
1527
+ private readonly environmentInjector;
1376
1528
  private readonly hooks;
1377
1529
  private readonly providers;
1530
+ private readonly fileProviderPrompt;
1378
1531
  getProviders(options?: Record<string, unknown>): AXPFileUploaderProvider[];
1379
1532
  upload(providerKey: string | undefined, context: AXPFileUploaderContext): Promise<AXPFileListItem[] | undefined>;
1380
1533
  /**
@@ -1409,12 +1562,6 @@ declare function filterFileProvidersByContext<T extends {
1409
1562
  key: string;
1410
1563
  }>(providers: T[], options?: Record<string, unknown>): T[];
1411
1564
 
1412
- interface AXPFileProviderMenuItem {
1413
- key: string;
1414
- title: AXMultiLanguageString;
1415
- icon?: string;
1416
- }
1417
-
1418
1565
  interface AXPAttachedFileProviderMenu {
1419
1566
  open(target: HTMLElement, providers: AXPFileProviderMenuItem[], busy: boolean): void;
1420
1567
  close(): void;
@@ -1422,6 +1569,36 @@ interface AXPAttachedFileProviderMenu {
1422
1569
  }
1423
1570
  declare function createAttachedFileProviderMenu(envInjector: EnvironmentInjector, appRef: ApplicationRef, onSelect: (providerKey: string) => void): AXPAttachedFileProviderMenu;
1424
1571
 
1572
+ type QueryFilterGroupLogic = AXPQueryFilterGroupLogic;
1573
+ interface QueryFilterEditingCondition {
1574
+ id: string;
1575
+ field: string;
1576
+ }
1577
+ interface QueryFilterChipTag extends AXPFilterDefinition {
1578
+ id: string;
1579
+ query: string;
1580
+ chipMode: 'expanded' | 'summary' | 'search';
1581
+ mixed: boolean;
1582
+ titleLabel: string;
1583
+ logicLabel: string;
1584
+ chipConditions: Array<{
1585
+ title: string;
1586
+ operator: string;
1587
+ value: string;
1588
+ }>;
1589
+ summaryText: string;
1590
+ readOnly: boolean;
1591
+ }
1592
+ type MobileFilterChip = {
1593
+ kind: 'applied';
1594
+ id: string;
1595
+ tag: QueryFilterChipTag;
1596
+ tagIndex: number;
1597
+ } | {
1598
+ kind: 'available';
1599
+ id: string;
1600
+ definition: AXPFilterDefinition;
1601
+ };
1425
1602
  declare class AXPQueryFiltersComponent {
1426
1603
  #private;
1427
1604
  protected translate: AXTranslationService;
@@ -1433,47 +1610,90 @@ declare class AXPQueryFiltersComponent {
1433
1610
  private readonly destroyRef;
1434
1611
  private readonly elementRef;
1435
1612
  private readonly queryService;
1613
+ protected readonly deviceService: AXPDeviceService;
1436
1614
  protected readonly filterFocusShortcutKeys: string[];
1437
1615
  constructor();
1438
1616
  filtersDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
1439
1617
  initialFilters: _angular_core.InputSignal<AXPFilterQuery[]>;
1618
+ /** `normal` keeps one chip per field. `advanced` allows mixed-field groups and root AND/OR. */
1619
+ mode: _angular_core.InputSignal<AXPQueryFilterMode>;
1440
1620
  /** When true, this list supports quick search (combined with {@link AXPCommonSettings.QuickSearchEnabled}). */
1441
1621
  quickSearch: _angular_core.InputSignal<boolean>;
1622
+ /** Mobile-only: sort presets rendered as chips in the same row as advance filters. */
1623
+ sortPresets: _angular_core.InputSignal<AXPEntitySortPreset[]>;
1624
+ activeSortPresetName: _angular_core.InputSignal<string | null>;
1442
1625
  onFiltersChanged: _angular_core.OutputEmitterRef<AXPFilterQuery[]>;
1626
+ onSortPresetSelected: _angular_core.OutputEmitterRef<AXPEntitySortPreset>;
1627
+ protected isAdvanced: _angular_core.Signal<boolean>;
1628
+ protected isMixedEditingGroup: _angular_core.Signal<boolean>;
1629
+ protected advancedFieldOptions: _angular_core.Signal<AXPFilterDefinition[]>;
1443
1630
  protected quickSearchSettingEnabled: _angular_core.WritableSignal<boolean>;
1444
1631
  protected isQuickSearchMode: _angular_core.Signal<boolean>;
1445
1632
  protected dateFormat: _angular_core.WritableSignal<string>;
1446
1633
  protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
1634
+ protected readonly mobileFilterTrigger: _angular_core.Signal<ElementRef<any> | undefined>;
1447
1635
  protected widgetsContainer: _angular_core.Signal<AXPWidgetContainerComponent | undefined>;
1448
- protected widgetRenderer: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
1636
+ protected widgetRenderers: _angular_core.Signal<readonly AXPWidgetRendererDirective[]>;
1449
1637
  tagBoxInput: any;
1450
1638
  listItems: QueryList<any>;
1451
1639
  protected selectedField: _angular_core.WritableSignal<string | null>;
1452
1640
  protected selectedFilters: _angular_core.WritableSignal<AXPFilterDefinition[]>;
1453
1641
  context: _angular_core.WritableSignal<any>;
1454
1642
  protected activeFilter: _angular_core.WritableSignal<AXPFilterDefinition | null>;
1455
- protected asyncTags: _angular_core.WritableSignal<any[]>;
1643
+ protected editingLogic: _angular_core.WritableSignal<AXPQueryFilterGroupLogic>;
1644
+ protected editingConditions: _angular_core.WritableSignal<QueryFilterEditingCondition[]>;
1645
+ protected rootLogic: _angular_core.WritableSignal<AXPQueryFilterGroupLogic>;
1646
+ protected activeChipId: _angular_core.Signal<string | null>;
1647
+ protected activeFilterTitle: _angular_core.WritableSignal<string>;
1648
+ protected asyncTags: _angular_core.WritableSignal<QueryFilterChipTag[]>;
1649
+ protected readonly mobileFilterChips: _angular_core.Signal<MobileFilterChip[]>;
1456
1650
  protected popover: _angular_core.Signal<AXPopoverComponent | undefined>;
1457
1651
  inputValue: _angular_core.WritableSignal<string>;
1652
+ protected readonly mobileSearchOpen: _angular_core.WritableSignal<boolean>;
1653
+ protected readonly mobileSearchText: _angular_core.WritableSignal<string>;
1654
+ protected readonly hasActiveInlineSearch: _angular_core.Signal<boolean>;
1655
+ protected readonly hasAppliedAdvanceFilter: _angular_core.Signal<boolean>;
1656
+ protected readonly isMobileFilterModeLocked: _angular_core.Signal<boolean>;
1657
+ protected readonly isMobileSearchModeLocked: _angular_core.Signal<boolean>;
1658
+ setMobileSearchOpen(isOpen: boolean): void;
1458
1659
  protected readonly disabledByField: _angular_core.WritableSignal<Record<string, boolean>>;
1660
+ protected readonly hasMultipleFilterGroups: _angular_core.Signal<boolean>;
1661
+ protected readonly isChipsPanning: _angular_core.WritableSignal<boolean>;
1662
+ protected readonly mobileModeToggleCollapsed: _angular_core.WritableSignal<boolean>;
1663
+ private lastMobileChipsScrollFromStart;
1664
+ private chipsPanSession;
1665
+ private suppressChipsClick;
1666
+ protected readonly canApplyFilter: _angular_core.Signal<boolean>;
1459
1667
  /** Emits when a filter context entry changes (aligned with `widget-renderer` `events.context`). */
1460
1668
  private readonly filterContextPath$;
1461
1669
  private filterContextPathSnapshotReady;
1462
1670
  private previousFilterContextSnapshot;
1463
- /** Committed context entry for the filter being edited; restored when popover closes without Apply. */
1671
+ /** Full context snapshot while editing; restored when popover closes without Apply. */
1464
1672
  private editingContextSnapshot;
1673
+ private skipNextPopoverRestore;
1674
+ private editingConditionsSnapshot;
1465
1675
  /** Bumped on locale change so filter chip labels re-resolve i18n keys. */
1466
1676
  private translationEpoch;
1467
1677
  inlineFilters: () => AXPFilterDefinition[];
1468
1678
  protected getDisplayValue: (filter: AXPFilterDefinition, val: any) => Promise<any>;
1469
1679
  private resolveSelectFilterDisplayText;
1470
- protected convertIfISOStringDate: (val: string) => string;
1680
+ private formatRangeDisplayValue;
1681
+ protected convertIfISOStringDate: (val: unknown) => string;
1471
1682
  convertQueriesToDefinitions(queries: AXPFilterQuery[]): AXPFilterDefinition[];
1472
1683
  convertQueriesToContext(queries: AXPFilterQuery[]): any;
1473
1684
  filterFields: () => AXPFilterDefinition[];
1474
1685
  ngOnInit(): void;
1686
+ /** Opens the field picker to start a new chip/group (toolbar click). */
1687
+ protected openNewFilterGroup(): void;
1475
1688
  /** Opens the filter popover anchored to the last tag or tag-box start. */
1476
1689
  protected openFilterPopover(): void;
1690
+ protected handleMobileSearchChanged(event: AXValueChangedEvent<string>): void;
1691
+ protected applyMobileSortPreset(preset: AXPEntitySortPreset, event: Event): void;
1692
+ protected isMobileSortPresetActive(preset: AXPEntitySortPreset): boolean;
1693
+ protected mobileSortPresetDir(preset: AXPEntitySortPreset): 'asc' | 'desc' | undefined;
1694
+ protected openMobileAvailableFilter(definition: AXPFilterDefinition, event: Event): void;
1695
+ protected mobileChipLabel(item: QueryFilterChipTag): string;
1696
+ private resolveMobilePopoverTarget;
1477
1697
  /** Click on the tag-box opens the filter menu (empty or with tags). */
1478
1698
  protected handleTagBoxClick(event: MouseEvent): void;
1479
1699
  /**
@@ -1489,8 +1709,19 @@ declare class AXPQueryFiltersComponent {
1489
1709
  handleFieldKeyDown(e: KeyboardEvent, field: AXPFilterDefinition): void;
1490
1710
  onContextChanged(e: AXPContextChangeEvent): void;
1491
1711
  handleApplyFilter(): void;
1712
+ handleMobileChipsScroll(event: Event): void;
1713
+ handleChipsWheel(event: WheelEvent): void;
1714
+ handleChipsPointerDown(event: PointerEvent): void;
1715
+ private readonly onChipsPanMove;
1716
+ private readonly onChipsPanUp;
1717
+ private endChipsPan;
1718
+ private resolveChipsScroller;
1719
+ private consumeChipsClickSuppression;
1720
+ private syncMobileModeToggleFromScroll;
1721
+ private getInlineScrollFromStart;
1492
1722
  handleButtonKeyDown(e: Event): void;
1493
1723
  handleKeyDown(e: AXHtmlEvent<KeyboardEvent>): void;
1724
+ private handleAllFilterBackspace;
1494
1725
  onEnterKeyPressed(e: Event): void;
1495
1726
  handleTagClick(item: any, event?: Event): void;
1496
1727
  handleRemoveTag(e: Event, index: number): void;
@@ -1507,7 +1738,8 @@ declare class AXPQueryFiltersComponent {
1507
1738
  }): string;
1508
1739
  handleSelectFilters(e: AXValueChangedEvent): void;
1509
1740
  handleAddAllInlineFilters(): void;
1510
- protected getActiveOperator(filter: AXPFilterDefinition | null): string | undefined;
1741
+ getInlineSearchValue(): string;
1742
+ applyInlineSearch(value: string): void;
1511
1743
  handleSelectInlineFilter(filter: AXPFilterDefinition): void;
1512
1744
  handleInlineFilterKeyDown(e: KeyboardEvent, filter: AXPFilterDefinition): void;
1513
1745
  handlePopoverClosed(e: AXEvent): void;
@@ -1536,6 +1768,27 @@ declare class AXPQueryFiltersComponent {
1536
1768
  * Returns the committed filter context entry (snapshot while editing, live context otherwise).
1537
1769
  */
1538
1770
  private getCommittedFilterEntry;
1771
+ protected getConditionOperatorKey(conditionId: string): string | undefined;
1772
+ protected getConditionDefinition(field: string | undefined): AXPFilterDefinition | undefined;
1773
+ protected getConditionWidget(condition: QueryFilterEditingCondition): AXPFilterDefinition['widget'] | undefined;
1774
+ protected setConditionField(conditionId: string, field: string): void;
1775
+ protected setRootLogic(logic: QueryFilterGroupLogic): void;
1776
+ protected setEditingLogic(logic: QueryFilterGroupLogic): void;
1777
+ protected handleCancelFilter(): void;
1778
+ protected resolveEditingConditionContextField(conditionId: string): string;
1779
+ protected handleAddCondition(): void;
1780
+ protected handleRemoveCondition(conditionId: string): void;
1781
+ private beginEditingFilter;
1782
+ private discardActiveFilter;
1783
+ private buildConditionDrafts;
1784
+ private seedConditionContext;
1785
+ private clearFilterContextKeys;
1786
+ private syncCanonicalFilterContext;
1787
+ private unwrapFilterContextEntry;
1788
+ private getCommittedFilterConditions;
1789
+ private resolveGroupContextPrefix;
1790
+ private isSameFilterGroup;
1791
+ private isEditingFilter;
1539
1792
  private createExpressionScope;
1540
1793
  private isObservableLike;
1541
1794
  private buildFilterTriggerScope;
@@ -1543,7 +1796,7 @@ declare class AXPQueryFiltersComponent {
1543
1796
  private getFilterWidgetScopeForDefinition;
1544
1797
  private removeFilterFieldByName;
1545
1798
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQueryFiltersComponent, never>;
1546
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQueryFiltersComponent, "axp-query-filters", never, { "filtersDefinitions": { "alias": "filtersDefinitions"; "required": false; "isSignal": true; }; "initialFilters": { "alias": "initialFilters"; "required": false; "isSignal": true; }; "quickSearch": { "alias": "quickSearch"; "required": false; "isSignal": true; }; }, { "onFiltersChanged": "onFiltersChanged"; }, never, never, true, never>;
1799
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQueryFiltersComponent, "axp-query-filters", never, { "filtersDefinitions": { "alias": "filtersDefinitions"; "required": false; "isSignal": true; }; "initialFilters": { "alias": "initialFilters"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "quickSearch": { "alias": "quickSearch"; "required": false; "isSignal": true; }; "sortPresets": { "alias": "sortPresets"; "required": false; "isSignal": true; }; "activeSortPresetName": { "alias": "activeSortPresetName"; "required": false; "isSignal": true; }; }, { "onFiltersChanged": "onFiltersChanged"; "onSortPresetSelected": "onSortPresetSelected"; }, never, never, true, never>;
1547
1800
  }
1548
1801
 
1549
1802
  interface AXPPreloadFiltersApplyEvent {
@@ -1602,20 +1855,25 @@ declare class AXPImageEditorPopupComponent extends AXBasePageComponent {
1602
1855
  showHistory: _angular_core.InputSignal<boolean>;
1603
1856
  look: _angular_core.InputSignal<"solid" | "outline" | "blank">;
1604
1857
  aspectRatio: _angular_core.InputSignal<string | undefined>;
1858
+ square: _angular_core.InputSignal<boolean>;
1605
1859
  private blobUrl;
1606
1860
  protected url: _angular_core.WritableSignal<string | null>;
1861
+ protected cropSize: _angular_core.Signal<number>;
1862
+ protected cropAspectRatioBinding: _angular_core.Signal<string[]>;
1607
1863
  protected context: _angular_core.WritableSignal<{
1608
1864
  image: Blob | null;
1609
1865
  }>;
1610
1866
  constructor();
1611
1867
  ngOnInit(): Promise<void>;
1612
- handleValueChanged(e: any): void;
1868
+ handleValueChanged(e: {
1869
+ value?: Blob[];
1870
+ }): void;
1613
1871
  handleSave(): Promise<void>;
1614
1872
  private extractEditedImage;
1615
1873
  handleCancel(): void;
1616
1874
  ngOnDestroy(): void;
1617
1875
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPImageEditorPopupComponent, never>;
1618
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPImageEditorPopupComponent, "axp-image-editor-popup", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "showHistory": { "alias": "showHistory"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1876
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPImageEditorPopupComponent, "axp-image-editor-popup", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "showHistory": { "alias": "showHistory"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "square": { "alias": "square"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1619
1877
  }
1620
1878
 
1621
1879
  interface AXPImageEditorOpenOptions {
@@ -1624,6 +1882,8 @@ interface AXPImageEditorOpenOptions {
1624
1882
  showHistory?: boolean;
1625
1883
  look?: 'solid' | 'outline' | 'blank';
1626
1884
  aspectRatio?: string;
1885
+ /** Square dialog with 1:1 crop viewport (profile photo). */
1886
+ square?: boolean;
1627
1887
  }
1628
1888
  declare class AXPImageEditorService {
1629
1889
  private readonly popupService;
@@ -1762,6 +2022,28 @@ declare class AXPItemConfiguratorComponent {
1762
2022
  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>;
1763
2023
  }
1764
2024
 
2025
+ interface AXPLocalDataSourceEditorDialogInput {
2026
+ mode: 'create' | 'edit';
2027
+ name?: string;
2028
+ columns?: readonly AXPLocalDataSourceColumn[];
2029
+ items?: readonly unknown[];
2030
+ }
2031
+ interface AXPLocalDataSourceEditorDialogResult {
2032
+ name: string;
2033
+ columns: AXPLocalDataSourceColumn[];
2034
+ items: Record<string, unknown>[];
2035
+ }
2036
+ /**
2037
+ * Create/edit a form-local named list via {@link AXPLayoutBuilderService} dialog.
2038
+ * Items use `axp-spreadsheet` (add / remove rows and columns).
2039
+ */
2040
+ declare class AXPLocalDataSourceEditorDialogService {
2041
+ private readonly layoutBuilder;
2042
+ open(initial: AXPLocalDataSourceEditorDialogInput): Promise<AXPLocalDataSourceEditorDialogResult | null>;
2043
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLocalDataSourceEditorDialogService, never>;
2044
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLocalDataSourceEditorDialogService>;
2045
+ }
2046
+
1765
2047
  /**
1766
2048
  * Floating zoom controls for canvas-style views (org chart, workflow designer, etc.).
1767
2049
  * Parent container should be `position: relative` so the bar anchors to the bottom-end.
@@ -2406,6 +2688,21 @@ declare class AXPPageComponentRegistryService {
2406
2688
  */
2407
2689
  declare const AXP_PAGE_COMPONENT_PROVIDER: InjectionToken<AXPPageComponentProvider[]>;
2408
2690
 
2691
+ /**
2692
+ * Deep-merges objects but replaces arrays from later sources.
2693
+ * Lodash `merge` walks arrays by index and keeps extra destination items, so
2694
+ * repeater delete/edit (and nested filter lists) cannot persist.
2695
+ */
2696
+ declare function mergeObjectsReplacingArrays<T extends object>(...sources: Array<T | Record<string, unknown> | null | undefined>): T;
2697
+
2698
+ /**
2699
+ * How binding-expression mode is presented in the property viewer.
2700
+ * `inline` — code editor in the panel (use when there is enough width, e.g. a popup).
2701
+ * `popup` — a button that opens the code editor in a dialog (use in the designer side panel).
2702
+ */
2703
+ type AXPPropertyViewerBindingExpressionEditorMode = 'inline' | 'popup';
2704
+ /** Minimum visible lines for the binding-expression code editor (inline and dialog). */
2705
+ declare const PROPERTY_VIEWER_EXPRESSION_EDITOR_MIN_LINES = 3;
2409
2706
  interface AXPPropertyViewerGroup {
2410
2707
  name: string;
2411
2708
  title: string;
@@ -2442,12 +2739,13 @@ declare class AXPPropertyViewerComponent {
2442
2739
  /**
2443
2740
  * Determines rendering mode.
2444
2741
  */
2445
- mode: _angular_core.InputSignal<"simple" | "advanced">;
2742
+ mode: _angular_core.InputSignal<"advanced" | "simple">;
2446
2743
  /**
2447
2744
  * When a property uses binding expressions, controls how the expression is edited:
2448
- * `inline` — code editor in the panel (default); `popup` — button that opens the dialog editor.
2745
+ * `inline` — code editor in the panel (default; use in popups);
2746
+ * `popup` — button that opens the dialog editor (use in the designer side panel).
2449
2747
  */
2450
- bindingExpressionEditorMode: _angular_core.InputSignal<"inline" | "popup">;
2748
+ bindingExpressionEditorMode: _angular_core.InputSignal<AXPPropertyViewerBindingExpressionEditorMode>;
2451
2749
  /**
2452
2750
  * Emits when property context changes.
2453
2751
  */
@@ -2470,6 +2768,7 @@ declare class AXPPropertyViewerComponent {
2470
2768
  private readonly expressionEvaluator;
2471
2769
  private readonly popupService;
2472
2770
  private readonly form;
2771
+ private readonly widgetsContainer;
2473
2772
  constructor();
2474
2773
  /**
2475
2774
  * Replaces the current context with the provided value and emits an init event.
@@ -2529,6 +2828,13 @@ declare class AXPPropertyViewerComponent {
2529
2828
  * blank instead of keeping the previous literal (e.g. true/false).
2530
2829
  */
2531
2830
  protected setExpressionMode(prop: AXPWidgetProperty, useExpression: boolean): void;
2831
+ /**
2832
+ * Monaco/TypeScript editor — loaded the first time inline expression mode is shown.
2833
+ */
2834
+ protected readonly inlineCodeEditorComponent: WritableSignal<Type<unknown> | null>;
2835
+ protected inlineCodeEditor(): Type<unknown> | null;
2836
+ protected bindingExpressionChangeHandler(prop: AXPWidgetProperty): (value: string) => void;
2837
+ private ensureInlineCodeEditor;
2532
2838
  /**
2533
2839
  * Current binding expression string at the property path (for inline editor ngModel).
2534
2840
  */
@@ -2562,7 +2868,7 @@ declare class AXPPropertyViewerPopupComponent extends AXBasePageComponent {
2562
2868
  private readonly toastService;
2563
2869
  private readonly translationService;
2564
2870
  tabs: _angular_core.InputSignal<AXPPropertyViewerTab[]>;
2565
- mode: _angular_core.InputSignal<"simple" | "advanced">;
2871
+ mode: _angular_core.InputSignal<"advanced" | "simple">;
2566
2872
  context: _angular_core.InputSignal<any>;
2567
2873
  /**
2568
2874
  * Optional hook from `data.onApply`. Throw or reject to keep the popup open.
@@ -2683,7 +2989,7 @@ declare class AXPRepeaterRowsLayoutComponent {
2683
2989
  type AppointmentWithProvider = AXSchedulerAppointment & {
2684
2990
  provider?: string;
2685
2991
  };
2686
- declare class AXPResourceAppointmentComponent implements OnInit {
2992
+ declare class AXPResourceAppointmentBoardComponent implements OnInit {
2687
2993
  /** Show resource headers in the timeline views. */
2688
2994
  showResourceHeaders: _angular_core.InputSignal<boolean>;
2689
2995
  /** Show appointments that have no resourceId. */
@@ -2724,6 +3030,21 @@ declare class AXPResourceAppointmentComponent implements OnInit {
2724
3030
  }): void;
2725
3031
  protected handleContextMenuOpening(event: AXContextMenuOpeningEvent): Promise<void>;
2726
3032
  protected handleContextMenuItemClick(event: AXContextMenuItemsClickEvent): void;
3033
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPResourceAppointmentBoardComponent, never>;
3034
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPResourceAppointmentBoardComponent, "axp-resource-appointment-board", 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>;
3035
+ }
3036
+
3037
+ /**
3038
+ * Thin host for the resource-appointment board. `@acorex/components/scheduler`
3039
+ * loads when this component is instantiated, not when the layout/components
3040
+ * barrel is evaluated on dest first load.
3041
+ */
3042
+ declare class AXPResourceAppointmentComponent {
3043
+ showResourceHeaders: _angular_core.InputSignal<boolean>;
3044
+ showUnassignedAppointments: _angular_core.InputSignal<boolean>;
3045
+ providerName: _angular_core.InputSignal<string | undefined>;
3046
+ protected readonly board: _angular_core.WritableSignal<Type<AXPResourceAppointmentBoardComponent> | null>;
3047
+ constructor();
2727
3048
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPResourceAppointmentComponent, never>;
2728
3049
  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>;
2729
3050
  }
@@ -2940,16 +3261,28 @@ declare class AXPSectionItemsBuilderComponent {
2940
3261
 
2941
3262
  declare class AXPQuerySortsComponent {
2942
3263
  sortDefinitions: _angular_core.ModelSignal<AXPSortDefinition[]>;
2943
- sortQueries: _angular_core.WritableSignal<AXPSortDefinition[]>;
3264
+ sortPresets: _angular_core.InputSignal<AXPEntitySortPreset[]>;
2944
3265
  initialSortQueries: _angular_core.InputSignal<AXPSortQuery[]>;
3266
+ defaultSortQueries: _angular_core.InputSignal<AXPSortQuery[]>;
2945
3267
  sortQueriesChange: _angular_core.OutputEmitterRef<AXPSortQuery[]>;
3268
+ sortQueries: _angular_core.WritableSignal<AXPSortDefinition[]>;
3269
+ protected hasPresets: _angular_core.Signal<boolean>;
3270
+ protected activeSortSignature: _angular_core.Signal<string>;
3271
+ protected canReset: _angular_core.Signal<boolean>;
2946
3272
  constructor();
2947
- private emitActiveSortQueries;
2948
3273
  protected drop(event: CdkDragDrop<unknown[]>): void;
2949
- getSortDirection(item: AXPSortDefinition): "asc" | "desc" | undefined;
2950
3274
  protected changeItemSort(item: AXPSortDefinition): void;
3275
+ protected applyPreset(preset: AXPEntitySortPreset): void;
3276
+ protected resetSorts(): void;
3277
+ getSortDirection(item: AXPSortDefinition): "asc" | "desc" | undefined;
3278
+ protected isPresetActive(preset: AXPEntitySortPreset): boolean;
3279
+ protected presetFirstDir(preset: AXPEntitySortPreset): 'asc' | 'desc' | undefined;
3280
+ private resolvePresetSorts;
3281
+ private applySorts;
3282
+ private emitActiveSortQueries;
3283
+ private emitSortQueries;
2951
3284
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQuerySortsComponent, never>;
2952
- 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>;
3285
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQuerySortsComponent, "axp-query-sorts", never, { "sortDefinitions": { "alias": "sortDefinitions"; "required": false; "isSignal": true; }; "sortPresets": { "alias": "sortPresets"; "required": false; "isSignal": true; }; "initialSortQueries": { "alias": "initialSortQueries"; "required": false; "isSignal": true; }; "defaultSortQueries": { "alias": "defaultSortQueries"; "required": false; "isSignal": true; }; }, { "sortDefinitions": "sortDefinitionsChange"; "sortQueriesChange": "sortQueriesChange"; }, never, never, true, never>;
2953
3286
  }
2954
3287
 
2955
3288
  /**
@@ -3038,6 +3371,27 @@ interface AXPSpreadsheetCellChangeEvent {
3038
3371
  */
3039
3372
  row: Record<string, any>;
3040
3373
  }
3374
+ /**
3375
+ * Event emitted when a column is added or removed (when those options are enabled)
3376
+ */
3377
+ interface AXPSpreadsheetColumnChangeEvent {
3378
+ /**
3379
+ * Type of change: 'add' or 'remove'
3380
+ */
3381
+ type: 'add' | 'remove' | 'move' | 'update';
3382
+ /**
3383
+ * Column identifier
3384
+ */
3385
+ columnName: string;
3386
+ /**
3387
+ * Full column definition (for 'add' events, and the removed column on 'remove')
3388
+ */
3389
+ column?: AXPSpreadsheetColumn;
3390
+ /**
3391
+ * All columns after the change
3392
+ */
3393
+ columns: AXPSpreadsheetColumn[];
3394
+ }
3041
3395
  /**
3042
3396
  * Event emitted when a row is added or removed (dynamic mode only)
3043
3397
  */
@@ -3045,7 +3399,7 @@ interface AXPSpreadsheetRowChangeEvent {
3045
3399
  /**
3046
3400
  * Type of change: 'add' or 'remove'
3047
3401
  */
3048
- type: 'add' | 'remove';
3402
+ type: 'add' | 'remove' | 'move';
3049
3403
  /**
3050
3404
  * Row identifier
3051
3405
  */
@@ -3082,6 +3436,10 @@ declare class AXPSpreadsheetComponent {
3082
3436
  private readonly shortcutRegistry;
3083
3437
  private readonly destroyRef;
3084
3438
  private readonly elementRef;
3439
+ private readonly injector;
3440
+ private readonly widgetRegistry;
3441
+ private readonly widgetPropertyViewer;
3442
+ private readonly chromeDropdowns;
3085
3443
  /**
3086
3444
  * Translated column titles
3087
3445
  */
@@ -3134,6 +3492,20 @@ declare class AXPSpreadsheetComponent {
3134
3492
  * Can be enabled for fixed mode if needed
3135
3493
  */
3136
3494
  allowRemoveRows: _angular_core.InputSignal<boolean>;
3495
+ /**
3496
+ * Whether to allow adding columns from the grid chrome (default: false).
3497
+ * Existing hosts keep a fixed column schema unless they opt in.
3498
+ */
3499
+ allowAddColumns: _angular_core.InputSignal<boolean>;
3500
+ /**
3501
+ * Whether to allow removing columns from the grid chrome (default: false).
3502
+ */
3503
+ allowRemoveColumns: _angular_core.InputSignal<boolean>;
3504
+ /**
3505
+ * Show apply / cancel buttons on the active cell.
3506
+ * When false, the cell commits automatically on blur.
3507
+ */
3508
+ showCellActions: _angular_core.InputSignal<boolean>;
3137
3509
  /**
3138
3510
  * Emitted when a single cell value changes
3139
3511
  */
@@ -3142,6 +3514,14 @@ declare class AXPSpreadsheetComponent {
3142
3514
  * Emitted when rows are added or removed (dynamic mode only)
3143
3515
  */
3144
3516
  rowChange: _angular_core.OutputEmitterRef<AXPSpreadsheetRowChangeEvent>;
3517
+ /**
3518
+ * Emitted when columns are added or removed (only if those options are enabled)
3519
+ */
3520
+ columnChange: _angular_core.OutputEmitterRef<AXPSpreadsheetColumnChangeEvent>;
3521
+ /**
3522
+ * Two-way companion for `[columns]` / `[(columns)]` after add/remove.
3523
+ */
3524
+ columnsChange: _angular_core.OutputEmitterRef<AXPSpreadsheetColumn[]>;
3145
3525
  /**
3146
3526
  * Emitted when the entire spreadsheet data changes
3147
3527
  */
@@ -3153,10 +3533,22 @@ declare class AXPSpreadsheetComponent {
3153
3533
  rowId: string;
3154
3534
  columnName: string;
3155
3535
  } | null>;
3536
+ /**
3537
+ * Last selected cell so focus / Esc can reopen or resume without a click.
3538
+ */
3539
+ private selectedCell;
3540
+ /**
3541
+ * After Esc, host focus must not immediately reopen the editor.
3542
+ */
3543
+ private suppressHostFocusEdit;
3156
3544
  /**
3157
3545
  * Original value when entering edit mode (for cancel functionality)
3158
3546
  */
3159
3547
  private originalCellValue;
3548
+ /**
3549
+ * Local column list after add/remove when the parent has not yet written `[columns]` back.
3550
+ */
3551
+ private columnsOverride;
3160
3552
  /**
3161
3553
  * Internal rows state (for fixed mode)
3162
3554
  */
@@ -3175,6 +3567,14 @@ declare class AXPSpreadsheetComponent {
3175
3567
  * Key: `${rowIndex}_${columnName}`, Value: any
3176
3568
  */
3177
3569
  private cellValueCache;
3570
+ /**
3571
+ * Columns after optional in-grid add/remove, else the `[columns]` input.
3572
+ */
3573
+ protected currentColumns: _angular_core.Signal<AXPSpreadsheetColumn[]>;
3574
+ /**
3575
+ * Excel-style numeric index when the host does not supply a row title column.
3576
+ */
3577
+ protected readonly useExcelRowIndex: _angular_core.Signal<boolean>;
3178
3578
  /**
3179
3579
  * Get current rows based on mode
3180
3580
  */
@@ -3206,11 +3606,21 @@ declare class AXPSpreadsheetComponent {
3206
3606
  * Check if only rows are empty (columns exist but no rows)
3207
3607
  */
3208
3608
  protected isRowsEmpty: _angular_core.Signal<boolean>;
3609
+ protected readonly supportedColumnWidgets: _angular_core.Signal<{
3610
+ type: string;
3611
+ title: string;
3612
+ icon: string;
3613
+ }[]>;
3209
3614
  constructor();
3210
3615
  /**
3211
3616
  * Get the value for a specific cell by row index
3212
3617
  */
3213
3618
  protected getCellValue(rowIndex: number, columnName: string): any;
3619
+ /**
3620
+ * Whether the cell has a value worth showing in view mode.
3621
+ * Blank strings use the placeholder so empty Excel rows stay empty.
3622
+ */
3623
+ protected hasCellDisplayValue(rowIndex: number, columnName: string): boolean;
3214
3624
  /**
3215
3625
  * Get row title from row object using rowTitlePath
3216
3626
  */
@@ -3241,6 +3651,10 @@ declare class AXPSpreadsheetComponent {
3241
3651
  * Handle cell click to start editing
3242
3652
  */
3243
3653
  protected handleCellClick(rowId: string, columnName: string, event?: MouseEvent): void;
3654
+ /**
3655
+ * Tab / click into the grid starts the selected (or first) cell.
3656
+ */
3657
+ protected handleHostFocusIn(event: FocusEvent): void;
3244
3658
  /**
3245
3659
  * Handle cell value change from widget
3246
3660
  * The widget sets the value at path like rows[index].column.path
@@ -3255,6 +3669,11 @@ declare class AXPSpreadsheetComponent {
3255
3669
  * Handle blur event to stop editing (when user clicks away from cell)
3256
3670
  */
3257
3671
  protected handleCellBlur(rowId: string, columnName: string): void;
3672
+ /**
3673
+ * Excel-style move: Tab / Shift+Tab change column, Enter / Shift+Enter change row.
3674
+ */
3675
+ protected handleCellNavigate(direction: 'next' | 'previous' | 'up' | 'down'): void;
3676
+ protected handleGridNavigate(direction: 'next' | 'previous' | 'up' | 'down'): void;
3258
3677
  /**
3259
3678
  * Commit cell edit (save changes and close editing mode)
3260
3679
  */
@@ -3267,26 +3686,183 @@ declare class AXPSpreadsheetComponent {
3267
3686
  * Handle click outside to stop editing
3268
3687
  */
3269
3688
  protected handleClickOutside(event: MouseEvent): void;
3689
+ protected showRowChromeMenu(): boolean;
3690
+ protected showColumnChromeMenu(): boolean;
3691
+ protected isFirstRow(rowId: string): boolean;
3692
+ protected isLastRow(rowId: string): boolean;
3693
+ protected isFirstColumn(columnName: string): boolean;
3694
+ protected isLastColumn(columnName: string): boolean;
3270
3695
  /**
3271
3696
  * Handle add row (dynamic mode only)
3272
3697
  */
3273
3698
  protected handleAddRow(): void;
3699
+ protected handleInsertRow(rowId: string, position: 'before' | 'after'): void;
3700
+ protected handleMoveRow(rowId: string, direction: 'up' | 'down'): void;
3274
3701
  /**
3275
3702
  * Handle remove row (works for both fixed and dynamic modes)
3276
3703
  */
3277
- protected handleRemoveRow(rowId: string, _event: AXClickEvent): void;
3704
+ protected handleRemoveRow(rowId: string, _event?: AXClickEvent): void;
3705
+ protected handleChromeDropdownClick(event: AXClickEvent): void;
3706
+ /**
3707
+ * Handle add column (opt-in via allowAddColumns)
3708
+ */
3709
+ protected handleAddColumnOfType(widgetType: string): void;
3710
+ protected handleInsertColumn(columnName: string, position: 'before' | 'after'): void;
3711
+ protected handleEditColumnProperties(columnName: string): void;
3712
+ protected handleMoveColumn(columnName: string, direction: 'previous' | 'next'): void;
3713
+ /**
3714
+ * Handle remove column (opt-in via allowRemoveColumns)
3715
+ */
3716
+ protected handleRemoveColumn(columnName: string): void;
3717
+ private isGridFocused;
3718
+ private beginEditAtSelection;
3719
+ private resolveSelectedOrFirstCell;
3720
+ private returnFocusToGrid;
3721
+ /**
3722
+ * Next editable cell in Excel order. Adds a dynamic row when moving off the bottom.
3723
+ */
3724
+ private resolveNextEditableCell;
3725
+ /**
3726
+ * Left/right stay in the text until the caret is at the edge.
3727
+ * Up/down always leave a single-line editor; textareas only at the first/last line.
3728
+ */
3729
+ private shouldNavigateWithArrow;
3730
+ private getActiveEditorControl;
3731
+ private isNodeInside;
3732
+ private isCaretAtMultilineEdge;
3733
+ private scheduleFocusEditingEditor;
3734
+ private tryFocusEditingEditor;
3735
+ private findFocusableEditor;
3736
+ private findRowIndex;
3737
+ private createEmptyRow;
3738
+ private insertRowAt;
3739
+ private insertBlankColumnAt;
3740
+ private insertColumnAt;
3741
+ private promptColumnWidgetAndInsert;
3742
+ private promptColumnWidgetAndUpdate;
3743
+ private promptColumnWidget;
3744
+ private applyRowList;
3278
3745
  /**
3279
3746
  * Generate unique row ID for dynamic mode
3280
3747
  */
3281
3748
  private generateRowId;
3749
+ private nextColumnTitle;
3750
+ private allocateColumnName;
3751
+ private renameColumnPathOnRows;
3752
+ private applyColumns;
3753
+ private stripColumnPathFromRows;
3282
3754
  /**
3283
3755
  * Update rows array (sync internal state)
3284
3756
  */
3285
3757
  private updateRows;
3286
3758
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSpreadsheetComponent, never>;
3287
- 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>;
3759
+ 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; }; "allowAddColumns": { "alias": "allowAddColumns"; "required": false; "isSignal": true; }; "allowRemoveColumns": { "alias": "allowRemoveColumns"; "required": false; "isSignal": true; }; "showCellActions": { "alias": "showCellActions"; "required": false; "isSignal": true; }; }, { "rowsModel": "rowsModelChange"; "cellChange": "cellChange"; "rowChange": "rowChange"; "columnChange": "columnChange"; "columnsChange": "columnsChange"; "spreadsheetChange": "spreadsheetChange"; }, never, never, true, never>;
3760
+ }
3761
+
3762
+ interface AXPWidgetPropertyInjection {
3763
+ property: AXPWidgetProperty;
3764
+ tab?: {
3765
+ name?: string;
3766
+ title?: string;
3767
+ };
3768
+ group?: {
3769
+ name?: string;
3770
+ title?: string;
3771
+ };
3772
+ }
3773
+ interface AXPWidgetPropertyViewerConfig {
3774
+ title: string;
3775
+ widget: AXPWidgetNode;
3776
+ mode?: 'simple' | 'advanced';
3777
+ onApply?: (result: AXPWidgetPropertyViewerResult) => void | Promise<void>;
3778
+ /**
3779
+ * Property names to exclude from the viewer.
3780
+ */
3781
+ exclude?: string[];
3782
+ /**
3783
+ * Custom property injection configuration.
3784
+ */
3785
+ custom?: {
3786
+ /**
3787
+ * Custom property injection entries.
3788
+ */
3789
+ properties: AXPWidgetPropertyInjection[];
3790
+ /**
3791
+ * Default tab fallback if property injection doesn't specify one.
3792
+ * When omitted, falls back to the first tab or "general".
3793
+ */
3794
+ defaultTab?: {
3795
+ name?: string;
3796
+ title?: string;
3797
+ };
3798
+ /**
3799
+ * Default group fallback when injection doesn't specify a group.
3800
+ * When omitted, falls back to the tab's first group or property defined group.
3801
+ */
3802
+ defaultGroup?: {
3803
+ name?: string;
3804
+ title?: string;
3805
+ };
3806
+ };
3807
+ }
3808
+ /** Emitted when the dialog applies; `values` is the updated viewer context (merge into {@link AXPWidgetNode} as needed). */
3809
+ interface AXPWidgetPropertyViewerResult {
3810
+ values: any;
3811
+ mode: 'init' | 'update';
3812
+ }
3813
+ interface IAXPWidgetPropertyViewerRoot {
3814
+ dialog(delegate: (container: IAXPWidgetPropertyViewerDialogBuilder) => void): IAXPWidgetPropertyViewerDialogBuilder;
3815
+ }
3816
+ interface IAXPWidgetPropertyViewerDialogBuilder {
3817
+ setTitle(title: string): IAXPWidgetPropertyViewerDialogBuilder;
3818
+ /**
3819
+ * Initial widget state shown in the viewer (type, options, name/path, …). Call before {@link show}.
3820
+ */
3821
+ setWidget(widget: AXPWidgetNode): IAXPWidgetPropertyViewerDialogBuilder;
3822
+ setMode(mode: 'simple' | 'advanced'): IAXPWidgetPropertyViewerDialogBuilder;
3823
+ setExclude(exclude: string[]): IAXPWidgetPropertyViewerDialogBuilder;
3824
+ setCustom(custom: AXPWidgetPropertyViewerConfig['custom']): IAXPWidgetPropertyViewerDialogBuilder;
3825
+ /**
3826
+ * When set to a non-empty array, builds tabs from these properties and skips registry lookup for {@link setWidget}'s type.
3827
+ * Omit or clear to resolve widget config from {@link AXPWidgetRegistryService} as usual.
3828
+ */
3829
+ setPropertyDefinitions(properties: AXPWidgetProperty[] | null): IAXPWidgetPropertyViewerDialogBuilder;
3830
+ onAction(handler: (dialogRef: AXPPropertyViewerActionRef) => void | Promise<void> | unknown | Promise<unknown>): IAXPWidgetPropertyViewerDialogBuilder;
3831
+ /**
3832
+ * Applies edits and returns updated context; merge {@link AXPWidgetPropertyViewerResult.values} into your widget node
3833
+ * (typically `options` and any top-level fields the viewer exposes).
3834
+ */
3835
+ show(): Promise<AXPWidgetPropertyViewerResult | null>;
3836
+ }
3837
+ declare class AXPWidgetPropertyViewerService {
3838
+ private readonly widgetRegistryService;
3839
+ private readonly propertyViewerService;
3840
+ /**
3841
+ * Same shape as `AXPPropertyViewerService.create()` — use `.dialog((d) => { ... }).show()`.
3842
+ */
3843
+ create(): IAXPWidgetPropertyViewerRoot;
3844
+ /**
3845
+ * One-shot open (delegates to {@link #create} `.dialog().show()`).
3846
+ */
3847
+ open(config: AXPWidgetPropertyViewerConfig): Promise<AXPWidgetPropertyViewerResult | null>;
3848
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerService, never>;
3849
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
3288
3850
  }
3289
3851
 
3852
+ declare const AXP_SPREADSHEET_COLUMN_WIDGET_TYPES: readonly [string, string, string, string, string, string, string];
3853
+ type AXPSpreadsheetColumnWidgetType = (typeof AXP_SPREADSHEET_COLUMN_WIDGET_TYPES)[number];
3854
+ declare function toSpreadsheetColumnWidget(type: string, values: unknown): AXPWidgetNode;
3855
+ declare function readSpreadsheetColumnWidth(widget: AXPWidgetNode): string | undefined;
3856
+ declare function asSpreadsheetColumnTitle(title: AXPMultiLanguageString | undefined, fallback?: string): string | undefined;
3857
+ declare const SPREADSHEET_COLUMN_NAME_PATH = "columnName";
3858
+ declare const SPREADSHEET_COLUMN_TITLE_PATH = "columnTitle";
3859
+ declare function spreadsheetColumnIdentityProperties(): AXPWidgetPropertyInjection[];
3860
+ declare function readSpreadsheetColumnIdentity(values: unknown): {
3861
+ name?: string;
3862
+ title?: string;
3863
+ };
3864
+ declare function normalizeSpreadsheetColumnName(raw: string | undefined): string;
3865
+
3290
3866
  /**
3291
3867
  * Host configuration for {@link AXPStandardSectionItemsBuilderComponent}.
3292
3868
  * Section add/edit UI (identity, content, visibility) and delete prompts are standardized;
@@ -3502,6 +4078,7 @@ declare class AXPTemplateViewerComponent extends AXBasePageComponent {
3502
4078
  protected readonly document: _angular_core.WritableSignal<AXPWidgetNode>;
3503
4079
  protected readonly currentPageIndex: _angular_core.WritableSignal<number>;
3504
4080
  protected readonly _config: _angular_core.WritableSignal<AXPTemplateViewerConfig | undefined>;
4081
+ readonly sources: _angular_core.Signal<_acorex_platform_framework_client_layout_widget_core.AXPLocalDataSource[]>;
3505
4082
  protected readonly currentPage: _angular_core.Signal<AXPWidgetNode>;
3506
4083
  protected ngOnInit(): Promise<void>;
3507
4084
  private loadTemplate;
@@ -3626,7 +4203,8 @@ declare class AXPUserAvatarComponent {
3626
4203
  displayName: _angular_core.InputSignal<string | undefined>;
3627
4204
  /** Resolved avatar URL when `userId` is not a platform user row. */
3628
4205
  displayAvatar: _angular_core.InputSignal<string | undefined>;
3629
- protected readonly presenceStatus: _angular_core.WritableSignal<"online" | "offline" | "away" | "busy" | null>;
4206
+ protected readonly presenceStatus: _angular_core.WritableSignal<"offline" | "online" | "away" | "busy" | null>;
4207
+ readonly avatarLoading: _angular_core.WritableSignal<boolean>;
3630
4208
  src: _angular_core.WritableSignal<string>;
3631
4209
  readonly userName: _angular_core.Signal<string>;
3632
4210
  readonly firstName: _angular_core.Signal<string>;
@@ -3826,6 +4404,10 @@ declare class AXPVirtualKeypadComponent {
3826
4404
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPVirtualKeypadComponent, "axp-virtual-keypad", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showLetterHints": { "alias": "showLetterHints"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; }, { "digitPress": "digitPress"; "backspace": "backspace"; "keyPress": "keyPress"; }, never, never, true, never>;
3827
4405
  }
3828
4406
 
4407
+ interface AXPQueryViewContextMenuEvent {
4408
+ event: MouseEvent;
4409
+ view: AXPViewQuery;
4410
+ }
3829
4411
  declare class AXPQueryViewsComponent {
3830
4412
  #private;
3831
4413
  protected popupService: AXPopupService;
@@ -3833,12 +4415,56 @@ declare class AXPQueryViewsComponent {
3833
4415
  protected tabs: _angular_core.Signal<AXTabsComponent | undefined>;
3834
4416
  views: _angular_core.ModelSignal<AXPViewQuery[]>;
3835
4417
  selectedView: _angular_core.ModelSignal<AXPViewQuery>;
4418
+ viewContextMenu: _angular_core.OutputEmitterRef<AXPQueryViewContextMenuEvent>;
3836
4419
  protected isMounted: _angular_core.WritableSignal<boolean>;
3837
4420
  ngAfterViewInit(): void;
3838
4421
  setView(view: AXPViewQuery): void;
4422
+ protected onTabContextMenu(event: MouseEvent, view: AXPViewQuery): void;
3839
4423
  handleActiveChange(e: any): void;
3840
4424
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQueryViewsComponent, never>;
3841
- 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>;
4425
+ 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"; "viewContextMenu": "viewContextMenu"; }, never, never, true, never>;
4426
+ }
4427
+
4428
+ declare class AXPQueryViewTabsComponent {
4429
+ private readonly translationService;
4430
+ private readonly contextMenu;
4431
+ views: _angular_core.InputSignal<AXPViewQuery[]>;
4432
+ selectedView: _angular_core.InputSignal<AXPViewQuery>;
4433
+ selectedViewChange: _angular_core.OutputEmitterRef<AXPViewQuery>;
4434
+ edit: _angular_core.OutputEmitterRef<AXPViewQuery>;
4435
+ remove: _angular_core.OutputEmitterRef<AXPViewQuery>;
4436
+ private readonly contextView;
4437
+ protected onSelectedViewChange(view: AXPViewQuery): void;
4438
+ protected onViewContextMenu(payload: AXPQueryViewContextMenuEvent): Promise<void>;
4439
+ protected onContextMenuItemClick(event: AXContextMenuItemsClickEvent): void;
4440
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQueryViewTabsComponent, never>;
4441
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQueryViewTabsComponent, "axp-query-view-tabs", never, { "views": { "alias": "views"; "required": true; "isSignal": true; }; "selectedView": { "alias": "selectedView"; "required": true; "isSignal": true; }; }, { "selectedViewChange": "selectedViewChange"; "edit": "edit"; "remove": "remove"; }, never, never, true, never>;
4442
+ }
4443
+
4444
+ declare class AXPQueryViewSaveButtonComponent {
4445
+ visible: _angular_core.InputSignal<boolean>;
4446
+ save: _angular_core.OutputEmitterRef<void>;
4447
+ protected onSave(): void;
4448
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQueryViewSaveButtonComponent, never>;
4449
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQueryViewSaveButtonComponent, "axp-query-view-save-button", never, { "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, { "save": "save"; }, never, never, true, never>;
4450
+ }
4451
+
4452
+ interface AXPQueryViewSaveDialogInput {
4453
+ mode: 'create' | 'edit';
4454
+ title?: string;
4455
+ }
4456
+ interface AXPQueryViewSaveDialogResult {
4457
+ title: string;
4458
+ includeActiveView: boolean;
4459
+ }
4460
+ declare class AXPQueryViewSaveDialogService {
4461
+ private readonly layoutBuilder;
4462
+ private readonly dialogService;
4463
+ private readonly translationService;
4464
+ open(initial: AXPQueryViewSaveDialogInput): Promise<AXPQueryViewSaveDialogResult | null>;
4465
+ confirmDelete(): Promise<boolean>;
4466
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPQueryViewSaveDialogService, never>;
4467
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPQueryViewSaveDialogService>;
3842
4468
  }
3843
4469
 
3844
4470
  /**
@@ -3936,16 +4562,25 @@ interface AXPWidgetPropertiesChangedEvent {
3936
4562
  }
3937
4563
  declare class AXPWidgetPropertyViewerComponent {
3938
4564
  widget: _angular_core.InputSignal<AXPWidgetNode>;
3939
- mode: _angular_core.InputSignal<"simple" | "advanced">;
4565
+ mode: _angular_core.InputSignal<"advanced" | "simple">;
4566
+ /** Designer toolbar size. Prefer this over DI so drawers still receive the active profile. */
4567
+ layoutProfile: _angular_core.InputSignal<AXPLayoutProfileContext | null>;
4568
+ /**
4569
+ * How binding expressions are edited. Designer side panel should use `popup`;
4570
+ * dialogs (enough width) should use `inline`.
4571
+ */
4572
+ bindingExpressionEditorMode: _angular_core.InputSignal<AXPPropertyViewerBindingExpressionEditorMode>;
3940
4573
  onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
3941
4574
  protected readonly propertyViewerRef: _angular_core.Signal<AXPPropertyViewerComponent | undefined>;
3942
4575
  protected readonly config: _angular_core.WritableSignal<AXPWidgetConfig<any> | null>;
3943
4576
  protected readonly tabs: _angular_core.WritableSignal<AXPPropertyViewerTab[]>;
3944
4577
  protected initialContext: Record<string, unknown>;
3945
4578
  protected groupCollapsedStates: Map<string, boolean>;
3946
- /** When true, the next onChanged from the inner viewer was caused by our update(); do not forward to avoid loop. */
4579
+ /** When true, onChanged updates from the inner viewer were caused by hydrate/push; do not forward. */
3947
4580
  private suppressNextEmit;
4581
+ private suppressTimer?;
3948
4582
  private readonly widgetRegistryService;
4583
+ private readonly injectedLayoutProfile;
3949
4584
  constructor();
3950
4585
  /**
3951
4586
  * Merges the given values into the property viewer context. Called by the designer when applying changes (e.g. undo/redo).
@@ -3954,13 +4589,21 @@ declare class AXPWidgetPropertyViewerComponent {
3954
4589
  update(values: any): void;
3955
4590
  private fillTabs;
3956
4591
  protected handlePropertyViewerChanged(ev: AXPPropertyViewerChangedEvent): void;
4592
+ protected readonly activeLayoutProfile: _angular_core.Signal<AXPLayoutProfileContext>;
4593
+ private asRecord;
4594
+ private layoutProfileProperties;
4595
+ private projectLayoutProfileValues;
4596
+ private persistLayoutProfileValues;
4597
+ /** Keep the live tree in sync even if the designer command is skipped. */
4598
+ private writeLayoutProfileToWidget;
4599
+ private holdEmitSuppression;
3957
4600
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
3958
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerComponent, "axp-widget-property-viewer", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "onChanged": "onChanged"; }, never, never, true, never>;
4601
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerComponent, "axp-widget-property-viewer", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "layoutProfile": { "alias": "layoutProfile"; "required": false; "isSignal": true; }; "bindingExpressionEditorMode": { "alias": "bindingExpressionEditorMode"; "required": false; "isSignal": true; }; }, { "onChanged": "onChanged"; }, never, never, true, never>;
3959
4602
  }
3960
4603
 
3961
4604
  declare class AXPWidgetPropertyViewerPopupComponent extends AXBasePageComponent {
3962
4605
  widget: _angular_core.InputSignal<AXPWidgetNode>;
3963
- mode: _angular_core.InputSignal<"simple" | "advanced">;
4606
+ mode: _angular_core.InputSignal<"advanced" | "simple">;
3964
4607
  protected currentValues: _angular_core.WritableSignal<any>;
3965
4608
  constructor();
3966
4609
  protected handlePropertyChanged(event: {
@@ -3973,95 +4616,5 @@ declare class AXPWidgetPropertyViewerPopupComponent extends AXBasePageComponent
3973
4616
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerPopupComponent, "axp-widget-property-viewer-popup", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3974
4617
  }
3975
4618
 
3976
- interface AXPWidgetPropertyInjection {
3977
- property: AXPWidgetProperty;
3978
- tab?: {
3979
- name?: string;
3980
- title?: string;
3981
- };
3982
- group?: {
3983
- name?: string;
3984
- title?: string;
3985
- };
3986
- }
3987
- interface AXPWidgetPropertyViewerConfig {
3988
- title: string;
3989
- widget: AXPWidgetNode;
3990
- mode?: 'simple' | 'advanced';
3991
- onApply?: (result: AXPWidgetPropertyViewerResult) => void | Promise<void>;
3992
- /**
3993
- * Property names to exclude from the viewer.
3994
- */
3995
- exclude?: string[];
3996
- /**
3997
- * Custom property injection configuration.
3998
- */
3999
- custom?: {
4000
- /**
4001
- * Custom property injection entries.
4002
- */
4003
- properties: AXPWidgetPropertyInjection[];
4004
- /**
4005
- * Default tab fallback if property injection doesn't specify one.
4006
- * When omitted, falls back to the first tab or "general".
4007
- */
4008
- defaultTab?: {
4009
- name?: string;
4010
- title?: string;
4011
- };
4012
- /**
4013
- * Default group fallback when injection doesn't specify a group.
4014
- * When omitted, falls back to the tab's first group or property defined group.
4015
- */
4016
- defaultGroup?: {
4017
- name?: string;
4018
- title?: string;
4019
- };
4020
- };
4021
- }
4022
- /** Emitted when the dialog applies; `values` is the updated viewer context (merge into {@link AXPWidgetNode} as needed). */
4023
- interface AXPWidgetPropertyViewerResult {
4024
- values: any;
4025
- mode: 'init' | 'update';
4026
- }
4027
- interface IAXPWidgetPropertyViewerRoot {
4028
- dialog(delegate: (container: IAXPWidgetPropertyViewerDialogBuilder) => void): IAXPWidgetPropertyViewerDialogBuilder;
4029
- }
4030
- interface IAXPWidgetPropertyViewerDialogBuilder {
4031
- setTitle(title: string): IAXPWidgetPropertyViewerDialogBuilder;
4032
- /**
4033
- * Initial widget state shown in the viewer (type, options, name/path, …). Call before {@link show}.
4034
- */
4035
- setWidget(widget: AXPWidgetNode): IAXPWidgetPropertyViewerDialogBuilder;
4036
- setMode(mode: 'simple' | 'advanced'): IAXPWidgetPropertyViewerDialogBuilder;
4037
- setExclude(exclude: string[]): IAXPWidgetPropertyViewerDialogBuilder;
4038
- setCustom(custom: AXPWidgetPropertyViewerConfig['custom']): IAXPWidgetPropertyViewerDialogBuilder;
4039
- /**
4040
- * When set to a non-empty array, builds tabs from these properties and skips registry lookup for {@link setWidget}'s type.
4041
- * Omit or clear to resolve widget config from {@link AXPWidgetRegistryService} as usual.
4042
- */
4043
- setPropertyDefinitions(properties: AXPWidgetProperty[] | null): IAXPWidgetPropertyViewerDialogBuilder;
4044
- onAction(handler: (dialogRef: AXPPropertyViewerActionRef) => void | Promise<void> | unknown | Promise<unknown>): IAXPWidgetPropertyViewerDialogBuilder;
4045
- /**
4046
- * Applies edits and returns updated context; merge {@link AXPWidgetPropertyViewerResult.values} into your widget node
4047
- * (typically `options` and any top-level fields the viewer exposes).
4048
- */
4049
- show(): Promise<AXPWidgetPropertyViewerResult | null>;
4050
- }
4051
- declare class AXPWidgetPropertyViewerService {
4052
- private readonly widgetRegistryService;
4053
- private readonly propertyViewerService;
4054
- /**
4055
- * Same shape as `AXPPropertyViewerService.create()` — use `.dialog((d) => { ... }).show()`.
4056
- */
4057
- create(): IAXPWidgetPropertyViewerRoot;
4058
- /**
4059
- * One-shot open (delegates to {@link #create} `.dialog().show()`).
4060
- */
4061
- open(config: AXPWidgetPropertyViewerConfig): Promise<AXPWidgetPropertyViewerResult | null>;
4062
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerService, never>;
4063
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
4064
- }
4065
-
4066
- export { AXPActivityLogComponent, AXPAvatarComponent, AXPCategoryTreeComponent, AXPColorChooserComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPConditionBuilderComponent, AXPConditionBuilderConditionComponent, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPExpressionFieldDefinitions, AXPFileChooserCompressImagesHook, AXPFileChooserDirective, AXPFileChooserHookKeys, AXPFileChooserService, AXPFileChooserZipFilesHook, AXPFileUploaderDirective, AXPFileUploaderHookKeys, AXPFileUploaderService, AXPFileViewerComponent, AXPFileViewerFallbackContentComponent, AXPFileViewerService, AXPImageEditorPopupComponent, AXPImageEditorService, AXPInfiniteScrollDirective, AXPItemConfiguratorComponent, AXPLayoutFloatingZoomBarComponent, AXPLayoutSideDetailPanelComponent, AXPLayoutSideDetailPanelSectionDirective, AXPMarkdownTemplateDirective, AXPMarkdownViewerComponent, AXPMenuBadgeHelper, AXPMenuCustomizerComponent, AXPMenuCustomizerService, AXPOutcomeResultsViewerComponent, AXPPageComponentRegistryService, AXPPreloadFiltersComponent, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPRepeaterRowsLayoutComponent, AXPResourceAppointmentBoardProvider, AXPResourceAppointmentComponent, AXPResourceAppointmentService, AXPSectionItemsBuilderComponent, AXPSignatureEditorService, AXPSpreadsheetComponent, AXPStandardSectionItemsBuilderComponent, AXPStopwatchComponent, AXPTableColumnsEditorComponent, AXPTableColumnsEditorPopupComponent, AXPTableColumnsEditorService, AXPTableDataEditorComponent, AXPTableDataEditorPopupComponent, AXPTableDataEditorService, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPTextCommandColumnComponent, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPUserCardComponent, AXPUserCardDirective, AXPUserCardService, AXPVirtualKeypadComponent, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXPRESSION_LOGIC_DEFINITIONS, AXP_EXPRESSION_OPERATION_DEFINITIONS, AXP_FILE_CHOOSER_DEFAULT_ZIP_ARCHIVE_NAME, AXP_FILE_CHOOSER_HOOK_PROVIDERS, AXP_FILE_CHOOSER_OPTION_KEYS, AXP_FILE_CHOOSER_PROVIDERS, AXP_FILE_UPLOADER_PROVIDERS, AXP_INFINITE_SCROLL_DEFAULT_ROOT_MARGIN, AXP_MENU_CUSTOMIZER_SERVICE, AXP_PAGE_COMPONENT_PROVIDER, AXP_PAGE_LAYOUT_ELEMENT_ID, AXP_RESOURCE_APPOINTMENT_PROVIDER, AXP_SYSTEM_FILE_CHOOSER_PROVIDER, AXP_SYSTEM_FILE_UPLOADER_PROVIDER, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, STANDARD_SECTION_ITEMS_SECTION_TABS, USER_CARD_HOVER_OPEN_DELAY_MS, USER_CARD_ITEMS_HOOK, USER_CARD_ITEMS_SKELETON_DELAY_MS, buildFileChooserOptions, buildPropertyViewerInitialContextFromProperties, buildPropertyViewerTabsFromProperties, buildTableColumnsEditorLayout, compressImageFile, createAttachedFileProviderMenu, createZipArchive, fileListItemToFileViewerItem, fileMatchesAccept, filterFileProvidersByContext, filterFilesByAcceptAndMaxSize, formatAcceptForDisplay, formatMaxFileSizeForDisplay, getFieldDefinitions, getLogicDefinition, getOperationDefinition, isPropertyBindingExpressionFormValue, isUnrestrictedFileAccept, mapFileListToViewerItems, mergeInfiniteScrollPage, normalizeFileViewerBoundValue, notifyFileAcceptRejections, observeInfiniteScroll, preparePropertyForViewer, preparePropertyViewerTabs, provideFileChooserHooks, registerFieldDefinitions, resolveExcludedFileProviderKeys, resolveFileChooserAccept, resolveFileChooserExtension, resolveFileListItemUrl, resolveFileUploaderEmptyStateDescription, resolveInfiniteScrollRoot, sortUserCardActions, sortUserCardRows, validateFileChooserItems, visibleUserCardActions, withValidationsOnEditorNode };
4067
- export type { AXPActivityLogCompareRequest, AXPAttachedFileProviderMenu, AXPBuilderBadge, AXPBuilderBadgeVariant, AXPBuilderDefinition, AXPBuilderItem, AXPBuilderItemIconTone, AXPBuilderItemViewModel, AXPBuilderSection, AXPBuilderTexts, AXPBuilderValue, AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColorChooserGroup, AXPColorChooserLook, AXPColorChooserSwatch, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPDataSelectorAllowCreate, AXPDataSelectorCategoryConfig, AXPDataSelectorCategoryFilterConfig, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDataSelectorCreateConfig, AXPDataSelectorFilterConfig, AXPDataSelectorFooterPrefixAction, AXPDataSelectorGridConfig, AXPDataSelectorRowActionItem, AXPDataSelectorRowActionsHandler, AXPDataSelectorSearchConfig, AXPDataSelectorSearchField, AXPDataSelectorSelectionConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPExpressionFieldDefinition, AXPExpressionGroupNode, AXPExpressionLogicDefinition, AXPExpressionLogicType, AXPExpressionNode, AXPExpressionNodeId, AXPExpressionOperationDefinition, AXPExpressionOperationNode, AXPExpressionOperationType, AXPExpressionTree, AXPExpressionValueOperand, AXPExpressionValueSourceType, AXPFileChooserAfterChosenPayload, AXPFileChooserContext, AXPFileChooserOptionKey, AXPFileChooserProvider, AXPFileProviderDestination, AXPFileUploaderBeforeUploadPayload, AXPFileUploaderContext, AXPFileUploaderProvider, AXPFileViewerGalleryConfig, AXPFileViewerOpenFilesOptions, AXPImageEditorOpenOptions, AXPInfiniteScrollMergeResult, AXPInfiniteScrollPage, AXPInfiniteScrollRoot, AXPLayoutSideDetailPanelEmptyState, AXPLayoutSideDetailPanelHeader, AXPLayoutSideDetailPanelHeaderIcon, AXPLayoutSideDetailPanelRow, AXPLayoutSideDetailPanelRowFormat, AXPLayoutSideDetailPanelSection, AXPMenuCustomizerAction, AXPMenuCustomizerItem, AXPMenuCustomizerItemType, AXPMenuCustomizerNodeData, AXPMenuCustomizerNodeMetadata, AXPMenuCustomizerState, AXPObserveInfiniteScrollOptions, AXPOutcomeResultRow, AXPOutcomeResultSection, AXPOutcomeResultValuePresentation, AXPOutcomeResultsViewModel, AXPPageComponentDefinition, AXPPageComponentProvider, AXPPreloadFiltersApplyEvent, AXPPropertyViewerActionRef, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPResourceAppointmentActionMenuItem, AXPResourceAppointmentBoardFilter, AXPResourceAppointmentItem, AXPResourceAppointmentResource, AXPResourceAppointmentStatus, AXPSignatureEditorAction, AXPSignatureEditorOpenOptions, AXPSignatureEditorResult, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPStandardSectionFormContext, AXPStandardSectionItemsBuilderConfig, AXPTableColumnDefinition, AXPTableColumnsEditorOpenOptions, AXPTableDataEditorOpenOptions, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPTextCommandColumnClickEvent, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPUserCardAction, AXPUserCardItemsPayload, AXPUserCardRow, AXPUserCardShowOptions, AXPUserCardTrigger, AXPVirtualKeypadAction, AXPVirtualKeypadKey, AXPVirtualKeypadLook, AXPVirtualKeypadPressEvent, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, ConditionBuilderSelectedField, FileAcceptFilterResult, FileAcceptRejectedFile, FileUploaderEmptyStateDescriptionKey, FileViewerUrlTracker, IAXPPropertyViewerDialogBuilder, IAXPPropertyViewerRoot, IAXPWidgetPropertyViewerDialogBuilder, IAXPWidgetPropertyViewerRoot, ItemConfiguratorListItem };
4619
+ export { AXPActivityLogComponent, AXPAvatarComponent, AXPCategoryTreeComponent, AXPColorChooserComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPConditionBuilderComponent, AXPConditionBuilderConditionComponent, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPEntityListStylingDialogService, AXPEntityListStylingPopupComponent, AXPExpressionFieldDefinitions, AXPFileChooserCompressImagesHook, AXPFileChooserDirective, AXPFileChooserHookKeys, AXPFileChooserService, AXPFileChooserZipFilesHook, AXPFileUploaderDirective, AXPFileUploaderHookKeys, AXPFileUploaderService, AXPFileViewerComponent, AXPFileViewerFallbackContentComponent, AXPFileViewerService, AXPImageEditorPopupComponent, AXPImageEditorService, AXPInfiniteScrollDirective, AXPItemConfiguratorComponent, AXPLayoutFloatingZoomBarComponent, AXPLayoutSideDetailPanelComponent, AXPLayoutSideDetailPanelSectionDirective, AXPLocalDataSourceEditorDialogService, AXPMarkdownTemplateDirective, AXPMarkdownViewerComponent, AXPMenuBadgeHelper, AXPMenuCustomizerComponent, AXPMenuCustomizerService, AXPOutcomeResultsViewerComponent, AXPPageComponentRegistryService, AXPPreloadFiltersComponent, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewSaveButtonComponent, AXPQueryViewSaveDialogService, AXPQueryViewTabsComponent, AXPQueryViewsComponent, AXPRepeaterRowsLayoutComponent, AXPResourceAppointmentBoardProvider, AXPResourceAppointmentComponent, AXPResourceAppointmentService, AXPSectionItemsBuilderComponent, AXPSignatureEditorService, AXPSpreadsheetComponent, AXPStandardSectionItemsBuilderComponent, AXPStopwatchComponent, AXPTableColumnsEditorComponent, AXPTableColumnsEditorPopupComponent, AXPTableColumnsEditorService, AXPTableDataEditorComponent, AXPTableDataEditorPopupComponent, AXPTableDataEditorService, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPTextCommandColumnComponent, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPUserCardComponent, AXPUserCardDirective, AXPUserCardService, AXPVirtualKeypadComponent, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXPRESSION_LOGIC_DEFINITIONS, AXP_EXPRESSION_OPERATION_DEFINITIONS, AXP_FILE_CHOOSER_DEFAULT_ZIP_ARCHIVE_NAME, AXP_FILE_CHOOSER_HOOK_PROVIDERS, AXP_FILE_CHOOSER_OPTION_KEYS, AXP_FILE_CHOOSER_PROVIDERS, AXP_FILE_UPLOADER_PROVIDERS, AXP_IMAGE_FILE_CHOOSER_ACCEPT, AXP_INFINITE_SCROLL_DEFAULT_ROOT_MARGIN, AXP_MENU_CUSTOMIZER_SERVICE, AXP_PAGE_COMPONENT_PROVIDER, AXP_PAGE_LAYOUT_ELEMENT_ID, AXP_PROFILE_PHOTO_GRAVATAR_SOURCE_KEY, AXP_RESOURCE_APPOINTMENT_PROVIDER, AXP_SPREADSHEET_COLUMN_WIDGET_TYPES, AXP_SYSTEM_FILE_CHOOSER_PROVIDER, AXP_SYSTEM_FILE_UPLOADER_PROVIDER, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, PROPERTY_VIEWER_EXPRESSION_EDITOR_MIN_LINES, SPREADSHEET_COLUMN_NAME_PATH, SPREADSHEET_COLUMN_TITLE_PATH, STANDARD_SECTION_ITEMS_SECTION_TABS, USER_CARD_HOVER_OPEN_DELAY_MS, USER_CARD_ITEMS_HOOK, USER_CARD_ITEMS_SKELETON_DELAY_MS, asSpreadsheetColumnTitle, buildEntityListStylingRulesLayout, buildFileChooserOptions, buildGravatarAvatarUrl, buildPropertyViewerInitialContextFromProperties, buildPropertyViewerTabsFromProperties, buildTableColumnsEditorLayout, compressImageFile, createAttachedFileProviderMenu, createZipArchive, fetchGravatarImageFile, fileListItemToFileViewerItem, fileListItemToImageFile, fileMatchesAccept, fileNameMatchesAccept, filterFileProvidersByContext, filterFilesByAcceptAndMaxSize, formatAcceptForDisplay, formatMaxFileSizeForDisplay, getFieldDefinitions, getLogicDefinition, getOperationDefinition, isPropertyBindingExpressionFormValue, isUnrestrictedFileAccept, mapFileListToViewerItems, md5Hex, mergeInfiniteScrollPage, mergeObjectsReplacingArrays, normalizeFileViewerBoundValue, normalizeSpreadsheetColumnName, notifyFileAcceptRejections, observeInfiniteScroll, pickImageFileViaFileChooser, pickProfilePhotoImageFile, preparePropertyForViewer, preparePropertyViewerTabs, provideFileChooserHooks, readSpreadsheetColumnIdentity, readSpreadsheetColumnWidth, registerFieldDefinitions, resolveExcludedFileProviderKeys, resolveFileChooserAccept, resolveFileChooserExtension, resolveFileListItemUrl, resolveFileUploaderEmptyStateDescription, resolveInfiniteScrollRoot, sortUserCardActions, sortUserCardRows, spreadsheetColumnIdentityProperties, toSpreadsheetColumnWidget, validateFileChooserItems, visibleUserCardActions, withValidationsOnEditorNode };
4620
+ export type { AXPActivityLogCompareRequest, AXPAttachedFileProviderMenu, AXPBuilderBadge, AXPBuilderBadgeVariant, AXPBuilderDefinition, AXPBuilderItem, AXPBuilderItemIconTone, AXPBuilderItemViewModel, AXPBuilderSection, AXPBuilderTexts, AXPBuilderValue, AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColorChooserGroup, AXPColorChooserLook, AXPColorChooserSwatch, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPDataSelectorAllowCreate, AXPDataSelectorCategoryConfig, AXPDataSelectorCategoryFilterConfig, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDataSelectorCreateConfig, AXPDataSelectorFilterConfig, AXPDataSelectorFooterPrefixAction, AXPDataSelectorGridConfig, AXPDataSelectorRowActionItem, AXPDataSelectorRowActionsHandler, AXPDataSelectorSearchConfig, AXPDataSelectorSearchField, AXPDataSelectorSelectionConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPEntityListStylingDialogInput, AXPEntityListStylingRulesKind, AXPEntityListStylingRulesLayoutOptions, AXPExpressionFieldDefinition, AXPExpressionGroupNode, AXPExpressionLogicDefinition, AXPExpressionLogicType, AXPExpressionNode, AXPExpressionNodeId, AXPExpressionOperationDefinition, AXPExpressionOperationNode, AXPExpressionOperationType, AXPExpressionTree, AXPExpressionValueOperand, AXPExpressionValueSourceType, AXPFileChooserAfterChosenPayload, AXPFileChooserContext, AXPFileChooserOptionKey, AXPFileChooserProvider, AXPFileProviderDestination, AXPFileUploaderBeforeUploadPayload, AXPFileUploaderContext, AXPFileUploaderProvider, AXPFileViewerGalleryConfig, AXPFileViewerOpenFilesOptions, AXPImageEditorOpenOptions, AXPInfiniteScrollMergeResult, AXPInfiniteScrollPage, AXPInfiniteScrollRoot, AXPLayoutSideDetailPanelEmptyState, AXPLayoutSideDetailPanelHeader, AXPLayoutSideDetailPanelHeaderIcon, AXPLayoutSideDetailPanelRow, AXPLayoutSideDetailPanelRowFormat, AXPLayoutSideDetailPanelSection, AXPLocalDataSourceEditorDialogInput, AXPLocalDataSourceEditorDialogResult, AXPMenuCustomizerAction, AXPMenuCustomizerItem, AXPMenuCustomizerItemType, AXPMenuCustomizerNodeData, AXPMenuCustomizerNodeMetadata, AXPMenuCustomizerState, AXPObserveInfiniteScrollOptions, AXPOutcomeResultRow, AXPOutcomeResultSection, AXPOutcomeResultValuePresentation, AXPOutcomeResultsViewModel, AXPPageComponentDefinition, AXPPageComponentProvider, AXPPreloadFiltersApplyEvent, AXPProfilePhotoImagePickOptions, AXPProfilePhotoImagePickResult, AXPPropertyViewerActionRef, AXPPropertyViewerBindingExpressionEditorMode, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPQueryViewContextMenuEvent, AXPQueryViewSaveDialogInput, AXPQueryViewSaveDialogResult, AXPResourceAppointmentActionMenuItem, AXPResourceAppointmentBoardFilter, AXPResourceAppointmentItem, AXPResourceAppointmentResource, AXPResourceAppointmentStatus, AXPSignatureEditorAction, AXPSignatureEditorOpenOptions, AXPSignatureEditorResult, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetColumnChangeEvent, AXPSpreadsheetColumnWidgetType, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPStandardSectionFormContext, AXPStandardSectionItemsBuilderConfig, AXPTableColumnDefinition, AXPTableColumnsEditorOpenOptions, AXPTableDataEditorOpenOptions, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPTextCommandColumnClickEvent, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPUserCardAction, AXPUserCardItemsPayload, AXPUserCardRow, AXPUserCardShowOptions, AXPUserCardTrigger, AXPVirtualKeypadAction, AXPVirtualKeypadKey, AXPVirtualKeypadLook, AXPVirtualKeypadPressEvent, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, ConditionBuilderSelectedField, FileAcceptFilterResult, FileAcceptRejectedFile, FileUploaderEmptyStateDescriptionKey, FileViewerUrlTracker, IAXPPropertyViewerDialogBuilder, IAXPPropertyViewerRoot, IAXPWidgetPropertyViewerDialogBuilder, IAXPWidgetPropertyViewerRoot, ItemConfiguratorListItem };