@acorex-platform/framework-client 0.0.18 → 0.0.20

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 (108) hide show
  1. package/fesm2022/acorex-platform-framework-client-auth.mjs +872 -314
  2. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs → acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs} +88 -5
  4. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-framework-client-common.mjs +2666 -693
  6. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-core.mjs +685 -721
  8. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-framework-client-domain.mjs +16 -16
  10. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +124 -72
  11. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  12. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-oE8CeLE8.mjs} +8 -6
  13. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs.map → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-oE8CeLE8.mjs.map} +1 -1
  14. package/fesm2022/{acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs → acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs} +4 -4
  15. package/fesm2022/{acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs.map → acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs.map} +1 -1
  16. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +2988 -857
  17. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +277 -185
  19. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs +29184 -0
  21. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs.map +1 -0
  22. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-DCK-qb-F.mjs} +34 -20
  23. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-DCK-qb-F.mjs.map +1 -0
  24. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs +162 -0
  25. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs} +31 -19
  27. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-DYV9YPyw.mjs} +30 -18
  29. package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DYV9YPyw.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +2 -27090
  31. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +382 -154
  33. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +646 -280
  35. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  36. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BiWerYcu.mjs} +16 -10
  37. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs.map → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BiWerYcu.mjs.map} +1 -1
  38. package/fesm2022/{acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs → acorex-platform-framework-client-layout-widgets-image-preview.popup-BOrrMm3U.mjs} +9 -8
  39. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-BOrrMm3U.mjs.map +1 -0
  40. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs} +20 -12
  41. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs.map → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs.map} +1 -1
  42. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs} +32 -18
  43. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs} +8 -7
  45. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs.map} +1 -1
  46. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-FjtSRxIX.mjs} +4 -4
  47. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-FjtSRxIX.mjs.map} +1 -1
  48. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs} +10 -8
  49. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs.map} +1 -1
  50. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +4868 -2548
  51. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
  52. package/fesm2022/acorex-platform-framework-client-native.mjs +7 -7
  53. package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs +29 -0
  54. package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-framework-client-realtime.mjs +463 -26
  56. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  57. package/fesm2022/acorex-platform-framework-client-runtime.mjs +300 -137
  58. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
  59. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-yeftgJ_K.mjs} +10 -7
  60. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs.map → acorex-platform-framework-client-themes-default-entity-master-create-view.component-yeftgJ_K.mjs.map} +1 -1
  61. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DWE3OWGm.mjs} +10 -7
  62. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs.map → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DWE3OWGm.mjs.map} +1 -1
  63. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs} +21 -19
  64. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs → acorex-platform-framework-client-themes-default-error-401.component-BrTotLx1.mjs} +5 -5
  66. package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs.map → acorex-platform-framework-client-themes-default-error-401.component-BrTotLx1.mjs.map} +1 -1
  67. package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs → acorex-platform-framework-client-themes-default-error-404.component-DsC7_s59.mjs} +5 -5
  68. package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs.map → acorex-platform-framework-client-themes-default-error-404.component-DsC7_s59.mjs.map} +1 -1
  69. package/fesm2022/{acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs → acorex-platform-framework-client-themes-default-error-offline.component-CngiQycG.mjs} +6 -6
  70. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-CngiQycG.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +421 -265
  72. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  73. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CbZALjB5.mjs} +8 -6
  74. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs.map → acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CbZALjB5.mjs.map} +1 -1
  75. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BRrNT6x2.mjs} +8 -6
  76. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs.map → acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BRrNT6x2.mjs.map} +1 -1
  77. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BIsQTr6B.mjs} +4 -4
  78. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs.map → acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BIsQTr6B.mjs.map} +1 -1
  79. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-ZclmSbt9.mjs} +16 -10
  80. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs.map → acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-ZclmSbt9.mjs.map} +1 -1
  81. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +538 -133
  82. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  83. package/fesm2022/acorex-platform-framework-client-workflow.mjs +26 -66
  84. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
  85. package/package.json +10 -10
  86. package/realtime/README.md +16 -0
  87. package/runtime/README.md +14 -0
  88. package/types/acorex-platform-framework-client-auth.d.ts +291 -52
  89. package/types/acorex-platform-framework-client-common.d.ts +613 -87
  90. package/types/acorex-platform-framework-client-core.d.ts +213 -206
  91. package/types/acorex-platform-framework-client-layout-builder.d.ts +14 -8
  92. package/types/acorex-platform-framework-client-layout-components.d.ts +392 -28
  93. package/types/acorex-platform-framework-client-layout-entity.d.ts +667 -417
  94. package/types/acorex-platform-framework-client-layout-views.d.ts +31 -11
  95. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +66 -17
  96. package/types/acorex-platform-framework-client-layout-widgets.d.ts +294 -67
  97. package/types/acorex-platform-framework-client-realtime.d.ts +183 -6
  98. package/types/acorex-platform-framework-client-runtime.d.ts +134 -28
  99. package/types/acorex-platform-framework-client-themes-default.d.ts +9 -1
  100. package/types/acorex-platform-framework-client-themes-shared.d.ts +8 -2
  101. package/types/acorex-platform-framework-client-workflow.d.ts +11 -35
  102. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs.map +0 -1
  105. package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs.map +0 -1
@@ -1,9 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { signal, computed, effect, untracked, Injectable, inject, ElementRef, DestroyRef, InjectionToken, EventEmitter, Injector, ChangeDetectorRef, ViewChild, Input, Output, ChangeDetectionStrategy, Component, input, output, ViewContainerRef, Directive, NgModule } from '@angular/core';
3
- import { isSelectionValueEqual, isFormValueEqual, extractValue, getSmart, summarizeFormContextDirtyDiff, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
3
+ import { isSelectionValueEqual, isFormValueEqual, runtimeQueryPayloadData, runtimeQueryCollectionData, extractValue, getSmart, summarizeFormContextDirtyDiff, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
4
4
  import { AXPPageStatus, AXPWidgetStatus, AXP_WIDGET_TOKEN, AXP_WIDGET_COLUMN_TOKEN, createStringProperty, createBooleanProperty, createSelectProperty, createNumberProperty, cloneProperty } from '@acorex-platform/framework-shared/widget-core';
5
+ import { ENTITY_GET_BY_ID_DEFAULT } from '@acorex-platform/framework-shared/runtime';
6
+ export { AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ACTION_SUB_CONTROLS, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_DATA, AXP_WIDGETS_ADVANCE_SUB_INPUT, AXP_WIDGETS_ADVANCE_SUB_MEDIA, AXP_WIDGETS_ADVANCE_SUB_TOOLS, AXP_WIDGETS_AI_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE, AXP_WIDGETS_EDITOR_SUB_COMPOSITE, AXP_WIDGETS_EDITOR_SUB_CONFIG, AXP_WIDGETS_EDITOR_SUB_DATETIME, AXP_WIDGETS_EDITOR_SUB_NUMERIC, AXP_WIDGETS_EDITOR_SUB_RICH, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS, AXP_WIDGETS_EDITOR_SUB_VISUAL, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID, AXP_WIDGETS_LAYOUT_SUB_LISTS, AXP_WIDGETS_LAYOUT_SUB_SHELL, AXP_WIDGETS_LAYOUT_SUB_SURFACES, AXP_WIDGETS_LAYOUT_SUB_TABS, AXP_WIDGETS_LAYOUT_SUB_UTILITY, normalizeWidgetCategories } from '@acorex-platform/framework-shared/runtime';
5
7
  import { convertArrayToDataSource, AXDataSource, AX_STYLE_COLOR_TYPES, AX_STYLE_LOOK_TYPES } from '@acorex/cdk/common';
6
- import { AXPContextStore, AXPDataSourceQueryService, AXPExpressionEvaluatorService, AXPDebugService, FORM_DIRTY_TRACE_NS, OVERLAY_WIDGET_SETTLE_TRACE_NS } from '@acorex-platform/framework-client/core';
8
+ import { AXPContextStore, AXPExpressionEvaluatorService, AXPDebugService, FORM_DIRTY_TRACE_NS, OVERLAY_WIDGET_SETTLE_TRACE_NS } from '@acorex-platform/framework-client/core';
9
+ import { AXPQueryService } from '@acorex-platform/framework-client/runtime';
7
10
  import { set, get, cloneDeep, isEqual, isNil, isUndefined, isObjectLike, merge, sum, isEmpty, isString } from 'lodash-es';
8
11
  import { Subject, BehaviorSubject, filter } from 'rxjs';
9
12
  import * as i1$1 from '@acorex/components/skeleton';
@@ -15,7 +18,6 @@ import * as i1 from '@angular/common';
15
18
  import { CommonModule, NgComponentOutlet } from '@angular/common';
16
19
  import { AXDataTableColumnComponent, AXBaseDataTable } from '@acorex/components/data-table';
17
20
  import { AXUnsubscriber } from '@acorex/core/utils';
18
- export { AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ACTION_SUB_CONTROLS, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_DATA, AXP_WIDGETS_ADVANCE_SUB_INPUT, AXP_WIDGETS_ADVANCE_SUB_MEDIA, AXP_WIDGETS_ADVANCE_SUB_TOOLS, AXP_WIDGETS_AI_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE, AXP_WIDGETS_EDITOR_SUB_COMPOSITE, AXP_WIDGETS_EDITOR_SUB_CONFIG, AXP_WIDGETS_EDITOR_SUB_DATETIME, AXP_WIDGETS_EDITOR_SUB_NUMERIC, AXP_WIDGETS_EDITOR_SUB_RICH, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS, AXP_WIDGETS_EDITOR_SUB_VISUAL, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID, AXP_WIDGETS_LAYOUT_SUB_LISTS, AXP_WIDGETS_LAYOUT_SUB_SHELL, AXP_WIDGETS_LAYOUT_SUB_SURFACES, AXP_WIDGETS_LAYOUT_SUB_TABS, AXP_WIDGETS_LAYOUT_SUB_UTILITY, normalizeWidgetCategories } from '@acorex-platform/framework-shared/runtime';
19
21
 
20
22
  class AXPWidgetCoreElement {
21
23
  api() {
@@ -27,27 +29,35 @@ class AXPWidgetCoreElement {
27
29
  }
28
30
  class AXPWidgetCoreService {
29
31
  constructor() {
30
- this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: "variables$" }] : /* istanbul ignore next */ []));
31
- this.functions$ = signal({}, ...(ngDevMode ? [{ debugName: "functions$" }] : /* istanbul ignore next */ []));
32
+ this.variables$ = signal({}, /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "variables$" }] : /* istanbul ignore next */ []));
34
+ this.functions$ = signal({}, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "functions$" }] : /* istanbul ignore next */ []));
32
36
  this.onRefresh = new Subject();
33
37
  this.widgets = new Map();
34
38
  this.onWidgetRegistered = new Subject();
35
39
  /** Fires whenever a widget registers, including re-registration after remount (same id, new instance). */
36
40
  this.widgetRegistered$ = this.onWidgetRegistered.asObservable();
37
41
  /** Bumps when widget render/hydration state changes so aggregate computeds re-evaluate. */
38
- this.widgetsRevision = signal(0, ...(ngDevMode ? [{ debugName: "widgetsRevision" }] : /* istanbul ignore next */ []));
39
- this.status$ = signal(AXPPageStatus.Rendered, ...(ngDevMode ? [{ debugName: "status$" }] : /* istanbul ignore next */ []));
42
+ this.widgetsRevision = signal(0, /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "widgetsRevision" }] : /* istanbul ignore next */ []));
44
+ this.status$ = signal(AXPPageStatus.Rendered, /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "status$" }] : /* istanbul ignore next */ []));
40
46
  this.status = this.status$.asReadonly();
41
- this.registeredWidgetsCount = signal(0, ...(ngDevMode ? [{ debugName: "registeredWidgetsCount" }] : /* istanbul ignore next */ []));
47
+ this.registeredWidgetsCount = signal(0, /* @ts-ignore */
48
+ ...(ngDevMode ? [{ debugName: "registeredWidgetsCount" }] : /* istanbul ignore next */ []));
42
49
  this.isRendering = computed(() => {
43
50
  this.widgetsRevision();
44
51
  return Array.from(this.widgets.values()).some((widget) => widget.status() === AXPWidgetStatus.Rendering);
45
- }, ...(ngDevMode ? [{ debugName: "isRendering" }] : /* istanbul ignore next */ []));
52
+ }, /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "isRendering" }] : /* istanbul ignore next */ []));
46
54
  this.isHydrating = computed(() => {
47
55
  this.widgetsRevision();
48
56
  return Array.from(this.widgets.values()).some((widget) => widget.isHydrating());
49
- }, ...(ngDevMode ? [{ debugName: "isHydrating" }] : /* istanbul ignore next */ []));
50
- this.isBusy = computed(() => this.isRendering() || this.isHydrating(), ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
57
+ }, /* @ts-ignore */
58
+ ...(ngDevMode ? [{ debugName: "isHydrating" }] : /* istanbul ignore next */ []));
59
+ this.isBusy = computed(() => this.isRendering() || this.isHydrating(), /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
51
61
  this.isStructureReady = computed(() => {
52
62
  this.widgetsRevision();
53
63
  const widgets = Array.from(this.widgets.values());
@@ -55,8 +65,10 @@ class AXPWidgetCoreService {
55
65
  return false;
56
66
  }
57
67
  return widgets.every((widget) => widget.status() === AXPWidgetStatus.Rendered);
58
- }, ...(ngDevMode ? [{ debugName: "isStructureReady" }] : /* istanbul ignore next */ []));
59
- this.dirtyWidgetsRevision = signal(0, ...(ngDevMode ? [{ debugName: "dirtyWidgetsRevision" }] : /* istanbul ignore next */ []));
68
+ }, /* @ts-ignore */
69
+ ...(ngDevMode ? [{ debugName: "isStructureReady" }] : /* istanbul ignore next */ []));
70
+ this.dirtyWidgetsRevision = signal(0, /* @ts-ignore */
71
+ ...(ngDevMode ? [{ debugName: "dirtyWidgetsRevision" }] : /* istanbul ignore next */ []));
60
72
  this.dirtyWidgetsRevisionSignal = this.dirtyWidgetsRevision.asReadonly();
61
73
  effect(() => {
62
74
  this.widgetsRevision();
@@ -199,13 +211,19 @@ class AXPWidgetCoreService {
199
211
  this.dirtyWidgetsRevision.update((value) => value + 1);
200
212
  }
201
213
  ngOnDestroy() { }
202
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
203
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreService }); }
214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetCoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
215
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetCoreService }); }
204
216
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreService, decorators: [{
217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetCoreService, decorators: [{
206
218
  type: Injectable
207
219
  }], ctorParameters: () => [] });
208
220
 
221
+ /** Seeded catalog entity for query metadata (same key as query.props). */
222
+ const QUERY_DEFINITION_ENTITY$1 = 'PlatformManagement.QueryDefinition';
223
+ /** UI default when the select control has not yet sent `take`. */
224
+ const DEFAULT_QUERY_PAGE_SIZE = 10;
225
+ /** Shared in-flight/completed QueryDefinition fetches (one API per query key). */
226
+ const queryDefinitionCache = new Map();
209
227
  class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
210
228
  constructor() {
211
229
  super(...arguments);
@@ -229,21 +247,27 @@ class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
229
247
  this.node = this.token.node;
230
248
  this.name = this.token.node.name;
231
249
  this.component = this;
232
- this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
250
+ this._options = signal(this.token.options ?? {}, /* @ts-ignore */
251
+ ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
233
252
  this.options = this._options.asReadonly();
234
253
  this.onOptionsChanged = new Subject();
235
- this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: "_status" }] : /* istanbul ignore next */ []));
254
+ this._status = signal(AXPWidgetStatus.Rendering, /* @ts-ignore */
255
+ ...(ngDevMode ? [{ debugName: "_status" }] : /* istanbul ignore next */ []));
236
256
  this.status = this._status.asReadonly();
237
257
  this.onStatusChanged = new BehaviorSubject(this._status());
238
258
  /** Depth counter so nested async hydration calls share one busy state. */
239
259
  this.hydrationDepth = 0;
240
- this._isHydrating = signal(false, ...(ngDevMode ? [{ debugName: "_isHydrating" }] : /* istanbul ignore next */ []));
260
+ this._isHydrating = signal(false, /* @ts-ignore */
261
+ ...(ngDevMode ? [{ debugName: "_isHydrating" }] : /* istanbul ignore next */ []));
241
262
  this.isHydrating = this._isHydrating.asReadonly();
242
263
  this.#statusEffect = effect(() => {
243
264
  this.onStatusChanged.next(this.status());
244
- }, ...(ngDevMode ? [{ debugName: "#statusEffect" }] : /* istanbul ignore next */ []));
245
- this.isBusy = computed(() => this.status() === AXPWidgetStatus.Rendering || this.isHydrating(), ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
246
- this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: "_children" }] : /* istanbul ignore next */ []));
265
+ }, /* @ts-ignore */
266
+ ...(ngDevMode ? [{ debugName: "#statusEffect" }] : /* istanbul ignore next */ []));
267
+ this.isBusy = computed(() => this.status() === AXPWidgetStatus.Rendering || this.isHydrating(), /* @ts-ignore */
268
+ ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
269
+ this._children = signal(this.token.node.children ?? [], /* @ts-ignore */
270
+ ...(ngDevMode ? [{ debugName: "_children" }] : /* istanbul ignore next */ []));
247
271
  this.children = this._children.asReadonly();
248
272
  }
249
273
  /** Unregisters this widget from the container registry when the instance is destroyed. */
@@ -311,10 +335,10 @@ class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
311
335
  this._children.set([...children]);
312
336
  }
313
337
  onAdded() { }
314
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
315
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent }); }
338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
339
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBaseWidgetComponent }); }
316
340
  }
317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{
341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{
318
342
  type: Injectable
319
343
  }] });
320
344
  class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {
@@ -325,10 +349,10 @@ class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {
325
349
  }
326
350
  super.ngOnInit();
327
351
  }
328
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
329
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }
352
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
353
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }
330
354
  }
331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{
332
356
  type: Injectable
333
357
  }] });
334
358
  class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
@@ -339,8 +363,10 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
339
363
  this._isValueWidget = false;
340
364
  this.isValueWidget = () => this._isValueWidget;
341
365
  this.onValueChanged = new Subject();
342
- this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: "fullPath" }] : /* istanbul ignore next */ []));
343
- this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: "parentPath" }] : /* istanbul ignore next */ []));
366
+ this.fullPath = signal(null, /* @ts-ignore */
367
+ ...(ngDevMode ? [{ debugName: "fullPath" }] : /* istanbul ignore next */ []));
368
+ this.parentPath = signal(null, /* @ts-ignore */
369
+ ...(ngDevMode ? [{ debugName: "parentPath" }] : /* istanbul ignore next */ []));
344
370
  this.getValue = computed(() => {
345
371
  return this.fullPath() ? this.extractValue(this.fullPath()) : null;
346
372
  }, { ...(ngDevMode ? { debugName: "getValue" } : /* istanbul ignore next */ {}), equal: isEqual });
@@ -356,18 +382,28 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
356
382
  message: c.message,
357
383
  options: c.options,
358
384
  }));
359
- }, ...(ngDevMode ? [{ debugName: "validationRules" }] : /* istanbul ignore next */ []));
360
- this.hasRequiredValidation = computed(() => this.validationRules().some((rule) => rule.rule === 'required'), ...(ngDevMode ? [{ debugName: "hasRequiredValidation" }] : /* istanbul ignore next */ []));
361
- this.hasClearButton = computed(() => this.resolveClearButtonOption('hasClearButton'), ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
362
- this.clearButton = computed(() => this.resolveClearButtonOption('clearButton'), ...(ngDevMode ? [{ debugName: "clearButton" }] : /* istanbul ignore next */ []));
385
+ }, /* @ts-ignore */
386
+ ...(ngDevMode ? [{ debugName: "validationRules" }] : /* istanbul ignore next */ []));
387
+ this.hasRequiredValidation = computed(() => this.validationRules().some((rule) => rule.rule === 'required'), /* @ts-ignore */
388
+ ...(ngDevMode ? [{ debugName: "hasRequiredValidation" }] : /* istanbul ignore next */ []));
389
+ this.hasClearButton = computed(() => this.resolveClearButtonOption('hasClearButton'), /* @ts-ignore */
390
+ ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
391
+ this.clearButton = computed(() => this.resolveClearButtonOption('clearButton'), /* @ts-ignore */
392
+ ...(ngDevMode ? [{ debugName: "clearButton" }] : /* istanbul ignore next */ []));
363
393
  }
364
394
  ngOnInit() {
365
395
  this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;
366
396
  if (this.isValueWidget()) {
367
397
  this.detectFullPath();
368
- // Set defaultValue if it exists and the path doesn't exist in context
369
- if (!isNil(this.defaultValue) && this.fullPath() && !this.contextService.hasValue(this.fullPath())) {
370
- this.applyDefaultValue(this.defaultValue);
398
+ // Set defaultValue when path is empty, or still holds an unevaluated expression string
399
+ if (!isNil(this.defaultValue) && this.fullPath()) {
400
+ const path = this.fullPath();
401
+ const existing = this.contextService.getValue(path);
402
+ const nodeDefault = this.token.node.defaultValue;
403
+ const existingIsUnevaluatedExpression = typeof existing === 'string' && typeof nodeDefault === 'string' && existing === nodeDefault;
404
+ if (!this.contextService.hasValue(path) || existingIsUnevaluatedExpression) {
405
+ this.applyDefaultValue(this.defaultValue);
406
+ }
371
407
  }
372
408
  }
373
409
  //
@@ -421,18 +457,13 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
421
457
  return;
422
458
  }
423
459
  const savedAtPath = this.contextService.getSavedValue(path);
424
- if (this.contextService.isSavedCommitted() &&
425
- isSelectionValueEqual(value, savedAtPath) &&
426
- !isFormValueEqual(value, savedAtPath)) {
460
+ if (this.contextService.isSavedCommitted() && isSelectionValueEqual(value, savedAtPath) && !isFormValueEqual(value, savedAtPath)) {
427
461
  this.contextService.update(path, cloneDeep(savedAtPath), { origin: 'system' });
428
462
  this.onValueChanged.next({ sender: this });
429
463
  return;
430
464
  }
431
465
  // Reordered arrays must persist even when items are deep-equal (e.g. empty row objects).
432
- const isArrayReorder = Array.isArray(oldValue) &&
433
- Array.isArray(value) &&
434
- oldValue.length === value.length &&
435
- oldValue.some((v, i) => v !== value[i]);
466
+ const isArrayReorder = Array.isArray(oldValue) && Array.isArray(value) && oldValue.length === value.length && oldValue.some((v, i) => v !== value[i]);
436
467
  const isArrayLengthChange = Array.isArray(value) && (!Array.isArray(oldValue) || value.length !== oldValue.length);
437
468
  if (!isArrayReorder && !isArrayLengthChange && isFormValueEqual(oldValue, value)) {
438
469
  return;
@@ -479,24 +510,33 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
479
510
  this.setValue(e.value);
480
511
  }
481
512
  }
482
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
483
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent }); }
513
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
514
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPValueWidgetComponent }); }
484
515
  }
485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{
516
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{
486
517
  type: Injectable
487
518
  }] });
488
519
  class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
489
520
  constructor() {
490
521
  super(...arguments);
491
- this.registryDataSourceQuery = inject(AXPDataSourceQueryService);
492
- this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: "textField" }] : /* istanbul ignore next */ []));
493
- this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
494
- this.textTemplate = computed(() => isNil(this.options()['textTemplate'])
495
- ? undefined
496
- : this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}'), ...(ngDevMode ? [{ debugName: "textTemplate" }] : /* istanbul ignore next */ []));
497
- this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: "dataSource" }] : /* istanbul ignore next */ []));
498
- /** Registry datasource name from options, when options.dataSource is a string or `{ id }` object. */
499
- this.registryDataSourceName = computed(() => {
522
+ this.queryService = inject(AXPQueryService);
523
+ /** Last QueryDefinition row loaded for a string `options.dataSource` key. */
524
+ this.loadedQueryDefinition = signal(null, /* @ts-ignore */
525
+ ...(ngDevMode ? [{ debugName: "loadedQueryDefinition" }] : /* istanbul ignore next */ []));
526
+ this.textField = computed(() => this.options()['textField'] ??
527
+ this.loadedQueryDefinition()?.binding?.textField ??
528
+ 'title', /* @ts-ignore */
529
+ ...(ngDevMode ? [{ debugName: "textField" }] : /* istanbul ignore next */ []));
530
+ this.valueField = computed(() => this.options()['valueField'] ??
531
+ this.loadedQueryDefinition()?.binding?.valueField ??
532
+ 'id', /* @ts-ignore */
533
+ ...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
534
+ this.textTemplate = computed(() => (isNil(this.options()['textTemplate']) ? undefined : this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}')), /* @ts-ignore */
535
+ ...(ngDevMode ? [{ debugName: "textTemplate" }] : /* istanbul ignore next */ []));
536
+ this.dataSource = signal(convertArrayToDataSource([]), /* @ts-ignore */
537
+ ...(ngDevMode ? [{ debugName: "dataSource" }] : /* istanbul ignore next */ []));
538
+ /** Query key from options, when options.dataSource is a string or `{ id }` object. */
539
+ this.queryDataSourceName = computed(() => {
500
540
  const rawValue = this.options()['dataSource'];
501
541
  if (typeof rawValue === 'string') {
502
542
  return rawValue;
@@ -505,101 +545,53 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
505
545
  return String(rawValue['id']);
506
546
  }
507
547
  return null;
508
- }, ...(ngDevMode ? [{ debugName: "registryDataSourceName" }] : /* istanbul ignore next */ []));
509
- this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
510
- /** Reactive flag: registry datasource finished resolving (success or failure). */
511
- this.registryDataSourceReady = signal(false, ...(ngDevMode ? [{ debugName: "registryDataSourceReady" }] : /* istanbul ignore next */ []));
512
- /** Reactive bump to reload registry-backed datasources (e.g. after locale change). */
513
- this.registryRefreshEpoch = signal(0, ...(ngDevMode ? [{ debugName: "registryRefreshEpoch" }] : /* istanbul ignore next */ []));
548
+ }, /* @ts-ignore */
549
+ ...(ngDevMode ? [{ debugName: "queryDataSourceName" }] : /* istanbul ignore next */ []));
550
+ this.selectedItems = signal([], /* @ts-ignore */
551
+ ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
552
+ /** Reactive flag: query-backed datasource finished resolving (success or failure). */
553
+ this.queryDataSourceReady = signal(false, /* @ts-ignore */
554
+ ...(ngDevMode ? [{ debugName: "queryDataSourceReady" }] : /* istanbul ignore next */ []));
555
+ /** Reactive bump to reload query-backed datasources (e.g. after locale change). */
556
+ this.queryRefreshEpoch = signal(0, /* @ts-ignore */
557
+ ...(ngDevMode ? [{ debugName: "queryRefreshEpoch" }] : /* istanbul ignore next */ []));
514
558
  //#region ---- DataSource Loading Effect ----
515
559
  /**
516
560
  * Track the last loaded string dataSource reference to prevent infinite loops
517
561
  * Only used for string-based datasources (not arrays or AXDataSource instances)
518
562
  */
519
563
  this.lastStringDataSourceRef = null;
520
- this.rf = effect(async () => {
564
+ /** Drops stale QueryDefinition responses when options/epoch change mid-flight. */
565
+ this.dataSourceLoadGeneration = 0;
566
+ this.rf = effect(() => {
521
567
  const rawValue = this.options()['dataSource'];
522
- const registryId = this.registryDataSourceName();
523
- this.registryRefreshEpoch();
524
- // For string datasources: prevent infinite loop by checking reference
568
+ const registryId = this.queryDataSourceName();
569
+ this.queryRefreshEpoch();
570
+ // For string datasources: skip duplicate runs of the same key (do not mark ready —
571
+ // a sibling options() emit must not hide the skeleton before the first load finishes).
525
572
  if (typeof rawValue === 'string') {
526
573
  if (rawValue === this.lastStringDataSourceRef) {
527
- if (registryId) {
528
- this.registryDataSourceReady.set(true);
529
- }
530
574
  return;
531
575
  }
532
576
  this.lastStringDataSourceRef = rawValue;
533
577
  }
534
578
  else {
535
- // Reset string reference when dataSource changes to non-string
536
579
  this.lastStringDataSourceRef = null;
537
580
  }
581
+ const generation = ++this.dataSourceLoadGeneration;
538
582
  if (registryId) {
539
- this.registryDataSourceReady.set(false);
583
+ this.queryDataSourceReady.set(false);
540
584
  }
541
585
  this.beginHydration();
542
- try {
543
- // Process dataSource creation in untracked context
544
- await untracked(async () => {
545
- if (rawValue instanceof AXDataSource) {
546
- // For AXDataSource instances, check if config changed
547
- if (!isEqual(rawValue.config, this.dataSource().config)) {
548
- this.dataSource.set(rawValue);
549
- }
550
- this.registryDataSourceReady.set(true);
551
- }
552
- // static array datasource - always recreate when options change
553
- else if (Array.isArray(rawValue)) {
554
- const ds = new AXDataSource({
555
- key: this.valueField(),
556
- pageSize: 10,
557
- load: async (e) => {
558
- const raw = this.options()['dataSource'];
559
- const skip = e.skip ?? 0;
560
- const take = e.take ?? raw.length;
561
- return {
562
- items: raw.slice(skip, skip + take),
563
- total: raw.length,
564
- };
565
- },
566
- byKey: (key) => {
567
- const raw = this.options()['dataSource'];
568
- const item = raw.filter((c) => c[this.valueField()] == key);
569
- return Promise.resolve(item[0]);
570
- },
571
- });
572
- this.dataSource.set(ds);
573
- this.registryDataSourceReady.set(true);
574
- }
575
- // resolve data source by name (string or object with id)
576
- else if (registryId) {
577
- const queryOptions = this.buildRegistryQueryOptions();
578
- const result = await this.registryDataSourceQuery.resolve(registryId, queryOptions);
579
- if (result.dataSource) {
580
- this.dataSource.set(this.isolateRegistryDataSource(result.dataSource));
581
- }
582
- else {
583
- this.dataSource.set(convertArrayToDataSource([]));
584
- }
585
- this.registryDataSourceReady.set(true);
586
- }
587
- // empty datasource
588
- else {
589
- this.dataSource.set(convertArrayToDataSource([]));
590
- this.registryDataSourceReady.set(true);
591
- }
592
- });
593
- }
594
- finally {
595
- this.endHydration();
596
- }
597
- }, ...(ngDevMode ? [{ debugName: "rf" }] : /* istanbul ignore next */ []));
586
+ void untracked(() => this.applyDataSource(rawValue, registryId, generation));
587
+ }, /* @ts-ignore */
588
+ ...(ngDevMode ? [{ debugName: "rf" }] : /* istanbul ignore next */ []));
598
589
  this.effect2 = effect(() => {
599
- const registryName = this.registryDataSourceName();
590
+ const registryName = this.queryDataSourceName();
600
591
  const value = this.resolveSelectedItemsValue();
601
- const registryReady = this.registryDataSourceReady();
592
+ const registryReady = this.queryDataSourceReady();
602
593
  this.dataSource();
594
+ this.loadedQueryDefinition();
603
595
  if (registryName && !registryReady) {
604
596
  return;
605
597
  }
@@ -620,43 +612,193 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
620
612
  }
621
613
  };
622
614
  void resolveSelectedItems();
623
- }, ...(ngDevMode ? [{ debugName: "effect2" }] : /* istanbul ignore next */ []));
624
- }
625
- buildRegistryQueryOptions() {
626
- return {
627
- valueField: this.valueField(),
628
- useSamples: this.mode === 'designer',
629
- };
615
+ }, /* @ts-ignore */
616
+ ...(ngDevMode ? [{ debugName: "effect2" }] : /* istanbul ignore next */ []));
630
617
  }
631
618
  //#endregion
619
+ async applyDataSource(rawValue, registryId, generation) {
620
+ try {
621
+ if (rawValue instanceof AXDataSource) {
622
+ this.loadedQueryDefinition.set(null);
623
+ if (!isEqual(rawValue.config, this.dataSource().config)) {
624
+ this.dataSource.set(rawValue);
625
+ }
626
+ this.queryDataSourceReady.set(true);
627
+ return;
628
+ }
629
+ if (Array.isArray(rawValue)) {
630
+ this.loadedQueryDefinition.set(null);
631
+ const ds = new AXDataSource({
632
+ key: this.valueField(),
633
+ pageSize: DEFAULT_QUERY_PAGE_SIZE,
634
+ load: async (e) => {
635
+ const raw = this.options()['dataSource'];
636
+ const skip = e.skip ?? 0;
637
+ const take = e.take ?? raw.length;
638
+ return {
639
+ items: raw.slice(skip, skip + take),
640
+ total: raw.length,
641
+ };
642
+ },
643
+ byKey: (key) => {
644
+ const raw = this.options()['dataSource'];
645
+ const item = raw.filter((c) => c[this.valueField()] == key);
646
+ return Promise.resolve(item[0]);
647
+ },
648
+ });
649
+ this.dataSource.set(ds);
650
+ this.queryDataSourceReady.set(true);
651
+ return;
652
+ }
653
+ if (registryId) {
654
+ // Query fetch does not need the catalog row — bind immediately, enrich when it arrives.
655
+ this.loadedQueryDefinition.set(null);
656
+ this.dataSource.set(this.createQueryDataSource(registryId, null));
657
+ this.queryDataSourceReady.set(true);
658
+ }
659
+ else {
660
+ this.loadedQueryDefinition.set(null);
661
+ this.dataSource.set(convertArrayToDataSource([]));
662
+ this.queryDataSourceReady.set(true);
663
+ }
664
+ }
665
+ finally {
666
+ this.endHydration();
667
+ }
668
+ if (!registryId || generation !== this.dataSourceLoadGeneration) {
669
+ return;
670
+ }
671
+ const definition = await this.loadQueryDefinition(registryId);
672
+ if (generation !== this.dataSourceLoadGeneration) {
673
+ return;
674
+ }
675
+ this.loadedQueryDefinition.set(definition);
676
+ if (definition && this.shouldRebuildQueryDataSource(definition)) {
677
+ this.dataSource.set(this.createQueryDataSource(registryId, definition));
678
+ }
679
+ }
680
+ /**
681
+ * Loads {@link QUERY_DEFINITION_ENTITY} via {@link ENTITY_GET_BY_ID_DEFAULT}.
682
+ * Catalog row `id` matches the runtime query key.
683
+ */
684
+ async loadQueryDefinition(queryKey) {
685
+ const cached = queryDefinitionCache.get(queryKey);
686
+ if (cached) {
687
+ return cached;
688
+ }
689
+ const pending = this.fetchQueryDefinition(queryKey);
690
+ queryDefinitionCache.set(queryKey, pending);
691
+ try {
692
+ return await pending;
693
+ }
694
+ catch {
695
+ queryDefinitionCache.delete(queryKey);
696
+ return null;
697
+ }
698
+ }
699
+ async fetchQueryDefinition(queryKey) {
700
+ try {
701
+ const result = await this.queryService.fetch(ENTITY_GET_BY_ID_DEFAULT, {
702
+ entity: QUERY_DEFINITION_ENTITY$1,
703
+ id: queryKey,
704
+ });
705
+ if (!result?.success) {
706
+ return null;
707
+ }
708
+ return runtimeQueryPayloadData(result) ?? null;
709
+ }
710
+ catch {
711
+ return null;
712
+ }
713
+ }
632
714
  /**
633
- * Registry datasources are cached globally; each widget needs its own {@link AXDataSource}
634
- * instance so per-widget filters (e.g. cascade parent id) do not leak across fields.
715
+ * Recreate the query {@link AXDataSource} only when catalog metadata would change
716
+ * `byKey` / paging / key field beyond what widget options already provide.
635
717
  */
636
- isolateRegistryDataSource(source) {
637
- const config = source.config;
638
- if (!config?.load) {
639
- return source;
718
+ shouldRebuildQueryDataSource(definition) {
719
+ const options = this.options();
720
+ if (definition.byKeyQuery) {
721
+ return true;
722
+ }
723
+ if (options['valueField'] == null && definition.binding?.valueField) {
724
+ return true;
725
+ }
726
+ if (options['pageSize'] == null &&
727
+ definition.paging?.enabled === true &&
728
+ typeof definition.paging.definition?.pageSize === 'number' &&
729
+ Number.isFinite(definition.paging.definition.pageSize) &&
730
+ definition.paging.definition.pageSize > 0) {
731
+ return true;
640
732
  }
641
- const originalLoad = config.load.bind(source);
642
- const originalByKey = config.byKey?.bind(source);
733
+ return false;
734
+ }
735
+ /**
736
+ * Builds a per-widget {@link AXDataSource} from optional QueryDefinition metadata + {@link AXPQueryService.fetch}.
737
+ */
738
+ createQueryDataSource(queryKey, definition) {
739
+ const valueField = this.options()['valueField'] ??
740
+ definition?.binding?.valueField ??
741
+ 'id';
742
+ const definitionPageSize = definition?.paging?.enabled === true &&
743
+ typeof definition.paging.definition?.pageSize === 'number' &&
744
+ Number.isFinite(definition.paging.definition.pageSize) &&
745
+ definition.paging.definition.pageSize > 0
746
+ ? Math.floor(definition.paging.definition.pageSize)
747
+ : undefined;
748
+ const pageSize = this.options()['pageSize'] ??
749
+ definitionPageSize ??
750
+ DEFAULT_QUERY_PAGE_SIZE;
751
+ const byKeyQuery = definition?.byKeyQuery;
643
752
  return new AXDataSource({
644
- pageSize: config.pageSize,
645
- key: config.key,
646
- load: (event) => originalLoad(event),
647
- byKey: originalByKey ? (key) => originalByKey(key) : undefined,
753
+ key: valueField,
754
+ pageSize,
755
+ load: async (event) => {
756
+ const result = await this.queryService.fetch(queryKey, {
757
+ skip: event.skip ?? 0,
758
+ take: event.take ?? pageSize,
759
+ filter: event.filter,
760
+ sort: event.sort,
761
+ });
762
+ const page = runtimeQueryCollectionData(result);
763
+ return {
764
+ items: page?.items ?? [],
765
+ total: page?.total ?? 0,
766
+ };
767
+ },
768
+ byKey: async (key) => {
769
+ if (isNil(key)) {
770
+ return null;
771
+ }
772
+ if (byKeyQuery) {
773
+ const result = await this.queryService.fetch(byKeyQuery, {
774
+ [valueField]: key,
775
+ });
776
+ return runtimeQueryPayloadData(result) ?? null;
777
+ }
778
+ const result = await this.queryService.fetch(queryKey, {
779
+ skip: 0,
780
+ take: 1,
781
+ filter: {
782
+ field: valueField,
783
+ operator: { type: 'equal' },
784
+ value: key,
785
+ },
786
+ });
787
+ const page = runtimeQueryCollectionData(result);
788
+ return page?.items?.[0] ?? null;
789
+ },
648
790
  });
649
791
  }
650
- /** Invalidates cached registry datasource and forces a reload on the next effect run. */
792
+ /** Forces a reload of the query-backed datasource on the next effect run. */
651
793
  refreshRegistryDataSource() {
652
- const registryId = this.registryDataSourceName();
794
+ const registryId = this.queryDataSourceName();
653
795
  if (!registryId) {
654
796
  return;
655
797
  }
656
- this.registryDataSourceQuery.invalidate(registryId);
798
+ queryDefinitionCache.delete(registryId);
657
799
  this.lastStringDataSourceRef = null;
658
- this.registryDataSourceReady.set(false);
659
- this.registryRefreshEpoch.update((epoch) => epoch + 1);
800
+ this.queryDataSourceReady.set(false);
801
+ this.queryRefreshEpoch.update((epoch) => epoch + 1);
660
802
  }
661
803
  async extractItem(item) {
662
804
  if (isNil(item)) {
@@ -666,13 +808,6 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
666
808
  return item;
667
809
  }
668
810
  const key = extractValue(item, this.valueField());
669
- const registryName = this.registryDataSourceName();
670
- if (registryName) {
671
- const found = await this.registryDataSourceQuery.queryByKey(registryName, key, this.buildRegistryQueryOptions());
672
- if (found) {
673
- return found;
674
- }
675
- }
676
811
  const ds = this.dataSource();
677
812
  if (ds.config?.byKey) {
678
813
  const found = await ds.config?.byKey(key);
@@ -713,10 +848,10 @@ class AXPColumnWidgetComponent {
713
848
  return this.rawValue;
714
849
  };
715
850
  }
716
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
717
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent }); }
851
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
852
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColumnWidgetComponent }); }
718
853
  }
719
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{
854
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{
720
855
  type: Injectable
721
856
  }] });
722
857
 
@@ -745,7 +880,8 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
745
880
  style['overflow-y'] = overflowY ?? '';
746
881
  style['direction'] = direction ?? '';
747
882
  return style;
748
- }, ...(ngDevMode ? [{ debugName: "hostBoxStyle" }] : /* istanbul ignore next */ []));
883
+ }, /* @ts-ignore */
884
+ ...(ngDevMode ? [{ debugName: "hostBoxStyle" }] : /* istanbul ignore next */ []));
749
885
  this.blockStyle = computed(() => {
750
886
  const options = this.options();
751
887
  const style = { ...this.hostBoxStyle() };
@@ -762,47 +898,54 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
762
898
  style['height'] = height ?? '';
763
899
  style['max-height'] = maxHeight ?? '';
764
900
  return style;
765
- }, ...(ngDevMode ? [{ debugName: "blockStyle" }] : /* istanbul ignore next */ []));
901
+ }, /* @ts-ignore */
902
+ ...(ngDevMode ? [{ debugName: "blockStyle" }] : /* istanbul ignore next */ []));
766
903
  this.inlineStyle = computed(() => {
767
904
  return { ...this.hostBoxStyle() };
768
- }, ...(ngDevMode ? [{ debugName: "inlineStyle" }] : /* istanbul ignore next */ []));
905
+ }, /* @ts-ignore */
906
+ ...(ngDevMode ? [{ debugName: "inlineStyle" }] : /* istanbul ignore next */ []));
769
907
  this.blockClass = computed(() => {
770
908
  return {
771
909
  block: true,
772
910
  'w-full': true,
773
911
  // 'ax-widget-outline': true,
774
912
  };
775
- }, ...(ngDevMode ? [{ debugName: "blockClass" }] : /* istanbul ignore next */ []));
913
+ }, /* @ts-ignore */
914
+ ...(ngDevMode ? [{ debugName: "blockClass" }] : /* istanbul ignore next */ []));
776
915
  this.inlineClass = computed(() => {
777
916
  return {
778
917
  'inline-block': false,
779
918
  };
780
- }, ...(ngDevMode ? [{ debugName: "inlineClass" }] : /* istanbul ignore next */ []));
919
+ }, /* @ts-ignore */
920
+ ...(ngDevMode ? [{ debugName: "inlineClass" }] : /* istanbul ignore next */ []));
781
921
  }
782
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
783
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }
922
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
923
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }
784
924
  }
785
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{
925
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{
786
926
  type: Injectable
787
927
  }] });
788
928
 
789
929
  class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {
790
930
  constructor() {
791
931
  super(...arguments);
792
- this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
793
- this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
932
+ this.hostClass = computed(() => this.blockClass(), /* @ts-ignore */
933
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
934
+ this.hostStyle = computed(() => this.blockStyle(), /* @ts-ignore */
935
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
794
936
  }
795
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
796
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }
937
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
938
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }
797
939
  }
798
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{
940
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{
799
941
  type: Injectable
800
942
  }] });
801
943
 
802
944
  class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
803
945
  constructor() {
804
946
  super(...arguments);
805
- this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flex" }] : /* istanbul ignore next */ []));
947
+ this.flex = computed(() => this.options(), /* @ts-ignore */
948
+ ...(ngDevMode ? [{ debugName: "flex" }] : /* istanbul ignore next */ []));
806
949
  this.hostFlexStyle = computed(() => {
807
950
  const blockStyle = this.blockStyle();
808
951
  const style = { ...blockStyle };
@@ -841,45 +984,52 @@ class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
841
984
  style['gap'] = flex.gap;
842
985
  }
843
986
  return style;
844
- }, ...(ngDevMode ? [{ debugName: "hostFlexStyle" }] : /* istanbul ignore next */ []));
987
+ }, /* @ts-ignore */
988
+ ...(ngDevMode ? [{ debugName: "hostFlexStyle" }] : /* istanbul ignore next */ []));
845
989
  this.hostFlexClass = computed(() => {
846
990
  return {
847
991
  ...this.blockClass(),
848
992
  'flex': true,
849
993
  'h-full': true,
850
994
  };
851
- }, ...(ngDevMode ? [{ debugName: "hostFlexClass" }] : /* istanbul ignore next */ []));
995
+ }, /* @ts-ignore */
996
+ ...(ngDevMode ? [{ debugName: "hostFlexClass" }] : /* istanbul ignore next */ []));
852
997
  this.hostClass = computed(() => {
853
998
  return this.hostFlexClass();
854
- }, ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
999
+ }, /* @ts-ignore */
1000
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
855
1001
  this.hostStyle = computed(() => {
856
1002
  return this.hostFlexStyle();
857
- }, ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1003
+ }, /* @ts-ignore */
1004
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
858
1005
  }
859
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
860
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }
1006
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1007
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }
861
1008
  }
862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{
1009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{
863
1010
  type: Injectable
864
1011
  }] });
865
1012
 
866
1013
  class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {
867
1014
  constructor() {
868
1015
  super(...arguments);
869
- this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
870
- this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1016
+ this.hostClass = computed(() => this.inlineClass(), /* @ts-ignore */
1017
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1018
+ this.hostStyle = computed(() => this.inlineStyle(), /* @ts-ignore */
1019
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
871
1020
  }
872
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
873
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }
1021
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1022
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }
874
1023
  }
875
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{
1024
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{
876
1025
  type: Injectable
877
1026
  }] });
878
1027
 
879
1028
  class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {
880
1029
  constructor() {
881
1030
  super(...arguments);
882
- this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flexItem" }] : /* istanbul ignore next */ []));
1031
+ this.flexItem = computed(() => this.options(), /* @ts-ignore */
1032
+ ...(ngDevMode ? [{ debugName: "flexItem" }] : /* istanbul ignore next */ []));
883
1033
  this.hostFlexItemStyle = computed(() => {
884
1034
  const inlineStyle = this.blockStyle();
885
1035
  const style = { ...inlineStyle };
@@ -915,37 +1065,43 @@ class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComp
915
1065
  style['align-self'] = fi.alignSelf;
916
1066
  }
917
1067
  return style;
918
- }, ...(ngDevMode ? [{ debugName: "hostFlexItemStyle" }] : /* istanbul ignore next */ []));
1068
+ }, /* @ts-ignore */
1069
+ ...(ngDevMode ? [{ debugName: "hostFlexItemStyle" }] : /* istanbul ignore next */ []));
919
1070
  this.hostFlexItemClass = computed(() => {
920
1071
  return {
921
1072
  ...this.blockClass(),
922
1073
  };
923
- }, ...(ngDevMode ? [{ debugName: "hostFlexItemClass" }] : /* istanbul ignore next */ []));
1074
+ }, /* @ts-ignore */
1075
+ ...(ngDevMode ? [{ debugName: "hostFlexItemClass" }] : /* istanbul ignore next */ []));
924
1076
  this.hostClass = computed(() => {
925
1077
  return this.hostFlexItemClass();
926
- }, ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1078
+ }, /* @ts-ignore */
1079
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
927
1080
  this.hostStyle = computed(() => {
928
1081
  return this.hostFlexItemStyle();
929
- }, ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1082
+ }, /* @ts-ignore */
1083
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
930
1084
  }
931
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
932
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }
1085
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1086
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }
933
1087
  }
934
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{
1088
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{
935
1089
  type: Injectable
936
1090
  }] });
937
1091
 
938
1092
  class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
939
1093
  constructor() {
940
1094
  super(...arguments);
941
- this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: "grid" }] : /* istanbul ignore next */ []));
1095
+ this.grid = computed(() => this.options()?.['grid'], /* @ts-ignore */
1096
+ ...(ngDevMode ? [{ debugName: "grid" }] : /* istanbul ignore next */ []));
942
1097
  this.hostGridStyle = computed(() => {
943
1098
  const style = { ...this.inlineStyle() };
944
1099
  const g = this.grid()?.default;
945
1100
  if (g?.gap)
946
1101
  style['gap'] = g.gap;
947
1102
  return style;
948
- }, ...(ngDevMode ? [{ debugName: "hostGridStyle" }] : /* istanbul ignore next */ []));
1103
+ }, /* @ts-ignore */
1104
+ ...(ngDevMode ? [{ debugName: "hostGridStyle" }] : /* istanbul ignore next */ []));
949
1105
  this.hostGridClass = computed(() => {
950
1106
  const cls = {
951
1107
  ...this.inlineClass(),
@@ -962,21 +1118,25 @@ class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
962
1118
  if (g?.autoFlow)
963
1119
  cls[`lg:grid-flow-${g.autoFlow}`] = true;
964
1120
  return cls;
965
- }, ...(ngDevMode ? [{ debugName: "hostGridClass" }] : /* istanbul ignore next */ []));
966
- this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
967
- this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
968
- }
969
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
970
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }
1121
+ }, /* @ts-ignore */
1122
+ ...(ngDevMode ? [{ debugName: "hostGridClass" }] : /* istanbul ignore next */ []));
1123
+ this.hostClass = computed(() => this.hostGridClass(), /* @ts-ignore */
1124
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1125
+ this.hostStyle = computed(() => this.hostGridStyle(), /* @ts-ignore */
1126
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1127
+ }
1128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1129
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }
971
1130
  }
972
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{
1131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{
973
1132
  type: Injectable
974
1133
  }] });
975
1134
 
976
1135
  class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {
977
1136
  constructor() {
978
1137
  super(...arguments);
979
- this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "gridItem" }] : /* istanbul ignore next */ []));
1138
+ this.gridItem = computed(() => this.options(), /* @ts-ignore */
1139
+ ...(ngDevMode ? [{ debugName: "gridItem" }] : /* istanbul ignore next */ []));
980
1140
  this.hostGridItemStyle = computed(() => {
981
1141
  const style = { ...this.hostFlexStyle() };
982
1142
  const g = this.gridItem();
@@ -985,7 +1145,8 @@ class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetCompon
985
1145
  if (g?.justifySelf)
986
1146
  style['justify-self'] = g.justifySelf;
987
1147
  return style;
988
- }, ...(ngDevMode ? [{ debugName: "hostGridItemStyle" }] : /* istanbul ignore next */ []));
1148
+ }, /* @ts-ignore */
1149
+ ...(ngDevMode ? [{ debugName: "hostGridItemStyle" }] : /* istanbul ignore next */ []));
989
1150
  this.hostGridItemClass = computed(() => {
990
1151
  const cls = { ...this.hostFlexClass() };
991
1152
  const g = this.gridItem();
@@ -1004,15 +1165,20 @@ class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetCompon
1004
1165
  cls[`lg:row-start-${g.rowStart}`] = true;
1005
1166
  if (g?.rowEnd)
1006
1167
  cls[`lg:row-end-${g.rowEnd}`] = true;
1168
+ if (g?.order != null)
1169
+ cls[`lg:order-${g.order}`] = true;
1007
1170
  return cls;
1008
- }, ...(ngDevMode ? [{ debugName: "hostGridItemClass" }] : /* istanbul ignore next */ []));
1009
- this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1010
- this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1011
- }
1012
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1013
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }
1171
+ }, /* @ts-ignore */
1172
+ ...(ngDevMode ? [{ debugName: "hostGridItemClass" }] : /* istanbul ignore next */ []));
1173
+ this.hostClass = computed(() => this.hostGridItemClass(), /* @ts-ignore */
1174
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1175
+ this.hostStyle = computed(() => this.hostGridItemStyle(), /* @ts-ignore */
1176
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1177
+ }
1178
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1179
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }
1014
1180
  }
1015
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{
1181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{
1016
1182
  type: Injectable
1017
1183
  }] });
1018
1184
 
@@ -1021,27 +1187,31 @@ class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponen
1021
1187
  super(...arguments);
1022
1188
  this.hostTableClass = computed(() => ({
1023
1189
  ...this.blockClass(),
1024
- }), ...(ngDevMode ? [{ debugName: "hostTableClass" }] : /* istanbul ignore next */ []));
1190
+ }), /* @ts-ignore */
1191
+ ...(ngDevMode ? [{ debugName: "hostTableClass" }] : /* istanbul ignore next */ []));
1025
1192
  this.hostTableStyle = computed(() => {
1026
1193
  const style = { ...this.blockStyle() };
1027
1194
  style['overflow-x'] = 'auto';
1028
1195
  return style;
1029
- }, ...(ngDevMode ? [{ debugName: "hostTableStyle" }] : /* istanbul ignore next */ []));
1030
- this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1031
- this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1032
- }
1033
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1034
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }
1196
+ }, /* @ts-ignore */
1197
+ ...(ngDevMode ? [{ debugName: "hostTableStyle" }] : /* istanbul ignore next */ []));
1198
+ this.hostClass = computed(() => this.hostTableClass(), /* @ts-ignore */
1199
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1200
+ this.hostStyle = computed(() => this.hostTableStyle(), /* @ts-ignore */
1201
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1202
+ }
1203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1204
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }
1035
1205
  }
1036
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{
1206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{
1037
1207
  type: Injectable
1038
1208
  }] });
1039
1209
 
1040
1210
  class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
1041
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1042
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }
1211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1212
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }
1043
1213
  }
1044
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{
1214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{
1045
1215
  type: Injectable
1046
1216
  }] });
1047
1217
 
@@ -1051,18 +1221,22 @@ class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWid
1051
1221
  this.colSpan = computed(() => {
1052
1222
  const v = this.options()?.colSpan;
1053
1223
  return v ? Math.max(1, v) : 1;
1054
- }, ...(ngDevMode ? [{ debugName: "colSpan" }] : /* istanbul ignore next */ []));
1224
+ }, /* @ts-ignore */
1225
+ ...(ngDevMode ? [{ debugName: "colSpan" }] : /* istanbul ignore next */ []));
1055
1226
  this.rowSpan = computed(() => {
1056
1227
  const v = this.options()?.rowSpan;
1057
1228
  return v ? Math.max(1, v) : 1;
1058
- }, ...(ngDevMode ? [{ debugName: "rowSpan" }] : /* istanbul ignore next */ []));
1059
- this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1060
- this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1061
- }
1062
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1063
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }
1229
+ }, /* @ts-ignore */
1230
+ ...(ngDevMode ? [{ debugName: "rowSpan" }] : /* istanbul ignore next */ []));
1231
+ this.hostClass = computed(() => this.blockClass(), /* @ts-ignore */
1232
+ ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
1233
+ this.hostStyle = computed(() => this.blockStyle(), /* @ts-ignore */
1234
+ ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
1235
+ }
1236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1237
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }
1064
1238
  }
1065
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{
1239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{
1066
1240
  type: Injectable
1067
1241
  }] });
1068
1242
 
@@ -1141,10 +1315,10 @@ class AXPWidgetRegistryService {
1141
1315
  all() {
1142
1316
  return Array.from(this.ensureBuilt().values());
1143
1317
  }
1144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1145
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }
1318
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1319
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }
1146
1320
  }
1147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{
1321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{
1148
1322
  type: Injectable,
1149
1323
  args: [{
1150
1324
  providedIn: 'root',
@@ -1157,8 +1331,10 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
1157
1331
  this.widgetRegistery = inject(AXPWidgetRegistryService);
1158
1332
  this.grid = inject(AXBaseDataTable);
1159
1333
  this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
1160
- this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
1161
- this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: "loadingRow" }] : /* istanbul ignore next */ []));
1334
+ this.mergedOptions = signal({}, /* @ts-ignore */
1335
+ ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
1336
+ this.loadingRow = signal(null, /* @ts-ignore */
1337
+ ...(ngDevMode ? [{ debugName: "loadingRow" }] : /* istanbul ignore next */ []));
1162
1338
  this.rowInjectorsCache = new Map();
1163
1339
  this.hasExpressions = false;
1164
1340
  this.pendingEvaluations = new Set();
@@ -1496,8 +1672,8 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
1496
1672
  }
1497
1673
  return rowInjector;
1498
1674
  }
1499
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1500
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: "axp-widget-column-renderer", inputs: { caption: "caption", customExpandIcon: "customExpandIcon", customCollapseIcon: "customCollapseIcon", customWidth: "customWidth", node: "node", footerTemplate: "footerTemplate", expandHandler: "expandHandler", sortEnabled: "sortEnabled", headerSortDirection: "headerSortDirection", headerSortPriority: "headerSortPriority", columnFixed: "columnFixed", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, outputs: { sortToggle: "sortToggle" }, providers: [
1675
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1676
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: "axp-widget-column-renderer", inputs: { caption: "caption", customExpandIcon: "customExpandIcon", customCollapseIcon: "customCollapseIcon", customWidth: "customWidth", node: "node", footerTemplate: "footerTemplate", expandHandler: "expandHandler", sortEnabled: "sortEnabled", headerSortDirection: "headerSortDirection", headerSortPriority: "headerSortPriority", columnFixed: "columnFixed", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, outputs: { sortToggle: "sortToggle" }, providers: [
1501
1677
  AXPWidgetCoreService,
1502
1678
  {
1503
1679
  provide: AXDataTableColumnComponent,
@@ -1595,9 +1771,9 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
1595
1771
  </div>
1596
1772
  </ng-template>
1597
1773
  <ng-template #footer></ng-template>
1598
- `, isInline: true, styles: ["@layer properties;.axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sortable.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__caption--with-sort{flex:1;flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header__sort-priority{--tw-leading: 1;line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1774
+ `, isInline: true, styles: ["@layer properties;.axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sortable.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__caption{min-width:0px}.axp-widget-column-header__caption--with-sort{flex:1;flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header__sort-priority{--tw-leading: 1;line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1599
1775
  }
1600
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{
1776
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{
1601
1777
  type: Component,
1602
1778
  args: [{ selector: 'axp-widget-column-renderer', template: `
1603
1779
  <ng-template #header>
@@ -1697,7 +1873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
1697
1873
  provide: AXDataTableColumnComponent,
1698
1874
  useExisting: AXPWidgetColumnRendererComponent,
1699
1875
  },
1700
- ], changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['caption'], standalone: false, styles: ["@layer properties;.axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sortable.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__caption--with-sort{flex:1;flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header__sort-priority{--tw-leading: 1;line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
1876
+ ], changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['caption'], standalone: false, styles: ["@layer properties;.axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort,.axp-widget-column-header--sortable.axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__caption{min-width:0px}.axp-widget-column-header__caption--with-sort{flex:1;flex:1 1 0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header__sort-priority{--tw-leading: 1;line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell) .axp-widget-column-header--sort-active .axp-widget-column-header__sort{opacity:1}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1701
1877
  }], propDecorators: { customExpandIcon: [{
1702
1878
  type: Input
1703
1879
  }], customCollapseIcon: [{
@@ -1755,17 +1931,22 @@ class AXPWidgetContainerComponent {
1755
1931
  this.debug = inject(AXPDebugService);
1756
1932
  this.onContextChanged = new EventEmitter();
1757
1933
  this.wasHydrating = false;
1758
- this.isSavedCommitted = computed(() => this.contextService.isSavedCommitted(), ...(ngDevMode ? [{ debugName: "isSavedCommitted" }] : /* istanbul ignore next */ []));
1934
+ this.isSavedCommitted = computed(() => this.contextService.isSavedCommitted(), /* @ts-ignore */
1935
+ ...(ngDevMode ? [{ debugName: "isSavedCommitted" }] : /* istanbul ignore next */ []));
1759
1936
  this.isFormDirty = computed(() => {
1760
1937
  if (!this.contextService.isSavedCommitted()) {
1761
1938
  return false;
1762
1939
  }
1763
1940
  this.contextService.data();
1764
1941
  return this.contextService.isDirty();
1765
- }, ...(ngDevMode ? [{ debugName: "isFormDirty" }] : /* istanbul ignore next */ []));
1766
- this.status = computed(() => this.builderService.status(), ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
1767
- this.isBusy = computed(() => this.builderService.isBusy(), ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
1768
- this.isHydrating = computed(() => this.builderService.isHydrating(), ...(ngDevMode ? [{ debugName: "isHydrating" }] : /* istanbul ignore next */ []));
1942
+ }, /* @ts-ignore */
1943
+ ...(ngDevMode ? [{ debugName: "isFormDirty" }] : /* istanbul ignore next */ []));
1944
+ this.status = computed(() => this.builderService.status(), /* @ts-ignore */
1945
+ ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
1946
+ this.isBusy = computed(() => this.builderService.isBusy(), /* @ts-ignore */
1947
+ ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
1948
+ this.isHydrating = computed(() => this.builderService.isHydrating(), /* @ts-ignore */
1949
+ ...(ngDevMode ? [{ debugName: "isHydrating" }] : /* istanbul ignore next */ []));
1769
1950
  /** True when registered widgets exist and none are rendering or hydrating. */
1770
1951
  this.isWidgetsReady = computed(() => {
1771
1952
  const count = this.builderService.registeredWidgetsCount();
@@ -1773,7 +1954,8 @@ class AXPWidgetContainerComponent {
1773
1954
  return false;
1774
1955
  }
1775
1956
  return this.builderService.isStructureReady() && !this.builderService.isBusy();
1776
- }, ...(ngDevMode ? [{ debugName: "isWidgetsReady" }] : /* istanbul ignore next */ []));
1957
+ }, /* @ts-ignore */
1958
+ ...(ngDevMode ? [{ debugName: "isWidgetsReady" }] : /* istanbul ignore next */ []));
1777
1959
  effect(() => {
1778
1960
  const isDirty = this.isFormDirty();
1779
1961
  const data = this.contextService.data();
@@ -1781,13 +1963,19 @@ class AXPWidgetContainerComponent {
1781
1963
  if (!this.contextService.isChanged() && this.lastEmittedFormDirty === isDirty) {
1782
1964
  return;
1783
1965
  }
1966
+ const prevEmittedFormDirty = this.lastEmittedFormDirty;
1784
1967
  this.lastEmittedFormDirty = isDirty;
1785
1968
  this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'isFormDirty changed', () => ({
1786
1969
  isFormDirty: isDirty,
1970
+ prevEmittedFormDirty,
1787
1971
  userEditedSinceCommit: this.contextService.hasUserEditedSinceCommit(),
1788
1972
  isSavedCommitted: this.contextService.isSavedCommitted(),
1973
+ isHydrating: this.builderService.isHydrating(),
1974
+ isBusy: this.builderService.isBusy(),
1975
+ widgetSnapshot: this.builderService.getWidgetStateSnapshot(),
1789
1976
  changePath: changeEvent.path,
1790
1977
  changeOrigin: changeEvent.origin,
1978
+ changeState: changeEvent.state,
1791
1979
  dirtyPaths: this.contextService.isSavedCommitted()
1792
1980
  ? summarizeFormContextDirtyDiff(this.contextService.data(), this.contextService.saved())
1793
1981
  : [],
@@ -1881,8 +2069,21 @@ class AXPWidgetContainerComponent {
1881
2069
  return this.settlePromise;
1882
2070
  }
1883
2071
  this.clearSavedBaselineTimer();
2072
+ this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'settleSavedBaseline queued', () => ({
2073
+ userEditedSinceCommit: this.contextService.hasUserEditedSinceCommit(),
2074
+ isSavedCommitted: this.contextService.isSavedCommitted(),
2075
+ isFormDirty: this.isFormDirty(),
2076
+ widgetSnapshot: this.builderService.getWidgetStateSnapshot(),
2077
+ }));
1884
2078
  this.settlePromise = this.waitUntilSettled()
1885
2079
  .then(() => {
2080
+ this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'settleSavedBaseline commit', () => ({
2081
+ userEditedSinceCommit: this.contextService.hasUserEditedSinceCommit(),
2082
+ isFormDirty: this.isFormDirty(),
2083
+ dirtyPaths: this.contextService.isSavedCommitted()
2084
+ ? summarizeFormContextDirtyDiff(this.contextService.data(), this.contextService.saved())
2085
+ : [],
2086
+ }));
1886
2087
  this.contextService.commitSaved();
1887
2088
  this.lastEmittedFormDirty = undefined;
1888
2089
  })
@@ -1958,15 +2159,31 @@ class AXPWidgetContainerComponent {
1958
2159
  /** Re-commits baseline after post-load hydration when the user has not edited the form. */
1959
2160
  scheduleRebaselineAfterHydration() {
1960
2161
  this.clearSavedBaselineTimer();
2162
+ this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'rebaseline scheduled', () => ({
2163
+ userEditedSinceCommit: this.contextService.hasUserEditedSinceCommit(),
2164
+ isFormDirty: this.isFormDirty(),
2165
+ dirtyPaths: summarizeFormContextDirtyDiff(this.contextService.data(), this.contextService.saved()),
2166
+ }));
1961
2167
  this.savedBaselineTimer = setTimeout(() => {
1962
2168
  this.savedBaselineTimer = undefined;
1963
2169
  if (this.contextService.hasUserEditedSinceCommit()) {
2170
+ this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'rebaseline skipped (user edited)', () => ({
2171
+ isFormDirty: this.isFormDirty(),
2172
+ dirtyPaths: summarizeFormContextDirtyDiff(this.contextService.data(), this.contextService.saved()),
2173
+ lastChange: this.contextService.changeEvent(),
2174
+ }));
1964
2175
  return;
1965
2176
  }
1966
2177
  void this.waitUntilSettled().then(() => {
1967
2178
  if (this.contextService.hasUserEditedSinceCommit()) {
2179
+ this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'rebaseline aborted after settle (user edited)', () => ({
2180
+ isFormDirty: this.isFormDirty(),
2181
+ dirtyPaths: summarizeFormContextDirtyDiff(this.contextService.data(), this.contextService.saved()),
2182
+ lastChange: this.contextService.changeEvent(),
2183
+ }));
1968
2184
  return;
1969
2185
  }
2186
+ this.debug.trace(FORM_DIRTY_TRACE_NS, 'widget-container', 'rebaseline commitSaved');
1970
2187
  this.contextService.commitSaved();
1971
2188
  this.lastEmittedFormDirty = undefined;
1972
2189
  });
@@ -1978,10 +2195,10 @@ class AXPWidgetContainerComponent {
1978
2195
  this.savedBaselineTimer = undefined;
1979
2196
  }
1980
2197
  }
1981
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1982
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPWidgetContainerComponent, isStandalone: false, selector: "axp-widgets-container", inputs: { context: "context", functions: "functions" }, outputs: { onContextChanged: "onContextChanged" }, host: { styleAttribute: "display: contents;" }, providers: [AXPWidgetCoreService, AXPContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2199
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPWidgetContainerComponent, isStandalone: false, selector: "axp-widgets-container", inputs: { context: "context", functions: "functions" }, outputs: { onContextChanged: "onContextChanged" }, host: { styleAttribute: "display: contents;" }, providers: [AXPWidgetCoreService, AXPContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1983
2200
  }
1984
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{
2201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{
1985
2202
  type: Component,
1986
2203
  args: [{
1987
2204
  selector: 'axp-widgets-container',
@@ -2016,12 +2233,12 @@ function extractPersistedRootIdentityPatch(current, next) {
2016
2233
  }
2017
2234
 
2018
2235
  class AXPWidgetPlaceholderComponent {
2019
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2020
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: "axp-widget-placeholder", ngImport: i0, template: `<div>
2236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2237
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: "axp-widget-placeholder", ngImport: i0, template: `<div>
2021
2238
  <ax-skeleton class="w-full h-10 rounded-md"></ax-skeleton>
2022
2239
  </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1$1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2023
2240
  }
2024
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{
2241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{
2025
2242
  type: Component,
2026
2243
  args: [{
2027
2244
  selector: 'axp-widget-placeholder',
@@ -2034,15 +2251,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2034
2251
  }]
2035
2252
  }] });
2036
2253
 
2254
+ /**
2255
+ * Resolves the lazy component factory for a render mode.
2256
+ * `print` falls back to `view` until a dedicated print component exists.
2257
+ */
2258
+ function resolveWidgetModeComponent(widget, mode) {
2259
+ const requested = widget?.components?.[mode]?.component;
2260
+ if (requested) {
2261
+ return requested;
2262
+ }
2263
+ if (mode === 'print') {
2264
+ return widget?.components?.view?.component;
2265
+ }
2266
+ return undefined;
2267
+ }
2268
+
2037
2269
  class AXPWidgetRendererDirective {
2038
2270
  //#endregion
2039
2271
  //#endregion
2040
2272
  constructor() {
2041
- this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : /* istanbul ignore next */ []));
2042
- this.index = input(...(ngDevMode ? [undefined, { debugName: "index" }] : /* istanbul ignore next */ []));
2043
- this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
2044
- this.node = input.required(...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
2045
- this._options = signal({}, ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
2273
+ this.parentNode = input(/* @ts-ignore */
2274
+ ...(ngDevMode ? [undefined, { debugName: "parentNode" }] : /* istanbul ignore next */ []));
2275
+ this.index = input(/* @ts-ignore */
2276
+ ...(ngDevMode ? [undefined, { debugName: "index" }] : /* istanbul ignore next */ []));
2277
+ this.mode = input.required(/* @ts-ignore */
2278
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
2279
+ this.node = input.required(/* @ts-ignore */
2280
+ ...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
2281
+ this._options = signal({}, /* @ts-ignore */
2282
+ ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
2046
2283
  this.options = this._options.asReadonly();
2047
2284
  this.onOptionsChanged = output();
2048
2285
  this.onValueChanged = output();
@@ -2051,11 +2288,13 @@ class AXPWidgetRendererDirective {
2051
2288
  /**
2052
2289
  * Signal that emits the component reference when it's ready
2053
2290
  */
2054
- this._componentRefSignal = signal(null, ...(ngDevMode ? [{ debugName: "_componentRefSignal" }] : /* istanbul ignore next */ []));
2291
+ this._componentRefSignal = signal(null, /* @ts-ignore */
2292
+ ...(ngDevMode ? [{ debugName: "_componentRefSignal" }] : /* istanbul ignore next */ []));
2055
2293
  this.componentRefSignal = this._componentRefSignal.asReadonly();
2056
2294
  //#endregion
2057
2295
  //#region ---- Properties ----
2058
- this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
2296
+ this.mergedOptions = signal({}, /* @ts-ignore */
2297
+ ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
2059
2298
  this.injector = inject(Injector);
2060
2299
  this.builderService = inject(AXPWidgetCoreService);
2061
2300
  this.contextService = inject(AXPContextStore);
@@ -2065,8 +2304,10 @@ class AXPWidgetRendererDirective {
2065
2304
  this.widgetService = inject(AXPWidgetRegistryService);
2066
2305
  this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
2067
2306
  this.viewContainerRef = inject(ViewContainerRef);
2068
- this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
2069
- this.isVisible = signal(true, ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
2307
+ this.isLoading = signal(false, /* @ts-ignore */
2308
+ ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
2309
+ this.isVisible = signal(true, /* @ts-ignore */
2310
+ ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
2070
2311
  this.expressionEvaluators = new Map();
2071
2312
  this.renderTimeoutId = null;
2072
2313
  this.renderGeneration = 0;
@@ -2534,10 +2775,19 @@ class AXPWidgetRendererDirective {
2534
2775
  }
2535
2776
  //
2536
2777
  this._options.update((val) => ({ ...val, ...this.mergedOptions() }));
2537
- // Evaluate default value
2778
+ // Evaluate default value (skip when path already has a real value, e.g. edit forms).
2779
+ // Still evaluate when the path holds the unevaluated expression string itself.
2538
2780
  let defaultValue = this.node().defaultValue;
2781
+ const defaultValuePath = this.node().path;
2539
2782
  if (typeof defaultValue === 'string' && this.expressionEvaluator.isExpression(defaultValue)) {
2540
- defaultValue = await this.evaluateExpression(defaultValue);
2783
+ const existing = defaultValuePath ? this.contextService.getValue(defaultValuePath) : undefined;
2784
+ const shouldEvaluate = !defaultValuePath ||
2785
+ !this.contextService.hasValue(defaultValuePath) ||
2786
+ existing === defaultValue ||
2787
+ existing === this.node().defaultValue;
2788
+ if (shouldEvaluate) {
2789
+ defaultValue = await this.evaluateExpression(defaultValue);
2790
+ }
2541
2791
  }
2542
2792
  //
2543
2793
  const tokenValue = {
@@ -2558,12 +2808,17 @@ class AXPWidgetRendererDirective {
2558
2808
  //
2559
2809
  const loadingRef = this.viewContainerRef.createComponent(AXPWidgetPlaceholderComponent);
2560
2810
  //
2561
- const com = await widget?.components[this.mode()]?.component();
2811
+ const comFactory = resolveWidgetModeComponent(widget, this.mode());
2812
+ const com = await comFactory?.();
2562
2813
  if (!com) {
2563
2814
  // console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);
2564
2815
  return;
2565
2816
  }
2566
2817
  this.componentRef = this.viewContainerRef.createComponent(com, { injector: token });
2818
+ const fieldPath = this.node().path;
2819
+ if (fieldPath && this.componentRef?.location?.nativeElement) {
2820
+ this.componentRef.location.nativeElement.setAttribute('data-testid', `entity-field-${fieldPath}`);
2821
+ }
2567
2822
  this.instance = this.componentRef.instance;
2568
2823
  this.instance.setStatus(AXPWidgetStatus.Rendering);
2569
2824
  this.instance.parent = this.parentNode();
@@ -3017,14 +3272,14 @@ class AXPWidgetRendererDirective {
3017
3272
  // console.error('Error evaluating action expression:', templateExpression, error);
3018
3273
  }
3019
3274
  }
3020
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3021
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXPWidgetRendererDirective, isStandalone: false, selector: "[axp-widget-renderer]", inputs: { parentNode: { classPropertyName: "parentNode", publicName: "parentNode", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: "onOptionsChanged", onValueChanged: "onValueChanged", onLoad: "onLoad" }, providers: [
3275
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3276
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: AXPWidgetRendererDirective, isStandalone: false, selector: "[axp-widget-renderer]", inputs: { parentNode: { classPropertyName: "parentNode", publicName: "parentNode", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: "onOptionsChanged", onValueChanged: "onValueChanged", onLoad: "onLoad" }, providers: [
3022
3277
  {
3023
3278
  provide: AXUnsubscriber,
3024
3279
  },
3025
3280
  ], exportAs: ["widgetRenderer"], usesOnChanges: true, ngImport: i0 }); }
3026
3281
  }
3027
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{
3282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{
3028
3283
  type: Directive,
3029
3284
  args: [{
3030
3285
  selector: '[axp-widget-renderer]',
@@ -3040,11 +3295,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
3040
3295
 
3041
3296
  const COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];
3042
3297
  class AXPWidgetCoreModule {
3043
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3044
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }
3045
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule] }); }
3298
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3299
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetCoreModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }
3300
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule] }); }
3046
3301
  }
3047
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, decorators: [{
3302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetCoreModule, decorators: [{
3048
3303
  type: NgModule,
3049
3304
  args: [{
3050
3305
  imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule],
@@ -3381,7 +3636,8 @@ class AXPWidgetSerializationHelper {
3381
3636
  class AXPWidgetColumnCellComponent {
3382
3637
  constructor() {
3383
3638
  this.caption = '';
3384
- this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
3639
+ this.mergedOptions = signal({}, /* @ts-ignore */
3640
+ ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
3385
3641
  this.rowInjectorsCache = new Map();
3386
3642
  this.hasExpressions = false;
3387
3643
  this.pendingEvaluations = new Set();
@@ -3501,8 +3757,8 @@ class AXPWidgetColumnCellComponent {
3501
3757
  this.changeDetectionScheduled = false;
3502
3758
  });
3503
3759
  }
3504
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3505
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPWidgetColumnCellComponent, isStandalone: true, selector: "axp-widget-column-cell", inputs: { node: "node", rowData: "rowData", caption: "caption" }, usesOnChanges: true, ngImport: i0, template: `
3760
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetColumnCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3761
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPWidgetColumnCellComponent, isStandalone: true, selector: "axp-widget-column-cell", inputs: { node: "node", rowData: "rowData", caption: "caption" }, usesOnChanges: true, ngImport: i0, template: `
3506
3762
  @if (component && rowData) {
3507
3763
  <ng-container
3508
3764
  *ngComponentOutlet="
@@ -3514,7 +3770,7 @@ class AXPWidgetColumnCellComponent {
3514
3770
  }
3515
3771
  `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3516
3772
  }
3517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnCellComponent, decorators: [{
3773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWidgetColumnCellComponent, decorators: [{
3518
3774
  type: Component,
3519
3775
  args: [{
3520
3776
  selector: 'axp-widget-column-cell',
@@ -3681,6 +3937,116 @@ const AXP_DATA_SOURCE_OPTIONS_PROPERTY = {
3681
3937
  // AXP_DATA_SOURCE_TEXT_FIELD,
3682
3938
  // ];
3683
3939
 
3940
+ //#region ----- Imports -----
3941
+ //#endregion
3942
+ //#region ----- Constants -----
3943
+ const QUERY_DEFINITION_ENTITY = 'PlatformManagement.QueryDefinition';
3944
+ const QUERY_OPTIONS_I18N = {
3945
+ labelPlaceholder: '@general:widgets.query-options.label-placeholder',
3946
+ queryPlaceholder: '@general:widgets.query-options.query-placeholder',
3947
+ tabsTitle: '@general:widgets.query-options.tabs',
3948
+ };
3949
+ //#endregion
3950
+ //#region ----- Node builders -----
3951
+ /**
3952
+ * Builds a `query-selector` node: text (label) + lookup (QueryDefinition).
3953
+ * Optional `resultType` filters the lookup to compatible chart/KPI queries.
3954
+ */
3955
+ function buildQuerySelectorNode(options) {
3956
+ const resultType = options?.resultType?.trim();
3957
+ return {
3958
+ type: 'query-selector',
3959
+ name: options?.name ?? 'querySelector',
3960
+ options: {
3961
+ flexDirection: 'column',
3962
+ gap: '0.5rem',
3963
+ alignItems: 'stretch',
3964
+ },
3965
+ children: [
3966
+ {
3967
+ type: AXPWidgetsCatalog.text,
3968
+ name: 'label',
3969
+ path: 'label',
3970
+ options: {
3971
+ placeholder: QUERY_OPTIONS_I18N.labelPlaceholder,
3972
+ hasClearButton: true,
3973
+ },
3974
+ },
3975
+ {
3976
+ type: AXPWidgetsCatalog.lookup,
3977
+ name: 'query',
3978
+ path: 'query',
3979
+ options: {
3980
+ entity: QUERY_DEFINITION_ENTITY,
3981
+ valueField: 'name',
3982
+ textField: 'catalogTitle',
3983
+ look: 'select',
3984
+ allowClear: true,
3985
+ allowSearch: true,
3986
+ placeholder: QUERY_OPTIONS_I18N.queryPlaceholder,
3987
+ ...(resultType
3988
+ ? {
3989
+ filter: {
3990
+ logic: 'and',
3991
+ filters: [
3992
+ {
3993
+ field: 'resultType',
3994
+ operator: { type: 'equal' },
3995
+ value: resultType,
3996
+ },
3997
+ ],
3998
+ },
3999
+ }
4000
+ : {}),
4001
+ },
4002
+ },
4003
+ ],
4004
+ };
4005
+ }
4006
+ /**
4007
+ * Builds a `query-tabs` repeater whose row template is {@link buildQuerySelectorNode}.
4008
+ */
4009
+ function buildQueryTabsNode(options) {
4010
+ return {
4011
+ type: 'query-tabs',
4012
+ name: 'queryTabs',
4013
+ path: 'options.queryTabs',
4014
+ options: {
4015
+ hasControls: true,
4016
+ allowReorder: true,
4017
+ },
4018
+ children: [buildQuerySelectorNode({ resultType: options?.resultType })],
4019
+ };
4020
+ }
4021
+ //#endregion
4022
+ //#region ----- Properties -----
4023
+ /**
4024
+ * Chart/KPI query binding property: `options.queryTabs` via extended
4025
+ * `query-tabs` (repeater) → `query-selector` (text + lookup).
4026
+ *
4027
+ * Pass `resultType` to filter QueryDefinition rows (e.g. `AXPBarChartQueryResult`).
4028
+ */
4029
+ function createQueryOptionsProperty(options) {
4030
+ const tabsNode = buildQueryTabsNode({ resultType: options?.resultType });
4031
+ return {
4032
+ name: 'queryOptions',
4033
+ title: options?.title ?? QUERY_OPTIONS_I18N.tabsTitle,
4034
+ group: AXP_DATA_PROPERTY_GROUP,
4035
+ showLabel: true,
4036
+ schema: {
4037
+ dataType: 'array',
4038
+ interface: {
4039
+ ...tabsNode,
4040
+ path: 'options.queryTabs',
4041
+ },
4042
+ },
4043
+ visible: true,
4044
+ };
4045
+ }
4046
+ /** Default query-tabs property (no resultType filter). */
4047
+ const AXP_QUERY_OPTIONS_PROPERTY = createQueryOptionsProperty();
4048
+ //#endregion
4049
+
3684
4050
  const AXP_NAME_PROPERTY = createStringProperty({
3685
4051
  name: 'name',
3686
4052
  title: 'Name',
@@ -4766,5 +5132,5 @@ const AXP_CALLBACK_VALIDATION_PROPERTY = {
4766
5132
  * Generated bundle index. Do not edit.
4767
5133
  */
4768
5134
 
4769
- export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnCellComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetSerializationHelper, AXP_ALLOW_CLEAR_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, AXP_ANIMATION_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BETWEEN_VALIDATION_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_BOX_MODEL_PROPERTY_GROUP, AXP_CALLBACK_VALIDATION_PROPERTY, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DATA_SOURCE_OPTIONS_PROPERTY, AXP_DATE_DEPTH_PROPERTY, AXP_DATE_FORMAT_PROPERTY, AXP_DATE_RANGE_LIMIT_PROPERTY, AXP_DEFAULT_ROW_COUNT_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_DIRECTION_PROPERTY, AXP_DISABLED_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_EQUAL_VALIDATION_PROPERTY, AXP_FALSY_TEXT_PROPERTY, AXP_FIT_LINE_COUNT_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_LABEL_PROPERTY, AXP_LAYOUT_ADVANCED_GRID_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_LAYOUT_FLEX_ITEM_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY_GROUP, AXP_LAYOUT_GAP_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTY, AXP_LAYOUT_GRID_PROPERTIES, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_PROPERTY_GROUP, AXP_LAYOUT_GRID_ROW_PROPERTIES, AXP_LAYOUT_ROWS_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_TABLE_PROPERTY_GROUP, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_MAX_LENGTH_VALIDATION_PROPERTY, AXP_MAX_LINE_COUNT_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_MIN_LINE_COUNT_PROPERTY, AXP_MULTI_LANGUAGE_PROPERTY, AXP_NAME_PROPERTY, AXP_NUMBER_SEPARATOR_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_READONLY_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_SHOW_PASSWORD_PROPERTY, AXP_SPIN_BUTTON_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_STYLING_PROPERTY_GROUP, AXP_TABLE_COLUMNS_PROPERTY, AXP_TABLE_COLUMN_ALIGNMENT_PROPERTIES, AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEIGHT_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_TABLE_ITEM_COLSPAN_PROPERTY, AXP_TABLE_ITEM_ROWSPAN_PROPERTY, AXP_TEXT_ALIGN_PROPERTY, AXP_TEXT_FIELD_PROPERTY, AXP_TEXT_PROPERTY, AXP_THEME_PROPERTY, AXP_TITLE_PROPERTY, AXP_TRIGGERS_PROPERTY, AXP_TRIGGERS_PROPERTY_GROUP, AXP_TRULY_TEXT_PROPERTY, AXP_VALIDATION_PROPERTY_GROUP, AXP_VALUE_FIELD_PROPERTY, AXP_VERTICAL_ALIGN_PROPERTY, AXP_WIDGET_DEFINITION_PROVIDER, AXP_WIDGET_PROPERTY_GROUP, WIDGET_CASCADE_TRACE_NS, booleanDefaultProperty, buildWidgetRegistryMapFromProviders, findNonEmptyBreakpoints, largeTextDefaultProperty, mapAXPPropertyToWidgetProperty, numberDefaultProperty, numberMaxValueProperty, numberMinValueProperty, plainTextDefaultProperty, richTextDefaultProperty, selectEditorDefaultValueProperty, selectionListEditorDefaultValueProperty };
5135
+ export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnCellComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetSerializationHelper, AXP_ALLOW_CLEAR_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, AXP_ANIMATION_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BETWEEN_VALIDATION_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_BOX_MODEL_PROPERTY_GROUP, AXP_CALLBACK_VALIDATION_PROPERTY, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DATA_SOURCE_OPTIONS_PROPERTY, AXP_DATE_DEPTH_PROPERTY, AXP_DATE_FORMAT_PROPERTY, AXP_DATE_RANGE_LIMIT_PROPERTY, AXP_DEFAULT_ROW_COUNT_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_DIRECTION_PROPERTY, AXP_DISABLED_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_EQUAL_VALIDATION_PROPERTY, AXP_FALSY_TEXT_PROPERTY, AXP_FIT_LINE_COUNT_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_LABEL_PROPERTY, AXP_LAYOUT_ADVANCED_GRID_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_LAYOUT_FLEX_ITEM_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY_GROUP, AXP_LAYOUT_GAP_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTY, AXP_LAYOUT_GRID_PROPERTIES, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_PROPERTY_GROUP, AXP_LAYOUT_GRID_ROW_PROPERTIES, AXP_LAYOUT_ROWS_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_TABLE_PROPERTY_GROUP, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_MAX_LENGTH_VALIDATION_PROPERTY, AXP_MAX_LINE_COUNT_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_MIN_LINE_COUNT_PROPERTY, AXP_MULTI_LANGUAGE_PROPERTY, AXP_NAME_PROPERTY, AXP_NUMBER_SEPARATOR_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_QUERY_OPTIONS_PROPERTY, AXP_READONLY_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_SHOW_PASSWORD_PROPERTY, AXP_SPIN_BUTTON_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_STYLING_PROPERTY_GROUP, AXP_TABLE_COLUMNS_PROPERTY, AXP_TABLE_COLUMN_ALIGNMENT_PROPERTIES, AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEIGHT_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_TABLE_ITEM_COLSPAN_PROPERTY, AXP_TABLE_ITEM_ROWSPAN_PROPERTY, AXP_TEXT_ALIGN_PROPERTY, AXP_TEXT_FIELD_PROPERTY, AXP_TEXT_PROPERTY, AXP_THEME_PROPERTY, AXP_TITLE_PROPERTY, AXP_TRIGGERS_PROPERTY, AXP_TRIGGERS_PROPERTY_GROUP, AXP_TRULY_TEXT_PROPERTY, AXP_VALIDATION_PROPERTY_GROUP, AXP_VALUE_FIELD_PROPERTY, AXP_VERTICAL_ALIGN_PROPERTY, AXP_WIDGET_DEFINITION_PROVIDER, AXP_WIDGET_PROPERTY_GROUP, WIDGET_CASCADE_TRACE_NS, booleanDefaultProperty, buildQuerySelectorNode, buildQueryTabsNode, buildWidgetRegistryMapFromProviders, createQueryOptionsProperty, findNonEmptyBreakpoints, largeTextDefaultProperty, mapAXPPropertyToWidgetProperty, numberDefaultProperty, numberMaxValueProperty, numberMinValueProperty, plainTextDefaultProperty, resolveWidgetModeComponent, richTextDefaultProperty, selectEditorDefaultValueProperty, selectionListEditorDefaultValueProperty };
4770
5136
  //# sourceMappingURL=acorex-platform-framework-client-layout-widget-core.mjs.map