@acorex-platform/framework-client 0.0.18 → 0.0.21
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.
- package/fesm2022/acorex-platform-framework-client-auth.mjs +872 -314
- package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs → acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs} +88 -5
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-common.mjs +2666 -693
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-core.mjs +685 -721
- package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-domain.mjs +16 -16
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +124 -72
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +2988 -857
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +277 -185
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs +29184 -0
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-DCK-qb-F.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs +162 -0
- package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DYV9YPyw.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +2 -27090
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs +382 -154
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +646 -280
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
- 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
- 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
- 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
- package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-BOrrMm3U.mjs.map +1 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +4868 -2548
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-native.mjs +7 -7
- package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs +29 -0
- package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-realtime.mjs +463 -26
- package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-runtime.mjs +300 -137
- package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
- 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
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs.map +1 -0
- 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
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-CngiQycG.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +421 -265
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +538 -133
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-workflow.mjs +26 -66
- package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
- package/package.json +10 -10
- package/realtime/README.md +16 -0
- package/runtime/README.md +14 -0
- package/types/acorex-platform-framework-client-auth.d.ts +291 -52
- package/types/acorex-platform-framework-client-common.d.ts +613 -87
- package/types/acorex-platform-framework-client-core.d.ts +213 -206
- package/types/acorex-platform-framework-client-layout-builder.d.ts +14 -8
- package/types/acorex-platform-framework-client-layout-components.d.ts +392 -28
- package/types/acorex-platform-framework-client-layout-entity.d.ts +667 -417
- package/types/acorex-platform-framework-client-layout-views.d.ts +31 -11
- package/types/acorex-platform-framework-client-layout-widget-core.d.ts +66 -17
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +294 -67
- package/types/acorex-platform-framework-client-realtime.d.ts +183 -6
- package/types/acorex-platform-framework-client-runtime.d.ts +134 -28
- package/types/acorex-platform-framework-client-themes-default.d.ts +9 -1
- package/types/acorex-platform-framework-client-themes-shared.d.ts +8 -2
- package/types/acorex-platform-framework-client-workflow.d.ts +11 -35
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs.map +0 -1
- 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,
|
|
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({},
|
|
31
|
-
|
|
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,
|
|
39
|
-
|
|
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,
|
|
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
|
-
},
|
|
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
|
-
},
|
|
50
|
-
|
|
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
|
-
},
|
|
59
|
-
|
|
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: "
|
|
203
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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 ?? {},
|
|
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,
|
|
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,
|
|
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
|
-
},
|
|
245
|
-
|
|
246
|
-
this.
|
|
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: "
|
|
315
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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: "
|
|
329
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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,
|
|
343
|
-
|
|
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
|
-
},
|
|
360
|
-
|
|
361
|
-
this.
|
|
362
|
-
|
|
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
|
|
369
|
-
if (!isNil(this.defaultValue) && this.fullPath()
|
|
370
|
-
this.
|
|
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: "
|
|
483
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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.
|
|
492
|
-
|
|
493
|
-
this.
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
this.
|
|
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
|
-
},
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
/** Reactive
|
|
513
|
-
this.
|
|
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
|
-
|
|
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.
|
|
523
|
-
this.
|
|
524
|
-
// For string datasources:
|
|
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.
|
|
583
|
+
this.queryDataSourceReady.set(false);
|
|
540
584
|
}
|
|
541
585
|
this.beginHydration();
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
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.
|
|
590
|
+
const registryName = this.queryDataSourceName();
|
|
600
591
|
const value = this.resolveSelectedItemsValue();
|
|
601
|
-
const registryReady = this.
|
|
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
|
-
},
|
|
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
|
-
*
|
|
634
|
-
*
|
|
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
|
-
|
|
637
|
-
const
|
|
638
|
-
if (
|
|
639
|
-
return
|
|
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
|
-
|
|
642
|
-
|
|
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
|
-
|
|
645
|
-
|
|
646
|
-
load: (event) =>
|
|
647
|
-
|
|
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
|
-
/**
|
|
792
|
+
/** Forces a reload of the query-backed datasource on the next effect run. */
|
|
651
793
|
refreshRegistryDataSource() {
|
|
652
|
-
const registryId = this.
|
|
794
|
+
const registryId = this.queryDataSourceName();
|
|
653
795
|
if (!registryId) {
|
|
654
796
|
return;
|
|
655
797
|
}
|
|
656
|
-
|
|
798
|
+
queryDefinitionCache.delete(registryId);
|
|
657
799
|
this.lastStringDataSourceRef = null;
|
|
658
|
-
this.
|
|
659
|
-
this.
|
|
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: "
|
|
717
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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
|
-
},
|
|
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
|
-
},
|
|
901
|
+
}, /* @ts-ignore */
|
|
902
|
+
...(ngDevMode ? [{ debugName: "blockStyle" }] : /* istanbul ignore next */ []));
|
|
766
903
|
this.inlineStyle = computed(() => {
|
|
767
904
|
return { ...this.hostBoxStyle() };
|
|
768
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
919
|
+
}, /* @ts-ignore */
|
|
920
|
+
...(ngDevMode ? [{ debugName: "inlineClass" }] : /* istanbul ignore next */ []));
|
|
781
921
|
}
|
|
782
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
783
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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(),
|
|
793
|
-
|
|
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: "
|
|
796
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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(),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
995
|
+
}, /* @ts-ignore */
|
|
996
|
+
...(ngDevMode ? [{ debugName: "hostFlexClass" }] : /* istanbul ignore next */ []));
|
|
852
997
|
this.hostClass = computed(() => {
|
|
853
998
|
return this.hostFlexClass();
|
|
854
|
-
},
|
|
999
|
+
}, /* @ts-ignore */
|
|
1000
|
+
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
855
1001
|
this.hostStyle = computed(() => {
|
|
856
1002
|
return this.hostFlexStyle();
|
|
857
|
-
},
|
|
1003
|
+
}, /* @ts-ignore */
|
|
1004
|
+
...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
858
1005
|
}
|
|
859
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
860
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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(),
|
|
870
|
-
|
|
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: "
|
|
873
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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(),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
1074
|
+
}, /* @ts-ignore */
|
|
1075
|
+
...(ngDevMode ? [{ debugName: "hostFlexItemClass" }] : /* istanbul ignore next */ []));
|
|
924
1076
|
this.hostClass = computed(() => {
|
|
925
1077
|
return this.hostFlexItemClass();
|
|
926
|
-
},
|
|
1078
|
+
}, /* @ts-ignore */
|
|
1079
|
+
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
927
1080
|
this.hostStyle = computed(() => {
|
|
928
1081
|
return this.hostFlexItemStyle();
|
|
929
|
-
},
|
|
1082
|
+
}, /* @ts-ignore */
|
|
1083
|
+
...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
930
1084
|
}
|
|
931
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
932
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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'],
|
|
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
|
-
},
|
|
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
|
-
},
|
|
966
|
-
|
|
967
|
-
this.
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
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: "
|
|
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(),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
1009
|
-
|
|
1010
|
-
this.
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
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: "
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
1030
|
-
|
|
1031
|
-
this.
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
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: "
|
|
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: "
|
|
1042
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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
|
-
},
|
|
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
|
-
},
|
|
1059
|
-
|
|
1060
|
-
this.
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
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: "
|
|
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: "
|
|
1145
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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({},
|
|
1161
|
-
|
|
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: "
|
|
1500
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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:
|
|
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: "
|
|
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:
|
|
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(),
|
|
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
|
-
},
|
|
1766
|
-
|
|
1767
|
-
this.
|
|
1768
|
-
|
|
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
|
-
},
|
|
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: "
|
|
1982
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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: "
|
|
2020
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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(
|
|
2042
|
-
|
|
2043
|
-
this.
|
|
2044
|
-
|
|
2045
|
-
this.
|
|
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,
|
|
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({},
|
|
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,
|
|
2069
|
-
|
|
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
|
-
|
|
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
|
|
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: "
|
|
3021
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
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: "
|
|
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: "
|
|
3044
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
3045
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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({},
|
|
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: "
|
|
3505
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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
|