@acorex/platform 20.8.5 → 21.0.0-beta.1
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-auth.mjs +121 -27
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-41RhWqb4.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +4 -4
- package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +669 -268
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +333 -140
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +557 -826
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +539 -110
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs} +15 -15
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +3285 -1035
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +488 -284
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +15955 -11978
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +410 -170
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +548 -474
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs → acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs} +11 -11
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs → acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs} +22 -77
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs → acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs} +8 -9
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs → acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs} +17 -17
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs +116 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs} +25 -19
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs} +9 -9
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs} +7 -7
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +6396 -4058
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +8 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +328 -166
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs → acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs} +16 -23
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs +31 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs +25 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +1687 -69
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs → acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs} +8 -8
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs} +8 -8
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
- package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs +88 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs +80 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +572 -465
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +276 -98
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +38 -38
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +14 -2
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +261 -24
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +163 -42
- package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
- package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +137 -38
- package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +808 -131
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
- package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +686 -61
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +80 -47
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +274 -197
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +583 -104
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/types/acorex-platform-runtime.d.ts +565 -0
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +105 -4
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +14 -5
- package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +96 -81
- package/fesm2022/acorex-platform-common-common-settings.provider-41RhWqb4.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +0 -111
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +0 -160
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs +0 -1610
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +0 -120
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs +0 -31
- package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs +0 -25
- package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +0 -64
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +0 -1
- package/runtime/index.d.ts +0 -307
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { signal, computed, Injectable, InjectionToken, inject, ElementRef, effect, untracked, Injector, ChangeDetectorRef, ViewChild, Input, ChangeDetectionStrategy, Component, EventEmitter, Output, input, output, ViewContainerRef, Directive, NgModule } from '@angular/core';
|
|
3
3
|
import { convertArrayToDataSource, AXDataSource } from '@acorex/cdk/common';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { AXPContextStore, AXPDataSourceDefinitionProviderService, extractValue, AXPExpressionEvaluatorService, getSmart } from '@acorex/platform/core';
|
|
5
|
+
export { normalizeDefinitionCategories } from '@acorex/platform/core';
|
|
6
|
+
import { set, merge, cloneDeep, isNil, get, isEqual, isUndefined, isObjectLike, sum, isEmpty, isString } from 'lodash-es';
|
|
6
7
|
import { Subject, BehaviorSubject, filter } from 'rxjs';
|
|
7
|
-
import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
|
|
8
8
|
import * as i1$1 from '@acorex/components/skeleton';
|
|
9
9
|
import { AXSkeletonModule } from '@acorex/components/skeleton';
|
|
10
10
|
import * as i2 from '@acorex/core/translation';
|
|
@@ -15,123 +15,6 @@ import { CommonModule } from '@angular/common';
|
|
|
15
15
|
import { AXDataTableColumnComponent, AXBaseDataTable } from '@acorex/components/data-table';
|
|
16
16
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
17
17
|
|
|
18
|
-
class AXPWidgetCoreContextChangeEvent {
|
|
19
|
-
}
|
|
20
|
-
const AXPWidgetCoreContextStore = signalStore(
|
|
21
|
-
// Initial State
|
|
22
|
-
withState(() => ({
|
|
23
|
-
data: {}, // Shared context data
|
|
24
|
-
state: 'initiated', // Current state
|
|
25
|
-
initialSnapshot: {}, // Snapshot of the first initialized state
|
|
26
|
-
previousSnapshot: {}, // Snapshot of the previous state
|
|
27
|
-
lastChange: {
|
|
28
|
-
state: 'initiated',
|
|
29
|
-
}, // Last change event
|
|
30
|
-
})),
|
|
31
|
-
// Computed Signals
|
|
32
|
-
withComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({
|
|
33
|
-
isChanged: computed(() => state() === 'changed'),
|
|
34
|
-
isReset: computed(() => state() === 'restored'),
|
|
35
|
-
isInitiated: computed(() => state() === 'initiated'),
|
|
36
|
-
isEmpty: computed(() => Object.keys(data()).length === 0),
|
|
37
|
-
isDirty: computed(() => !isEqual(data(), previousSnapshot())),
|
|
38
|
-
snapshot: computed(() => cloneDeep(data())), // Current data snapshot
|
|
39
|
-
initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot
|
|
40
|
-
previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot
|
|
41
|
-
changeEvent: computed(() => lastChange()), // Reactive last change event
|
|
42
|
-
})),
|
|
43
|
-
// Methods for State Management
|
|
44
|
-
withMethods((store) => ({
|
|
45
|
-
// Update a specific value
|
|
46
|
-
update(path, value) {
|
|
47
|
-
const currentData = cloneDeep(store.data());
|
|
48
|
-
const oldValue = get(currentData, path);
|
|
49
|
-
// Skip if the value hasn't changed
|
|
50
|
-
if (isEqual(oldValue, value)) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
// Update the value and prepare the change event
|
|
54
|
-
const updatedData = setSmart(currentData, path, value);
|
|
55
|
-
const changeEvent = {
|
|
56
|
-
oldValue,
|
|
57
|
-
newValue: value,
|
|
58
|
-
path,
|
|
59
|
-
state: 'changed',
|
|
60
|
-
data: updatedData,
|
|
61
|
-
};
|
|
62
|
-
// Patch the state
|
|
63
|
-
patchState(store, {
|
|
64
|
-
previousSnapshot: store.snapshot(), // Save the previous state
|
|
65
|
-
data: updatedData,
|
|
66
|
-
state: 'changed',
|
|
67
|
-
lastChange: changeEvent,
|
|
68
|
-
});
|
|
69
|
-
},
|
|
70
|
-
patch(context, skipDirtyTracking = false) {
|
|
71
|
-
const currentData = cloneDeep(store.data());
|
|
72
|
-
// Update the value and prepare the change event
|
|
73
|
-
const updatedData = { ...currentData, ...context };
|
|
74
|
-
const changeEvent = {
|
|
75
|
-
state: 'patch',
|
|
76
|
-
data: updatedData,
|
|
77
|
-
};
|
|
78
|
-
// Patch the state
|
|
79
|
-
patchState(store, {
|
|
80
|
-
...(skipDirtyTracking ? {} : { previousSnapshot: store.snapshot() }), // Only update previousSnapshot if not skipping dirty tracking
|
|
81
|
-
data: updatedData,
|
|
82
|
-
state: 'changed',
|
|
83
|
-
lastChange: changeEvent,
|
|
84
|
-
});
|
|
85
|
-
},
|
|
86
|
-
// Reset to the initial state
|
|
87
|
-
reset() {
|
|
88
|
-
const initialData = store.initial();
|
|
89
|
-
const changeEvent = {
|
|
90
|
-
oldValue: cloneDeep(store.data()), // Current data becomes old value
|
|
91
|
-
newValue: cloneDeep(initialData), // Reset to the initial state
|
|
92
|
-
path: '',
|
|
93
|
-
state: 'restored',
|
|
94
|
-
data: initialData,
|
|
95
|
-
};
|
|
96
|
-
patchState(store, {
|
|
97
|
-
previousSnapshot: store.snapshot(), // Save the previous state
|
|
98
|
-
data: initialData,
|
|
99
|
-
state: 'restored',
|
|
100
|
-
lastChange: changeEvent,
|
|
101
|
-
});
|
|
102
|
-
},
|
|
103
|
-
// Initialize the state
|
|
104
|
-
set(initialData) {
|
|
105
|
-
const currentData = store.data();
|
|
106
|
-
if (isEqual(currentData, initialData)) {
|
|
107
|
-
return; // Skip if the current state matches the initial state
|
|
108
|
-
}
|
|
109
|
-
console.log('initialData', initialData);
|
|
110
|
-
const changeEvent = {
|
|
111
|
-
oldValue: null,
|
|
112
|
-
newValue: cloneDeep(initialData),
|
|
113
|
-
path: '',
|
|
114
|
-
state: 'initiated',
|
|
115
|
-
data: initialData,
|
|
116
|
-
};
|
|
117
|
-
patchState(store, {
|
|
118
|
-
initialSnapshot: cloneDeep(initialData), // Save the initial state
|
|
119
|
-
previousSnapshot: store.snapshot(), // Save the current state as the previous
|
|
120
|
-
data: initialData,
|
|
121
|
-
state: 'initiated',
|
|
122
|
-
lastChange: changeEvent,
|
|
123
|
-
});
|
|
124
|
-
},
|
|
125
|
-
// Get a specific value
|
|
126
|
-
getValue(path) {
|
|
127
|
-
return get(store.data(), path);
|
|
128
|
-
},
|
|
129
|
-
// Check if a path exists in the context
|
|
130
|
-
hasValue(path) {
|
|
131
|
-
return has(store.data(), path);
|
|
132
|
-
},
|
|
133
|
-
})));
|
|
134
|
-
|
|
135
18
|
var AXPPageStatus;
|
|
136
19
|
(function (AXPPageStatus) {
|
|
137
20
|
// Idle statuses
|
|
@@ -171,17 +54,17 @@ class AXPWidgetCoreElement {
|
|
|
171
54
|
}
|
|
172
55
|
class AXPWidgetCoreService {
|
|
173
56
|
constructor() {
|
|
174
|
-
this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: "variables$" }] : []));
|
|
175
|
-
this.functions$ = signal({}, ...(ngDevMode ? [{ debugName: "functions$" }] : []));
|
|
57
|
+
this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: "variables$" }] : /* istanbul ignore next */ []));
|
|
58
|
+
this.functions$ = signal({}, ...(ngDevMode ? [{ debugName: "functions$" }] : /* istanbul ignore next */ []));
|
|
176
59
|
this.onRefresh = new Subject();
|
|
177
60
|
this.widgets = new Map();
|
|
178
61
|
this.onWidgetRegistered = new Subject();
|
|
179
|
-
this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: "status$" }] : []));
|
|
62
|
+
this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: "status$" }] : /* istanbul ignore next */ []));
|
|
180
63
|
this.status = this.status$.asReadonly();
|
|
181
64
|
this.isBusy = computed(() => {
|
|
182
65
|
return [AXPPageStatus.Processing, AXPPageStatus.Submitting, AXPPageStatus.Rendering].includes(this.status());
|
|
183
|
-
}, ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
|
|
184
|
-
this.registeredWidgetsCount = signal(0, ...(ngDevMode ? [{ debugName: "registeredWidgetsCount" }] : []));
|
|
66
|
+
}, ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
|
|
67
|
+
this.registeredWidgetsCount = signal(0, ...(ngDevMode ? [{ debugName: "registeredWidgetsCount" }] : /* istanbul ignore next */ []));
|
|
185
68
|
}
|
|
186
69
|
get variables() {
|
|
187
70
|
return this.variables$();
|
|
@@ -286,16 +169,16 @@ class AXPWidgetCoreService {
|
|
|
286
169
|
return Array.from(this.widgets.keys());
|
|
287
170
|
}
|
|
288
171
|
ngOnDestroy() { }
|
|
289
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
290
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
173
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreService }); }
|
|
291
174
|
}
|
|
292
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreService, decorators: [{
|
|
293
176
|
type: Injectable
|
|
294
177
|
}] });
|
|
295
178
|
|
|
296
179
|
//
|
|
297
180
|
// @deprecated
|
|
298
|
-
//
|
|
181
|
+
// Prefer AXPWidgetsList from @acorex/modules/common; dashboard widget type ids live in dashboard-management RootConfig.widgets.
|
|
299
182
|
const AXPWidgetsCatalog = {
|
|
300
183
|
timeDuration: 'time-duration',
|
|
301
184
|
timeDurationFilter: 'time-duration-filter',
|
|
@@ -319,6 +202,7 @@ const AXPWidgetsCatalog = {
|
|
|
319
202
|
pageLayout: 'page-layout',
|
|
320
203
|
repeaterLayout: 'repeater-layout',
|
|
321
204
|
textBlockLayout: 'text-block-layout',
|
|
205
|
+
alertBoxLayout: 'alert-box-layout',
|
|
322
206
|
fileUploader: 'file-uploader',
|
|
323
207
|
fileTypeExtension: 'file-type-extension',
|
|
324
208
|
map: 'map',
|
|
@@ -347,7 +231,6 @@ const AXPWidgetsCatalog = {
|
|
|
347
231
|
tableLayout: 'table-layout',
|
|
348
232
|
tableItem: 'table-item-layout',
|
|
349
233
|
avatar: 'avatar',
|
|
350
|
-
themePaletteChooser: 'theme-palette-chooser',
|
|
351
234
|
themeModeChooser: 'theme-mode-chooser',
|
|
352
235
|
menuOrientationChooser: 'menu-orientation-chooser',
|
|
353
236
|
fontStyleChooser: 'font-style-chooser',
|
|
@@ -375,21 +258,11 @@ const AXPWidgetsCatalog = {
|
|
|
375
258
|
betweenValidation: 'between-validation',
|
|
376
259
|
equalValidation: 'equal-validation',
|
|
377
260
|
callbackValidation: 'callback-validation',
|
|
378
|
-
donutChart: 'donut-chart',
|
|
379
|
-
lineChart: 'line-chart',
|
|
380
|
-
barChart: 'bar-chart',
|
|
381
|
-
gaugeChart: 'gauge-chart',
|
|
382
|
-
stickyNote: 'sticky-note',
|
|
383
|
-
clockCalendar: 'clock-calendar',
|
|
384
|
-
analogClock: 'analog-clock',
|
|
385
|
-
weather: 'weather',
|
|
386
|
-
minimalWeather: 'minimal-weather',
|
|
387
|
-
advancedWeather: 'advanced-weather',
|
|
388
261
|
metaData: 'meta-data-editor',
|
|
389
262
|
templateEditor: 'template-box-editor',
|
|
263
|
+
templateContentEditor: 'template-content-editor',
|
|
390
264
|
panel: 'panel',
|
|
391
265
|
notification: 'notification',
|
|
392
|
-
taskBoard: 'task-board',
|
|
393
266
|
comment: 'comment',
|
|
394
267
|
dataList: 'data-list',
|
|
395
268
|
listToolbar: 'list-toolbar',
|
|
@@ -398,7 +271,9 @@ const AXPWidgetsCatalog = {
|
|
|
398
271
|
documentUploader: 'document-uploader',
|
|
399
272
|
stepWizard: 'step-wizard',
|
|
400
273
|
progressBar: 'progress-bar-editor',
|
|
401
|
-
rate: 'rate-picker-editor'
|
|
274
|
+
rate: 'rate-picker-editor',
|
|
275
|
+
documentFileTypeFilter: 'document-file-type-filter',
|
|
276
|
+
entityDefinitionProvider: 'entity-definition-provider-editor',
|
|
402
277
|
};
|
|
403
278
|
|
|
404
279
|
function cloneProperty(property, values) {
|
|
@@ -453,7 +328,7 @@ function createBooleanProperty(ctor) {
|
|
|
453
328
|
type: AXPWidgetsCatalog.toggle,
|
|
454
329
|
},
|
|
455
330
|
},
|
|
456
|
-
visible: ctor.visible
|
|
331
|
+
visible: !isNil(ctor.visible) ? ctor.visible : true,
|
|
457
332
|
binding: {
|
|
458
333
|
enabled: true,
|
|
459
334
|
},
|
|
@@ -480,7 +355,7 @@ function createSelectProperty(ctor) {
|
|
|
480
355
|
},
|
|
481
356
|
},
|
|
482
357
|
},
|
|
483
|
-
visible: ctor.visible
|
|
358
|
+
visible: !isNil(ctor.visible) ? ctor.visible : true,
|
|
484
359
|
};
|
|
485
360
|
}
|
|
486
361
|
const AXP_WIDGET_TOKEN = new InjectionToken('AXP_WIDGET_TOKEN');
|
|
@@ -492,22 +367,22 @@ class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
|
|
|
492
367
|
this.token = inject(AXP_WIDGET_TOKEN);
|
|
493
368
|
this.host = inject(ElementRef).nativeElement;
|
|
494
369
|
this.layoutService = inject(AXPWidgetCoreService);
|
|
495
|
-
this.contextService = inject(
|
|
370
|
+
this.contextService = inject(AXPContextStore);
|
|
496
371
|
this.config = this.token.config;
|
|
497
372
|
this.node = this.token.node;
|
|
498
373
|
this.name = this.token.node.name;
|
|
499
374
|
this.component = this;
|
|
500
|
-
this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: "_options" }] : []));
|
|
375
|
+
this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
|
|
501
376
|
this.options = this._options.asReadonly();
|
|
502
377
|
this.onOptionsChanged = new Subject();
|
|
503
|
-
this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: "_status" }] : []));
|
|
378
|
+
this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: "_status" }] : /* istanbul ignore next */ []));
|
|
504
379
|
this.status = this._status.asReadonly();
|
|
505
380
|
this.onStatusChanged = new BehaviorSubject(this._status());
|
|
506
381
|
this.#statusEffect = effect(() => {
|
|
507
382
|
this.onStatusChanged.next(this.status());
|
|
508
|
-
}, ...(ngDevMode ? [{ debugName: "#statusEffect" }] : []));
|
|
509
|
-
this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
|
|
510
|
-
this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: "_children" }] : []));
|
|
383
|
+
}, ...(ngDevMode ? [{ debugName: "#statusEffect" }] : /* istanbul ignore next */ []));
|
|
384
|
+
this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
|
|
385
|
+
this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: "_children" }] : /* istanbul ignore next */ []));
|
|
511
386
|
this.children = this._children.asReadonly();
|
|
512
387
|
}
|
|
513
388
|
get id() {
|
|
@@ -554,10 +429,10 @@ class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
|
|
|
554
429
|
this._children.set([...children]);
|
|
555
430
|
}
|
|
556
431
|
onAdded() { }
|
|
557
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
558
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
432
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
433
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent }); }
|
|
559
434
|
}
|
|
560
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
435
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{
|
|
561
436
|
type: Injectable
|
|
562
437
|
}] });
|
|
563
438
|
class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {
|
|
@@ -568,10 +443,10 @@ class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {
|
|
|
568
443
|
}
|
|
569
444
|
super.ngOnInit();
|
|
570
445
|
}
|
|
571
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
572
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
446
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
447
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }
|
|
573
448
|
}
|
|
574
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
449
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{
|
|
575
450
|
type: Injectable
|
|
576
451
|
}] });
|
|
577
452
|
class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
@@ -582,11 +457,11 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
582
457
|
this._isValueWidget = false;
|
|
583
458
|
this.isValueWidget = () => this._isValueWidget;
|
|
584
459
|
this.onValueChanged = new Subject();
|
|
585
|
-
this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: "fullPath" }] : []));
|
|
586
|
-
this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: "parentPath" }] : []));
|
|
460
|
+
this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: "fullPath" }] : /* istanbul ignore next */ []));
|
|
461
|
+
this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: "parentPath" }] : /* istanbul ignore next */ []));
|
|
587
462
|
this.getValue = computed(() => {
|
|
588
463
|
return this.fullPath() ? this.extractValue(this.fullPath()) : null;
|
|
589
|
-
}, ...(ngDevMode ?
|
|
464
|
+
}, { ...(ngDevMode ? { debugName: "getValue" } : /* istanbul ignore next */ {}), equal: isEqual });
|
|
590
465
|
this.validationRules = computed(() => {
|
|
591
466
|
const validationsRaw = this.options()['validations'];
|
|
592
467
|
if (validationsRaw == null) {
|
|
@@ -599,7 +474,7 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
599
474
|
message: c.message,
|
|
600
475
|
options: c.options,
|
|
601
476
|
}));
|
|
602
|
-
}, ...(ngDevMode ? [{ debugName: "validationRules" }] : []));
|
|
477
|
+
}, ...(ngDevMode ? [{ debugName: "validationRules" }] : /* istanbul ignore next */ []));
|
|
603
478
|
}
|
|
604
479
|
ngOnInit() {
|
|
605
480
|
this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;
|
|
@@ -629,7 +504,12 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
629
504
|
if (isNil(value) && isNil(oldValue)) {
|
|
630
505
|
return;
|
|
631
506
|
}
|
|
632
|
-
|
|
507
|
+
// Reordered arrays must persist even when items are deep-equal (e.g. empty row objects).
|
|
508
|
+
const isArrayReorder = Array.isArray(oldValue) &&
|
|
509
|
+
Array.isArray(value) &&
|
|
510
|
+
oldValue.length === value.length &&
|
|
511
|
+
oldValue.some((v, i) => v !== value[i]);
|
|
512
|
+
if (!isArrayReorder && isEqual(oldValue, value)) {
|
|
633
513
|
return;
|
|
634
514
|
}
|
|
635
515
|
if (this.fullPath()) {
|
|
@@ -676,23 +556,23 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
676
556
|
this.setValue(e.value);
|
|
677
557
|
}
|
|
678
558
|
}
|
|
679
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
680
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
559
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
560
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent }); }
|
|
681
561
|
}
|
|
682
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
562
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{
|
|
683
563
|
type: Injectable
|
|
684
564
|
}] });
|
|
685
565
|
class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
686
566
|
constructor() {
|
|
687
567
|
super(...arguments);
|
|
688
568
|
this.dataService = inject(AXPDataSourceDefinitionProviderService);
|
|
689
|
-
this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: "textField" }] : []));
|
|
690
|
-
this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: "valueField" }] : []));
|
|
569
|
+
this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: "textField" }] : /* istanbul ignore next */ []));
|
|
570
|
+
this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
|
|
691
571
|
this.textTemplate = computed(() => isNil(this.options()['textTemplate'])
|
|
692
572
|
? undefined
|
|
693
|
-
: this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}'), ...(ngDevMode ? [{ debugName: "textTemplate" }] : []));
|
|
694
|
-
this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
695
|
-
this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : []));
|
|
573
|
+
: this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}'), ...(ngDevMode ? [{ debugName: "textTemplate" }] : /* istanbul ignore next */ []));
|
|
574
|
+
this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: "dataSource" }] : /* istanbul ignore next */ []));
|
|
575
|
+
this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
|
|
696
576
|
//#region ---- DataSource Loading Effect ----
|
|
697
577
|
/**
|
|
698
578
|
* Track the last loaded string dataSource reference to prevent infinite loops
|
|
@@ -772,7 +652,7 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
|
772
652
|
this.dataSource.set(convertArrayToDataSource([]));
|
|
773
653
|
}
|
|
774
654
|
});
|
|
775
|
-
}, ...(ngDevMode ? [{ debugName: "rf" }] : []));
|
|
655
|
+
}, ...(ngDevMode ? [{ debugName: "rf" }] : /* istanbul ignore next */ []));
|
|
776
656
|
this.effect2 = effect(async () => {
|
|
777
657
|
const value = this.getValue();
|
|
778
658
|
const items = [];
|
|
@@ -783,7 +663,7 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
|
783
663
|
items.push(await this.extractItem(value));
|
|
784
664
|
}
|
|
785
665
|
this.selectedItems.set(items.filter((c) => c != null));
|
|
786
|
-
}, ...(ngDevMode ? [{ debugName: "effect2" }] : []));
|
|
666
|
+
}, ...(ngDevMode ? [{ debugName: "effect2" }] : /* istanbul ignore next */ []));
|
|
787
667
|
}
|
|
788
668
|
//#endregion
|
|
789
669
|
async extractItem(item) {
|
|
@@ -808,10 +688,10 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
|
808
688
|
[this.textField()]: item,
|
|
809
689
|
};
|
|
810
690
|
}
|
|
811
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
812
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
691
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
692
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetComponent }); }
|
|
813
693
|
}
|
|
814
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{
|
|
815
695
|
type: Injectable
|
|
816
696
|
}] });
|
|
817
697
|
class AXPColumnWidgetComponent {
|
|
@@ -819,6 +699,8 @@ class AXPColumnWidgetComponent {
|
|
|
819
699
|
this.token = inject(AXP_WIDGET_COLUMN_TOKEN);
|
|
820
700
|
this.path = this.token.path;
|
|
821
701
|
this.options = this.token.options ?? {};
|
|
702
|
+
/** Column header caption when rendered inside `axp-widget-column-renderer`. */
|
|
703
|
+
this.columnCaption = this.token.caption;
|
|
822
704
|
this.rawValue = null;
|
|
823
705
|
this.nullText = this.options['nullText'];
|
|
824
706
|
this.nullValue = this.options['nullValue'];
|
|
@@ -829,10 +711,10 @@ class AXPColumnWidgetComponent {
|
|
|
829
711
|
return this.rawValue;
|
|
830
712
|
};
|
|
831
713
|
}
|
|
832
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
833
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
714
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
715
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent }); }
|
|
834
716
|
}
|
|
835
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
717
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{
|
|
836
718
|
type: Injectable
|
|
837
719
|
}] });
|
|
838
720
|
|
|
@@ -861,7 +743,7 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
861
743
|
style['overflow-y'] = overflowY ?? '';
|
|
862
744
|
style['direction'] = direction ?? '';
|
|
863
745
|
return style;
|
|
864
|
-
}, ...(ngDevMode ? [{ debugName: "hostBoxStyle" }] : []));
|
|
746
|
+
}, ...(ngDevMode ? [{ debugName: "hostBoxStyle" }] : /* istanbul ignore next */ []));
|
|
865
747
|
this.blockStyle = computed(() => {
|
|
866
748
|
const options = this.options();
|
|
867
749
|
const style = { ...this.hostBoxStyle() };
|
|
@@ -878,47 +760,47 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
878
760
|
style['height'] = height ?? '';
|
|
879
761
|
style['max-height'] = maxHeight ?? '';
|
|
880
762
|
return style;
|
|
881
|
-
}, ...(ngDevMode ? [{ debugName: "blockStyle" }] : []));
|
|
763
|
+
}, ...(ngDevMode ? [{ debugName: "blockStyle" }] : /* istanbul ignore next */ []));
|
|
882
764
|
this.inlineStyle = computed(() => {
|
|
883
765
|
return { ...this.hostBoxStyle() };
|
|
884
|
-
}, ...(ngDevMode ? [{ debugName: "inlineStyle" }] : []));
|
|
766
|
+
}, ...(ngDevMode ? [{ debugName: "inlineStyle" }] : /* istanbul ignore next */ []));
|
|
885
767
|
this.blockClass = computed(() => {
|
|
886
768
|
return {
|
|
887
|
-
|
|
888
|
-
'
|
|
769
|
+
block: true,
|
|
770
|
+
'w-full': true,
|
|
889
771
|
// 'ax-widget-outline': true,
|
|
890
772
|
};
|
|
891
|
-
}, ...(ngDevMode ? [{ debugName: "blockClass" }] : []));
|
|
773
|
+
}, ...(ngDevMode ? [{ debugName: "blockClass" }] : /* istanbul ignore next */ []));
|
|
892
774
|
this.inlineClass = computed(() => {
|
|
893
775
|
return {
|
|
894
|
-
'
|
|
776
|
+
'inline-block': true,
|
|
895
777
|
};
|
|
896
|
-
}, ...(ngDevMode ? [{ debugName: "inlineClass" }] : []));
|
|
778
|
+
}, ...(ngDevMode ? [{ debugName: "inlineClass" }] : /* istanbul ignore next */ []));
|
|
897
779
|
}
|
|
898
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
899
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
780
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
781
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }
|
|
900
782
|
}
|
|
901
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
783
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{
|
|
902
784
|
type: Injectable
|
|
903
785
|
}] });
|
|
904
786
|
|
|
905
787
|
class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {
|
|
906
788
|
constructor() {
|
|
907
789
|
super(...arguments);
|
|
908
|
-
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
909
|
-
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
790
|
+
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
791
|
+
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
910
792
|
}
|
|
911
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
912
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
793
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
794
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }
|
|
913
795
|
}
|
|
914
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{
|
|
915
797
|
type: Injectable
|
|
916
798
|
}] });
|
|
917
799
|
|
|
918
800
|
class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
919
801
|
constructor() {
|
|
920
802
|
super(...arguments);
|
|
921
|
-
this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flex" }] : []));
|
|
803
|
+
this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flex" }] : /* istanbul ignore next */ []));
|
|
922
804
|
this.hostFlexStyle = computed(() => {
|
|
923
805
|
const blockStyle = this.blockStyle();
|
|
924
806
|
const style = { ...blockStyle };
|
|
@@ -957,45 +839,45 @@ class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
|
|
|
957
839
|
style['gap'] = flex.gap;
|
|
958
840
|
}
|
|
959
841
|
return style;
|
|
960
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexStyle" }] : []));
|
|
842
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexStyle" }] : /* istanbul ignore next */ []));
|
|
961
843
|
this.hostFlexClass = computed(() => {
|
|
962
844
|
return {
|
|
963
845
|
...this.blockClass(),
|
|
964
|
-
|
|
965
|
-
'
|
|
846
|
+
flex: true,
|
|
847
|
+
'h-full': true,
|
|
966
848
|
};
|
|
967
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexClass" }] : []));
|
|
849
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexClass" }] : /* istanbul ignore next */ []));
|
|
968
850
|
this.hostClass = computed(() => {
|
|
969
851
|
return this.hostFlexClass();
|
|
970
|
-
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
852
|
+
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
971
853
|
this.hostStyle = computed(() => {
|
|
972
854
|
return this.hostFlexStyle();
|
|
973
|
-
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
855
|
+
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
974
856
|
}
|
|
975
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
976
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
857
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
858
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }
|
|
977
859
|
}
|
|
978
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
860
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{
|
|
979
861
|
type: Injectable
|
|
980
862
|
}] });
|
|
981
863
|
|
|
982
864
|
class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {
|
|
983
865
|
constructor() {
|
|
984
866
|
super(...arguments);
|
|
985
|
-
this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
986
|
-
this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
867
|
+
this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
868
|
+
this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
987
869
|
}
|
|
988
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
989
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
870
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
871
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }
|
|
990
872
|
}
|
|
991
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
873
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{
|
|
992
874
|
type: Injectable
|
|
993
875
|
}] });
|
|
994
876
|
|
|
995
877
|
class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {
|
|
996
878
|
constructor() {
|
|
997
879
|
super(...arguments);
|
|
998
|
-
this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flexItem" }] : []));
|
|
880
|
+
this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flexItem" }] : /* istanbul ignore next */ []));
|
|
999
881
|
this.hostFlexItemStyle = computed(() => {
|
|
1000
882
|
const inlineStyle = this.blockStyle();
|
|
1001
883
|
const style = { ...inlineStyle };
|
|
@@ -1031,68 +913,68 @@ class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComp
|
|
|
1031
913
|
style['align-self'] = fi.alignSelf;
|
|
1032
914
|
}
|
|
1033
915
|
return style;
|
|
1034
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexItemStyle" }] : []));
|
|
916
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexItemStyle" }] : /* istanbul ignore next */ []));
|
|
1035
917
|
this.hostFlexItemClass = computed(() => {
|
|
1036
918
|
return {
|
|
1037
919
|
...this.blockClass(),
|
|
1038
920
|
};
|
|
1039
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexItemClass" }] : []));
|
|
921
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexItemClass" }] : /* istanbul ignore next */ []));
|
|
1040
922
|
this.hostClass = computed(() => {
|
|
1041
923
|
return this.hostFlexItemClass();
|
|
1042
|
-
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
924
|
+
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1043
925
|
this.hostStyle = computed(() => {
|
|
1044
926
|
return this.hostFlexItemStyle();
|
|
1045
|
-
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
927
|
+
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1046
928
|
}
|
|
1047
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1048
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
929
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
930
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }
|
|
1049
931
|
}
|
|
1050
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
932
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{
|
|
1051
933
|
type: Injectable
|
|
1052
934
|
}] });
|
|
1053
935
|
|
|
1054
936
|
class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
1055
937
|
constructor() {
|
|
1056
938
|
super(...arguments);
|
|
1057
|
-
this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: "grid" }] : []));
|
|
939
|
+
this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: "grid" }] : /* istanbul ignore next */ []));
|
|
1058
940
|
this.hostGridStyle = computed(() => {
|
|
1059
941
|
const style = { ...this.inlineStyle() };
|
|
1060
942
|
const g = this.grid()?.default;
|
|
1061
943
|
if (g?.gap)
|
|
1062
944
|
style['gap'] = g.gap;
|
|
1063
945
|
return style;
|
|
1064
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridStyle" }] : []));
|
|
946
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridStyle" }] : /* istanbul ignore next */ []));
|
|
1065
947
|
this.hostGridClass = computed(() => {
|
|
1066
948
|
const cls = {
|
|
1067
|
-
...this.inlineClass(),
|
|
1068
|
-
'
|
|
949
|
+
// ...this.inlineClass(),
|
|
950
|
+
'inline-grid': true,
|
|
1069
951
|
};
|
|
1070
952
|
const g = this.grid()?.default;
|
|
1071
953
|
if (g?.columns)
|
|
1072
|
-
cls[`lg:
|
|
1073
|
-
// if (g?.rows) cls[`lg:
|
|
954
|
+
cls[`lg:grid-cols-${g.columns}`] = true;
|
|
955
|
+
// if (g?.rows) cls[`lg:grid-rows-${g.rows}`] = true;
|
|
1074
956
|
if (g?.justifyItems)
|
|
1075
|
-
cls[`lg:
|
|
957
|
+
cls[`lg:justify-items-${g.justifyItems}`] = true;
|
|
1076
958
|
if (g?.alignItems)
|
|
1077
|
-
cls[`lg:
|
|
959
|
+
cls[`lg:align-items-${g.alignItems}`] = true;
|
|
1078
960
|
if (g?.autoFlow)
|
|
1079
|
-
cls[`lg:
|
|
961
|
+
cls[`lg:grid-flow-${g.autoFlow}`] = true;
|
|
1080
962
|
return cls;
|
|
1081
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridClass" }] : []));
|
|
1082
|
-
this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1083
|
-
this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
963
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridClass" }] : /* istanbul ignore next */ []));
|
|
964
|
+
this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
965
|
+
this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1084
966
|
}
|
|
1085
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1086
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
967
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
968
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }
|
|
1087
969
|
}
|
|
1088
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
970
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{
|
|
1089
971
|
type: Injectable
|
|
1090
972
|
}] });
|
|
1091
973
|
|
|
1092
974
|
class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {
|
|
1093
975
|
constructor() {
|
|
1094
976
|
super(...arguments);
|
|
1095
|
-
this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "gridItem" }] : []));
|
|
977
|
+
this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "gridItem" }] : /* istanbul ignore next */ []));
|
|
1096
978
|
this.hostGridItemStyle = computed(() => {
|
|
1097
979
|
const style = { ...this.hostFlexStyle() };
|
|
1098
980
|
const g = this.gridItem();
|
|
@@ -1101,31 +983,34 @@ class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetCompon
|
|
|
1101
983
|
if (g?.justifySelf)
|
|
1102
984
|
style['justify-self'] = g.justifySelf;
|
|
1103
985
|
return style;
|
|
1104
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridItemStyle" }] : []));
|
|
986
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridItemStyle" }] : /* istanbul ignore next */ []));
|
|
1105
987
|
this.hostGridItemClass = computed(() => {
|
|
1106
988
|
const cls = { ...this.hostFlexClass() };
|
|
1107
989
|
const g = this.gridItem();
|
|
990
|
+
// Mobile-first: full width on small screens so items stack vertically and don't overflow
|
|
991
|
+
cls['col-span-12'] = true;
|
|
992
|
+
// Large screens: apply defined placement so multi-column layout works on desktop
|
|
1108
993
|
if (g?.colSpan)
|
|
1109
|
-
cls[`lg:
|
|
994
|
+
cls[`lg:col-span-${g.colSpan}`] = true;
|
|
1110
995
|
if (g?.colStart)
|
|
1111
|
-
cls[`lg:
|
|
996
|
+
cls[`lg:col-start-${g.colStart}`] = true;
|
|
1112
997
|
if (g?.colEnd)
|
|
1113
|
-
cls[`lg:
|
|
998
|
+
cls[`lg:col-end-${g.colEnd}`] = true;
|
|
1114
999
|
if (g?.rowSpan)
|
|
1115
|
-
cls[`lg:
|
|
1000
|
+
cls[`lg:row-span-${g.rowSpan}`] = true;
|
|
1116
1001
|
if (g?.rowStart)
|
|
1117
|
-
cls[`lg:
|
|
1002
|
+
cls[`lg:row-start-${g.rowStart}`] = true;
|
|
1118
1003
|
if (g?.rowEnd)
|
|
1119
|
-
cls[`lg:
|
|
1004
|
+
cls[`lg:row-end-${g.rowEnd}`] = true;
|
|
1120
1005
|
return cls;
|
|
1121
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridItemClass" }] : []));
|
|
1122
|
-
this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1123
|
-
this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1006
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridItemClass" }] : /* istanbul ignore next */ []));
|
|
1007
|
+
this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1008
|
+
this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1124
1009
|
}
|
|
1125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1126
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1010
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1011
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }
|
|
1127
1012
|
}
|
|
1128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1013
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{
|
|
1129
1014
|
type: Injectable
|
|
1130
1015
|
}] });
|
|
1131
1016
|
|
|
@@ -1134,27 +1019,27 @@ class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponen
|
|
|
1134
1019
|
super(...arguments);
|
|
1135
1020
|
this.hostTableClass = computed(() => ({
|
|
1136
1021
|
...this.blockClass(),
|
|
1137
|
-
}), ...(ngDevMode ? [{ debugName: "hostTableClass" }] : []));
|
|
1022
|
+
}), ...(ngDevMode ? [{ debugName: "hostTableClass" }] : /* istanbul ignore next */ []));
|
|
1138
1023
|
this.hostTableStyle = computed(() => {
|
|
1139
1024
|
const style = { ...this.blockStyle() };
|
|
1140
1025
|
style['overflow-x'] = 'auto';
|
|
1141
1026
|
return style;
|
|
1142
|
-
}, ...(ngDevMode ? [{ debugName: "hostTableStyle" }] : []));
|
|
1143
|
-
this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1144
|
-
this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1027
|
+
}, ...(ngDevMode ? [{ debugName: "hostTableStyle" }] : /* istanbul ignore next */ []));
|
|
1028
|
+
this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1029
|
+
this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1145
1030
|
}
|
|
1146
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1147
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1031
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1032
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }
|
|
1148
1033
|
}
|
|
1149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1034
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{
|
|
1150
1035
|
type: Injectable
|
|
1151
1036
|
}] });
|
|
1152
1037
|
|
|
1153
1038
|
class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
1154
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1155
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1039
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1040
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }
|
|
1156
1041
|
}
|
|
1157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1042
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{
|
|
1158
1043
|
type: Injectable
|
|
1159
1044
|
}] });
|
|
1160
1045
|
|
|
@@ -1164,57 +1049,105 @@ class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWid
|
|
|
1164
1049
|
this.colSpan = computed(() => {
|
|
1165
1050
|
const v = this.options()?.colSpan;
|
|
1166
1051
|
return v ? Math.max(1, v) : 1;
|
|
1167
|
-
}, ...(ngDevMode ? [{ debugName: "colSpan" }] : []));
|
|
1052
|
+
}, ...(ngDevMode ? [{ debugName: "colSpan" }] : /* istanbul ignore next */ []));
|
|
1168
1053
|
this.rowSpan = computed(() => {
|
|
1169
1054
|
const v = this.options()?.rowSpan;
|
|
1170
1055
|
return v ? Math.max(1, v) : 1;
|
|
1171
|
-
}, ...(ngDevMode ? [{ debugName: "rowSpan" }] : []));
|
|
1172
|
-
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1173
|
-
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1056
|
+
}, ...(ngDevMode ? [{ debugName: "rowSpan" }] : /* istanbul ignore next */ []));
|
|
1057
|
+
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1058
|
+
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1174
1059
|
}
|
|
1175
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1176
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1060
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1061
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }
|
|
1177
1062
|
}
|
|
1178
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1063
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{
|
|
1179
1064
|
type: Injectable
|
|
1180
1065
|
}] });
|
|
1181
1066
|
|
|
1067
|
+
//#region ---- Imports ----
|
|
1068
|
+
/**
|
|
1069
|
+
* Injection token for widget definition providers.
|
|
1070
|
+
* Modules register their widget providers using this token (multi: true).
|
|
1071
|
+
*/
|
|
1072
|
+
const AXP_WIDGET_DEFINITION_PROVIDER = new InjectionToken('AXP_WIDGET_DEFINITION_PROVIDER', {
|
|
1073
|
+
factory: () => [],
|
|
1074
|
+
});
|
|
1075
|
+
//#endregion
|
|
1076
|
+
|
|
1077
|
+
//#region ---- Build widget map (shared with tooling / snapshot scripts) ----
|
|
1078
|
+
//TODO RECHECK THIS FUNCTION s.hosseini
|
|
1079
|
+
/**
|
|
1080
|
+
* Merges core + extended widgets the same way as AXPWidgetRegistryService.ensureBuilt().
|
|
1081
|
+
* Use with concrete providers (e.g. AXPCoreWidgetsProvider, AXPEntityWidgetsProvider) in Node scripts without DI.
|
|
1082
|
+
*/
|
|
1083
|
+
function buildWidgetRegistryMapFromProviders(providers) {
|
|
1084
|
+
const types = new Map();
|
|
1085
|
+
const AXPExtendedWidgets = [];
|
|
1086
|
+
for (const provider of providers) {
|
|
1087
|
+
const widgets = provider.getWidgets?.() ?? [];
|
|
1088
|
+
for (const w of widgets) {
|
|
1089
|
+
types.set(w.name, w);
|
|
1090
|
+
}
|
|
1091
|
+
const extended = provider.getExtendedWidgets?.() ?? [];
|
|
1092
|
+
AXPExtendedWidgets.push(...extended);
|
|
1093
|
+
}
|
|
1094
|
+
for (const { parentName, widget } of AXPExtendedWidgets) {
|
|
1095
|
+
const parent = types.get(parentName);
|
|
1096
|
+
if (parent) {
|
|
1097
|
+
const merged = merge({}, parent, widget);
|
|
1098
|
+
merged.name = widget.name;
|
|
1099
|
+
types.set(merged.name, merged);
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
return types;
|
|
1103
|
+
}
|
|
1104
|
+
//#endregion
|
|
1105
|
+
//#region ---- Widget Registry Service (Token-Based) ----
|
|
1106
|
+
/**
|
|
1107
|
+
* Aggregates widgets from all AXP_WIDGET_DEFINITION_PROVIDER instances.
|
|
1108
|
+
* Token-based like AXP_MENU_PROVIDER / AXP_PERMISSION_DEFINITION_PROVIDER / AXP_SETTING_DEFINITION_PROVIDER.
|
|
1109
|
+
* No separate registry - widgets come solely from providers.
|
|
1110
|
+
*/
|
|
1182
1111
|
class AXPWidgetRegistryService {
|
|
1183
|
-
/**
|
|
1184
|
-
*
|
|
1185
|
-
*/
|
|
1186
1112
|
constructor() {
|
|
1187
|
-
this.
|
|
1188
|
-
|
|
1189
|
-
}
|
|
1190
|
-
register(widget) {
|
|
1191
|
-
this.types.set(widget.name, widget);
|
|
1113
|
+
this._providers = inject(AXP_WIDGET_DEFINITION_PROVIDER, { optional: true }) ?? [];
|
|
1114
|
+
this._types = null;
|
|
1192
1115
|
}
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
this.
|
|
1116
|
+
/**
|
|
1117
|
+
* Lazy-build widget map from all providers.
|
|
1118
|
+
*/
|
|
1119
|
+
ensureBuilt() {
|
|
1120
|
+
if (this._types)
|
|
1121
|
+
return this._types;
|
|
1122
|
+
this._types = buildWidgetRegistryMapFromProviders(this._providers);
|
|
1123
|
+
return this._types;
|
|
1198
1124
|
}
|
|
1199
1125
|
resolve(name) {
|
|
1200
|
-
const widget = this.
|
|
1126
|
+
const widget = this.ensureBuilt().get(name);
|
|
1201
1127
|
if (!widget) {
|
|
1202
1128
|
throw new Error(`Widget with name "${name}" does not exist.`);
|
|
1203
1129
|
}
|
|
1204
1130
|
return widget;
|
|
1205
1131
|
}
|
|
1132
|
+
/**
|
|
1133
|
+
* Registered widget config when present; otherwise `undefined`. Does not throw — use when
|
|
1134
|
+
* {@link resolve}'s value may be a non-widget id (e.g. data-source row id in dynamic field configurator).
|
|
1135
|
+
*/
|
|
1136
|
+
getOptional(name) {
|
|
1137
|
+
return this.ensureBuilt().get(name);
|
|
1138
|
+
}
|
|
1206
1139
|
all() {
|
|
1207
|
-
return Array.from(this.
|
|
1140
|
+
return Array.from(this.ensureBuilt().values());
|
|
1208
1141
|
}
|
|
1209
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1210
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1142
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1143
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }
|
|
1211
1144
|
}
|
|
1212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{
|
|
1213
1146
|
type: Injectable,
|
|
1214
1147
|
args: [{
|
|
1215
1148
|
providedIn: 'root',
|
|
1216
1149
|
}]
|
|
1217
|
-
}]
|
|
1150
|
+
}] });
|
|
1218
1151
|
|
|
1219
1152
|
class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
1220
1153
|
constructor() {
|
|
@@ -1222,8 +1155,8 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1222
1155
|
this.widgetRegistery = inject(AXPWidgetRegistryService);
|
|
1223
1156
|
this.grid = inject(AXBaseDataTable);
|
|
1224
1157
|
this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
|
|
1225
|
-
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : []));
|
|
1226
|
-
this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: "loadingRow" }] : []));
|
|
1158
|
+
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
|
|
1159
|
+
this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: "loadingRow" }] : /* istanbul ignore next */ []));
|
|
1227
1160
|
this.rowInjectorsCache = new Map();
|
|
1228
1161
|
this.hasExpressions = false;
|
|
1229
1162
|
this.pendingEvaluations = new Set();
|
|
@@ -1292,6 +1225,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1292
1225
|
const tokenValue = {
|
|
1293
1226
|
path: this.node.path,
|
|
1294
1227
|
options: this.mergedOptions(),
|
|
1228
|
+
caption: this.caption,
|
|
1295
1229
|
};
|
|
1296
1230
|
this.widgetInjector = Injector.create({
|
|
1297
1231
|
parent: this.injector,
|
|
@@ -1302,7 +1236,12 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1302
1236
|
},
|
|
1303
1237
|
],
|
|
1304
1238
|
});
|
|
1305
|
-
this.width =
|
|
1239
|
+
this.width =
|
|
1240
|
+
this.mergedOptions().width === 'auto'
|
|
1241
|
+
? 'auto'
|
|
1242
|
+
: this.customWidth
|
|
1243
|
+
? this.customWidth
|
|
1244
|
+
: (this.mergedOptions().width ?? '200px');
|
|
1306
1245
|
this.allowResizing = this.mergedOptions().allowResizing || true;
|
|
1307
1246
|
this.cdr.detectChanges();
|
|
1308
1247
|
}
|
|
@@ -1390,6 +1329,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1390
1329
|
const tokenValue = {
|
|
1391
1330
|
path: this.node.path,
|
|
1392
1331
|
options: this.mergedOptions(),
|
|
1332
|
+
caption: this.caption,
|
|
1393
1333
|
};
|
|
1394
1334
|
rowInjector = Injector.create({
|
|
1395
1335
|
parent: this.injector,
|
|
@@ -1417,11 +1357,14 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1417
1357
|
},
|
|
1418
1358
|
};
|
|
1419
1359
|
// Start async evaluation - will update injector when complete
|
|
1420
|
-
this.expressionEvaluator
|
|
1360
|
+
this.expressionEvaluator
|
|
1361
|
+
.evaluate(this.mergedOptions(), scope)
|
|
1362
|
+
.then((evaluatedOptions) => {
|
|
1421
1363
|
// Create injector with evaluated options
|
|
1422
1364
|
const tokenValue = {
|
|
1423
1365
|
path: this.node.path,
|
|
1424
1366
|
options: evaluatedOptions,
|
|
1367
|
+
caption: this.caption,
|
|
1425
1368
|
};
|
|
1426
1369
|
const newInjector = Injector.create({
|
|
1427
1370
|
parent: this.injector,
|
|
@@ -1439,7 +1382,8 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1439
1382
|
this.pendingEvaluations.delete(cacheKey);
|
|
1440
1383
|
// Schedule batched change detection (performance optimization)
|
|
1441
1384
|
this.scheduleChangeDetection();
|
|
1442
|
-
})
|
|
1385
|
+
})
|
|
1386
|
+
.catch(() => {
|
|
1443
1387
|
// If evaluation fails, keep using the fallback injector
|
|
1444
1388
|
this.pendingEvaluations.delete(cacheKey);
|
|
1445
1389
|
});
|
|
@@ -1448,6 +1392,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1448
1392
|
const tokenValue = {
|
|
1449
1393
|
path: this.node.path,
|
|
1450
1394
|
options: this.mergedOptions(),
|
|
1395
|
+
caption: this.caption,
|
|
1451
1396
|
};
|
|
1452
1397
|
rowInjector = Injector.create({
|
|
1453
1398
|
parent: this.injector,
|
|
@@ -1464,29 +1409,29 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1464
1409
|
}
|
|
1465
1410
|
return rowInjector;
|
|
1466
1411
|
}
|
|
1467
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1468
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1412
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1413
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: "axp-widget-column-renderer", inputs: { caption: "caption", customExpandIcon: "customExpandIcon", customCollapseIcon: "customCollapseIcon", customWidth: "customWidth", node: "node", footerTemplate: "footerTemplate", expandHandler: "expandHandler", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, providers: [
|
|
1469
1414
|
AXPWidgetCoreService,
|
|
1470
1415
|
{ provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },
|
|
1471
1416
|
], viewQueries: [{ propertyName: "_contentFooterTemplate", first: true, predicate: ["footer"], descendants: true }, { propertyName: "_contentCellTemplate", first: true, predicate: ["cell"], descendants: true }, { propertyName: "_contentHeaderTemplate", first: true, predicate: ["header"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
1472
1417
|
<ng-template #header>{{ caption | translate | async }}</ng-template>
|
|
1473
1418
|
<ng-template #cell let-row>
|
|
1474
|
-
<div [class]="expandHandler ? '
|
|
1419
|
+
<div [class]="expandHandler ? 'flex gap-2 items-center' : ''">
|
|
1475
1420
|
@if (expandHandler) {
|
|
1476
1421
|
<div
|
|
1477
1422
|
(click)="handleExpandRow(row)"
|
|
1478
1423
|
class="ax-expand-handler"
|
|
1479
|
-
[class.
|
|
1424
|
+
[class.invisible]="!hasExpandableRow(row)"
|
|
1480
1425
|
id="ax-expand-handler-container"
|
|
1481
1426
|
[style.padding-inline-start.rem]="row.data?.__meta__?.level * 2"
|
|
1482
1427
|
>
|
|
1483
1428
|
@if (loadingRow() === row) {
|
|
1484
|
-
<i class="fas fa-spinner-third
|
|
1429
|
+
<i class="fas fa-spinner-third animate-twSpin animate-infinite"></i>
|
|
1485
1430
|
} @else {
|
|
1486
1431
|
@if (row.data?.__meta__?.expanded) {
|
|
1487
|
-
<i [class]="customCollapseIcon || 'far fa-minus-square
|
|
1432
|
+
<i [class]="customCollapseIcon || 'far fa-minus-square text-md opacity-75'"></i>
|
|
1488
1433
|
} @else {
|
|
1489
|
-
<i [class]="customExpandIcon || 'far fa-plus-square
|
|
1434
|
+
<i [class]="customExpandIcon || 'far fa-plus-square text-md opacity-75'"></i>
|
|
1490
1435
|
}
|
|
1491
1436
|
}
|
|
1492
1437
|
</div>
|
|
@@ -1499,31 +1444,31 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1499
1444
|
</div>
|
|
1500
1445
|
</ng-template>
|
|
1501
1446
|
<ng-template #footer></ng-template>
|
|
1502
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"
|
|
1447
|
+
`, isInline: true, 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 }); }
|
|
1503
1448
|
}
|
|
1504
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1449
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{
|
|
1505
1450
|
type: Component,
|
|
1506
1451
|
args: [{
|
|
1507
1452
|
selector: 'axp-widget-column-renderer',
|
|
1508
1453
|
template: `
|
|
1509
1454
|
<ng-template #header>{{ caption | translate | async }}</ng-template>
|
|
1510
1455
|
<ng-template #cell let-row>
|
|
1511
|
-
<div [class]="expandHandler ? '
|
|
1456
|
+
<div [class]="expandHandler ? 'flex gap-2 items-center' : ''">
|
|
1512
1457
|
@if (expandHandler) {
|
|
1513
1458
|
<div
|
|
1514
1459
|
(click)="handleExpandRow(row)"
|
|
1515
1460
|
class="ax-expand-handler"
|
|
1516
|
-
[class.
|
|
1461
|
+
[class.invisible]="!hasExpandableRow(row)"
|
|
1517
1462
|
id="ax-expand-handler-container"
|
|
1518
1463
|
[style.padding-inline-start.rem]="row.data?.__meta__?.level * 2"
|
|
1519
1464
|
>
|
|
1520
1465
|
@if (loadingRow() === row) {
|
|
1521
|
-
<i class="fas fa-spinner-third
|
|
1466
|
+
<i class="fas fa-spinner-third animate-twSpin animate-infinite"></i>
|
|
1522
1467
|
} @else {
|
|
1523
1468
|
@if (row.data?.__meta__?.expanded) {
|
|
1524
|
-
<i [class]="customCollapseIcon || 'far fa-minus-square
|
|
1469
|
+
<i [class]="customCollapseIcon || 'far fa-minus-square text-md opacity-75'"></i>
|
|
1525
1470
|
} @else {
|
|
1526
|
-
<i [class]="customExpandIcon || 'far fa-plus-square
|
|
1471
|
+
<i [class]="customExpandIcon || 'far fa-plus-square text-md opacity-75'"></i>
|
|
1527
1472
|
}
|
|
1528
1473
|
}
|
|
1529
1474
|
</div>
|
|
@@ -1581,15 +1526,15 @@ class AXPWidgetContainerComponent {
|
|
|
1581
1526
|
this.builderService.setFunctions(v);
|
|
1582
1527
|
}
|
|
1583
1528
|
constructor() {
|
|
1584
|
-
this.contextService = inject(
|
|
1529
|
+
this.contextService = inject(AXPContextStore);
|
|
1585
1530
|
this.builderService = inject(AXPWidgetCoreService);
|
|
1586
1531
|
this.onContextChanged = new EventEmitter();
|
|
1587
1532
|
this.status = computed(() => {
|
|
1588
1533
|
return this.builderService.status();
|
|
1589
|
-
}, ...(ngDevMode ? [{ debugName: "status" }] : []));
|
|
1534
|
+
}, ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
1590
1535
|
this.isBusy = computed(() => {
|
|
1591
1536
|
return this.builderService.isBusy();
|
|
1592
|
-
}, ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
|
|
1537
|
+
}, ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
|
|
1593
1538
|
effect(() => {
|
|
1594
1539
|
if (this.contextService.isChanged()) {
|
|
1595
1540
|
this.onContextChanged.emit(this.contextService.changeEvent());
|
|
@@ -1602,17 +1547,17 @@ class AXPWidgetContainerComponent {
|
|
|
1602
1547
|
find(name) {
|
|
1603
1548
|
return this.builderService.waitForWidget(name);
|
|
1604
1549
|
}
|
|
1605
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1606
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1550
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1551
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPWidgetContainerComponent, isStandalone: false, selector: "axp-widgets-container", inputs: { context: "context", functions: "functions" }, outputs: { onContextChanged: "onContextChanged" }, host: { styleAttribute: "display: contents;" }, providers: [AXPWidgetCoreService, AXPContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1607
1552
|
}
|
|
1608
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1553
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{
|
|
1609
1554
|
type: Component,
|
|
1610
1555
|
args: [{
|
|
1611
1556
|
selector: 'axp-widgets-container',
|
|
1612
1557
|
template: `<ng-content></ng-content>`,
|
|
1613
1558
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1614
1559
|
host: { style: 'display: contents;' },
|
|
1615
|
-
providers: [AXPWidgetCoreService,
|
|
1560
|
+
providers: [AXPWidgetCoreService, AXPContextStore],
|
|
1616
1561
|
standalone: false,
|
|
1617
1562
|
}]
|
|
1618
1563
|
}], ctorParameters: () => [], propDecorators: { onContextChanged: [{
|
|
@@ -1624,17 +1569,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
1624
1569
|
}] } });
|
|
1625
1570
|
|
|
1626
1571
|
class AXPWidgetPlaceholderComponent {
|
|
1627
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1628
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1629
|
-
<ax-skeleton class="
|
|
1572
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1573
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: "axp-widget-placeholder", ngImport: i0, template: `<div>
|
|
1574
|
+
<ax-skeleton class="w-full h-10 rounded-md"></ax-skeleton>
|
|
1630
1575
|
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1$1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1631
1576
|
}
|
|
1632
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1577
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{
|
|
1633
1578
|
type: Component,
|
|
1634
1579
|
args: [{
|
|
1635
1580
|
selector: 'axp-widget-placeholder',
|
|
1636
1581
|
template: `<div>
|
|
1637
|
-
<ax-skeleton class="
|
|
1582
|
+
<ax-skeleton class="w-full h-10 rounded-md"></ax-skeleton>
|
|
1638
1583
|
</div>`,
|
|
1639
1584
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1640
1585
|
imports: [AXSkeletonModule],
|
|
@@ -1646,11 +1591,11 @@ class AXPWidgetRendererDirective {
|
|
|
1646
1591
|
//#endregion
|
|
1647
1592
|
//#endregion
|
|
1648
1593
|
constructor() {
|
|
1649
|
-
this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : []));
|
|
1650
|
-
this.index = input(...(ngDevMode ? [undefined, { debugName: "index" }] : []));
|
|
1651
|
-
this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
1652
|
-
this.node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
|
|
1653
|
-
this._options = signal({}, ...(ngDevMode ? [{ debugName: "_options" }] : []));
|
|
1594
|
+
this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : /* istanbul ignore next */ []));
|
|
1595
|
+
this.index = input(...(ngDevMode ? [undefined, { debugName: "index" }] : /* istanbul ignore next */ []));
|
|
1596
|
+
this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
1597
|
+
this.node = input.required(...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
|
|
1598
|
+
this._options = signal({}, ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
|
|
1654
1599
|
this.options = this._options.asReadonly();
|
|
1655
1600
|
this.onOptionsChanged = output();
|
|
1656
1601
|
this.onValueChanged = output();
|
|
@@ -1659,22 +1604,22 @@ class AXPWidgetRendererDirective {
|
|
|
1659
1604
|
/**
|
|
1660
1605
|
* Signal that emits the component reference when it's ready
|
|
1661
1606
|
*/
|
|
1662
|
-
this._componentRefSignal = signal(null, ...(ngDevMode ? [{ debugName: "_componentRefSignal" }] : []));
|
|
1607
|
+
this._componentRefSignal = signal(null, ...(ngDevMode ? [{ debugName: "_componentRefSignal" }] : /* istanbul ignore next */ []));
|
|
1663
1608
|
this.componentRefSignal = this._componentRefSignal.asReadonly();
|
|
1664
1609
|
//#endregion
|
|
1665
1610
|
//#region ---- Properties ----
|
|
1666
|
-
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : []));
|
|
1611
|
+
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
|
|
1667
1612
|
this.injector = inject(Injector);
|
|
1668
1613
|
this.builderService = inject(AXPWidgetCoreService);
|
|
1669
|
-
this.contextService = inject(
|
|
1614
|
+
this.contextService = inject(AXPContextStore);
|
|
1670
1615
|
this.widgetRegistery = inject(AXPWidgetRegistryService);
|
|
1671
1616
|
this.unsubscriber = inject(AXUnsubscriber);
|
|
1672
1617
|
this.translateService = inject(AXTranslationService);
|
|
1673
1618
|
this.widgetService = inject(AXPWidgetRegistryService);
|
|
1674
1619
|
this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
|
|
1675
1620
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
1676
|
-
this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
|
|
1677
|
-
this.isVisible = signal(true, ...(ngDevMode ? [{ debugName: "isVisible" }] : []));
|
|
1621
|
+
this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
1622
|
+
this.isVisible = signal(true, ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
1678
1623
|
this.expressionEvaluators = new Map();
|
|
1679
1624
|
this.renderTimeoutId = null;
|
|
1680
1625
|
this.hasInitialRender = false;
|
|
@@ -1852,77 +1797,88 @@ class AXPWidgetRendererDirective {
|
|
|
1852
1797
|
}
|
|
1853
1798
|
return false;
|
|
1854
1799
|
}
|
|
1800
|
+
/**
|
|
1801
|
+
* True when a context store path used in an expression (`context.eval`, `context.options`) is
|
|
1802
|
+
* affected by `changedPath`.
|
|
1803
|
+
*/
|
|
1804
|
+
contextStorePathDependsOnChangedPath(evalPath, changedPath) {
|
|
1805
|
+
const normalizePath = (p) => {
|
|
1806
|
+
if (!p)
|
|
1807
|
+
return p;
|
|
1808
|
+
const parts = p.split('.');
|
|
1809
|
+
const last = parts[parts.length - 1];
|
|
1810
|
+
if (last && last.endsWith('Id')) {
|
|
1811
|
+
parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');
|
|
1812
|
+
}
|
|
1813
|
+
return parts.join('.');
|
|
1814
|
+
};
|
|
1815
|
+
const isSegmentSuffix = (a, b) => {
|
|
1816
|
+
if (!a || !b)
|
|
1817
|
+
return false;
|
|
1818
|
+
const pa = a.split('.');
|
|
1819
|
+
const pb = b.split('.');
|
|
1820
|
+
if (pb.length > pa.length)
|
|
1821
|
+
return false;
|
|
1822
|
+
for (let i = 1; i <= pb.length; i++) {
|
|
1823
|
+
if (pa[pa.length - i] !== pb[pb.length - i])
|
|
1824
|
+
return false;
|
|
1825
|
+
}
|
|
1826
|
+
return true;
|
|
1827
|
+
};
|
|
1828
|
+
const evalNorm = normalizePath(evalPath);
|
|
1829
|
+
const changedNorm = normalizePath(changedPath);
|
|
1830
|
+
const rawMatch = evalPath === changedPath ||
|
|
1831
|
+
evalPath.startsWith(changedPath + '.') ||
|
|
1832
|
+
changedPath.startsWith(evalPath + '.') ||
|
|
1833
|
+
isSegmentSuffix(evalPath, changedPath) ||
|
|
1834
|
+
isSegmentSuffix(changedPath, evalPath);
|
|
1835
|
+
const normMatch = evalNorm === changedNorm ||
|
|
1836
|
+
evalNorm.startsWith(changedNorm + '.') ||
|
|
1837
|
+
changedNorm.startsWith(evalNorm + '.') ||
|
|
1838
|
+
isSegmentSuffix(evalNorm, changedNorm) ||
|
|
1839
|
+
isSegmentSuffix(changedNorm, evalNorm);
|
|
1840
|
+
if (rawMatch || normMatch) {
|
|
1841
|
+
return true;
|
|
1842
|
+
}
|
|
1843
|
+
return this.isPathAlias(evalPath, changedPath);
|
|
1844
|
+
}
|
|
1845
|
+
/**
|
|
1846
|
+
* Whether an expression template string reads context store paths affected by `changedPath`.
|
|
1847
|
+
*/
|
|
1848
|
+
expressionTextDependsOnContextPath(expressionValue, changedPath) {
|
|
1849
|
+
const contextEvalRegex = /context\.eval\(['"]([^'\"]+)['"]\)/g;
|
|
1850
|
+
let match;
|
|
1851
|
+
while ((match = contextEvalRegex.exec(expressionValue)) !== null) {
|
|
1852
|
+
if (this.contextStorePathDependsOnChangedPath(match[1], changedPath)) {
|
|
1853
|
+
return true;
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
const contextOptionsQuoted = /context\.options\(\s*['"]([^'"]*)['"]\s*\)/g;
|
|
1857
|
+
while ((match = contextOptionsQuoted.exec(expressionValue)) !== null) {
|
|
1858
|
+
const sub = match[1];
|
|
1859
|
+
const evalPath = sub === '' ? 'options' : `options.${sub}`;
|
|
1860
|
+
if (this.contextStorePathDependsOnChangedPath(evalPath, changedPath)) {
|
|
1861
|
+
return true;
|
|
1862
|
+
}
|
|
1863
|
+
}
|
|
1864
|
+
const contextOptionsEmpty = /context\.options\(\s*\)/g;
|
|
1865
|
+
while ((match = contextOptionsEmpty.exec(expressionValue)) !== null) {
|
|
1866
|
+
if (this.contextStorePathDependsOnChangedPath('options', changedPath)) {
|
|
1867
|
+
return true;
|
|
1868
|
+
}
|
|
1869
|
+
}
|
|
1870
|
+
return false;
|
|
1871
|
+
}
|
|
1855
1872
|
hasExpressionDependency(changedPath) {
|
|
1856
|
-
// Check if any cached expressions depend on the changed path
|
|
1857
1873
|
for (const [path, evaluator] of this.expressionEvaluators) {
|
|
1858
|
-
// Check if the expression path itself contains the changed path
|
|
1859
1874
|
if (path.includes(changedPath)) {
|
|
1860
1875
|
return true;
|
|
1861
1876
|
}
|
|
1862
|
-
// Parse the actual expression content to check for context.eval() calls
|
|
1863
|
-
// We need to get the original expression string to analyze it
|
|
1864
1877
|
const node = this.node();
|
|
1865
1878
|
const expressionValue = this.getExpressionValueFromNode(node, path);
|
|
1866
1879
|
if (expressionValue && typeof expressionValue === 'string') {
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
let match;
|
|
1870
|
-
while ((match = contextEvalRegex.exec(expressionValue)) !== null) {
|
|
1871
|
-
const evalPath = match[1];
|
|
1872
|
-
// Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'person.typeId' -> 'person.type.id')
|
|
1873
|
-
const normalizePath = (p) => {
|
|
1874
|
-
if (!p)
|
|
1875
|
-
return p;
|
|
1876
|
-
const parts = p.split('.');
|
|
1877
|
-
const last = parts[parts.length - 1];
|
|
1878
|
-
if (last && last.endsWith('Id')) {
|
|
1879
|
-
parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');
|
|
1880
|
-
}
|
|
1881
|
-
return parts.join('.');
|
|
1882
|
-
};
|
|
1883
|
-
const isSegmentSuffix = (a, b) => {
|
|
1884
|
-
if (!a || !b)
|
|
1885
|
-
return false;
|
|
1886
|
-
const pa = a.split('.');
|
|
1887
|
-
const pb = b.split('.');
|
|
1888
|
-
if (pb.length > pa.length)
|
|
1889
|
-
return false;
|
|
1890
|
-
for (let i = 1; i <= pb.length; i++) {
|
|
1891
|
-
if (pa[pa.length - i] !== pb[pb.length - i])
|
|
1892
|
-
return false;
|
|
1893
|
-
}
|
|
1894
|
-
return true;
|
|
1895
|
-
};
|
|
1896
|
-
const evalNorm = normalizePath(evalPath);
|
|
1897
|
-
const changedNorm = normalizePath(changedPath);
|
|
1898
|
-
// Debug log for dependency check
|
|
1899
|
-
// console.log(
|
|
1900
|
-
// `🧭 [${this.node().type}] dep-check expr='${path}', changed='${changedPath}', eval='${evalPath}', evalNorm='${evalNorm}', changedNorm='${changedNorm}'`,
|
|
1901
|
-
// );
|
|
1902
|
-
// Generic direct and hierarchical dependency checks (raw and normalized)
|
|
1903
|
-
const rawMatch = evalPath === changedPath ||
|
|
1904
|
-
evalPath.startsWith(changedPath + '.') ||
|
|
1905
|
-
changedPath.startsWith(evalPath + '.') ||
|
|
1906
|
-
isSegmentSuffix(evalPath, changedPath) ||
|
|
1907
|
-
isSegmentSuffix(changedPath, evalPath);
|
|
1908
|
-
const normMatch = evalNorm === changedNorm ||
|
|
1909
|
-
evalNorm.startsWith(changedNorm + '.') ||
|
|
1910
|
-
changedNorm.startsWith(evalNorm + '.') ||
|
|
1911
|
-
isSegmentSuffix(evalNorm, changedNorm) ||
|
|
1912
|
-
isSegmentSuffix(changedNorm, evalNorm);
|
|
1913
|
-
if (rawMatch || normMatch) {
|
|
1914
|
-
// console.log(
|
|
1915
|
-
// `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (generic match)`,
|
|
1916
|
-
// );
|
|
1917
|
-
return true;
|
|
1918
|
-
}
|
|
1919
|
-
// Check for path aliases/mappings (e.g., typeId.id <-> type.id)
|
|
1920
|
-
if (this.isPathAlias(evalPath, changedPath)) {
|
|
1921
|
-
// console.log(
|
|
1922
|
-
// `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (path alias)`,
|
|
1923
|
-
// );
|
|
1924
|
-
return true;
|
|
1925
|
-
}
|
|
1880
|
+
if (this.expressionTextDependsOnContextPath(expressionValue, changedPath)) {
|
|
1881
|
+
return true;
|
|
1926
1882
|
}
|
|
1927
1883
|
}
|
|
1928
1884
|
}
|
|
@@ -2009,20 +1965,8 @@ class AXPWidgetRendererDirective {
|
|
|
2009
1965
|
const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;
|
|
2010
1966
|
if (!visibility || typeof visibility !== 'string')
|
|
2011
1967
|
return false;
|
|
2012
|
-
// Check if visibility expression depends on the changed path
|
|
2013
1968
|
if (this.expressionEvaluator.isExpression(visibility)) {
|
|
2014
|
-
|
|
2015
|
-
const contextEvalRegex = /context\.eval\(['"]([^'\"]+)['"]\)/g;
|
|
2016
|
-
let match;
|
|
2017
|
-
while ((match = contextEvalRegex.exec(visibility)) !== null) {
|
|
2018
|
-
const evalPath = match[1];
|
|
2019
|
-
// Check for direct or hierarchical dependency
|
|
2020
|
-
if (evalPath === changedPath ||
|
|
2021
|
-
evalPath.startsWith(changedPath + '.') ||
|
|
2022
|
-
changedPath.startsWith(evalPath + '.')) {
|
|
2023
|
-
return true;
|
|
2024
|
-
}
|
|
2025
|
-
}
|
|
1969
|
+
return this.expressionTextDependsOnContextPath(visibility, changedPath);
|
|
2026
1970
|
}
|
|
2027
1971
|
return false;
|
|
2028
1972
|
}
|
|
@@ -2438,34 +2382,46 @@ class AXPWidgetRendererDirective {
|
|
|
2438
2382
|
isDirty: () => {
|
|
2439
2383
|
return this.contextService.isDirty();
|
|
2440
2384
|
},
|
|
2385
|
+
/**
|
|
2386
|
+
* Host/widget-under-edit `options` from the shared context store (same values as
|
|
2387
|
+
* `context.eval('options' + (path ? '.' + path : ''))`), not `widget.options` on the nested
|
|
2388
|
+
* property field instance. Uses one `getValue` so smart-path behavior matches `context.eval`.
|
|
2389
|
+
*/
|
|
2390
|
+
options: (path) => {
|
|
2391
|
+
if (path == null || path === '') {
|
|
2392
|
+
return this.contextService.getValue('options');
|
|
2393
|
+
}
|
|
2394
|
+
return this.contextService.getValue(`options.${path}`);
|
|
2395
|
+
},
|
|
2441
2396
|
};
|
|
2442
2397
|
}
|
|
2443
2398
|
getEventScope() {
|
|
2444
2399
|
return {
|
|
2445
|
-
context: (
|
|
2400
|
+
context: (...paths) => {
|
|
2446
2401
|
return this.onContextChanged.pipe(filter((c) => {
|
|
2447
|
-
|
|
2448
|
-
|
|
2402
|
+
const activePaths = paths.filter((p) => !!p && p.trim().length > 0);
|
|
2403
|
+
// If no path filters specified, pass all events
|
|
2404
|
+
if (activePaths.length === 0) {
|
|
2449
2405
|
return true;
|
|
2450
2406
|
}
|
|
2451
2407
|
// Ensure c.path exists
|
|
2452
2408
|
if (!c.path) {
|
|
2453
2409
|
return false;
|
|
2454
2410
|
}
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2411
|
+
return activePaths.some((path) => {
|
|
2412
|
+
// Pattern: "prefix*" - matches paths that start with prefix
|
|
2413
|
+
if (path.endsWith('*')) {
|
|
2414
|
+
const prefix = path.substring(0, path.length - 1);
|
|
2415
|
+
return c.path.startsWith(prefix);
|
|
2416
|
+
}
|
|
2417
|
+
// Pattern: "*suffix" - matches paths that end with suffix
|
|
2418
|
+
if (path.startsWith('*')) {
|
|
2419
|
+
const suffix = path.substring(1);
|
|
2420
|
+
return c.path.endsWith(suffix);
|
|
2421
|
+
}
|
|
2422
|
+
// Exact match
|
|
2467
2423
|
return c.path === path;
|
|
2468
|
-
}
|
|
2424
|
+
});
|
|
2469
2425
|
}));
|
|
2470
2426
|
},
|
|
2471
2427
|
from: (event) => get(this.instance.api(), event),
|
|
@@ -2476,6 +2432,16 @@ class AXPWidgetRendererDirective {
|
|
|
2476
2432
|
}
|
|
2477
2433
|
getWidgetScope() {
|
|
2478
2434
|
return {
|
|
2435
|
+
/** Resolved options for this renderer's widget instance (not the host / property-viewer target). */
|
|
2436
|
+
options: (path) => {
|
|
2437
|
+
const opts = this.instance && typeof this.instance.options === 'function'
|
|
2438
|
+
? this.instance.options()
|
|
2439
|
+
: this.mergedOptions();
|
|
2440
|
+
if (path == null || path === '') {
|
|
2441
|
+
return opts;
|
|
2442
|
+
}
|
|
2443
|
+
return getSmart(opts, path);
|
|
2444
|
+
},
|
|
2479
2445
|
call: (name, ...args) => {
|
|
2480
2446
|
this.instance.call(name, ...args);
|
|
2481
2447
|
},
|
|
@@ -2581,14 +2547,14 @@ class AXPWidgetRendererDirective {
|
|
|
2581
2547
|
// console.error('Error evaluating action expression:', templateExpression, error);
|
|
2582
2548
|
}
|
|
2583
2549
|
}
|
|
2584
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2585
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
2550
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2551
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXPWidgetRendererDirective, isStandalone: false, selector: "[axp-widget-renderer]", inputs: { parentNode: { classPropertyName: "parentNode", publicName: "parentNode", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: "onOptionsChanged", onValueChanged: "onValueChanged", onLoad: "onLoad" }, providers: [
|
|
2586
2552
|
{
|
|
2587
2553
|
provide: AXUnsubscriber,
|
|
2588
2554
|
},
|
|
2589
2555
|
], exportAs: ["widgetRenderer"], usesOnChanges: true, ngImport: i0 }); }
|
|
2590
2556
|
}
|
|
2591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2557
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{
|
|
2592
2558
|
type: Directive,
|
|
2593
2559
|
args: [{
|
|
2594
2560
|
selector: '[axp-widget-renderer]',
|
|
@@ -2604,63 +2570,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
2604
2570
|
|
|
2605
2571
|
const COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];
|
|
2606
2572
|
class AXPWidgetCoreModule {
|
|
2607
|
-
static
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
providers: [
|
|
2611
|
-
{
|
|
2612
|
-
provide: 'AXPWidgetCoreModuleFactory',
|
|
2613
|
-
useFactory: (registry) => async () => {
|
|
2614
|
-
await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);
|
|
2615
|
-
await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);
|
|
2616
|
-
},
|
|
2617
|
-
deps: [AXPWidgetRegistryService],
|
|
2618
|
-
multi: true,
|
|
2619
|
-
},
|
|
2620
|
-
],
|
|
2621
|
-
};
|
|
2622
|
-
}
|
|
2623
|
-
static forChild(config) {
|
|
2624
|
-
return {
|
|
2625
|
-
ngModule: AXPWidgetCoreModule,
|
|
2626
|
-
providers: [
|
|
2627
|
-
{
|
|
2628
|
-
provide: 'AXPWidgetCoreModuleFactory',
|
|
2629
|
-
useFactory: (registry) => async () => {
|
|
2630
|
-
await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);
|
|
2631
|
-
await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);
|
|
2632
|
-
},
|
|
2633
|
-
deps: [AXPWidgetRegistryService],
|
|
2634
|
-
multi: true,
|
|
2635
|
-
},
|
|
2636
|
-
],
|
|
2637
|
-
};
|
|
2638
|
-
}
|
|
2639
|
-
/**
|
|
2640
|
-
* @ignore
|
|
2641
|
-
*/
|
|
2642
|
-
constructor(instances) {
|
|
2643
|
-
instances?.forEach((f) => {
|
|
2644
|
-
f();
|
|
2645
|
-
});
|
|
2646
|
-
}
|
|
2647
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPWidgetCoreModule, deps: [{ token: 'AXPWidgetCoreModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2648
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: AXPWidgetCoreModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }
|
|
2649
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule] }); }
|
|
2573
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2574
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }
|
|
2575
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule] }); }
|
|
2650
2576
|
}
|
|
2651
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2577
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, decorators: [{
|
|
2652
2578
|
type: NgModule,
|
|
2653
2579
|
args: [{
|
|
2654
|
-
imports: [CommonModule, PortalModule, AXSkeletonModule,
|
|
2580
|
+
imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule],
|
|
2655
2581
|
exports: [...COMPONENTS],
|
|
2656
2582
|
declarations: [...COMPONENTS],
|
|
2583
|
+
providers: [],
|
|
2657
2584
|
}]
|
|
2658
|
-
}]
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2585
|
+
}] });
|
|
2586
|
+
|
|
2587
|
+
//#endregion
|
|
2588
|
+
//#region ---- Mapping ----
|
|
2589
|
+
/**
|
|
2590
|
+
* Converts a domain {@link AXPProperty} into a {@link AXPWidgetProperty} row for
|
|
2591
|
+
* the layout property viewer (`AXPPropertyViewerService` and `buildPropertyViewerTabsFromProperties`).
|
|
2592
|
+
*/
|
|
2593
|
+
function mapAXPPropertyToWidgetProperty(property, options) {
|
|
2594
|
+
const { group, order, valuePathPrefix, resolveTitle, resolveDescription } = options;
|
|
2595
|
+
const path = valuePathPrefix ? `${valuePathPrefix}.${property.name}` : property.name;
|
|
2596
|
+
const iface = property.interface;
|
|
2597
|
+
const widgetType = iface?.type ?? 'text-editor';
|
|
2598
|
+
const description = resolveDescription?.(property);
|
|
2599
|
+
return {
|
|
2600
|
+
name: property.name,
|
|
2601
|
+
title: resolveTitle(property),
|
|
2602
|
+
...(description !== undefined && description !== '' ? { description } : {}),
|
|
2603
|
+
group,
|
|
2604
|
+
order,
|
|
2605
|
+
schema: {
|
|
2606
|
+
dataType: property.dataType,
|
|
2607
|
+
interface: {
|
|
2608
|
+
path,
|
|
2609
|
+
name: property.name,
|
|
2610
|
+
type: widgetType,
|
|
2611
|
+
options: iface?.options ?? {},
|
|
2612
|
+
...(iface?.triggers ? { triggers: iface.triggers } : {}),
|
|
2613
|
+
},
|
|
2614
|
+
},
|
|
2615
|
+
validations: property.validations,
|
|
2616
|
+
visible: true,
|
|
2617
|
+
};
|
|
2618
|
+
}
|
|
2619
|
+
//#endregion
|
|
2664
2620
|
|
|
2665
2621
|
class AXPPropertyEditorHelper {
|
|
2666
2622
|
static expandShorthand(values) {
|
|
@@ -2944,31 +2900,148 @@ class AXPWidgetSerializationHelper {
|
|
|
2944
2900
|
}
|
|
2945
2901
|
//#endregion
|
|
2946
2902
|
|
|
2903
|
+
//#region ---- Editor sub-categories (widget picker) ----
|
|
2904
|
+
const AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS = {
|
|
2905
|
+
name: 'editor-text-inputs',
|
|
2906
|
+
order: 1,
|
|
2907
|
+
title: '@platform-layout-widgets:subcategories.editor-text-inputs.title',
|
|
2908
|
+
};
|
|
2909
|
+
const AXP_WIDGETS_EDITOR_SUB_NUMERIC = {
|
|
2910
|
+
name: 'editor-numeric',
|
|
2911
|
+
order: 2,
|
|
2912
|
+
title: '@platform-layout-widgets:subcategories.editor-numeric.title',
|
|
2913
|
+
};
|
|
2914
|
+
const AXP_WIDGETS_EDITOR_SUB_DATETIME = {
|
|
2915
|
+
name: 'editor-datetime',
|
|
2916
|
+
order: 3,
|
|
2917
|
+
title: '@platform-layout-widgets:subcategories.editor-datetime.title',
|
|
2918
|
+
};
|
|
2919
|
+
const AXP_WIDGETS_EDITOR_SUB_CHOICE = {
|
|
2920
|
+
name: 'editor-choice',
|
|
2921
|
+
order: 4,
|
|
2922
|
+
title: '@platform-layout-widgets:subcategories.editor-choice.title',
|
|
2923
|
+
};
|
|
2924
|
+
const AXP_WIDGETS_EDITOR_SUB_RICH = {
|
|
2925
|
+
name: 'editor-rich',
|
|
2926
|
+
order: 5,
|
|
2927
|
+
title: '@platform-layout-widgets:subcategories.editor-rich.title',
|
|
2928
|
+
};
|
|
2929
|
+
const AXP_WIDGETS_EDITOR_SUB_VISUAL = {
|
|
2930
|
+
name: 'editor-visual',
|
|
2931
|
+
order: 6,
|
|
2932
|
+
title: '@platform-layout-widgets:subcategories.editor-visual.title',
|
|
2933
|
+
};
|
|
2934
|
+
const AXP_WIDGETS_EDITOR_SUB_COMPOSITE = {
|
|
2935
|
+
name: 'editor-composite',
|
|
2936
|
+
order: 7,
|
|
2937
|
+
title: '@platform-layout-widgets:subcategories.editor-composite.title',
|
|
2938
|
+
};
|
|
2939
|
+
const AXP_WIDGETS_EDITOR_SUB_CONFIG = {
|
|
2940
|
+
name: 'editor-config',
|
|
2941
|
+
order: 8,
|
|
2942
|
+
title: '@platform-layout-widgets:subcategories.editor-config.title',
|
|
2943
|
+
};
|
|
2944
|
+
//#endregion
|
|
2945
|
+
//#region ---- Layout sub-categories (widget picker) ----
|
|
2946
|
+
const AXP_WIDGETS_LAYOUT_SUB_SHELL = {
|
|
2947
|
+
name: 'layout-shell',
|
|
2948
|
+
order: 1,
|
|
2949
|
+
title: '@platform-layout-widgets:subcategories.layout-shell.title',
|
|
2950
|
+
};
|
|
2951
|
+
const AXP_WIDGETS_LAYOUT_SUB_GRID = {
|
|
2952
|
+
name: 'layout-grid',
|
|
2953
|
+
order: 2,
|
|
2954
|
+
title: '@platform-layout-widgets:subcategories.layout-grid.title',
|
|
2955
|
+
};
|
|
2956
|
+
const AXP_WIDGETS_LAYOUT_SUB_SURFACES = {
|
|
2957
|
+
name: 'layout-surfaces',
|
|
2958
|
+
order: 3,
|
|
2959
|
+
title: '@platform-layout-widgets:subcategories.layout-surfaces.title',
|
|
2960
|
+
};
|
|
2961
|
+
const AXP_WIDGETS_LAYOUT_SUB_TABS = {
|
|
2962
|
+
name: 'layout-tabs',
|
|
2963
|
+
order: 4,
|
|
2964
|
+
title: '@platform-layout-widgets:subcategories.layout-tabs.title',
|
|
2965
|
+
};
|
|
2966
|
+
const AXP_WIDGETS_LAYOUT_SUB_LISTS = {
|
|
2967
|
+
name: 'layout-lists',
|
|
2968
|
+
order: 5,
|
|
2969
|
+
title: '@platform-layout-widgets:subcategories.layout-lists.title',
|
|
2970
|
+
};
|
|
2971
|
+
const AXP_WIDGETS_LAYOUT_SUB_UTILITY = {
|
|
2972
|
+
name: 'layout-utility',
|
|
2973
|
+
order: 6,
|
|
2974
|
+
title: '@platform-layout-widgets:subcategories.layout-utility.title',
|
|
2975
|
+
};
|
|
2976
|
+
//#endregion
|
|
2977
|
+
//#region ---- Action sub-categories (widget picker) ----
|
|
2978
|
+
const AXP_WIDGETS_ACTION_SUB_CONTROLS = {
|
|
2979
|
+
name: 'action-controls',
|
|
2980
|
+
order: 1,
|
|
2981
|
+
title: '@platform-layout-widgets:subcategories.action-controls.title',
|
|
2982
|
+
};
|
|
2983
|
+
//#endregion
|
|
2984
|
+
//#region ---- Advance sub-categories (widget picker) ----
|
|
2985
|
+
const AXP_WIDGETS_ADVANCE_SUB_MEDIA = {
|
|
2986
|
+
name: 'advance-media',
|
|
2987
|
+
order: 1,
|
|
2988
|
+
title: '@platform-layout-widgets:subcategories.advance-media.title',
|
|
2989
|
+
};
|
|
2990
|
+
const AXP_WIDGETS_ADVANCE_SUB_INPUT = {
|
|
2991
|
+
name: 'advance-input',
|
|
2992
|
+
order: 2,
|
|
2993
|
+
title: '@platform-layout-widgets:subcategories.advance-input.title',
|
|
2994
|
+
};
|
|
2995
|
+
const AXP_WIDGETS_ADVANCE_SUB_DATA = {
|
|
2996
|
+
name: 'advance-data',
|
|
2997
|
+
order: 3,
|
|
2998
|
+
title: '@platform-layout-widgets:subcategories.advance-data.title',
|
|
2999
|
+
};
|
|
3000
|
+
const AXP_WIDGETS_ADVANCE_SUB_TOOLS = {
|
|
3001
|
+
name: 'advance-tools',
|
|
3002
|
+
order: 4,
|
|
3003
|
+
title: '@platform-layout-widgets:subcategories.advance-tools.title',
|
|
3004
|
+
};
|
|
3005
|
+
//#endregion
|
|
3006
|
+
/** Normalizes widget categories to an array for iteration and serialization. */
|
|
3007
|
+
function normalizeWidgetCategories(categories) {
|
|
3008
|
+
if (categories == null) {
|
|
3009
|
+
return [];
|
|
3010
|
+
}
|
|
3011
|
+
return Array.isArray(categories) ? categories : [categories];
|
|
3012
|
+
}
|
|
2947
3013
|
const AXP_WIDGETS_LAYOUT_CATEGORY = {
|
|
2948
3014
|
name: 'layout',
|
|
2949
3015
|
order: 1,
|
|
2950
|
-
title: '
|
|
3016
|
+
title: '@platform-layout-widgets:categories.layout.title',
|
|
2951
3017
|
};
|
|
2952
3018
|
const AXP_WIDGETS_EDITOR_CATEGORY = {
|
|
2953
3019
|
name: 'editor',
|
|
2954
3020
|
order: 2,
|
|
2955
|
-
title: '
|
|
3021
|
+
title: '@platform-layout-widgets:categories.editor.title',
|
|
2956
3022
|
};
|
|
2957
3023
|
const AXP_WIDGETS_ACTION_CATEGORY = {
|
|
2958
3024
|
name: 'action',
|
|
2959
3025
|
order: 3,
|
|
2960
|
-
title: '
|
|
3026
|
+
title: '@platform-layout-widgets:categories.action.title',
|
|
2961
3027
|
};
|
|
2962
3028
|
const AXP_WIDGETS_ADVANCE_CATEGORY = {
|
|
2963
3029
|
name: 'advance',
|
|
2964
3030
|
order: 4,
|
|
2965
|
-
title: '
|
|
3031
|
+
title: '@platform-layout-widgets:categories.advance.title',
|
|
3032
|
+
};
|
|
3033
|
+
/** AI category tab in the widget picker (metadata); unrelated to Widgets:GetForAI listing scope. */
|
|
3034
|
+
const AXP_WIDGETS_AI_CATEGORY = {
|
|
3035
|
+
name: 'ai',
|
|
3036
|
+
order: 5,
|
|
3037
|
+
title: '@platform-layout-widgets:categories.ai.title',
|
|
2966
3038
|
};
|
|
2967
3039
|
const AXP_WIDGETS_CATEGORIES = [
|
|
2968
3040
|
AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
2969
3041
|
AXP_WIDGETS_EDITOR_CATEGORY,
|
|
2970
3042
|
AXP_WIDGETS_ACTION_CATEGORY,
|
|
2971
3043
|
AXP_WIDGETS_ADVANCE_CATEGORY,
|
|
3044
|
+
AXP_WIDGETS_AI_CATEGORY,
|
|
2972
3045
|
];
|
|
2973
3046
|
|
|
2974
3047
|
var AXPWidgetGroupEnum;
|
|
@@ -2981,11 +3054,12 @@ var AXPWidgetGroupEnum;
|
|
|
2981
3054
|
AXPWidgetGroupEnum["SettingWidget"] = "setting-widget";
|
|
2982
3055
|
AXPWidgetGroupEnum["EntityWidget"] = "entity-widget";
|
|
2983
3056
|
AXPWidgetGroupEnum["UtilityWidget"] = "utility-widget";
|
|
3057
|
+
AXPWidgetGroupEnum["BaseWidget"] = "base-widget";
|
|
2984
3058
|
})(AXPWidgetGroupEnum || (AXPWidgetGroupEnum = {}));
|
|
2985
3059
|
|
|
2986
3060
|
/**
|
|
2987
3061
|
* Generated bundle index. Do not edit.
|
|
2988
3062
|
*/
|
|
2989
3063
|
|
|
2990
|
-
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPageStatus, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent,
|
|
3064
|
+
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPageStatus, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetSerializationHelper, AXPWidgetStatus, AXPWidgetsCatalog, 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, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_DEFINITION_PROVIDER, AXP_WIDGET_TOKEN, buildWidgetRegistryMapFromProviders, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty, findNonEmptyBreakpoints, mapAXPPropertyToWidgetProperty, normalizeWidgetCategories };
|
|
2991
3065
|
//# sourceMappingURL=acorex-platform-layout-widget-core.mjs.map
|