@acorex/platform 21.0.0-next.7 → 21.0.0-next.70
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 +281 -23
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs +163 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +1370 -276
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1185 -514
- 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 +832 -189
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +6309 -1956
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +456 -204
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs +371 -0
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity-file-list-popup.component-_yrP5SQe.mjs +100 -0
- package/fesm2022/acorex-platform-layout-entity-file-list-popup.component-_yrP5SQe.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +22488 -10232
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +564 -170
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +2084 -481
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-J0zcGKBX.mjs +116 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-J0zcGKBX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +10326 -7981
- 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 +391 -166
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CWLfNqV0.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CWLfNqV0.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs} +21 -28
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +2283 -83
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs} +52 -33
- package/fesm2022/acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +767 -609
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +978 -238
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +40 -38
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +241 -4
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +822 -89
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +658 -133
- 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} +194 -49
- package/types/acorex-platform-layout-components.d.ts +3253 -0
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
- package/types/acorex-platform-layout-entity.d.ts +4439 -0
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +179 -56
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +398 -127
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +1120 -501
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/types/acorex-platform-runtime.d.ts +571 -0
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +233 -6
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +24 -2
- package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +620 -617
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs +0 -71
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs +0 -135
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DfJEx_bs.mjs +0 -1542
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DfJEx_bs.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.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-DTnfRy5f.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs +0 -64
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
- package/layout/components/index.d.ts +0 -1669
- package/layout/entity/index.d.ts +0 -2287
- package/runtime/index.d.ts +0 -307
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -1,136 +1,20 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { convertArrayToDataSource, AXDataSource } from '@acorex/cdk/common';
|
|
4
|
-
import {
|
|
5
|
-
|
|
2
|
+
import { signal, computed, Injectable, InjectionToken, inject, ElementRef, effect, untracked, EventEmitter, Injector, ChangeDetectorRef, ViewChild, Input, Output, ChangeDetectionStrategy, Component, input, output, ViewContainerRef, Directive, NgModule } from '@angular/core';
|
|
3
|
+
import { convertArrayToDataSource, AXDataSource, AX_STYLE_COLOR_TYPES, AX_STYLE_LOOK_TYPES } from '@acorex/cdk/common';
|
|
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';
|
|
11
11
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
12
12
|
import { PortalModule } from '@angular/cdk/portal';
|
|
13
13
|
import * as i1 from '@angular/common';
|
|
14
|
-
import { CommonModule } from '@angular/common';
|
|
14
|
+
import { CommonModule, NgComponentOutlet } 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) {
|
|
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
|
-
previousSnapshot: store.snapshot(), // Save the previous state
|
|
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
|
-
const changeEvent = {
|
|
110
|
-
oldValue: null,
|
|
111
|
-
newValue: cloneDeep(initialData),
|
|
112
|
-
path: '',
|
|
113
|
-
state: 'initiated',
|
|
114
|
-
data: initialData,
|
|
115
|
-
};
|
|
116
|
-
patchState(store, {
|
|
117
|
-
initialSnapshot: cloneDeep(initialData), // Save the initial state
|
|
118
|
-
previousSnapshot: store.snapshot(), // Save the current state as the previous
|
|
119
|
-
data: initialData,
|
|
120
|
-
state: 'initiated',
|
|
121
|
-
lastChange: changeEvent,
|
|
122
|
-
});
|
|
123
|
-
},
|
|
124
|
-
// Get a specific value
|
|
125
|
-
getValue(path) {
|
|
126
|
-
return get(store.data(), path);
|
|
127
|
-
},
|
|
128
|
-
// Check if a path exists in the context
|
|
129
|
-
hasValue(path) {
|
|
130
|
-
return has(store.data(), path);
|
|
131
|
-
},
|
|
132
|
-
})));
|
|
133
|
-
|
|
134
18
|
var AXPPageStatus;
|
|
135
19
|
(function (AXPPageStatus) {
|
|
136
20
|
// Idle statuses
|
|
@@ -170,17 +54,17 @@ class AXPWidgetCoreElement {
|
|
|
170
54
|
}
|
|
171
55
|
class AXPWidgetCoreService {
|
|
172
56
|
constructor() {
|
|
173
|
-
this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: "variables$" }] : []));
|
|
174
|
-
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 */ []));
|
|
175
59
|
this.onRefresh = new Subject();
|
|
176
60
|
this.widgets = new Map();
|
|
177
61
|
this.onWidgetRegistered = new Subject();
|
|
178
|
-
this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: "status$" }] : []));
|
|
62
|
+
this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: "status$" }] : /* istanbul ignore next */ []));
|
|
179
63
|
this.status = this.status$.asReadonly();
|
|
180
64
|
this.isBusy = computed(() => {
|
|
181
65
|
return [AXPPageStatus.Processing, AXPPageStatus.Submitting, AXPPageStatus.Rendering].includes(this.status());
|
|
182
|
-
}, ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
|
|
183
|
-
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 */ []));
|
|
184
68
|
}
|
|
185
69
|
get variables() {
|
|
186
70
|
return this.variables$();
|
|
@@ -285,13 +169,16 @@ class AXPWidgetCoreService {
|
|
|
285
169
|
return Array.from(this.widgets.keys());
|
|
286
170
|
}
|
|
287
171
|
ngOnDestroy() { }
|
|
288
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
289
|
-
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 }); }
|
|
290
174
|
}
|
|
291
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreService, decorators: [{
|
|
292
176
|
type: Injectable
|
|
293
177
|
}] });
|
|
294
178
|
|
|
179
|
+
//
|
|
180
|
+
// @deprecated
|
|
181
|
+
// Prefer AXPWidgetsList from @acorex/modules/common; dashboard widget type ids live in dashboard-management RootConfig.widgets.
|
|
295
182
|
const AXPWidgetsCatalog = {
|
|
296
183
|
timeDuration: 'time-duration',
|
|
297
184
|
timeDurationFilter: 'time-duration-filter',
|
|
@@ -315,7 +202,9 @@ const AXPWidgetsCatalog = {
|
|
|
315
202
|
pageLayout: 'page-layout',
|
|
316
203
|
repeaterLayout: 'repeater-layout',
|
|
317
204
|
textBlockLayout: 'text-block-layout',
|
|
318
|
-
|
|
205
|
+
alertBoxLayout: 'alert-box-layout',
|
|
206
|
+
badgeLayout: 'badge-layout',
|
|
207
|
+
attachments: 'attachments',
|
|
319
208
|
fileTypeExtension: 'file-type-extension',
|
|
320
209
|
map: 'map',
|
|
321
210
|
imageMarker: 'image-marker',
|
|
@@ -343,7 +232,6 @@ const AXPWidgetsCatalog = {
|
|
|
343
232
|
tableLayout: 'table-layout',
|
|
344
233
|
tableItem: 'table-item-layout',
|
|
345
234
|
avatar: 'avatar',
|
|
346
|
-
themePaletteChooser: 'theme-palette-chooser',
|
|
347
235
|
themeModeChooser: 'theme-mode-chooser',
|
|
348
236
|
menuOrientationChooser: 'menu-orientation-chooser',
|
|
349
237
|
fontStyleChooser: 'font-style-chooser',
|
|
@@ -371,31 +259,23 @@ const AXPWidgetsCatalog = {
|
|
|
371
259
|
betweenValidation: 'between-validation',
|
|
372
260
|
equalValidation: 'equal-validation',
|
|
373
261
|
callbackValidation: 'callback-validation',
|
|
374
|
-
donutChart: 'donut-chart',
|
|
375
|
-
lineChart: 'line-chart',
|
|
376
|
-
barChart: 'bar-chart',
|
|
377
|
-
gaugeChart: 'gauge-chart',
|
|
378
|
-
stickyNote: 'sticky-note',
|
|
379
|
-
clockCalendar: 'clock-calendar',
|
|
380
|
-
analogClock: 'analog-clock',
|
|
381
|
-
weather: 'weather',
|
|
382
|
-
minimalWeather: 'minimal-weather',
|
|
383
|
-
advancedWeather: 'advanced-weather',
|
|
384
262
|
metaData: 'meta-data-editor',
|
|
385
263
|
templateEditor: 'template-box-editor',
|
|
264
|
+
templateContentEditor: 'template-content-editor',
|
|
386
265
|
panel: 'panel',
|
|
387
266
|
notification: 'notification',
|
|
388
|
-
taskBoard: 'task-board',
|
|
389
267
|
comment: 'comment',
|
|
390
268
|
dataList: 'data-list',
|
|
391
269
|
listToolbar: 'list-toolbar',
|
|
392
270
|
entityList: 'entity-list',
|
|
271
|
+
pageComponent: 'page-component',
|
|
393
272
|
editorJs: 'editor-js-editor',
|
|
394
273
|
documentUploader: 'document-uploader',
|
|
395
|
-
signatureList: 'signature-list',
|
|
396
274
|
stepWizard: 'step-wizard',
|
|
397
275
|
progressBar: 'progress-bar-editor',
|
|
398
|
-
rate: 'rate-picker-editor'
|
|
276
|
+
rate: 'rate-picker-editor',
|
|
277
|
+
documentFileTypeFilter: 'document-file-type-filter',
|
|
278
|
+
entityDefinitionProvider: 'entity-definition-provider-editor',
|
|
399
279
|
};
|
|
400
280
|
|
|
401
281
|
function cloneProperty(property, values) {
|
|
@@ -450,7 +330,10 @@ function createBooleanProperty(ctor) {
|
|
|
450
330
|
type: AXPWidgetsCatalog.toggle,
|
|
451
331
|
},
|
|
452
332
|
},
|
|
453
|
-
visible: ctor.visible
|
|
333
|
+
visible: !isNil(ctor.visible) ? ctor.visible : true,
|
|
334
|
+
binding: {
|
|
335
|
+
enabled: true,
|
|
336
|
+
},
|
|
454
337
|
};
|
|
455
338
|
}
|
|
456
339
|
function createSelectProperty(ctor) {
|
|
@@ -474,7 +357,7 @@ function createSelectProperty(ctor) {
|
|
|
474
357
|
},
|
|
475
358
|
},
|
|
476
359
|
},
|
|
477
|
-
visible: ctor.visible
|
|
360
|
+
visible: !isNil(ctor.visible) ? ctor.visible : true,
|
|
478
361
|
};
|
|
479
362
|
}
|
|
480
363
|
const AXP_WIDGET_TOKEN = new InjectionToken('AXP_WIDGET_TOKEN');
|
|
@@ -486,22 +369,22 @@ class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
|
|
|
486
369
|
this.token = inject(AXP_WIDGET_TOKEN);
|
|
487
370
|
this.host = inject(ElementRef).nativeElement;
|
|
488
371
|
this.layoutService = inject(AXPWidgetCoreService);
|
|
489
|
-
this.contextService = inject(
|
|
372
|
+
this.contextService = inject(AXPContextStore);
|
|
490
373
|
this.config = this.token.config;
|
|
491
374
|
this.node = this.token.node;
|
|
492
375
|
this.name = this.token.node.name;
|
|
493
376
|
this.component = this;
|
|
494
|
-
this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: "_options" }] : []));
|
|
377
|
+
this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
|
|
495
378
|
this.options = this._options.asReadonly();
|
|
496
379
|
this.onOptionsChanged = new Subject();
|
|
497
|
-
this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: "_status" }] : []));
|
|
380
|
+
this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: "_status" }] : /* istanbul ignore next */ []));
|
|
498
381
|
this.status = this._status.asReadonly();
|
|
499
382
|
this.onStatusChanged = new BehaviorSubject(this._status());
|
|
500
383
|
this.#statusEffect = effect(() => {
|
|
501
384
|
this.onStatusChanged.next(this.status());
|
|
502
|
-
}, ...(ngDevMode ? [{ debugName: "#statusEffect" }] : []));
|
|
503
|
-
this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
|
|
504
|
-
this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: "_children" }] : []));
|
|
385
|
+
}, ...(ngDevMode ? [{ debugName: "#statusEffect" }] : /* istanbul ignore next */ []));
|
|
386
|
+
this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
|
|
387
|
+
this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: "_children" }] : /* istanbul ignore next */ []));
|
|
505
388
|
this.children = this._children.asReadonly();
|
|
506
389
|
}
|
|
507
390
|
get id() {
|
|
@@ -530,7 +413,7 @@ class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
|
|
|
530
413
|
output(name) {
|
|
531
414
|
const outputs = this.outputs().map((c) => (typeof c == 'string' ? { name: c, value: c } : c));
|
|
532
415
|
if (outputs.some((c) => c.name == name)) {
|
|
533
|
-
const opt =
|
|
416
|
+
const opt = outputs.find((c) => c.name == name)?.value;
|
|
534
417
|
if (typeof opt == 'function') {
|
|
535
418
|
return opt();
|
|
536
419
|
}
|
|
@@ -548,10 +431,10 @@ class AXPBaseWidgetComponent extends AXPWidgetCoreElement {
|
|
|
548
431
|
this._children.set([...children]);
|
|
549
432
|
}
|
|
550
433
|
onAdded() { }
|
|
551
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
552
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
434
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
435
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent }); }
|
|
553
436
|
}
|
|
554
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
437
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{
|
|
555
438
|
type: Injectable
|
|
556
439
|
}] });
|
|
557
440
|
class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {
|
|
@@ -562,10 +445,10 @@ class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {
|
|
|
562
445
|
}
|
|
563
446
|
super.ngOnInit();
|
|
564
447
|
}
|
|
565
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
566
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
448
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
449
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }
|
|
567
450
|
}
|
|
568
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
451
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{
|
|
569
452
|
type: Injectable
|
|
570
453
|
}] });
|
|
571
454
|
class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
@@ -576,11 +459,11 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
576
459
|
this._isValueWidget = false;
|
|
577
460
|
this.isValueWidget = () => this._isValueWidget;
|
|
578
461
|
this.onValueChanged = new Subject();
|
|
579
|
-
this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: "fullPath" }] : []));
|
|
580
|
-
this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: "parentPath" }] : []));
|
|
462
|
+
this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: "fullPath" }] : /* istanbul ignore next */ []));
|
|
463
|
+
this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: "parentPath" }] : /* istanbul ignore next */ []));
|
|
581
464
|
this.getValue = computed(() => {
|
|
582
465
|
return this.fullPath() ? this.extractValue(this.fullPath()) : null;
|
|
583
|
-
}, ...(ngDevMode ?
|
|
466
|
+
}, { ...(ngDevMode ? { debugName: "getValue" } : /* istanbul ignore next */ {}), equal: isEqual });
|
|
584
467
|
this.validationRules = computed(() => {
|
|
585
468
|
const validationsRaw = this.options()['validations'];
|
|
586
469
|
if (validationsRaw == null) {
|
|
@@ -593,7 +476,7 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
593
476
|
message: c.message,
|
|
594
477
|
options: c.options,
|
|
595
478
|
}));
|
|
596
|
-
}, ...(ngDevMode ? [{ debugName: "validationRules" }] : []));
|
|
479
|
+
}, ...(ngDevMode ? [{ debugName: "validationRules" }] : /* istanbul ignore next */ []));
|
|
597
480
|
}
|
|
598
481
|
ngOnInit() {
|
|
599
482
|
this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;
|
|
@@ -623,7 +506,12 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
623
506
|
if (isNil(value) && isNil(oldValue)) {
|
|
624
507
|
return;
|
|
625
508
|
}
|
|
626
|
-
|
|
509
|
+
// Reordered arrays must persist even when items are deep-equal (e.g. empty row objects).
|
|
510
|
+
const isArrayReorder = Array.isArray(oldValue) &&
|
|
511
|
+
Array.isArray(value) &&
|
|
512
|
+
oldValue.length === value.length &&
|
|
513
|
+
oldValue.some((v, i) => v !== value[i]);
|
|
514
|
+
if (!isArrayReorder && isEqual(oldValue, value)) {
|
|
627
515
|
return;
|
|
628
516
|
}
|
|
629
517
|
if (this.fullPath()) {
|
|
@@ -670,23 +558,23 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
670
558
|
this.setValue(e.value);
|
|
671
559
|
}
|
|
672
560
|
}
|
|
673
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
674
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
561
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
562
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent }); }
|
|
675
563
|
}
|
|
676
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{
|
|
677
565
|
type: Injectable
|
|
678
566
|
}] });
|
|
679
567
|
class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
680
568
|
constructor() {
|
|
681
569
|
super(...arguments);
|
|
682
570
|
this.dataService = inject(AXPDataSourceDefinitionProviderService);
|
|
683
|
-
this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: "textField" }] : []));
|
|
684
|
-
this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: "valueField" }] : []));
|
|
571
|
+
this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: "textField" }] : /* istanbul ignore next */ []));
|
|
572
|
+
this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
|
|
685
573
|
this.textTemplate = computed(() => isNil(this.options()['textTemplate'])
|
|
686
574
|
? undefined
|
|
687
|
-
: this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}'), ...(ngDevMode ? [{ debugName: "textTemplate" }] : []));
|
|
688
|
-
this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: "dataSource" }] : []));
|
|
689
|
-
this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : []));
|
|
575
|
+
: this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}'), ...(ngDevMode ? [{ debugName: "textTemplate" }] : /* istanbul ignore next */ []));
|
|
576
|
+
this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: "dataSource" }] : /* istanbul ignore next */ []));
|
|
577
|
+
this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
|
|
690
578
|
//#region ---- DataSource Loading Effect ----
|
|
691
579
|
/**
|
|
692
580
|
* Track the last loaded string dataSource reference to prevent infinite loops
|
|
@@ -766,7 +654,7 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
|
766
654
|
this.dataSource.set(convertArrayToDataSource([]));
|
|
767
655
|
}
|
|
768
656
|
});
|
|
769
|
-
}, ...(ngDevMode ? [{ debugName: "rf" }] : []));
|
|
657
|
+
}, ...(ngDevMode ? [{ debugName: "rf" }] : /* istanbul ignore next */ []));
|
|
770
658
|
this.effect2 = effect(async () => {
|
|
771
659
|
const value = this.getValue();
|
|
772
660
|
const items = [];
|
|
@@ -777,7 +665,7 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
|
777
665
|
items.push(await this.extractItem(value));
|
|
778
666
|
}
|
|
779
667
|
this.selectedItems.set(items.filter((c) => c != null));
|
|
780
|
-
}, ...(ngDevMode ? [{ debugName: "effect2" }] : []));
|
|
668
|
+
}, ...(ngDevMode ? [{ debugName: "effect2" }] : /* istanbul ignore next */ []));
|
|
781
669
|
}
|
|
782
670
|
//#endregion
|
|
783
671
|
async extractItem(item) {
|
|
@@ -802,10 +690,10 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
|
802
690
|
[this.textField()]: item,
|
|
803
691
|
};
|
|
804
692
|
}
|
|
805
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
806
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
693
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
694
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetComponent }); }
|
|
807
695
|
}
|
|
808
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
696
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{
|
|
809
697
|
type: Injectable
|
|
810
698
|
}] });
|
|
811
699
|
class AXPColumnWidgetComponent {
|
|
@@ -813,20 +701,22 @@ class AXPColumnWidgetComponent {
|
|
|
813
701
|
this.token = inject(AXP_WIDGET_COLUMN_TOKEN);
|
|
814
702
|
this.path = this.token.path;
|
|
815
703
|
this.options = this.token.options ?? {};
|
|
704
|
+
/** Column header caption when rendered inside `axp-widget-column-renderer`. */
|
|
705
|
+
this.columnCaption = this.token.caption;
|
|
816
706
|
this.rawValue = null;
|
|
817
707
|
this.nullText = this.options['nullText'];
|
|
818
708
|
this.nullValue = this.options['nullValue'];
|
|
819
|
-
this.value =
|
|
709
|
+
this.value = () => {
|
|
820
710
|
if (isNil(this.rawValue) && !isNil(this.nullValue)) {
|
|
821
711
|
return this.nullValue;
|
|
822
712
|
}
|
|
823
713
|
return this.rawValue;
|
|
824
|
-
}
|
|
714
|
+
};
|
|
825
715
|
}
|
|
826
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
827
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
716
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
717
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent }); }
|
|
828
718
|
}
|
|
829
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
719
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{
|
|
830
720
|
type: Injectable
|
|
831
721
|
}] });
|
|
832
722
|
|
|
@@ -855,7 +745,7 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
855
745
|
style['overflow-y'] = overflowY ?? '';
|
|
856
746
|
style['direction'] = direction ?? '';
|
|
857
747
|
return style;
|
|
858
|
-
}, ...(ngDevMode ? [{ debugName: "hostBoxStyle" }] : []));
|
|
748
|
+
}, ...(ngDevMode ? [{ debugName: "hostBoxStyle" }] : /* istanbul ignore next */ []));
|
|
859
749
|
this.blockStyle = computed(() => {
|
|
860
750
|
const options = this.options();
|
|
861
751
|
const style = { ...this.hostBoxStyle() };
|
|
@@ -872,47 +762,47 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
872
762
|
style['height'] = height ?? '';
|
|
873
763
|
style['max-height'] = maxHeight ?? '';
|
|
874
764
|
return style;
|
|
875
|
-
}, ...(ngDevMode ? [{ debugName: "blockStyle" }] : []));
|
|
765
|
+
}, ...(ngDevMode ? [{ debugName: "blockStyle" }] : /* istanbul ignore next */ []));
|
|
876
766
|
this.inlineStyle = computed(() => {
|
|
877
767
|
return { ...this.hostBoxStyle() };
|
|
878
|
-
}, ...(ngDevMode ? [{ debugName: "inlineStyle" }] : []));
|
|
768
|
+
}, ...(ngDevMode ? [{ debugName: "inlineStyle" }] : /* istanbul ignore next */ []));
|
|
879
769
|
this.blockClass = computed(() => {
|
|
880
770
|
return {
|
|
881
771
|
'ax-block': true,
|
|
882
772
|
'ax-w-full': true,
|
|
883
773
|
// 'ax-widget-outline': true,
|
|
884
774
|
};
|
|
885
|
-
}, ...(ngDevMode ? [{ debugName: "blockClass" }] : []));
|
|
775
|
+
}, ...(ngDevMode ? [{ debugName: "blockClass" }] : /* istanbul ignore next */ []));
|
|
886
776
|
this.inlineClass = computed(() => {
|
|
887
777
|
return {
|
|
888
778
|
'ax-inline-block': true,
|
|
889
779
|
};
|
|
890
|
-
}, ...(ngDevMode ? [{ debugName: "inlineClass" }] : []));
|
|
780
|
+
}, ...(ngDevMode ? [{ debugName: "inlineClass" }] : /* istanbul ignore next */ []));
|
|
891
781
|
}
|
|
892
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
893
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
782
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
783
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }
|
|
894
784
|
}
|
|
895
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
785
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{
|
|
896
786
|
type: Injectable
|
|
897
787
|
}] });
|
|
898
788
|
|
|
899
789
|
class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {
|
|
900
790
|
constructor() {
|
|
901
791
|
super(...arguments);
|
|
902
|
-
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
903
|
-
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
792
|
+
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
793
|
+
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
904
794
|
}
|
|
905
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
906
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
795
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
796
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }
|
|
907
797
|
}
|
|
908
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
798
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{
|
|
909
799
|
type: Injectable
|
|
910
800
|
}] });
|
|
911
801
|
|
|
912
802
|
class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
913
803
|
constructor() {
|
|
914
804
|
super(...arguments);
|
|
915
|
-
this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flex" }] : []));
|
|
805
|
+
this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flex" }] : /* istanbul ignore next */ []));
|
|
916
806
|
this.hostFlexStyle = computed(() => {
|
|
917
807
|
const blockStyle = this.blockStyle();
|
|
918
808
|
const style = { ...blockStyle };
|
|
@@ -951,45 +841,45 @@ class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
|
|
|
951
841
|
style['gap'] = flex.gap;
|
|
952
842
|
}
|
|
953
843
|
return style;
|
|
954
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexStyle" }] : []));
|
|
844
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexStyle" }] : /* istanbul ignore next */ []));
|
|
955
845
|
this.hostFlexClass = computed(() => {
|
|
956
846
|
return {
|
|
957
847
|
...this.blockClass(),
|
|
958
848
|
'ax-flex': true,
|
|
959
849
|
'ax-h-full': true,
|
|
960
850
|
};
|
|
961
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexClass" }] : []));
|
|
851
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexClass" }] : /* istanbul ignore next */ []));
|
|
962
852
|
this.hostClass = computed(() => {
|
|
963
853
|
return this.hostFlexClass();
|
|
964
|
-
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
854
|
+
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
965
855
|
this.hostStyle = computed(() => {
|
|
966
856
|
return this.hostFlexStyle();
|
|
967
|
-
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
857
|
+
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
968
858
|
}
|
|
969
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
970
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
859
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
860
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }
|
|
971
861
|
}
|
|
972
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
862
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{
|
|
973
863
|
type: Injectable
|
|
974
864
|
}] });
|
|
975
865
|
|
|
976
866
|
class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {
|
|
977
867
|
constructor() {
|
|
978
868
|
super(...arguments);
|
|
979
|
-
this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
980
|
-
this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
869
|
+
this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
870
|
+
this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
981
871
|
}
|
|
982
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
983
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
872
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
873
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }
|
|
984
874
|
}
|
|
985
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
875
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{
|
|
986
876
|
type: Injectable
|
|
987
877
|
}] });
|
|
988
878
|
|
|
989
879
|
class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {
|
|
990
880
|
constructor() {
|
|
991
881
|
super(...arguments);
|
|
992
|
-
this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flexItem" }] : []));
|
|
882
|
+
this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "flexItem" }] : /* istanbul ignore next */ []));
|
|
993
883
|
this.hostFlexItemStyle = computed(() => {
|
|
994
884
|
const inlineStyle = this.blockStyle();
|
|
995
885
|
const style = { ...inlineStyle };
|
|
@@ -1025,37 +915,37 @@ class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComp
|
|
|
1025
915
|
style['align-self'] = fi.alignSelf;
|
|
1026
916
|
}
|
|
1027
917
|
return style;
|
|
1028
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexItemStyle" }] : []));
|
|
918
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexItemStyle" }] : /* istanbul ignore next */ []));
|
|
1029
919
|
this.hostFlexItemClass = computed(() => {
|
|
1030
920
|
return {
|
|
1031
921
|
...this.blockClass(),
|
|
1032
922
|
};
|
|
1033
|
-
}, ...(ngDevMode ? [{ debugName: "hostFlexItemClass" }] : []));
|
|
923
|
+
}, ...(ngDevMode ? [{ debugName: "hostFlexItemClass" }] : /* istanbul ignore next */ []));
|
|
1034
924
|
this.hostClass = computed(() => {
|
|
1035
925
|
return this.hostFlexItemClass();
|
|
1036
|
-
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
926
|
+
}, ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1037
927
|
this.hostStyle = computed(() => {
|
|
1038
928
|
return this.hostFlexItemStyle();
|
|
1039
|
-
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
929
|
+
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1040
930
|
}
|
|
1041
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1042
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
931
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
932
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }
|
|
1043
933
|
}
|
|
1044
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{
|
|
1045
935
|
type: Injectable
|
|
1046
936
|
}] });
|
|
1047
937
|
|
|
1048
938
|
class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
1049
939
|
constructor() {
|
|
1050
940
|
super(...arguments);
|
|
1051
|
-
this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: "grid" }] : []));
|
|
941
|
+
this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: "grid" }] : /* istanbul ignore next */ []));
|
|
1052
942
|
this.hostGridStyle = computed(() => {
|
|
1053
943
|
const style = { ...this.inlineStyle() };
|
|
1054
944
|
const g = this.grid()?.default;
|
|
1055
945
|
if (g?.gap)
|
|
1056
946
|
style['gap'] = g.gap;
|
|
1057
947
|
return style;
|
|
1058
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridStyle" }] : []));
|
|
948
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridStyle" }] : /* istanbul ignore next */ []));
|
|
1059
949
|
this.hostGridClass = computed(() => {
|
|
1060
950
|
const cls = {
|
|
1061
951
|
...this.inlineClass(),
|
|
@@ -1064,8 +954,7 @@ class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
|
|
|
1064
954
|
const g = this.grid()?.default;
|
|
1065
955
|
if (g?.columns)
|
|
1066
956
|
cls[`lg:ax-grid-cols-${g.columns}`] = true;
|
|
1067
|
-
if (g?.rows)
|
|
1068
|
-
cls[`lg:ax-grid-rows-${g.rows}`] = true;
|
|
957
|
+
// if (g?.rows) cls[`lg:ax-grid-rows-${g.rows}`] = true;
|
|
1069
958
|
if (g?.justifyItems)
|
|
1070
959
|
cls[`lg:ax-justify-items-${g.justifyItems}`] = true;
|
|
1071
960
|
if (g?.alignItems)
|
|
@@ -1073,21 +962,21 @@ class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
|
|
|
1073
962
|
if (g?.autoFlow)
|
|
1074
963
|
cls[`lg:ax-grid-flow-${g.autoFlow}`] = true;
|
|
1075
964
|
return cls;
|
|
1076
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridClass" }] : []));
|
|
1077
|
-
this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1078
|
-
this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
965
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridClass" }] : /* istanbul ignore next */ []));
|
|
966
|
+
this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
967
|
+
this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1079
968
|
}
|
|
1080
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1081
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
969
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
970
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }
|
|
1082
971
|
}
|
|
1083
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
972
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{
|
|
1084
973
|
type: Injectable
|
|
1085
974
|
}] });
|
|
1086
975
|
|
|
1087
976
|
class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {
|
|
1088
977
|
constructor() {
|
|
1089
978
|
super(...arguments);
|
|
1090
|
-
this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "gridItem" }] : []));
|
|
979
|
+
this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "gridItem" }] : /* istanbul ignore next */ []));
|
|
1091
980
|
this.hostGridItemStyle = computed(() => {
|
|
1092
981
|
const style = { ...this.hostFlexStyle() };
|
|
1093
982
|
const g = this.gridItem();
|
|
@@ -1096,10 +985,13 @@ class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetCompon
|
|
|
1096
985
|
if (g?.justifySelf)
|
|
1097
986
|
style['justify-self'] = g.justifySelf;
|
|
1098
987
|
return style;
|
|
1099
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridItemStyle" }] : []));
|
|
988
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridItemStyle" }] : /* istanbul ignore next */ []));
|
|
1100
989
|
this.hostGridItemClass = computed(() => {
|
|
1101
990
|
const cls = { ...this.hostFlexClass() };
|
|
1102
991
|
const g = this.gridItem();
|
|
992
|
+
// Mobile-first: full width on small screens so items stack vertically and don't overflow
|
|
993
|
+
cls['ax-col-span-12'] = true;
|
|
994
|
+
// Large screens: apply defined placement so multi-column layout works on desktop
|
|
1103
995
|
if (g?.colSpan)
|
|
1104
996
|
cls[`lg:ax-col-span-${g.colSpan}`] = true;
|
|
1105
997
|
if (g?.colStart)
|
|
@@ -1113,14 +1005,14 @@ class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetCompon
|
|
|
1113
1005
|
if (g?.rowEnd)
|
|
1114
1006
|
cls[`lg:ax-row-end-${g.rowEnd}`] = true;
|
|
1115
1007
|
return cls;
|
|
1116
|
-
}, ...(ngDevMode ? [{ debugName: "hostGridItemClass" }] : []));
|
|
1117
|
-
this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1118
|
-
this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1008
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridItemClass" }] : /* istanbul ignore next */ []));
|
|
1009
|
+
this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1010
|
+
this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1119
1011
|
}
|
|
1120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1121
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1012
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1013
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }
|
|
1122
1014
|
}
|
|
1123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1015
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{
|
|
1124
1016
|
type: Injectable
|
|
1125
1017
|
}] });
|
|
1126
1018
|
|
|
@@ -1129,27 +1021,27 @@ class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponen
|
|
|
1129
1021
|
super(...arguments);
|
|
1130
1022
|
this.hostTableClass = computed(() => ({
|
|
1131
1023
|
...this.blockClass(),
|
|
1132
|
-
}), ...(ngDevMode ? [{ debugName: "hostTableClass" }] : []));
|
|
1024
|
+
}), ...(ngDevMode ? [{ debugName: "hostTableClass" }] : /* istanbul ignore next */ []));
|
|
1133
1025
|
this.hostTableStyle = computed(() => {
|
|
1134
1026
|
const style = { ...this.blockStyle() };
|
|
1135
1027
|
style['overflow-x'] = 'auto';
|
|
1136
1028
|
return style;
|
|
1137
|
-
}, ...(ngDevMode ? [{ debugName: "hostTableStyle" }] : []));
|
|
1138
|
-
this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1139
|
-
this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1029
|
+
}, ...(ngDevMode ? [{ debugName: "hostTableStyle" }] : /* istanbul ignore next */ []));
|
|
1030
|
+
this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1031
|
+
this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1140
1032
|
}
|
|
1141
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1142
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1033
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1034
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }
|
|
1143
1035
|
}
|
|
1144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1036
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{
|
|
1145
1037
|
type: Injectable
|
|
1146
1038
|
}] });
|
|
1147
1039
|
|
|
1148
1040
|
class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
1149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1150
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1041
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1042
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }
|
|
1151
1043
|
}
|
|
1152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1044
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{
|
|
1153
1045
|
type: Injectable
|
|
1154
1046
|
}] });
|
|
1155
1047
|
|
|
@@ -1159,57 +1051,105 @@ class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWid
|
|
|
1159
1051
|
this.colSpan = computed(() => {
|
|
1160
1052
|
const v = this.options()?.colSpan;
|
|
1161
1053
|
return v ? Math.max(1, v) : 1;
|
|
1162
|
-
}, ...(ngDevMode ? [{ debugName: "colSpan" }] : []));
|
|
1054
|
+
}, ...(ngDevMode ? [{ debugName: "colSpan" }] : /* istanbul ignore next */ []));
|
|
1163
1055
|
this.rowSpan = computed(() => {
|
|
1164
1056
|
const v = this.options()?.rowSpan;
|
|
1165
1057
|
return v ? Math.max(1, v) : 1;
|
|
1166
|
-
}, ...(ngDevMode ? [{ debugName: "rowSpan" }] : []));
|
|
1167
|
-
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1168
|
-
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1058
|
+
}, ...(ngDevMode ? [{ debugName: "rowSpan" }] : /* istanbul ignore next */ []));
|
|
1059
|
+
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
1060
|
+
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : /* istanbul ignore next */ []));
|
|
1169
1061
|
}
|
|
1170
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1171
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1062
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1063
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }
|
|
1172
1064
|
}
|
|
1173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1065
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{
|
|
1174
1066
|
type: Injectable
|
|
1175
1067
|
}] });
|
|
1176
1068
|
|
|
1069
|
+
//#region ---- Imports ----
|
|
1070
|
+
/**
|
|
1071
|
+
* Injection token for widget definition providers.
|
|
1072
|
+
* Modules register their widget providers using this token (multi: true).
|
|
1073
|
+
*/
|
|
1074
|
+
const AXP_WIDGET_DEFINITION_PROVIDER = new InjectionToken('AXP_WIDGET_DEFINITION_PROVIDER', {
|
|
1075
|
+
factory: () => [],
|
|
1076
|
+
});
|
|
1077
|
+
//#endregion
|
|
1078
|
+
|
|
1079
|
+
//#region ---- Build widget map (shared with tooling / snapshot scripts) ----
|
|
1080
|
+
//TODO RECHECK THIS FUNCTION s.hosseini
|
|
1081
|
+
/**
|
|
1082
|
+
* Merges core + extended widgets the same way as AXPWidgetRegistryService.ensureBuilt().
|
|
1083
|
+
* Use with concrete providers (e.g. AXPCoreWidgetsProvider, AXPEntityWidgetsProvider) in Node scripts without DI.
|
|
1084
|
+
*/
|
|
1085
|
+
function buildWidgetRegistryMapFromProviders(providers) {
|
|
1086
|
+
const types = new Map();
|
|
1087
|
+
const AXPExtendedWidgets = [];
|
|
1088
|
+
for (const provider of providers) {
|
|
1089
|
+
const widgets = provider.getWidgets?.() ?? [];
|
|
1090
|
+
for (const w of widgets) {
|
|
1091
|
+
types.set(w.name, w);
|
|
1092
|
+
}
|
|
1093
|
+
const extended = provider.getExtendedWidgets?.() ?? [];
|
|
1094
|
+
AXPExtendedWidgets.push(...extended);
|
|
1095
|
+
}
|
|
1096
|
+
for (const { parentName, widget } of AXPExtendedWidgets) {
|
|
1097
|
+
const parent = types.get(parentName);
|
|
1098
|
+
if (parent) {
|
|
1099
|
+
const merged = merge({}, parent, widget);
|
|
1100
|
+
merged.name = widget.name;
|
|
1101
|
+
types.set(merged.name, merged);
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
return types;
|
|
1105
|
+
}
|
|
1106
|
+
//#endregion
|
|
1107
|
+
//#region ---- Widget Registry Service (Token-Based) ----
|
|
1108
|
+
/**
|
|
1109
|
+
* Aggregates widgets from all AXP_WIDGET_DEFINITION_PROVIDER instances.
|
|
1110
|
+
* Token-based like AXP_MENU_PROVIDER / AXP_PERMISSION_DEFINITION_PROVIDER / AXP_SETTING_DEFINITION_PROVIDER.
|
|
1111
|
+
* No separate registry - widgets come solely from providers.
|
|
1112
|
+
*/
|
|
1177
1113
|
class AXPWidgetRegistryService {
|
|
1178
|
-
/**
|
|
1179
|
-
*
|
|
1180
|
-
*/
|
|
1181
1114
|
constructor() {
|
|
1182
|
-
this.
|
|
1183
|
-
|
|
1184
|
-
}
|
|
1185
|
-
register(widget) {
|
|
1186
|
-
this.types.set(widget.name, widget);
|
|
1115
|
+
this._providers = inject(AXP_WIDGET_DEFINITION_PROVIDER, { optional: true }) ?? [];
|
|
1116
|
+
this._types = null;
|
|
1187
1117
|
}
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
this.
|
|
1118
|
+
/**
|
|
1119
|
+
* Lazy-build widget map from all providers.
|
|
1120
|
+
*/
|
|
1121
|
+
ensureBuilt() {
|
|
1122
|
+
if (this._types)
|
|
1123
|
+
return this._types;
|
|
1124
|
+
this._types = buildWidgetRegistryMapFromProviders(this._providers);
|
|
1125
|
+
return this._types;
|
|
1193
1126
|
}
|
|
1194
1127
|
resolve(name) {
|
|
1195
|
-
const widget = this.
|
|
1128
|
+
const widget = this.ensureBuilt().get(name);
|
|
1196
1129
|
if (!widget) {
|
|
1197
1130
|
throw new Error(`Widget with name "${name}" does not exist.`);
|
|
1198
1131
|
}
|
|
1199
1132
|
return widget;
|
|
1200
1133
|
}
|
|
1134
|
+
/**
|
|
1135
|
+
* Registered widget config when present; otherwise `undefined`. Does not throw — use when
|
|
1136
|
+
* {@link resolve}'s value may be a non-widget id (e.g. data-source row id in dynamic field configurator).
|
|
1137
|
+
*/
|
|
1138
|
+
getOptional(name) {
|
|
1139
|
+
return this.ensureBuilt().get(name);
|
|
1140
|
+
}
|
|
1201
1141
|
all() {
|
|
1202
|
-
return Array.from(this.
|
|
1142
|
+
return Array.from(this.ensureBuilt().values());
|
|
1203
1143
|
}
|
|
1204
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1205
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1145
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }
|
|
1206
1146
|
}
|
|
1207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{
|
|
1208
1148
|
type: Injectable,
|
|
1209
1149
|
args: [{
|
|
1210
1150
|
providedIn: 'root',
|
|
1211
1151
|
}]
|
|
1212
|
-
}]
|
|
1152
|
+
}] });
|
|
1213
1153
|
|
|
1214
1154
|
class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
1215
1155
|
constructor() {
|
|
@@ -1217,13 +1157,16 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1217
1157
|
this.widgetRegistery = inject(AXPWidgetRegistryService);
|
|
1218
1158
|
this.grid = inject(AXBaseDataTable);
|
|
1219
1159
|
this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
|
|
1220
|
-
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : []));
|
|
1221
|
-
this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: "loadingRow" }] : []));
|
|
1160
|
+
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
|
|
1161
|
+
this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: "loadingRow" }] : /* istanbul ignore next */ []));
|
|
1222
1162
|
this.rowInjectorsCache = new Map();
|
|
1223
1163
|
this.hasExpressions = false;
|
|
1224
1164
|
this.pendingEvaluations = new Set();
|
|
1225
1165
|
this.changeDetectionScheduled = false;
|
|
1226
1166
|
this.MAX_CACHE_SIZE = 1000; // Limit cache size to prevent memory leaks
|
|
1167
|
+
/** When true, header click cycles sort (handled by parent; synced with list sort state). */
|
|
1168
|
+
this.sortEnabled = false;
|
|
1169
|
+
this.sortToggle = new EventEmitter();
|
|
1227
1170
|
this.injector = inject(Injector);
|
|
1228
1171
|
this.cdr = inject(ChangeDetectorRef);
|
|
1229
1172
|
}
|
|
@@ -1239,6 +1182,19 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1239
1182
|
get renderCellTemplate() {
|
|
1240
1183
|
return this.cellTemplate ?? this._contentCellTemplate;
|
|
1241
1184
|
}
|
|
1185
|
+
/**
|
|
1186
|
+
* True when the row should show the expand icon: either hasChild is true (from server/initial load)
|
|
1187
|
+
* or the row has loaded children (e.g. after refreshItemChildren when children go from 0 to 1).
|
|
1188
|
+
*/
|
|
1189
|
+
hasExpandableRow(row) {
|
|
1190
|
+
const data = row?.data;
|
|
1191
|
+
if (!data)
|
|
1192
|
+
return false;
|
|
1193
|
+
if (data['hasChild'] === true)
|
|
1194
|
+
return true;
|
|
1195
|
+
const children = data['__meta__']?.['children'];
|
|
1196
|
+
return Array.isArray(children) && children.length > 0;
|
|
1197
|
+
}
|
|
1242
1198
|
async handleExpandRow(row) {
|
|
1243
1199
|
this.loadingRow.set(row);
|
|
1244
1200
|
await this.grid.expandRow(row);
|
|
@@ -1250,6 +1206,73 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1250
1206
|
get renderHeaderTemplate() {
|
|
1251
1207
|
return this.headerTemplate ?? this._contentHeaderTemplate;
|
|
1252
1208
|
}
|
|
1209
|
+
//#region ---- Column alignment (header / cell) ----
|
|
1210
|
+
/**
|
|
1211
|
+
* Resolves `options.align`: string applies to header and cell; object uses optional `header` / `cell` (default start).
|
|
1212
|
+
* Supports designer select values `{ id: 'center' }`.
|
|
1213
|
+
*/
|
|
1214
|
+
getHeaderTextAlign() {
|
|
1215
|
+
return this.resolveAlignForSide('header');
|
|
1216
|
+
}
|
|
1217
|
+
getHeaderJustifyContent() {
|
|
1218
|
+
const align = this.getHeaderTextAlign();
|
|
1219
|
+
if (align === 'center') {
|
|
1220
|
+
return 'center';
|
|
1221
|
+
}
|
|
1222
|
+
if (align === 'end') {
|
|
1223
|
+
return 'flex-end';
|
|
1224
|
+
}
|
|
1225
|
+
return 'flex-start';
|
|
1226
|
+
}
|
|
1227
|
+
onHeaderClick(event) {
|
|
1228
|
+
if (!this.sortEnabled) {
|
|
1229
|
+
return;
|
|
1230
|
+
}
|
|
1231
|
+
event.stopPropagation();
|
|
1232
|
+
this.sortToggle.emit(event);
|
|
1233
|
+
}
|
|
1234
|
+
/**
|
|
1235
|
+
* When true, the cell body uses flex so `justify-content` can place content on the main axis.
|
|
1236
|
+
*/
|
|
1237
|
+
getCellUseFlexLayout() {
|
|
1238
|
+
return !!this.expandHandler || this.resolveAlignForSide('cell') !== 'start';
|
|
1239
|
+
}
|
|
1240
|
+
/**
|
|
1241
|
+
* Flex `justify-content` for the cell wrapper; omit when not using flex layout.
|
|
1242
|
+
*/
|
|
1243
|
+
getCellJustifyContent() {
|
|
1244
|
+
if (!this.getCellUseFlexLayout()) {
|
|
1245
|
+
return null;
|
|
1246
|
+
}
|
|
1247
|
+
return this.resolveAlignForSide('cell');
|
|
1248
|
+
}
|
|
1249
|
+
resolveAlignForSide(side) {
|
|
1250
|
+
const align = this.mergedOptions().align;
|
|
1251
|
+
if (align == null || align === '') {
|
|
1252
|
+
return 'start';
|
|
1253
|
+
}
|
|
1254
|
+
if (typeof align === 'string') {
|
|
1255
|
+
return this.normalizeColumnAlignment(align);
|
|
1256
|
+
}
|
|
1257
|
+
if (typeof align === 'object' && !Array.isArray(align)) {
|
|
1258
|
+
const raw = side === 'header' ? align.header : align.cell;
|
|
1259
|
+
return this.normalizeColumnAlignment(raw);
|
|
1260
|
+
}
|
|
1261
|
+
return 'start';
|
|
1262
|
+
}
|
|
1263
|
+
normalizeColumnAlignment(value) {
|
|
1264
|
+
if (value === 'center' || value === 'end' || value === 'start') {
|
|
1265
|
+
return value;
|
|
1266
|
+
}
|
|
1267
|
+
if (value && typeof value === 'object' && 'id' in value) {
|
|
1268
|
+
const id = value.id;
|
|
1269
|
+
if (id === 'center' || id === 'end' || id === 'start') {
|
|
1270
|
+
return id;
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
return 'start';
|
|
1274
|
+
}
|
|
1275
|
+
//#endregion
|
|
1253
1276
|
get loadingEnabled() {
|
|
1254
1277
|
return true;
|
|
1255
1278
|
}
|
|
@@ -1274,6 +1297,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1274
1297
|
const tokenValue = {
|
|
1275
1298
|
path: this.node.path,
|
|
1276
1299
|
options: this.mergedOptions(),
|
|
1300
|
+
caption: this.caption,
|
|
1277
1301
|
};
|
|
1278
1302
|
this.widgetInjector = Injector.create({
|
|
1279
1303
|
parent: this.injector,
|
|
@@ -1286,8 +1310,14 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1286
1310
|
});
|
|
1287
1311
|
this.width = this.mergedOptions().width === 'auto' ? 'auto' : this.customWidth ? this.customWidth : (this.mergedOptions().width ?? '200px');
|
|
1288
1312
|
this.allowResizing = this.mergedOptions().allowResizing || true;
|
|
1313
|
+
this.allowSorting = this.sortEnabled;
|
|
1289
1314
|
this.cdr.detectChanges();
|
|
1290
1315
|
}
|
|
1316
|
+
ngOnChanges() {
|
|
1317
|
+
this.allowSorting = this.sortEnabled;
|
|
1318
|
+
this.sortOrder = this.headerSortDirection;
|
|
1319
|
+
this.sortIndex = this.headerSortPriority;
|
|
1320
|
+
}
|
|
1291
1321
|
//#region ---- Performance Optimization Methods ----
|
|
1292
1322
|
/**
|
|
1293
1323
|
* Check if options contain any expressions that need evaluation
|
|
@@ -1372,6 +1402,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1372
1402
|
const tokenValue = {
|
|
1373
1403
|
path: this.node.path,
|
|
1374
1404
|
options: this.mergedOptions(),
|
|
1405
|
+
caption: this.caption,
|
|
1375
1406
|
};
|
|
1376
1407
|
rowInjector = Injector.create({
|
|
1377
1408
|
parent: this.injector,
|
|
@@ -1404,6 +1435,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1404
1435
|
const tokenValue = {
|
|
1405
1436
|
path: this.node.path,
|
|
1406
1437
|
options: evaluatedOptions,
|
|
1438
|
+
caption: this.caption,
|
|
1407
1439
|
};
|
|
1408
1440
|
const newInjector = Injector.create({
|
|
1409
1441
|
parent: this.injector,
|
|
@@ -1430,6 +1462,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1430
1462
|
const tokenValue = {
|
|
1431
1463
|
path: this.node.path,
|
|
1432
1464
|
options: this.mergedOptions(),
|
|
1465
|
+
caption: this.caption,
|
|
1433
1466
|
};
|
|
1434
1467
|
rowInjector = Injector.create({
|
|
1435
1468
|
parent: this.injector,
|
|
@@ -1446,19 +1479,49 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1446
1479
|
}
|
|
1447
1480
|
return rowInjector;
|
|
1448
1481
|
}
|
|
1449
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1450
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1482
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1483
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: "axp-widget-column-renderer", inputs: { caption: "caption", customExpandIcon: "customExpandIcon", customCollapseIcon: "customCollapseIcon", customWidth: "customWidth", node: "node", footerTemplate: "footerTemplate", expandHandler: "expandHandler", sortEnabled: "sortEnabled", headerSortDirection: "headerSortDirection", headerSortPriority: "headerSortPriority", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, outputs: { sortToggle: "sortToggle" }, providers: [
|
|
1451
1484
|
AXPWidgetCoreService,
|
|
1452
1485
|
{ provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },
|
|
1453
|
-
], 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: `
|
|
1454
|
-
<ng-template #header>
|
|
1486
|
+
], 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, usesOnChanges: true, ngImport: i0, template: `
|
|
1487
|
+
<ng-template #header>
|
|
1488
|
+
<div
|
|
1489
|
+
class="axp-widget-column-header ax-w-full ax-flex ax-items-center ax-gap-1 ax-select-none"
|
|
1490
|
+
[class.axp-widget-column-header--sortable]="sortEnabled"
|
|
1491
|
+
[style.justify-content]="getHeaderJustifyContent()"
|
|
1492
|
+
(click)="onHeaderClick($event)"
|
|
1493
|
+
>
|
|
1494
|
+
<span class="axp-widget-column-header__caption ax-truncate">{{ caption | translate | async }}</span>
|
|
1495
|
+
@if (sortEnabled) {
|
|
1496
|
+
<span class="axp-widget-column-header__sort ax-flex ax-items-center ax-gap-0.5 ax-shrink-0">
|
|
1497
|
+
@if (headerSortPriority !== undefined && headerSortPriority > 1) {
|
|
1498
|
+
<span class="axp-widget-column-header__sort-priority ax-text-xs ax-opacity-70">{{ headerSortPriority }}</span>
|
|
1499
|
+
}
|
|
1500
|
+
<i
|
|
1501
|
+
class="fa-solid fa-arrow-up-long ax-text-neutral-400"
|
|
1502
|
+
[class.ax-text-primary]="headerSortDirection === 'asc'"
|
|
1503
|
+
></i>
|
|
1504
|
+
<i
|
|
1505
|
+
class="fa-solid fa-arrow-down-long ax-text-neutral-400"
|
|
1506
|
+
[class.ax-text-primary]="headerSortDirection === 'desc'"
|
|
1507
|
+
></i>
|
|
1508
|
+
</span>
|
|
1509
|
+
}
|
|
1510
|
+
</div>
|
|
1511
|
+
</ng-template>
|
|
1455
1512
|
<ng-template #cell let-row>
|
|
1456
|
-
<div
|
|
1513
|
+
<div
|
|
1514
|
+
class="ax-w-full"
|
|
1515
|
+
[class.ax-flex]="getCellUseFlexLayout()"
|
|
1516
|
+
[class.ax-gap-2]="expandHandler"
|
|
1517
|
+
[class.ax-items-center]="getCellUseFlexLayout()"
|
|
1518
|
+
[style.justify-content]="getCellJustifyContent()"
|
|
1519
|
+
>
|
|
1457
1520
|
@if (expandHandler) {
|
|
1458
1521
|
<div
|
|
1459
1522
|
(click)="handleExpandRow(row)"
|
|
1460
1523
|
class="ax-expand-handler"
|
|
1461
|
-
[class.ax-invisible]="row
|
|
1524
|
+
[class.ax-invisible]="!hasExpandableRow(row)"
|
|
1462
1525
|
id="ax-expand-handler-container"
|
|
1463
1526
|
[style.padding-inline-start.rem]="row.data?.__meta__?.level * 2"
|
|
1464
1527
|
>
|
|
@@ -1481,21 +1544,49 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1481
1544
|
</div>
|
|
1482
1545
|
</ng-template>
|
|
1483
1546
|
<ng-template #footer></ng-template>
|
|
1484
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"
|
|
1547
|
+
`, isInline: true, styles: [".axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__sort-priority{line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1485
1548
|
}
|
|
1486
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1549
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{
|
|
1487
1550
|
type: Component,
|
|
1488
|
-
args: [{
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1551
|
+
args: [{ selector: 'axp-widget-column-renderer', template: `
|
|
1552
|
+
<ng-template #header>
|
|
1553
|
+
<div
|
|
1554
|
+
class="axp-widget-column-header ax-w-full ax-flex ax-items-center ax-gap-1 ax-select-none"
|
|
1555
|
+
[class.axp-widget-column-header--sortable]="sortEnabled"
|
|
1556
|
+
[style.justify-content]="getHeaderJustifyContent()"
|
|
1557
|
+
(click)="onHeaderClick($event)"
|
|
1558
|
+
>
|
|
1559
|
+
<span class="axp-widget-column-header__caption ax-truncate">{{ caption | translate | async }}</span>
|
|
1560
|
+
@if (sortEnabled) {
|
|
1561
|
+
<span class="axp-widget-column-header__sort ax-flex ax-items-center ax-gap-0.5 ax-shrink-0">
|
|
1562
|
+
@if (headerSortPriority !== undefined && headerSortPriority > 1) {
|
|
1563
|
+
<span class="axp-widget-column-header__sort-priority ax-text-xs ax-opacity-70">{{ headerSortPriority }}</span>
|
|
1564
|
+
}
|
|
1565
|
+
<i
|
|
1566
|
+
class="fa-solid fa-arrow-up-long ax-text-neutral-400"
|
|
1567
|
+
[class.ax-text-primary]="headerSortDirection === 'asc'"
|
|
1568
|
+
></i>
|
|
1569
|
+
<i
|
|
1570
|
+
class="fa-solid fa-arrow-down-long ax-text-neutral-400"
|
|
1571
|
+
[class.ax-text-primary]="headerSortDirection === 'desc'"
|
|
1572
|
+
></i>
|
|
1573
|
+
</span>
|
|
1574
|
+
}
|
|
1575
|
+
</div>
|
|
1576
|
+
</ng-template>
|
|
1492
1577
|
<ng-template #cell let-row>
|
|
1493
|
-
<div
|
|
1578
|
+
<div
|
|
1579
|
+
class="ax-w-full"
|
|
1580
|
+
[class.ax-flex]="getCellUseFlexLayout()"
|
|
1581
|
+
[class.ax-gap-2]="expandHandler"
|
|
1582
|
+
[class.ax-items-center]="getCellUseFlexLayout()"
|
|
1583
|
+
[style.justify-content]="getCellJustifyContent()"
|
|
1584
|
+
>
|
|
1494
1585
|
@if (expandHandler) {
|
|
1495
1586
|
<div
|
|
1496
1587
|
(click)="handleExpandRow(row)"
|
|
1497
1588
|
class="ax-expand-handler"
|
|
1498
|
-
[class.ax-invisible]="row
|
|
1589
|
+
[class.ax-invisible]="!hasExpandableRow(row)"
|
|
1499
1590
|
id="ax-expand-handler-container"
|
|
1500
1591
|
[style.padding-inline-start.rem]="row.data?.__meta__?.level * 2"
|
|
1501
1592
|
>
|
|
@@ -1518,15 +1609,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1518
1609
|
</div>
|
|
1519
1610
|
</ng-template>
|
|
1520
1611
|
<ng-template #footer></ng-template>
|
|
1521
|
-
`,
|
|
1522
|
-
providers: [
|
|
1612
|
+
`, providers: [
|
|
1523
1613
|
AXPWidgetCoreService,
|
|
1524
1614
|
{ provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },
|
|
1525
|
-
],
|
|
1526
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1527
|
-
inputs: ['caption'],
|
|
1528
|
-
standalone: false,
|
|
1529
|
-
}]
|
|
1615
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['caption'], standalone: false, styles: [".axp-widget-column-header--sortable{cursor:pointer}.axp-widget-column-header__caption{min-width:0}.axp-widget-column-header__sort{opacity:0;transition:opacity .15s ease}.axp-widget-column-header--sortable:hover .axp-widget-column-header__sort,.axp-widget-column-header--sortable:focus-within .axp-widget-column-header__sort{opacity:1}.axp-widget-column-header__sort-priority{line-height:1}:host-context(.ax-data-table-head-cell.ax-interactive:hover) .axp-widget-column-header__sort,:host-context(.ax-data-table-head-cell.ax-interactive:focus-within) .axp-widget-column-header__sort{opacity:1}\n"] }]
|
|
1530
1616
|
}], propDecorators: { customExpandIcon: [{
|
|
1531
1617
|
type: Input
|
|
1532
1618
|
}], customCollapseIcon: [{
|
|
@@ -1543,6 +1629,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1543
1629
|
args: ['footer']
|
|
1544
1630
|
}], expandHandler: [{
|
|
1545
1631
|
type: Input
|
|
1632
|
+
}], sortEnabled: [{
|
|
1633
|
+
type: Input
|
|
1634
|
+
}], headerSortDirection: [{
|
|
1635
|
+
type: Input
|
|
1636
|
+
}], headerSortPriority: [{
|
|
1637
|
+
type: Input
|
|
1638
|
+
}], sortToggle: [{
|
|
1639
|
+
type: Output
|
|
1546
1640
|
}], cellTemplate: [{
|
|
1547
1641
|
type: Input
|
|
1548
1642
|
}], _contentCellTemplate: [{
|
|
@@ -1563,15 +1657,15 @@ class AXPWidgetContainerComponent {
|
|
|
1563
1657
|
this.builderService.setFunctions(v);
|
|
1564
1658
|
}
|
|
1565
1659
|
constructor() {
|
|
1566
|
-
this.contextService = inject(
|
|
1660
|
+
this.contextService = inject(AXPContextStore);
|
|
1567
1661
|
this.builderService = inject(AXPWidgetCoreService);
|
|
1568
1662
|
this.onContextChanged = new EventEmitter();
|
|
1569
1663
|
this.status = computed(() => {
|
|
1570
1664
|
return this.builderService.status();
|
|
1571
|
-
}, ...(ngDevMode ? [{ debugName: "status" }] : []));
|
|
1665
|
+
}, ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
1572
1666
|
this.isBusy = computed(() => {
|
|
1573
1667
|
return this.builderService.isBusy();
|
|
1574
|
-
}, ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
|
|
1668
|
+
}, ...(ngDevMode ? [{ debugName: "isBusy" }] : /* istanbul ignore next */ []));
|
|
1575
1669
|
effect(() => {
|
|
1576
1670
|
if (this.contextService.isChanged()) {
|
|
1577
1671
|
this.onContextChanged.emit(this.contextService.changeEvent());
|
|
@@ -1584,17 +1678,17 @@ class AXPWidgetContainerComponent {
|
|
|
1584
1678
|
find(name) {
|
|
1585
1679
|
return this.builderService.waitForWidget(name);
|
|
1586
1680
|
}
|
|
1587
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1588
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1681
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1682
|
+
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 }); }
|
|
1589
1683
|
}
|
|
1590
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1684
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{
|
|
1591
1685
|
type: Component,
|
|
1592
1686
|
args: [{
|
|
1593
1687
|
selector: 'axp-widgets-container',
|
|
1594
1688
|
template: `<ng-content></ng-content>`,
|
|
1595
1689
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1596
1690
|
host: { style: 'display: contents;' },
|
|
1597
|
-
providers: [AXPWidgetCoreService,
|
|
1691
|
+
providers: [AXPWidgetCoreService, AXPContextStore],
|
|
1598
1692
|
standalone: false,
|
|
1599
1693
|
}]
|
|
1600
1694
|
}], ctorParameters: () => [], propDecorators: { onContextChanged: [{
|
|
@@ -1606,12 +1700,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1606
1700
|
}] } });
|
|
1607
1701
|
|
|
1608
1702
|
class AXPWidgetPlaceholderComponent {
|
|
1609
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1610
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1703
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1704
|
+
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>
|
|
1611
1705
|
<ax-skeleton class="ax-w-full ax-h-10 ax-rounded-md"></ax-skeleton>
|
|
1612
1706
|
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1$1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1613
1707
|
}
|
|
1614
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1708
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{
|
|
1615
1709
|
type: Component,
|
|
1616
1710
|
args: [{
|
|
1617
1711
|
selector: 'axp-widget-placeholder',
|
|
@@ -1628,11 +1722,11 @@ class AXPWidgetRendererDirective {
|
|
|
1628
1722
|
//#endregion
|
|
1629
1723
|
//#endregion
|
|
1630
1724
|
constructor() {
|
|
1631
|
-
this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : []));
|
|
1632
|
-
this.index = input(...(ngDevMode ? [undefined, { debugName: "index" }] : []));
|
|
1633
|
-
this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
1634
|
-
this.node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
|
|
1635
|
-
this._options = signal({}, ...(ngDevMode ? [{ debugName: "_options" }] : []));
|
|
1725
|
+
this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : /* istanbul ignore next */ []));
|
|
1726
|
+
this.index = input(...(ngDevMode ? [undefined, { debugName: "index" }] : /* istanbul ignore next */ []));
|
|
1727
|
+
this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
1728
|
+
this.node = input.required(...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
|
|
1729
|
+
this._options = signal({}, ...(ngDevMode ? [{ debugName: "_options" }] : /* istanbul ignore next */ []));
|
|
1636
1730
|
this.options = this._options.asReadonly();
|
|
1637
1731
|
this.onOptionsChanged = output();
|
|
1638
1732
|
this.onValueChanged = output();
|
|
@@ -1641,22 +1735,22 @@ class AXPWidgetRendererDirective {
|
|
|
1641
1735
|
/**
|
|
1642
1736
|
* Signal that emits the component reference when it's ready
|
|
1643
1737
|
*/
|
|
1644
|
-
this._componentRefSignal = signal(null, ...(ngDevMode ? [{ debugName: "_componentRefSignal" }] : []));
|
|
1738
|
+
this._componentRefSignal = signal(null, ...(ngDevMode ? [{ debugName: "_componentRefSignal" }] : /* istanbul ignore next */ []));
|
|
1645
1739
|
this.componentRefSignal = this._componentRefSignal.asReadonly();
|
|
1646
1740
|
//#endregion
|
|
1647
1741
|
//#region ---- Properties ----
|
|
1648
|
-
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : []));
|
|
1742
|
+
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
|
|
1649
1743
|
this.injector = inject(Injector);
|
|
1650
1744
|
this.builderService = inject(AXPWidgetCoreService);
|
|
1651
|
-
this.contextService = inject(
|
|
1745
|
+
this.contextService = inject(AXPContextStore);
|
|
1652
1746
|
this.widgetRegistery = inject(AXPWidgetRegistryService);
|
|
1653
1747
|
this.unsubscriber = inject(AXUnsubscriber);
|
|
1654
1748
|
this.translateService = inject(AXTranslationService);
|
|
1655
1749
|
this.widgetService = inject(AXPWidgetRegistryService);
|
|
1656
1750
|
this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
|
|
1657
1751
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
1658
|
-
this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
|
|
1659
|
-
this.isVisible = signal(true, ...(ngDevMode ? [{ debugName: "isVisible" }] : []));
|
|
1752
|
+
this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
1753
|
+
this.isVisible = signal(true, ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
1660
1754
|
this.expressionEvaluators = new Map();
|
|
1661
1755
|
this.renderTimeoutId = null;
|
|
1662
1756
|
this.hasInitialRender = false;
|
|
@@ -1703,12 +1797,12 @@ class AXPWidgetRendererDirective {
|
|
|
1703
1797
|
await this.updateOptionsBasedOnContext();
|
|
1704
1798
|
this.applyOptions();
|
|
1705
1799
|
}
|
|
1706
|
-
await this.updateVisibility();
|
|
1707
1800
|
}
|
|
1708
1801
|
else if (changed.path && this.isRelevantContextChange(changed.path)) {
|
|
1709
1802
|
// console.log(`🎯 [${this.node().type}] Context change detected: ${changed.path}`);
|
|
1710
1803
|
this.queueContextUpdate(changed.path);
|
|
1711
1804
|
}
|
|
1805
|
+
await this.updateVisibility();
|
|
1712
1806
|
});
|
|
1713
1807
|
this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {
|
|
1714
1808
|
await this.processBatchedUpdates();
|
|
@@ -1834,77 +1928,88 @@ class AXPWidgetRendererDirective {
|
|
|
1834
1928
|
}
|
|
1835
1929
|
return false;
|
|
1836
1930
|
}
|
|
1931
|
+
/**
|
|
1932
|
+
* True when a context store path used in an expression (`context.eval`, `context.options`) is
|
|
1933
|
+
* affected by `changedPath`.
|
|
1934
|
+
*/
|
|
1935
|
+
contextStorePathDependsOnChangedPath(evalPath, changedPath) {
|
|
1936
|
+
const normalizePath = (p) => {
|
|
1937
|
+
if (!p)
|
|
1938
|
+
return p;
|
|
1939
|
+
const parts = p.split('.');
|
|
1940
|
+
const last = parts[parts.length - 1];
|
|
1941
|
+
if (last && last.endsWith('Id')) {
|
|
1942
|
+
parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');
|
|
1943
|
+
}
|
|
1944
|
+
return parts.join('.');
|
|
1945
|
+
};
|
|
1946
|
+
const isSegmentSuffix = (a, b) => {
|
|
1947
|
+
if (!a || !b)
|
|
1948
|
+
return false;
|
|
1949
|
+
const pa = a.split('.');
|
|
1950
|
+
const pb = b.split('.');
|
|
1951
|
+
if (pb.length > pa.length)
|
|
1952
|
+
return false;
|
|
1953
|
+
for (let i = 1; i <= pb.length; i++) {
|
|
1954
|
+
if (pa[pa.length - i] !== pb[pb.length - i])
|
|
1955
|
+
return false;
|
|
1956
|
+
}
|
|
1957
|
+
return true;
|
|
1958
|
+
};
|
|
1959
|
+
const evalNorm = normalizePath(evalPath);
|
|
1960
|
+
const changedNorm = normalizePath(changedPath);
|
|
1961
|
+
const rawMatch = evalPath === changedPath ||
|
|
1962
|
+
evalPath.startsWith(changedPath + '.') ||
|
|
1963
|
+
changedPath.startsWith(evalPath + '.') ||
|
|
1964
|
+
isSegmentSuffix(evalPath, changedPath) ||
|
|
1965
|
+
isSegmentSuffix(changedPath, evalPath);
|
|
1966
|
+
const normMatch = evalNorm === changedNorm ||
|
|
1967
|
+
evalNorm.startsWith(changedNorm + '.') ||
|
|
1968
|
+
changedNorm.startsWith(evalNorm + '.') ||
|
|
1969
|
+
isSegmentSuffix(evalNorm, changedNorm) ||
|
|
1970
|
+
isSegmentSuffix(changedNorm, evalNorm);
|
|
1971
|
+
if (rawMatch || normMatch) {
|
|
1972
|
+
return true;
|
|
1973
|
+
}
|
|
1974
|
+
return this.isPathAlias(evalPath, changedPath);
|
|
1975
|
+
}
|
|
1976
|
+
/**
|
|
1977
|
+
* Whether an expression template string reads context store paths affected by `changedPath`.
|
|
1978
|
+
*/
|
|
1979
|
+
expressionTextDependsOnContextPath(expressionValue, changedPath) {
|
|
1980
|
+
const contextEvalRegex = /context\.eval\(['"]([^'\"]+)['"]\)/g;
|
|
1981
|
+
let match;
|
|
1982
|
+
while ((match = contextEvalRegex.exec(expressionValue)) !== null) {
|
|
1983
|
+
if (this.contextStorePathDependsOnChangedPath(match[1], changedPath)) {
|
|
1984
|
+
return true;
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
const contextOptionsQuoted = /context\.options\(\s*['"]([^'"]*)['"]\s*\)/g;
|
|
1988
|
+
while ((match = contextOptionsQuoted.exec(expressionValue)) !== null) {
|
|
1989
|
+
const sub = match[1];
|
|
1990
|
+
const evalPath = sub === '' ? 'options' : `options.${sub}`;
|
|
1991
|
+
if (this.contextStorePathDependsOnChangedPath(evalPath, changedPath)) {
|
|
1992
|
+
return true;
|
|
1993
|
+
}
|
|
1994
|
+
}
|
|
1995
|
+
const contextOptionsEmpty = /context\.options\(\s*\)/g;
|
|
1996
|
+
while ((match = contextOptionsEmpty.exec(expressionValue)) !== null) {
|
|
1997
|
+
if (this.contextStorePathDependsOnChangedPath('options', changedPath)) {
|
|
1998
|
+
return true;
|
|
1999
|
+
}
|
|
2000
|
+
}
|
|
2001
|
+
return false;
|
|
2002
|
+
}
|
|
1837
2003
|
hasExpressionDependency(changedPath) {
|
|
1838
|
-
// Check if any cached expressions depend on the changed path
|
|
1839
2004
|
for (const [path, evaluator] of this.expressionEvaluators) {
|
|
1840
|
-
// Check if the expression path itself contains the changed path
|
|
1841
2005
|
if (path.includes(changedPath)) {
|
|
1842
2006
|
return true;
|
|
1843
2007
|
}
|
|
1844
|
-
// Parse the actual expression content to check for context.eval() calls
|
|
1845
|
-
// We need to get the original expression string to analyze it
|
|
1846
2008
|
const node = this.node();
|
|
1847
2009
|
const expressionValue = this.getExpressionValueFromNode(node, path);
|
|
1848
2010
|
if (expressionValue && typeof expressionValue === 'string') {
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
let match;
|
|
1852
|
-
while ((match = contextEvalRegex.exec(expressionValue)) !== null) {
|
|
1853
|
-
const evalPath = match[1];
|
|
1854
|
-
// Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'person.typeId' -> 'person.type.id')
|
|
1855
|
-
const normalizePath = (p) => {
|
|
1856
|
-
if (!p)
|
|
1857
|
-
return p;
|
|
1858
|
-
const parts = p.split('.');
|
|
1859
|
-
const last = parts[parts.length - 1];
|
|
1860
|
-
if (last && last.endsWith('Id')) {
|
|
1861
|
-
parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');
|
|
1862
|
-
}
|
|
1863
|
-
return parts.join('.');
|
|
1864
|
-
};
|
|
1865
|
-
const isSegmentSuffix = (a, b) => {
|
|
1866
|
-
if (!a || !b)
|
|
1867
|
-
return false;
|
|
1868
|
-
const pa = a.split('.');
|
|
1869
|
-
const pb = b.split('.');
|
|
1870
|
-
if (pb.length > pa.length)
|
|
1871
|
-
return false;
|
|
1872
|
-
for (let i = 1; i <= pb.length; i++) {
|
|
1873
|
-
if (pa[pa.length - i] !== pb[pb.length - i])
|
|
1874
|
-
return false;
|
|
1875
|
-
}
|
|
1876
|
-
return true;
|
|
1877
|
-
};
|
|
1878
|
-
const evalNorm = normalizePath(evalPath);
|
|
1879
|
-
const changedNorm = normalizePath(changedPath);
|
|
1880
|
-
// Debug log for dependency check
|
|
1881
|
-
// console.log(
|
|
1882
|
-
// `🧭 [${this.node().type}] dep-check expr='${path}', changed='${changedPath}', eval='${evalPath}', evalNorm='${evalNorm}', changedNorm='${changedNorm}'`,
|
|
1883
|
-
// );
|
|
1884
|
-
// Generic direct and hierarchical dependency checks (raw and normalized)
|
|
1885
|
-
const rawMatch = evalPath === changedPath ||
|
|
1886
|
-
evalPath.startsWith(changedPath + '.') ||
|
|
1887
|
-
changedPath.startsWith(evalPath + '.') ||
|
|
1888
|
-
isSegmentSuffix(evalPath, changedPath) ||
|
|
1889
|
-
isSegmentSuffix(changedPath, evalPath);
|
|
1890
|
-
const normMatch = evalNorm === changedNorm ||
|
|
1891
|
-
evalNorm.startsWith(changedNorm + '.') ||
|
|
1892
|
-
changedNorm.startsWith(evalNorm + '.') ||
|
|
1893
|
-
isSegmentSuffix(evalNorm, changedNorm) ||
|
|
1894
|
-
isSegmentSuffix(changedNorm, evalNorm);
|
|
1895
|
-
if (rawMatch || normMatch) {
|
|
1896
|
-
// console.log(
|
|
1897
|
-
// `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (generic match)`,
|
|
1898
|
-
// );
|
|
1899
|
-
return true;
|
|
1900
|
-
}
|
|
1901
|
-
// Check for path aliases/mappings (e.g., typeId.id <-> type.id)
|
|
1902
|
-
if (this.isPathAlias(evalPath, changedPath)) {
|
|
1903
|
-
// console.log(
|
|
1904
|
-
// `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (path alias)`,
|
|
1905
|
-
// );
|
|
1906
|
-
return true;
|
|
1907
|
-
}
|
|
2011
|
+
if (this.expressionTextDependsOnContextPath(expressionValue, changedPath)) {
|
|
2012
|
+
return true;
|
|
1908
2013
|
}
|
|
1909
2014
|
}
|
|
1910
2015
|
}
|
|
@@ -1991,20 +2096,8 @@ class AXPWidgetRendererDirective {
|
|
|
1991
2096
|
const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;
|
|
1992
2097
|
if (!visibility || typeof visibility !== 'string')
|
|
1993
2098
|
return false;
|
|
1994
|
-
// Check if visibility expression depends on the changed path
|
|
1995
2099
|
if (this.expressionEvaluator.isExpression(visibility)) {
|
|
1996
|
-
|
|
1997
|
-
const contextEvalRegex = /context\.eval\(['"]([^'\"]+)['"]\)/g;
|
|
1998
|
-
let match;
|
|
1999
|
-
while ((match = contextEvalRegex.exec(visibility)) !== null) {
|
|
2000
|
-
const evalPath = match[1];
|
|
2001
|
-
// Check for direct or hierarchical dependency
|
|
2002
|
-
if (evalPath === changedPath ||
|
|
2003
|
-
evalPath.startsWith(changedPath + '.') ||
|
|
2004
|
-
changedPath.startsWith(evalPath + '.')) {
|
|
2005
|
-
return true;
|
|
2006
|
-
}
|
|
2007
|
-
}
|
|
2100
|
+
return this.expressionTextDependsOnContextPath(visibility, changedPath);
|
|
2008
2101
|
}
|
|
2009
2102
|
return false;
|
|
2010
2103
|
}
|
|
@@ -2285,8 +2378,13 @@ class AXPWidgetRendererDirective {
|
|
|
2285
2378
|
const newValue = await evaluator();
|
|
2286
2379
|
const evalTime = performance.now() - evalStartTime;
|
|
2287
2380
|
// Check if result has actually changed using Lodash isEqual
|
|
2381
|
+
// Important: We must check if the key exists in the map, not just compare values
|
|
2382
|
+
// This handles the case where the expression evaluates to `undefined` for the first time
|
|
2383
|
+
// Without this check, `undefined` would be incorrectly treated as "no change"
|
|
2384
|
+
// because Map.get() returns `undefined` for non-existent keys
|
|
2385
|
+
const hasLastValue = this.lastExpressionResults.has(path);
|
|
2288
2386
|
const lastValue = this.lastExpressionResults.get(path);
|
|
2289
|
-
const hasChanged = !isEqual(newValue, lastValue);
|
|
2387
|
+
const hasChanged = !hasLastValue || !isEqual(newValue, lastValue);
|
|
2290
2388
|
if (hasChanged) {
|
|
2291
2389
|
// console.log(
|
|
2292
2390
|
// `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value changed`,
|
|
@@ -2365,7 +2463,8 @@ class AXPWidgetRendererDirective {
|
|
|
2365
2463
|
if (!this.isVisible()) {
|
|
2366
2464
|
this.isVisible.set(true);
|
|
2367
2465
|
if (this.componentRef && this.componentRef.location) {
|
|
2368
|
-
this.
|
|
2466
|
+
this.loadComponent();
|
|
2467
|
+
// this.componentRef.location.nativeElement.style.display = '';
|
|
2369
2468
|
}
|
|
2370
2469
|
}
|
|
2371
2470
|
}
|
|
@@ -2373,7 +2472,8 @@ class AXPWidgetRendererDirective {
|
|
|
2373
2472
|
if (this.isVisible()) {
|
|
2374
2473
|
this.isVisible.set(false);
|
|
2375
2474
|
if (this.componentRef && this.componentRef.location) {
|
|
2376
|
-
this.componentRef.
|
|
2475
|
+
this.componentRef.destroy();
|
|
2476
|
+
// this.componentRef.location.nativeElement.style.display = 'none';
|
|
2377
2477
|
}
|
|
2378
2478
|
}
|
|
2379
2479
|
}
|
|
@@ -2413,34 +2513,46 @@ class AXPWidgetRendererDirective {
|
|
|
2413
2513
|
isDirty: () => {
|
|
2414
2514
|
return this.contextService.isDirty();
|
|
2415
2515
|
},
|
|
2516
|
+
/**
|
|
2517
|
+
* Host/widget-under-edit `options` from the shared context store (same values as
|
|
2518
|
+
* `context.eval('options' + (path ? '.' + path : ''))`), not `widget.options` on the nested
|
|
2519
|
+
* property field instance. Uses one `getValue` so smart-path behavior matches `context.eval`.
|
|
2520
|
+
*/
|
|
2521
|
+
options: (path) => {
|
|
2522
|
+
if (path == null || path === '') {
|
|
2523
|
+
return this.contextService.getValue('options');
|
|
2524
|
+
}
|
|
2525
|
+
return this.contextService.getValue(`options.${path}`);
|
|
2526
|
+
},
|
|
2416
2527
|
};
|
|
2417
2528
|
}
|
|
2418
2529
|
getEventScope() {
|
|
2419
2530
|
return {
|
|
2420
|
-
context: (
|
|
2531
|
+
context: (...paths) => {
|
|
2421
2532
|
return this.onContextChanged.pipe(filter((c) => {
|
|
2422
|
-
|
|
2423
|
-
|
|
2533
|
+
const activePaths = paths.filter((p) => !!p && p.trim().length > 0);
|
|
2534
|
+
// If no path filters specified, pass all events
|
|
2535
|
+
if (activePaths.length === 0) {
|
|
2424
2536
|
return true;
|
|
2425
2537
|
}
|
|
2426
2538
|
// Ensure c.path exists
|
|
2427
2539
|
if (!c.path) {
|
|
2428
2540
|
return false;
|
|
2429
2541
|
}
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2542
|
+
return activePaths.some((path) => {
|
|
2543
|
+
// Pattern: "prefix*" - matches paths that start with prefix
|
|
2544
|
+
if (path.endsWith('*')) {
|
|
2545
|
+
const prefix = path.substring(0, path.length - 1);
|
|
2546
|
+
return c.path.startsWith(prefix);
|
|
2547
|
+
}
|
|
2548
|
+
// Pattern: "*suffix" - matches paths that end with suffix
|
|
2549
|
+
if (path.startsWith('*')) {
|
|
2550
|
+
const suffix = path.substring(1);
|
|
2551
|
+
return c.path.endsWith(suffix);
|
|
2552
|
+
}
|
|
2553
|
+
// Exact match
|
|
2442
2554
|
return c.path === path;
|
|
2443
|
-
}
|
|
2555
|
+
});
|
|
2444
2556
|
}));
|
|
2445
2557
|
},
|
|
2446
2558
|
from: (event) => get(this.instance.api(), event),
|
|
@@ -2451,6 +2563,16 @@ class AXPWidgetRendererDirective {
|
|
|
2451
2563
|
}
|
|
2452
2564
|
getWidgetScope() {
|
|
2453
2565
|
return {
|
|
2566
|
+
/** Resolved options for this renderer's widget instance (not the host / property-viewer target). */
|
|
2567
|
+
options: (path) => {
|
|
2568
|
+
const opts = this.instance && typeof this.instance.options === 'function'
|
|
2569
|
+
? this.instance.options()
|
|
2570
|
+
: this.mergedOptions();
|
|
2571
|
+
if (path == null || path === '') {
|
|
2572
|
+
return opts;
|
|
2573
|
+
}
|
|
2574
|
+
return getSmart(opts, path);
|
|
2575
|
+
},
|
|
2454
2576
|
call: (name, ...args) => {
|
|
2455
2577
|
this.instance.call(name, ...args);
|
|
2456
2578
|
},
|
|
@@ -2471,7 +2593,7 @@ class AXPWidgetRendererDirective {
|
|
|
2471
2593
|
}
|
|
2472
2594
|
},
|
|
2473
2595
|
output: (name) => {
|
|
2474
|
-
this.instance.output(name);
|
|
2596
|
+
return this.instance.output(name);
|
|
2475
2597
|
},
|
|
2476
2598
|
find: (id) => {
|
|
2477
2599
|
return this.builderService.getWidget(id);
|
|
@@ -2556,14 +2678,14 @@ class AXPWidgetRendererDirective {
|
|
|
2556
2678
|
// console.error('Error evaluating action expression:', templateExpression, error);
|
|
2557
2679
|
}
|
|
2558
2680
|
}
|
|
2559
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2560
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
2681
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2682
|
+
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: [
|
|
2561
2683
|
{
|
|
2562
2684
|
provide: AXUnsubscriber,
|
|
2563
2685
|
},
|
|
2564
2686
|
], exportAs: ["widgetRenderer"], usesOnChanges: true, ngImport: i0 }); }
|
|
2565
2687
|
}
|
|
2566
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2688
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{
|
|
2567
2689
|
type: Directive,
|
|
2568
2690
|
args: [{
|
|
2569
2691
|
selector: '[axp-widget-renderer]',
|
|
@@ -2579,63 +2701,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2579
2701
|
|
|
2580
2702
|
const COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];
|
|
2581
2703
|
class AXPWidgetCoreModule {
|
|
2582
|
-
static
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
providers: [
|
|
2586
|
-
{
|
|
2587
|
-
provide: 'AXPWidgetCoreModuleFactory',
|
|
2588
|
-
useFactory: (registry) => async () => {
|
|
2589
|
-
await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);
|
|
2590
|
-
await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);
|
|
2591
|
-
},
|
|
2592
|
-
deps: [AXPWidgetRegistryService],
|
|
2593
|
-
multi: true,
|
|
2594
|
-
},
|
|
2595
|
-
],
|
|
2596
|
-
};
|
|
2597
|
-
}
|
|
2598
|
-
static forChild(config) {
|
|
2599
|
-
return {
|
|
2600
|
-
ngModule: AXPWidgetCoreModule,
|
|
2601
|
-
providers: [
|
|
2602
|
-
{
|
|
2603
|
-
provide: 'AXPWidgetCoreModuleFactory',
|
|
2604
|
-
useFactory: (registry) => async () => {
|
|
2605
|
-
await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);
|
|
2606
|
-
await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);
|
|
2607
|
-
},
|
|
2608
|
-
deps: [AXPWidgetRegistryService],
|
|
2609
|
-
multi: true,
|
|
2610
|
-
},
|
|
2611
|
-
],
|
|
2612
|
-
};
|
|
2613
|
-
}
|
|
2614
|
-
/**
|
|
2615
|
-
* @ignore
|
|
2616
|
-
*/
|
|
2617
|
-
constructor(instances) {
|
|
2618
|
-
instances?.forEach((f) => {
|
|
2619
|
-
f();
|
|
2620
|
-
});
|
|
2621
|
-
}
|
|
2622
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetCoreModule, deps: [{ token: 'AXPWidgetCoreModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2623
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetCoreModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }
|
|
2624
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule] }); }
|
|
2704
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2705
|
+
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] }); }
|
|
2706
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule] }); }
|
|
2625
2707
|
}
|
|
2626
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2708
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetCoreModule, decorators: [{
|
|
2627
2709
|
type: NgModule,
|
|
2628
2710
|
args: [{
|
|
2629
|
-
imports: [CommonModule, PortalModule, AXSkeletonModule,
|
|
2711
|
+
imports: [CommonModule, PortalModule, AXSkeletonModule, AXTranslationModule],
|
|
2630
2712
|
exports: [...COMPONENTS],
|
|
2631
2713
|
declarations: [...COMPONENTS],
|
|
2714
|
+
providers: [],
|
|
2632
2715
|
}]
|
|
2633
|
-
}]
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2716
|
+
}] });
|
|
2717
|
+
|
|
2718
|
+
//#endregion
|
|
2719
|
+
//#region ---- Mapping ----
|
|
2720
|
+
/**
|
|
2721
|
+
* Converts a domain {@link AXPProperty} into a {@link AXPWidgetProperty} row for
|
|
2722
|
+
* the layout property viewer (`AXPPropertyViewerService` and `buildPropertyViewerTabsFromProperties`).
|
|
2723
|
+
*/
|
|
2724
|
+
function mapAXPPropertyToWidgetProperty(property, options) {
|
|
2725
|
+
const { group, order, valuePathPrefix, resolveTitle, resolveDescription } = options;
|
|
2726
|
+
const path = valuePathPrefix ? `${valuePathPrefix}.${property.name}` : property.name;
|
|
2727
|
+
const iface = property.interface;
|
|
2728
|
+
const widgetType = iface?.type ?? 'text-editor';
|
|
2729
|
+
const description = resolveDescription?.(property);
|
|
2730
|
+
return {
|
|
2731
|
+
name: property.name,
|
|
2732
|
+
title: resolveTitle(property),
|
|
2733
|
+
...(description !== undefined && description !== '' ? { description } : {}),
|
|
2734
|
+
group,
|
|
2735
|
+
order,
|
|
2736
|
+
schema: {
|
|
2737
|
+
dataType: property.dataType,
|
|
2738
|
+
interface: {
|
|
2739
|
+
path,
|
|
2740
|
+
name: property.name,
|
|
2741
|
+
type: widgetType,
|
|
2742
|
+
options: iface?.options ?? {},
|
|
2743
|
+
...(iface?.triggers ? { triggers: iface.triggers } : {}),
|
|
2744
|
+
},
|
|
2745
|
+
},
|
|
2746
|
+
validations: property.validations,
|
|
2747
|
+
visible: true,
|
|
2748
|
+
};
|
|
2749
|
+
}
|
|
2750
|
+
//#endregion
|
|
2639
2751
|
|
|
2640
2752
|
class AXPPropertyEditorHelper {
|
|
2641
2753
|
static expandShorthand(values) {
|
|
@@ -2919,48 +3031,1539 @@ class AXPWidgetSerializationHelper {
|
|
|
2919
3031
|
}
|
|
2920
3032
|
//#endregion
|
|
2921
3033
|
|
|
3034
|
+
//#region ---- Editor sub-categories (widget picker) ----
|
|
3035
|
+
const AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS = {
|
|
3036
|
+
name: 'editor-text-inputs',
|
|
3037
|
+
order: 1,
|
|
3038
|
+
title: '@platform-layout-widgets:subcategories.editor-text-inputs.title',
|
|
3039
|
+
};
|
|
3040
|
+
const AXP_WIDGETS_EDITOR_SUB_NUMERIC = {
|
|
3041
|
+
name: 'editor-numeric',
|
|
3042
|
+
order: 2,
|
|
3043
|
+
title: '@platform-layout-widgets:subcategories.editor-numeric.title',
|
|
3044
|
+
};
|
|
3045
|
+
const AXP_WIDGETS_EDITOR_SUB_DATETIME = {
|
|
3046
|
+
name: 'editor-datetime',
|
|
3047
|
+
order: 3,
|
|
3048
|
+
title: '@platform-layout-widgets:subcategories.editor-datetime.title',
|
|
3049
|
+
};
|
|
3050
|
+
const AXP_WIDGETS_EDITOR_SUB_CHOICE = {
|
|
3051
|
+
name: 'editor-choice',
|
|
3052
|
+
order: 4,
|
|
3053
|
+
title: '@platform-layout-widgets:subcategories.editor-choice.title',
|
|
3054
|
+
};
|
|
3055
|
+
const AXP_WIDGETS_EDITOR_SUB_RICH = {
|
|
3056
|
+
name: 'editor-rich',
|
|
3057
|
+
order: 5,
|
|
3058
|
+
title: '@platform-layout-widgets:subcategories.editor-rich.title',
|
|
3059
|
+
};
|
|
3060
|
+
const AXP_WIDGETS_EDITOR_SUB_VISUAL = {
|
|
3061
|
+
name: 'editor-visual',
|
|
3062
|
+
order: 6,
|
|
3063
|
+
title: '@platform-layout-widgets:subcategories.editor-visual.title',
|
|
3064
|
+
};
|
|
3065
|
+
const AXP_WIDGETS_EDITOR_SUB_COMPOSITE = {
|
|
3066
|
+
name: 'editor-composite',
|
|
3067
|
+
order: 7,
|
|
3068
|
+
title: '@platform-layout-widgets:subcategories.editor-composite.title',
|
|
3069
|
+
};
|
|
3070
|
+
const AXP_WIDGETS_EDITOR_SUB_CONFIG = {
|
|
3071
|
+
name: 'editor-config',
|
|
3072
|
+
order: 8,
|
|
3073
|
+
title: '@platform-layout-widgets:subcategories.editor-config.title',
|
|
3074
|
+
};
|
|
3075
|
+
//#endregion
|
|
3076
|
+
//#region ---- Layout sub-categories (widget picker) ----
|
|
3077
|
+
const AXP_WIDGETS_LAYOUT_SUB_SHELL = {
|
|
3078
|
+
name: 'layout-shell',
|
|
3079
|
+
order: 1,
|
|
3080
|
+
title: '@platform-layout-widgets:subcategories.layout-shell.title',
|
|
3081
|
+
};
|
|
3082
|
+
const AXP_WIDGETS_LAYOUT_SUB_GRID = {
|
|
3083
|
+
name: 'layout-grid',
|
|
3084
|
+
order: 2,
|
|
3085
|
+
title: '@platform-layout-widgets:subcategories.layout-grid.title',
|
|
3086
|
+
};
|
|
3087
|
+
const AXP_WIDGETS_LAYOUT_SUB_SURFACES = {
|
|
3088
|
+
name: 'layout-surfaces',
|
|
3089
|
+
order: 3,
|
|
3090
|
+
title: '@platform-layout-widgets:subcategories.layout-surfaces.title',
|
|
3091
|
+
};
|
|
3092
|
+
const AXP_WIDGETS_LAYOUT_SUB_TABS = {
|
|
3093
|
+
name: 'layout-tabs',
|
|
3094
|
+
order: 4,
|
|
3095
|
+
title: '@platform-layout-widgets:subcategories.layout-tabs.title',
|
|
3096
|
+
};
|
|
3097
|
+
const AXP_WIDGETS_LAYOUT_SUB_LISTS = {
|
|
3098
|
+
name: 'layout-lists',
|
|
3099
|
+
order: 5,
|
|
3100
|
+
title: '@platform-layout-widgets:subcategories.layout-lists.title',
|
|
3101
|
+
};
|
|
3102
|
+
const AXP_WIDGETS_LAYOUT_SUB_UTILITY = {
|
|
3103
|
+
name: 'layout-utility',
|
|
3104
|
+
order: 6,
|
|
3105
|
+
title: '@platform-layout-widgets:subcategories.layout-utility.title',
|
|
3106
|
+
};
|
|
3107
|
+
//#endregion
|
|
3108
|
+
//#region ---- Action sub-categories (widget picker) ----
|
|
3109
|
+
const AXP_WIDGETS_ACTION_SUB_CONTROLS = {
|
|
3110
|
+
name: 'action-controls',
|
|
3111
|
+
order: 1,
|
|
3112
|
+
title: '@platform-layout-widgets:subcategories.action-controls.title',
|
|
3113
|
+
};
|
|
3114
|
+
//#endregion
|
|
3115
|
+
//#region ---- Advance sub-categories (widget picker) ----
|
|
3116
|
+
const AXP_WIDGETS_ADVANCE_SUB_MEDIA = {
|
|
3117
|
+
name: 'advance-media',
|
|
3118
|
+
order: 1,
|
|
3119
|
+
title: '@platform-layout-widgets:subcategories.advance-media.title',
|
|
3120
|
+
};
|
|
3121
|
+
const AXP_WIDGETS_ADVANCE_SUB_INPUT = {
|
|
3122
|
+
name: 'advance-input',
|
|
3123
|
+
order: 2,
|
|
3124
|
+
title: '@platform-layout-widgets:subcategories.advance-input.title',
|
|
3125
|
+
};
|
|
3126
|
+
const AXP_WIDGETS_ADVANCE_SUB_DATA = {
|
|
3127
|
+
name: 'advance-data',
|
|
3128
|
+
order: 3,
|
|
3129
|
+
title: '@platform-layout-widgets:subcategories.advance-data.title',
|
|
3130
|
+
};
|
|
3131
|
+
const AXP_WIDGETS_ADVANCE_SUB_TOOLS = {
|
|
3132
|
+
name: 'advance-tools',
|
|
3133
|
+
order: 4,
|
|
3134
|
+
title: '@platform-layout-widgets:subcategories.advance-tools.title',
|
|
3135
|
+
};
|
|
3136
|
+
//#endregion
|
|
3137
|
+
/** Normalizes widget categories to an array for iteration and serialization. */
|
|
3138
|
+
function normalizeWidgetCategories(categories) {
|
|
3139
|
+
if (categories == null) {
|
|
3140
|
+
return [];
|
|
3141
|
+
}
|
|
3142
|
+
return Array.isArray(categories) ? categories : [categories];
|
|
3143
|
+
}
|
|
2922
3144
|
const AXP_WIDGETS_LAYOUT_CATEGORY = {
|
|
2923
3145
|
name: 'layout',
|
|
2924
3146
|
order: 1,
|
|
2925
|
-
title: '
|
|
3147
|
+
title: '@platform-layout-widgets:categories.layout.title',
|
|
2926
3148
|
};
|
|
2927
3149
|
const AXP_WIDGETS_EDITOR_CATEGORY = {
|
|
2928
3150
|
name: 'editor',
|
|
2929
3151
|
order: 2,
|
|
2930
|
-
title: '
|
|
3152
|
+
title: '@platform-layout-widgets:categories.editor.title',
|
|
2931
3153
|
};
|
|
2932
3154
|
const AXP_WIDGETS_ACTION_CATEGORY = {
|
|
2933
3155
|
name: 'action',
|
|
2934
3156
|
order: 3,
|
|
2935
|
-
title: '
|
|
3157
|
+
title: '@platform-layout-widgets:categories.action.title',
|
|
2936
3158
|
};
|
|
2937
3159
|
const AXP_WIDGETS_ADVANCE_CATEGORY = {
|
|
2938
3160
|
name: 'advance',
|
|
2939
3161
|
order: 4,
|
|
2940
|
-
title: '
|
|
3162
|
+
title: '@platform-layout-widgets:categories.advance.title',
|
|
3163
|
+
};
|
|
3164
|
+
/** AI category tab in the widget picker (metadata); unrelated to Widgets:GetForAI listing scope. */
|
|
3165
|
+
const AXP_WIDGETS_AI_CATEGORY = {
|
|
3166
|
+
name: 'ai',
|
|
3167
|
+
order: 5,
|
|
3168
|
+
title: '@platform-layout-widgets:categories.ai.title',
|
|
2941
3169
|
};
|
|
2942
3170
|
const AXP_WIDGETS_CATEGORIES = [
|
|
2943
3171
|
AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
2944
3172
|
AXP_WIDGETS_EDITOR_CATEGORY,
|
|
2945
3173
|
AXP_WIDGETS_ACTION_CATEGORY,
|
|
2946
3174
|
AXP_WIDGETS_ADVANCE_CATEGORY,
|
|
3175
|
+
AXP_WIDGETS_AI_CATEGORY,
|
|
2947
3176
|
];
|
|
2948
3177
|
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
3178
|
+
/**
|
|
3179
|
+
* Standalone cell renderer using the same column-mode widget pipeline as {@link AXPWidgetColumnRendererComponent}.
|
|
3180
|
+
*/
|
|
3181
|
+
class AXPWidgetColumnCellComponent {
|
|
3182
|
+
constructor() {
|
|
3183
|
+
this.caption = '';
|
|
3184
|
+
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
|
|
3185
|
+
this.rowInjectorsCache = new Map();
|
|
3186
|
+
this.hasExpressions = false;
|
|
3187
|
+
this.pendingEvaluations = new Set();
|
|
3188
|
+
this.changeDetectionScheduled = false;
|
|
3189
|
+
this.injector = inject(Injector);
|
|
3190
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
3191
|
+
this.widgetRegistry = inject(AXPWidgetRegistryService);
|
|
3192
|
+
this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
|
|
3193
|
+
}
|
|
3194
|
+
async ngOnInit() {
|
|
3195
|
+
await this.resolveComponent();
|
|
3196
|
+
}
|
|
3197
|
+
ngOnChanges(changes) {
|
|
3198
|
+
if (changes['node'] && !changes['node'].firstChange) {
|
|
3199
|
+
void this.resolveComponent();
|
|
3200
|
+
}
|
|
3201
|
+
if (changes['rowData'] && !changes['rowData'].firstChange) {
|
|
3202
|
+
this.rowInjectorsCache.clear();
|
|
3203
|
+
this.cdr.markForCheck();
|
|
3204
|
+
}
|
|
3205
|
+
}
|
|
3206
|
+
getInputs(data) {
|
|
3207
|
+
return {
|
|
3208
|
+
rawValue: get(data, this.node.path),
|
|
3209
|
+
rowData: data,
|
|
3210
|
+
};
|
|
3211
|
+
}
|
|
3212
|
+
getRowInjector(data) {
|
|
3213
|
+
const cacheKey = this.getCacheKey(data);
|
|
3214
|
+
let rowInjector = this.rowInjectorsCache.get(cacheKey);
|
|
3215
|
+
if (!rowInjector) {
|
|
3216
|
+
if (!this.hasExpressions) {
|
|
3217
|
+
rowInjector = this.createRowInjector(this.mergedOptions());
|
|
3218
|
+
this.rowInjectorsCache.set(cacheKey, rowInjector);
|
|
3219
|
+
return rowInjector;
|
|
3220
|
+
}
|
|
3221
|
+
if (!this.pendingEvaluations.has(cacheKey)) {
|
|
3222
|
+
this.pendingEvaluations.add(cacheKey);
|
|
3223
|
+
const scope = {
|
|
3224
|
+
...(data ?? {}),
|
|
3225
|
+
context: {
|
|
3226
|
+
eval: (path) => getSmart(data, path),
|
|
3227
|
+
},
|
|
3228
|
+
};
|
|
3229
|
+
void this.expressionEvaluator.evaluate(this.mergedOptions(), scope).then((evaluatedOptions) => {
|
|
3230
|
+
const newInjector = this.createRowInjector(evaluatedOptions);
|
|
3231
|
+
this.rowInjectorsCache.delete(cacheKey);
|
|
3232
|
+
this.rowInjectorsCache.set(cacheKey, newInjector);
|
|
3233
|
+
this.pendingEvaluations.delete(cacheKey);
|
|
3234
|
+
this.scheduleChangeDetection();
|
|
3235
|
+
}).catch(() => {
|
|
3236
|
+
this.pendingEvaluations.delete(cacheKey);
|
|
3237
|
+
});
|
|
3238
|
+
}
|
|
3239
|
+
rowInjector = this.createRowInjector(this.mergedOptions());
|
|
3240
|
+
this.rowInjectorsCache.set(cacheKey, rowInjector);
|
|
3241
|
+
}
|
|
3242
|
+
return rowInjector;
|
|
3243
|
+
}
|
|
3244
|
+
async resolveComponent() {
|
|
3245
|
+
const widget = this.widgetRegistry.resolve(this.node.type);
|
|
3246
|
+
const mode = 'column';
|
|
3247
|
+
this.component = await widget?.components[mode]?.component();
|
|
3248
|
+
const props = widget?.components[mode]?.properties
|
|
3249
|
+
?.filter((c) => c.schema.defaultValue)
|
|
3250
|
+
.map((c) => ({ [c.name]: c.schema.defaultValue }))
|
|
3251
|
+
.reduce((acc, curr) => ({ ...acc, ...curr }), {});
|
|
3252
|
+
this.mergedOptions.set(merge(props, this.node.options) || {});
|
|
3253
|
+
this.hasExpressions = this.checkForExpressions(this.mergedOptions());
|
|
3254
|
+
this.rowInjectorsCache.clear();
|
|
3255
|
+
this.cdr.markForCheck();
|
|
3256
|
+
}
|
|
3257
|
+
createRowInjector(options) {
|
|
3258
|
+
return Injector.create({
|
|
3259
|
+
parent: this.injector,
|
|
3260
|
+
providers: [
|
|
3261
|
+
{
|
|
3262
|
+
provide: AXP_WIDGET_COLUMN_TOKEN,
|
|
3263
|
+
useValue: {
|
|
3264
|
+
path: this.node.path,
|
|
3265
|
+
options,
|
|
3266
|
+
caption: this.caption,
|
|
3267
|
+
},
|
|
3268
|
+
},
|
|
3269
|
+
],
|
|
3270
|
+
});
|
|
3271
|
+
}
|
|
3272
|
+
getCacheKey(data) {
|
|
3273
|
+
const id = data['id'];
|
|
3274
|
+
if (id != null) {
|
|
3275
|
+
return `row-${String(id)}`;
|
|
3276
|
+
}
|
|
3277
|
+
return `row-${Object.keys(data).length}`;
|
|
3278
|
+
}
|
|
3279
|
+
checkForExpressions(obj) {
|
|
3280
|
+
if (typeof obj === 'string') {
|
|
3281
|
+
return this.expressionEvaluator.isExpression(obj);
|
|
3282
|
+
}
|
|
3283
|
+
if (Array.isArray(obj)) {
|
|
3284
|
+
return obj.some((item) => this.checkForExpressions(item));
|
|
3285
|
+
}
|
|
3286
|
+
if (obj && typeof obj === 'object') {
|
|
3287
|
+
return Object.values(obj).some((value) => this.checkForExpressions(value));
|
|
3288
|
+
}
|
|
3289
|
+
return false;
|
|
3290
|
+
}
|
|
3291
|
+
scheduleChangeDetection() {
|
|
3292
|
+
if (this.changeDetectionScheduled) {
|
|
3293
|
+
return;
|
|
3294
|
+
}
|
|
3295
|
+
this.changeDetectionScheduled = true;
|
|
3296
|
+
requestAnimationFrame(() => {
|
|
3297
|
+
this.cdr.markForCheck();
|
|
3298
|
+
this.changeDetectionScheduled = false;
|
|
3299
|
+
});
|
|
3300
|
+
}
|
|
3301
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3302
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPWidgetColumnCellComponent, isStandalone: true, selector: "axp-widget-column-cell", inputs: { node: "node", rowData: "rowData", caption: "caption" }, usesOnChanges: true, ngImport: i0, template: `
|
|
3303
|
+
@if (component && rowData) {
|
|
3304
|
+
<ng-container
|
|
3305
|
+
*ngComponentOutlet="component; injector: getRowInjector(rowData); inputs: getInputs(rowData)"
|
|
3306
|
+
></ng-container>
|
|
3307
|
+
}
|
|
3308
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3309
|
+
}
|
|
3310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetColumnCellComponent, decorators: [{
|
|
3311
|
+
type: Component,
|
|
3312
|
+
args: [{
|
|
3313
|
+
selector: 'axp-widget-column-cell',
|
|
3314
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3315
|
+
imports: [NgComponentOutlet],
|
|
3316
|
+
template: `
|
|
3317
|
+
@if (component && rowData) {
|
|
3318
|
+
<ng-container
|
|
3319
|
+
*ngComponentOutlet="component; injector: getRowInjector(rowData); inputs: getInputs(rowData)"
|
|
3320
|
+
></ng-container>
|
|
3321
|
+
}
|
|
3322
|
+
`,
|
|
3323
|
+
}]
|
|
3324
|
+
}], propDecorators: { node: [{
|
|
3325
|
+
type: Input,
|
|
3326
|
+
args: [{ required: true }]
|
|
3327
|
+
}], rowData: [{
|
|
3328
|
+
type: Input,
|
|
3329
|
+
args: [{ required: true }]
|
|
3330
|
+
}], caption: [{
|
|
3331
|
+
type: Input
|
|
3332
|
+
}] } });
|
|
3333
|
+
|
|
3334
|
+
var AXPWidgetGroupEnum;
|
|
3335
|
+
(function (AXPWidgetGroupEnum) {
|
|
3336
|
+
AXPWidgetGroupEnum["FormElement"] = "form-element";
|
|
3337
|
+
AXPWidgetGroupEnum["DashboardWidget"] = "dashboard-widget";
|
|
3338
|
+
AXPWidgetGroupEnum["FormTemplate"] = "form-template";
|
|
3339
|
+
AXPWidgetGroupEnum["PropertyEditor"] = "property-editor";
|
|
3340
|
+
AXPWidgetGroupEnum["MetaData"] = "meta-data";
|
|
3341
|
+
AXPWidgetGroupEnum["SettingWidget"] = "setting-widget";
|
|
3342
|
+
AXPWidgetGroupEnum["EntityWidget"] = "entity-widget";
|
|
3343
|
+
AXPWidgetGroupEnum["UtilityWidget"] = "utility-widget";
|
|
3344
|
+
AXPWidgetGroupEnum["BaseWidget"] = "base-widget";
|
|
3345
|
+
})(AXPWidgetGroupEnum || (AXPWidgetGroupEnum = {}));
|
|
3346
|
+
|
|
3347
|
+
const AXP_STYLING_PROPERTY_GROUP = {
|
|
3348
|
+
name: 'styling',
|
|
3349
|
+
order: 1,
|
|
3350
|
+
title: 'Styling',
|
|
3351
|
+
};
|
|
3352
|
+
const AXP_DATA_PROPERTY_GROUP = {
|
|
3353
|
+
name: 'data',
|
|
3354
|
+
order: 7,
|
|
3355
|
+
title: 'Data',
|
|
3356
|
+
};
|
|
3357
|
+
const AXP_BEHAVIOR_PROPERTY_GROUP = {
|
|
3358
|
+
name: 'behavior',
|
|
3359
|
+
order: 2,
|
|
3360
|
+
title: 'Behavior',
|
|
3361
|
+
};
|
|
3362
|
+
const AXP_WIDGET_PROPERTY_GROUP = {
|
|
3363
|
+
name: 'widget',
|
|
3364
|
+
order: 0,
|
|
3365
|
+
title: 'Widget',
|
|
3366
|
+
};
|
|
3367
|
+
const AXP_VALIDATION_PROPERTY_GROUP = {
|
|
3368
|
+
name: 'validation',
|
|
3369
|
+
order: 4,
|
|
3370
|
+
title: 'Validation',
|
|
3371
|
+
};
|
|
3372
|
+
const AXP_APPEARANCE_PROPERTY_GROUP = {
|
|
3373
|
+
name: 'appearance',
|
|
3374
|
+
order: 2,
|
|
3375
|
+
title: 'Appearance',
|
|
3376
|
+
};
|
|
3377
|
+
const AXP_ANIMATION_PROPERTY_GROUP = {
|
|
3378
|
+
name: 'animation',
|
|
3379
|
+
order: 5,
|
|
3380
|
+
title: 'Animation',
|
|
3381
|
+
};
|
|
3382
|
+
const AXP_TRIGGERS_PROPERTY_GROUP = {
|
|
3383
|
+
name: 'triggers',
|
|
3384
|
+
order: 3,
|
|
3385
|
+
title: 'Triggers',
|
|
3386
|
+
};
|
|
3387
|
+
|
|
3388
|
+
/**
|
|
3389
|
+
* Single property that edits all data-source-related options (dataSource, valueField, textField, filters)
|
|
3390
|
+
* in one dedicated widget. Uses path: 'options' and setValue with merge (same pattern as flex-options).
|
|
3391
|
+
*/
|
|
3392
|
+
const AXP_DATA_SOURCE_OPTIONS_PROPERTY = {
|
|
3393
|
+
name: 'dataSourceOptions',
|
|
3394
|
+
title: 'Data Source',
|
|
3395
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3396
|
+
showLabel: false,
|
|
3397
|
+
schema: {
|
|
3398
|
+
dataType: 'object',
|
|
3399
|
+
interface: {
|
|
3400
|
+
name: 'dataSourceOptions',
|
|
3401
|
+
path: 'options',
|
|
3402
|
+
type: 'data-source-options',
|
|
3403
|
+
options: {},
|
|
3404
|
+
},
|
|
3405
|
+
},
|
|
3406
|
+
visible: true,
|
|
3407
|
+
};
|
|
3408
|
+
// export const AXP_DATA_SOURCE_PROPERTY: AXPWidgetProperty = {
|
|
3409
|
+
// name: 'dataSource',
|
|
3410
|
+
// title: 'Data Source',
|
|
3411
|
+
// group: AXP_DATA_PROPERTY_GROUP,
|
|
3412
|
+
// schema: {
|
|
3413
|
+
// dataType: 'object',
|
|
3414
|
+
// interface: {
|
|
3415
|
+
// name: 'dataSource',
|
|
3416
|
+
// path: 'options.dataSource',
|
|
3417
|
+
// type: AXPWidgetsCatalog.select,
|
|
3418
|
+
// valueTransforms: objectKeyValueTransforms('name'),
|
|
3419
|
+
// options: {
|
|
3420
|
+
// valueField: 'name',
|
|
3421
|
+
// textField: 'title',
|
|
3422
|
+
// dataSource: 'dataSources',
|
|
3423
|
+
// hasClearButton: true,
|
|
3424
|
+
// allowSearch: true,
|
|
3425
|
+
// },
|
|
3426
|
+
// },
|
|
3427
|
+
// },
|
|
3428
|
+
// visible: true,
|
|
3429
|
+
// };
|
|
3430
|
+
// export const AXP_DATA_SOURCE_VALUE_FIELD: AXPWidgetProperty = {
|
|
3431
|
+
// name: 'valueField',
|
|
3432
|
+
// title: 'Value Field',
|
|
3433
|
+
// group: AXP_DATA_PROPERTY_GROUP,
|
|
3434
|
+
// schema: {
|
|
3435
|
+
// dataType: 'string',
|
|
3436
|
+
// interface: {
|
|
3437
|
+
// name: 'valueField',
|
|
3438
|
+
// path: 'options.valueField',
|
|
3439
|
+
// type: AXPWidgetsCatalog.text,
|
|
3440
|
+
// options: {
|
|
3441
|
+
// hasClearButton: true,
|
|
3442
|
+
// },
|
|
3443
|
+
// triggers: [
|
|
3444
|
+
// {
|
|
3445
|
+
// event: `{{ events.context('options.dataSource') }}`,
|
|
3446
|
+
// action: `{{ context.set('options.valueField',widget.find('dataSource').output('item').valueField?.name); }}`,
|
|
3447
|
+
// },
|
|
3448
|
+
// ],
|
|
3449
|
+
// },
|
|
3450
|
+
// },
|
|
3451
|
+
// visible: true,
|
|
3452
|
+
// };
|
|
3453
|
+
// export const AXP_DATA_SOURCE_TEXT_FIELD: AXPWidgetProperty = {
|
|
3454
|
+
// name: 'textField',
|
|
3455
|
+
// title: 'Text Field',
|
|
3456
|
+
// group: AXP_DATA_PROPERTY_GROUP,
|
|
3457
|
+
// schema: {
|
|
3458
|
+
// dataType: 'string',
|
|
3459
|
+
// interface: {
|
|
3460
|
+
// name: 'textField',
|
|
3461
|
+
// path: 'options.textField',
|
|
3462
|
+
// type: AXPWidgetsCatalog.text,
|
|
3463
|
+
// options: {
|
|
3464
|
+
// hasClearButton: true,
|
|
3465
|
+
// },
|
|
3466
|
+
// triggers: [
|
|
3467
|
+
// {
|
|
3468
|
+
// event: `{{ events.context('options.dataSource') }}`,
|
|
3469
|
+
// action: `{{ context.set('options.textField',widget.find('dataSource').output('item').textField?.name); }}`,
|
|
3470
|
+
// },
|
|
3471
|
+
// ],
|
|
3472
|
+
// },
|
|
3473
|
+
// },
|
|
3474
|
+
// visible: true,
|
|
3475
|
+
// };
|
|
3476
|
+
// /** Use AXP_DATA_SOURCE_OPTIONS_PROPERTY for a single unified data-source editor, or the three below for separate fields. */
|
|
3477
|
+
// export const AXP_DATA_SOURCE_PROPERTIES = [
|
|
3478
|
+
// AXP_DATA_SOURCE_PROPERTY,
|
|
3479
|
+
// AXP_DATA_SOURCE_VALUE_FIELD,
|
|
3480
|
+
// AXP_DATA_SOURCE_TEXT_FIELD,
|
|
3481
|
+
// ];
|
|
3482
|
+
|
|
3483
|
+
const AXP_NAME_PROPERTY = createStringProperty({
|
|
3484
|
+
name: 'name',
|
|
3485
|
+
title: 'Name',
|
|
3486
|
+
group: AXP_WIDGET_PROPERTY_GROUP,
|
|
3487
|
+
});
|
|
3488
|
+
const AXP_THEME_PROPERTY = {
|
|
3489
|
+
name: 'theme',
|
|
3490
|
+
title: 'Theme',
|
|
3491
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3492
|
+
schema: {
|
|
3493
|
+
dataType: 'string',
|
|
3494
|
+
defaultValue: { id: 'default', title: 'Default' },
|
|
3495
|
+
interface: {
|
|
3496
|
+
name: 'theme',
|
|
3497
|
+
path: 'options.theme',
|
|
3498
|
+
type: AXPWidgetsCatalog.select,
|
|
3499
|
+
options: {
|
|
3500
|
+
dataSource: [
|
|
3501
|
+
{
|
|
3502
|
+
id: 'default',
|
|
3503
|
+
title: 'Default',
|
|
3504
|
+
},
|
|
3505
|
+
{
|
|
3506
|
+
id: 'light',
|
|
3507
|
+
title: 'Light',
|
|
3508
|
+
},
|
|
3509
|
+
{
|
|
3510
|
+
id: 'dark',
|
|
3511
|
+
title: 'Dark',
|
|
3512
|
+
},
|
|
3513
|
+
],
|
|
3514
|
+
},
|
|
3515
|
+
},
|
|
3516
|
+
},
|
|
3517
|
+
visible: true,
|
|
3518
|
+
};
|
|
3519
|
+
const AXP_DIRECTION_PROPERTY = {
|
|
3520
|
+
name: 'direction',
|
|
3521
|
+
title: 'Direction',
|
|
3522
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3523
|
+
schema: {
|
|
3524
|
+
dataType: 'string',
|
|
3525
|
+
defaultValue: { id: 'horizontal' },
|
|
3526
|
+
interface: {
|
|
3527
|
+
name: 'direction',
|
|
3528
|
+
path: 'options.direction',
|
|
3529
|
+
type: AXPWidgetsCatalog.select,
|
|
3530
|
+
options: {
|
|
3531
|
+
dataSource: [
|
|
3532
|
+
{
|
|
3533
|
+
id: 'horizontal',
|
|
3534
|
+
title: 'Horizontal',
|
|
3535
|
+
},
|
|
3536
|
+
{
|
|
3537
|
+
id: 'vertical',
|
|
3538
|
+
title: 'Vertical',
|
|
3539
|
+
},
|
|
3540
|
+
],
|
|
3541
|
+
},
|
|
3542
|
+
},
|
|
3543
|
+
},
|
|
3544
|
+
visible: true,
|
|
3545
|
+
};
|
|
3546
|
+
const AXP_COLOR_PROPERTY = {
|
|
3547
|
+
name: 'color',
|
|
3548
|
+
title: 'Color',
|
|
3549
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3550
|
+
schema: {
|
|
3551
|
+
dataType: 'string',
|
|
3552
|
+
interface: {
|
|
3553
|
+
path: 'options.color',
|
|
3554
|
+
options: {
|
|
3555
|
+
hasClearButton: true,
|
|
3556
|
+
},
|
|
3557
|
+
type: AXPWidgetsCatalog.color,
|
|
3558
|
+
},
|
|
3559
|
+
},
|
|
3560
|
+
visible: true,
|
|
3561
|
+
};
|
|
3562
|
+
const AXP_FONT_SIZE_PROPERTY = {
|
|
3563
|
+
name: 'fontSize',
|
|
3564
|
+
title: 'Font Size',
|
|
3565
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3566
|
+
schema: {
|
|
3567
|
+
dataType: 'string',
|
|
3568
|
+
defaultValue: '12px',
|
|
3569
|
+
interface: {
|
|
3570
|
+
name: 'fontSize',
|
|
3571
|
+
path: 'options.fontSize',
|
|
3572
|
+
type: AXPWidgetsCatalog.text,
|
|
3573
|
+
},
|
|
3574
|
+
},
|
|
3575
|
+
visible: true,
|
|
3576
|
+
};
|
|
3577
|
+
const AXP_BG_COLOR_PROPERTY = {
|
|
3578
|
+
name: 'backgroundColor',
|
|
3579
|
+
title: 'Background Color',
|
|
3580
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3581
|
+
schema: {
|
|
3582
|
+
dataType: 'string',
|
|
3583
|
+
interface: {
|
|
3584
|
+
path: 'options.backgroundColor',
|
|
3585
|
+
options: {
|
|
3586
|
+
hasClearButton: true,
|
|
3587
|
+
},
|
|
3588
|
+
type: AXPWidgetsCatalog.color,
|
|
3589
|
+
},
|
|
3590
|
+
},
|
|
3591
|
+
visible: true,
|
|
3592
|
+
};
|
|
3593
|
+
|
|
3594
|
+
const AXP_CONTENT_PROPERTY = createStringProperty({
|
|
3595
|
+
name: 'content',
|
|
3596
|
+
title: 'Content',
|
|
3597
|
+
path: 'options.content',
|
|
3598
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3599
|
+
});
|
|
3600
|
+
const AXP_PLACEHOLDER_PROPERTY = createStringProperty({
|
|
3601
|
+
name: 'placeholder',
|
|
3602
|
+
title: 'Placeholder',
|
|
3603
|
+
path: 'options.placeholder',
|
|
3604
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3605
|
+
});
|
|
3606
|
+
const AXP_DATA_PATH_PROPERTY = createStringProperty({
|
|
3607
|
+
name: 'path',
|
|
3608
|
+
title: 'Data Path',
|
|
3609
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3610
|
+
});
|
|
3611
|
+
const AXP_DISABLED_PROPERTY = createBooleanProperty({
|
|
3612
|
+
name: 'disabled',
|
|
3613
|
+
title: 'Disabled',
|
|
3614
|
+
path: 'options.disabled',
|
|
3615
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3616
|
+
});
|
|
3617
|
+
const AXP_READONLY_PROPERTY = createBooleanProperty({
|
|
3618
|
+
name: 'readonly',
|
|
3619
|
+
title: 'Readonly',
|
|
3620
|
+
path: 'options.readonly',
|
|
3621
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3622
|
+
});
|
|
3623
|
+
const AXP_ALLOW_MULTIPLE_PROPERTY = createBooleanProperty({
|
|
3624
|
+
name: 'multiple',
|
|
3625
|
+
title: 'Multiple',
|
|
3626
|
+
path: 'options.multiple',
|
|
3627
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3628
|
+
});
|
|
3629
|
+
const AXP_ALLOW_CLEAR_PROPERTY = createBooleanProperty({
|
|
3630
|
+
name: 'allowClear',
|
|
3631
|
+
title: 'Allow Clear',
|
|
3632
|
+
path: 'options.allowClear',
|
|
3633
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3634
|
+
});
|
|
3635
|
+
const AXP_HAS_LABEL_PROPERTY = createBooleanProperty({
|
|
3636
|
+
name: 'hasLabel',
|
|
3637
|
+
title: 'Label',
|
|
3638
|
+
path: 'options.hasLabel',
|
|
3639
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3640
|
+
defaultValue: true,
|
|
3641
|
+
});
|
|
3642
|
+
const AXP_HAS_ICON_PROPERTY = createBooleanProperty({
|
|
3643
|
+
name: 'hasIcon',
|
|
3644
|
+
title: 'Icon',
|
|
3645
|
+
path: 'options.hasIcon',
|
|
3646
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3647
|
+
defaultValue: true,
|
|
3648
|
+
});
|
|
3649
|
+
const AXP_ICON_PROPERTY = createStringProperty({
|
|
3650
|
+
name: 'icon',
|
|
3651
|
+
title: 'Icon Name',
|
|
3652
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3653
|
+
path: 'options.icon',
|
|
3654
|
+
});
|
|
3655
|
+
const AXP_IS_LOADING_PROPERTY = createBooleanProperty({
|
|
3656
|
+
name: 'loading',
|
|
3657
|
+
title: 'Is Loading',
|
|
3658
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3659
|
+
path: 'options.loading',
|
|
3660
|
+
});
|
|
3661
|
+
const AXP_HAS_CLEAR_BUTTON_PROPERTY = createBooleanProperty({
|
|
3662
|
+
name: 'hasClearButton',
|
|
3663
|
+
title: 'Clear Button',
|
|
3664
|
+
path: 'options.hasClearButton',
|
|
3665
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3666
|
+
defaultValue: false,
|
|
3667
|
+
});
|
|
3668
|
+
const AXP_ALLOW_SEARCH_PROPERTY = createBooleanProperty({
|
|
3669
|
+
name: 'allowSearch',
|
|
3670
|
+
title: 'Allow Search',
|
|
3671
|
+
path: 'options.allowSearch',
|
|
3672
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3673
|
+
defaultValue: false,
|
|
3674
|
+
});
|
|
3675
|
+
const AXP_HAS_COPY_ICON_PROPERTY = createBooleanProperty({
|
|
3676
|
+
name: 'hasCopyIcon',
|
|
3677
|
+
title: 'Copy Icon',
|
|
3678
|
+
path: 'options.hasCopyIcon',
|
|
3679
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3680
|
+
defaultValue: true,
|
|
3681
|
+
});
|
|
3682
|
+
const AXP_HAS_EYE_ICON_PROPERTY = createBooleanProperty({
|
|
3683
|
+
name: 'hasEyeIcon',
|
|
3684
|
+
title: 'Eye Icon',
|
|
3685
|
+
path: 'options.hasEyeIcon',
|
|
3686
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3687
|
+
defaultValue: true,
|
|
3688
|
+
});
|
|
3689
|
+
const AXP_DOWNLOADABLE_PROPERTY = createBooleanProperty({
|
|
3690
|
+
name: 'downloadable',
|
|
3691
|
+
title: 'Downloadable',
|
|
3692
|
+
path: 'options.downloadable',
|
|
3693
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3694
|
+
defaultValue: true,
|
|
3695
|
+
});
|
|
3696
|
+
// Converted with createStringProperty
|
|
3697
|
+
const AXP_TRULY_TEXT_PROPERTY = createStringProperty({
|
|
3698
|
+
name: 'trulyText',
|
|
3699
|
+
title: 'Truly Text',
|
|
3700
|
+
path: 'options.trulyText',
|
|
3701
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3702
|
+
});
|
|
3703
|
+
const AXP_FALSY_TEXT_PROPERTY = createStringProperty({
|
|
3704
|
+
name: 'falsyText',
|
|
3705
|
+
title: 'Falsy Text',
|
|
3706
|
+
path: 'options.falsyText',
|
|
3707
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3708
|
+
});
|
|
3709
|
+
const AXP_TEXT_PROPERTY = createStringProperty({
|
|
3710
|
+
name: 'text',
|
|
3711
|
+
title: 'Text',
|
|
3712
|
+
path: 'options.text',
|
|
3713
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3714
|
+
});
|
|
3715
|
+
const AXP_TITLE_PROPERTY = createStringProperty({
|
|
3716
|
+
name: 'title',
|
|
3717
|
+
title: 'Title',
|
|
3718
|
+
path: 'options.title',
|
|
3719
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3720
|
+
});
|
|
3721
|
+
const AXP_LABEL_PROPERTY = createStringProperty({
|
|
3722
|
+
name: 'label',
|
|
3723
|
+
title: 'Label',
|
|
3724
|
+
path: 'options.label',
|
|
3725
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3726
|
+
defaultValue: '',
|
|
3727
|
+
});
|
|
3728
|
+
const AXP_VALUE_FIELD_PROPERTY = createStringProperty({
|
|
3729
|
+
name: 'valueField',
|
|
3730
|
+
title: 'Value Field',
|
|
3731
|
+
path: 'options.valueField',
|
|
3732
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3733
|
+
defaultValue: 'id',
|
|
3734
|
+
});
|
|
3735
|
+
const AXP_TEXT_FIELD_PROPERTY = createStringProperty({
|
|
3736
|
+
name: 'textField',
|
|
3737
|
+
title: 'Text Field',
|
|
3738
|
+
path: 'options.textField',
|
|
3739
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3740
|
+
defaultValue: 'title',
|
|
3741
|
+
});
|
|
3742
|
+
const AXP_DESCRIPTION_PROPERTY = createStringProperty({
|
|
3743
|
+
name: 'description',
|
|
3744
|
+
title: 'Description',
|
|
3745
|
+
path: 'options.description',
|
|
3746
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3747
|
+
});
|
|
3748
|
+
const AXP_STYLE_COLOR_PROPERTY = createSelectProperty({
|
|
3749
|
+
name: 'color',
|
|
3750
|
+
title: 'Color',
|
|
3751
|
+
dataSource: AX_STYLE_COLOR_TYPES,
|
|
3752
|
+
defaultValue: 'primary',
|
|
3753
|
+
path: 'options.color',
|
|
3754
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3755
|
+
});
|
|
3756
|
+
const AXP_STYLE_LOOK_PROPERTY = createSelectProperty({
|
|
3757
|
+
name: 'look',
|
|
3758
|
+
title: 'Look',
|
|
3759
|
+
dataSource: AX_STYLE_LOOK_TYPES,
|
|
3760
|
+
defaultValue: 'solid',
|
|
3761
|
+
path: 'options.look',
|
|
3762
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3763
|
+
});
|
|
3764
|
+
const AXP_TEXT_ALIGN_PROPERTY = createSelectProperty({
|
|
3765
|
+
name: 'textAlign',
|
|
3766
|
+
title: 'Text Align',
|
|
3767
|
+
path: 'options.textAlign',
|
|
3768
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3769
|
+
defaultValue: { id: 'left', title: 'Left' },
|
|
3770
|
+
dataSource: [
|
|
3771
|
+
{ id: 'left', title: 'Left' },
|
|
3772
|
+
{ id: 'center', title: 'Center' },
|
|
3773
|
+
{ id: 'right', title: 'Right' },
|
|
3774
|
+
{ id: 'justify', title: 'Justify' },
|
|
3775
|
+
],
|
|
3776
|
+
});
|
|
3777
|
+
const AXP_VERTICAL_ALIGN_PROPERTY = createSelectProperty({
|
|
3778
|
+
name: 'verticalAlign',
|
|
3779
|
+
title: 'Vertical Align',
|
|
3780
|
+
path: 'options.verticalAlign',
|
|
3781
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
3782
|
+
defaultValue: { id: 'top', title: 'Top' },
|
|
3783
|
+
dataSource: [
|
|
3784
|
+
{ id: 'top', title: 'Top' },
|
|
3785
|
+
{ id: 'middle', title: 'Middle' },
|
|
3786
|
+
{ id: 'bottom', title: 'Bottom' },
|
|
3787
|
+
{ id: 'baseline', title: 'Baseline' },
|
|
3788
|
+
],
|
|
3789
|
+
});
|
|
3790
|
+
const AXP_DATE_FORMAT_PROPERTY = createSelectProperty({
|
|
3791
|
+
name: 'format',
|
|
3792
|
+
title: 'Format',
|
|
3793
|
+
dataSource: [
|
|
3794
|
+
{ id: 'date', title: 'Date' },
|
|
3795
|
+
{ id: 'datetime', title: 'DateTime' },
|
|
3796
|
+
{ id: 'time', title: 'Time' },
|
|
3797
|
+
],
|
|
3798
|
+
defaultValue: { id: 'date', title: 'Date' },
|
|
3799
|
+
path: 'options.format',
|
|
3800
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3801
|
+
});
|
|
3802
|
+
const AXP_DATE_DEPTH_PROPERTY = createSelectProperty({
|
|
3803
|
+
name: 'depth',
|
|
3804
|
+
title: 'Input Depth',
|
|
3805
|
+
dataSource: [
|
|
3806
|
+
{ id: 'year', title: 'Year' },
|
|
3807
|
+
{ id: 'month', title: 'Month' },
|
|
3808
|
+
{ id: 'day', title: 'Day' },
|
|
3809
|
+
],
|
|
3810
|
+
path: 'options.depth',
|
|
3811
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3812
|
+
defaultValue: { id: 'day', title: 'Day' },
|
|
3813
|
+
});
|
|
3814
|
+
/** Max span in days between from/to when filter operation is `between`. */
|
|
3815
|
+
const AXP_DATE_RANGE_LIMIT_PROPERTY = createNumberProperty({
|
|
3816
|
+
name: 'limit',
|
|
3817
|
+
title: 'Range Limit (Days)',
|
|
3818
|
+
path: 'options.limit',
|
|
3819
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3820
|
+
});
|
|
3821
|
+
function booleanDefaultProperty(defaultValue = false) {
|
|
3822
|
+
return {
|
|
3823
|
+
name: 'defaultValue',
|
|
3824
|
+
title: 'Default Value',
|
|
3825
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3826
|
+
schema: {
|
|
3827
|
+
dataType: 'boolean',
|
|
3828
|
+
defaultValue: defaultValue,
|
|
3829
|
+
interface: {
|
|
3830
|
+
name: 'defaultValue',
|
|
3831
|
+
path: 'defaultValue',
|
|
3832
|
+
type: AXPWidgetsCatalog.toggle,
|
|
3833
|
+
},
|
|
3834
|
+
},
|
|
3835
|
+
visible: true,
|
|
3836
|
+
};
|
|
3837
|
+
}
|
|
3838
|
+
function plainTextDefaultProperty() {
|
|
3839
|
+
return {
|
|
3840
|
+
name: 'defaultValue',
|
|
3841
|
+
title: 'Default Value',
|
|
3842
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3843
|
+
schema: {
|
|
3844
|
+
dataType: 'string',
|
|
3845
|
+
interface: {
|
|
3846
|
+
name: 'defaultValue',
|
|
3847
|
+
path: 'defaultValue',
|
|
3848
|
+
type: AXPWidgetsCatalog.text,
|
|
3849
|
+
options: {
|
|
3850
|
+
placeholder: '@layout-designer:property-editor.placeholders.default-value-plain-text',
|
|
3851
|
+
},
|
|
3852
|
+
},
|
|
3853
|
+
},
|
|
3854
|
+
visible: true,
|
|
3855
|
+
};
|
|
3856
|
+
}
|
|
3857
|
+
function largeTextDefaultProperty() {
|
|
3858
|
+
return {
|
|
3859
|
+
name: 'defaultValue',
|
|
3860
|
+
title: 'Default Value',
|
|
3861
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3862
|
+
schema: {
|
|
3863
|
+
dataType: 'string',
|
|
3864
|
+
interface: {
|
|
3865
|
+
name: 'defaultValue',
|
|
3866
|
+
path: 'defaultValue',
|
|
3867
|
+
type: AXPWidgetsCatalog.largeText,
|
|
3868
|
+
options: {
|
|
3869
|
+
placeholder: '@layout-designer:property-editor.placeholders.default-value-large-text',
|
|
3870
|
+
},
|
|
3871
|
+
},
|
|
3872
|
+
},
|
|
3873
|
+
visible: true,
|
|
3874
|
+
};
|
|
3875
|
+
}
|
|
3876
|
+
function richTextDefaultProperty() {
|
|
3877
|
+
return {
|
|
3878
|
+
name: 'defaultValue',
|
|
3879
|
+
title: 'Default Value',
|
|
3880
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3881
|
+
schema: {
|
|
3882
|
+
dataType: 'string',
|
|
3883
|
+
interface: {
|
|
3884
|
+
name: 'defaultValue',
|
|
3885
|
+
path: 'defaultValue',
|
|
3886
|
+
type: AXPWidgetsCatalog.richText,
|
|
3887
|
+
options: {
|
|
3888
|
+
placeholder: '@layout-designer:property-editor.placeholders.default-value-rich-text',
|
|
3889
|
+
},
|
|
3890
|
+
},
|
|
3891
|
+
},
|
|
3892
|
+
visible: true,
|
|
3893
|
+
};
|
|
3894
|
+
}
|
|
3895
|
+
/**
|
|
3896
|
+
* Default value editor for select-editor: uses `context.options(key)` so the default picker reads
|
|
3897
|
+
* the **host** widget's options from the shared context (not the nested property field's `widget`).
|
|
3898
|
+
*/
|
|
3899
|
+
function selectEditorDefaultValueProperty() {
|
|
3900
|
+
return {
|
|
3901
|
+
name: 'defaultValue',
|
|
3902
|
+
title: 'Default Value',
|
|
3903
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3904
|
+
schema: {
|
|
3905
|
+
dataType: 'object',
|
|
3906
|
+
interface: {
|
|
3907
|
+
name: 'defaultValue',
|
|
3908
|
+
path: 'defaultValue',
|
|
3909
|
+
type: AXPWidgetsCatalog.select,
|
|
3910
|
+
options: {
|
|
3911
|
+
placeholder: '@layout-designer:property-editor.placeholders.default-value-select',
|
|
3912
|
+
dataSource: '{{ context.options("dataSource") }}',
|
|
3913
|
+
valueField: '{{ context.options("valueField") }}',
|
|
3914
|
+
textField: '{{ context.options("textField") }}',
|
|
3915
|
+
multiple: '{{ context.options("multiple") }}',
|
|
3916
|
+
hasClearButton: true,
|
|
3917
|
+
},
|
|
3918
|
+
},
|
|
3919
|
+
},
|
|
3920
|
+
visible: true,
|
|
3921
|
+
};
|
|
3922
|
+
}
|
|
3923
|
+
/**
|
|
3924
|
+
* Default value editor for selection-list-editor: uses the select widget in the designer so picking
|
|
3925
|
+
* a default matches select UX while still binding to the host's dataSource / fields via `context.options`.
|
|
3926
|
+
*/
|
|
3927
|
+
function selectionListEditorDefaultValueProperty() {
|
|
3928
|
+
return {
|
|
3929
|
+
name: 'defaultValue',
|
|
3930
|
+
title: 'Default Value',
|
|
3931
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3932
|
+
schema: {
|
|
3933
|
+
dataType: 'object',
|
|
3934
|
+
interface: {
|
|
3935
|
+
name: 'defaultValue',
|
|
3936
|
+
path: 'defaultValue',
|
|
3937
|
+
type: AXPWidgetsCatalog.select,
|
|
3938
|
+
options: {
|
|
3939
|
+
placeholder: '@layout-designer:property-editor.placeholders.default-value-select',
|
|
3940
|
+
dataSource: '{{ context.options("dataSource") }}',
|
|
3941
|
+
valueField: '{{ context.options("valueField") }}',
|
|
3942
|
+
textField: '{{ context.options("textField") }}',
|
|
3943
|
+
multiple: '{{ context.options("multiple") }}',
|
|
3944
|
+
hasClearButton: true,
|
|
3945
|
+
},
|
|
3946
|
+
},
|
|
3947
|
+
},
|
|
3948
|
+
visible: true,
|
|
3949
|
+
};
|
|
3950
|
+
}
|
|
3951
|
+
function numberDefaultProperty() {
|
|
3952
|
+
return {
|
|
3953
|
+
name: 'defaultValue',
|
|
3954
|
+
title: 'Default Value',
|
|
3955
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
3956
|
+
schema: {
|
|
3957
|
+
dataType: 'number',
|
|
3958
|
+
interface: {
|
|
3959
|
+
name: 'defaultValue',
|
|
3960
|
+
path: 'defaultValue',
|
|
3961
|
+
type: AXPWidgetsCatalog.number,
|
|
3962
|
+
options: {
|
|
3963
|
+
placeholder: '@layout-designer:property-editor.placeholders.default-value-number',
|
|
3964
|
+
},
|
|
3965
|
+
},
|
|
3966
|
+
},
|
|
3967
|
+
visible: true,
|
|
3968
|
+
};
|
|
3969
|
+
}
|
|
3970
|
+
function numberMinValueProperty(value) {
|
|
3971
|
+
return {
|
|
3972
|
+
name: 'minValue',
|
|
3973
|
+
title: 'Min Value',
|
|
3974
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3975
|
+
order: 9,
|
|
3976
|
+
schema: {
|
|
3977
|
+
dataType: 'number',
|
|
3978
|
+
defaultValue: value,
|
|
3979
|
+
interface: {
|
|
3980
|
+
name: 'minValue',
|
|
3981
|
+
path: 'options.minValue',
|
|
3982
|
+
type: AXPWidgetsCatalog.number,
|
|
3983
|
+
options: {
|
|
3984
|
+
placeholder: '@layout-designer:property-editor.placeholders.number-min-value',
|
|
3985
|
+
},
|
|
3986
|
+
},
|
|
3987
|
+
},
|
|
3988
|
+
visible: true,
|
|
3989
|
+
};
|
|
3990
|
+
}
|
|
3991
|
+
function numberMaxValueProperty(value) {
|
|
3992
|
+
return {
|
|
3993
|
+
name: 'maxValue',
|
|
3994
|
+
title: 'Max Value',
|
|
3995
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
3996
|
+
order: 10,
|
|
3997
|
+
schema: {
|
|
3998
|
+
dataType: 'number',
|
|
3999
|
+
defaultValue: value,
|
|
4000
|
+
interface: {
|
|
4001
|
+
name: 'maxValue',
|
|
4002
|
+
path: 'options.maxValue',
|
|
4003
|
+
type: AXPWidgetsCatalog.number,
|
|
4004
|
+
options: {
|
|
4005
|
+
placeholder: '@layout-designer:property-editor.placeholders.number-max-value',
|
|
4006
|
+
},
|
|
4007
|
+
},
|
|
4008
|
+
},
|
|
4009
|
+
visible: true,
|
|
4010
|
+
};
|
|
4011
|
+
}
|
|
4012
|
+
const AXP_MULTI_LANGUAGE_PROPERTY = createBooleanProperty({
|
|
4013
|
+
name: 'multiLanguage',
|
|
4014
|
+
title: 'Multi Language',
|
|
4015
|
+
path: 'options.multiLanguage',
|
|
4016
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4017
|
+
defaultValue: false,
|
|
4018
|
+
});
|
|
4019
|
+
const AXP_SPIN_BUTTON_PROPERTY = createBooleanProperty({
|
|
4020
|
+
name: 'spinButton',
|
|
4021
|
+
title: 'Spin Button',
|
|
4022
|
+
path: 'options.spinButton',
|
|
4023
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4024
|
+
});
|
|
4025
|
+
const AXP_NUMBER_SEPARATOR_PROPERTY = createStringProperty({
|
|
4026
|
+
name: 'seprator',
|
|
4027
|
+
title: 'Thousands Separator',
|
|
4028
|
+
path: 'options.seprator',
|
|
4029
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4030
|
+
});
|
|
4031
|
+
const AXP_DEFAULT_ROW_COUNT_PROPERTY = createNumberProperty({
|
|
4032
|
+
name: 'defaultRowCount',
|
|
4033
|
+
title: 'Default Row Count',
|
|
4034
|
+
path: 'options.defaultRowCount',
|
|
4035
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4036
|
+
});
|
|
4037
|
+
const AXP_MIN_LINE_COUNT_PROPERTY = createNumberProperty({
|
|
4038
|
+
name: 'minLineCount',
|
|
4039
|
+
title: 'Min Line Count',
|
|
4040
|
+
path: 'options.minLineCount',
|
|
4041
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4042
|
+
});
|
|
4043
|
+
const AXP_MAX_LINE_COUNT_PROPERTY = createNumberProperty({
|
|
4044
|
+
name: 'maxLineCount',
|
|
4045
|
+
title: 'Max Line Count',
|
|
4046
|
+
path: 'options.maxLineCount',
|
|
4047
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4048
|
+
});
|
|
4049
|
+
const AXP_FIT_LINE_COUNT_PROPERTY = createBooleanProperty({
|
|
4050
|
+
name: 'fitLineCount',
|
|
4051
|
+
title: 'Fit Line Count',
|
|
4052
|
+
path: 'options.fitLineCount',
|
|
4053
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4054
|
+
});
|
|
4055
|
+
const AXP_SHOW_PASSWORD_PROPERTY = createBooleanProperty({
|
|
4056
|
+
name: 'showPassword',
|
|
4057
|
+
title: 'Show Password',
|
|
4058
|
+
path: 'options.showPassword',
|
|
4059
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4060
|
+
});
|
|
4061
|
+
const AXP_TRIGGERS_PROPERTY = {
|
|
4062
|
+
name: 'triggers',
|
|
4063
|
+
title: 'Triggers',
|
|
4064
|
+
group: AXP_TRIGGERS_PROPERTY_GROUP,
|
|
4065
|
+
showLabel: false,
|
|
4066
|
+
schema: {
|
|
4067
|
+
dataType: 'object',
|
|
4068
|
+
interface: {
|
|
4069
|
+
name: 'triggers',
|
|
4070
|
+
path: 'triggers',
|
|
4071
|
+
type: 'triggers-editor',
|
|
4072
|
+
},
|
|
4073
|
+
},
|
|
4074
|
+
visible: true,
|
|
4075
|
+
};
|
|
4076
|
+
|
|
4077
|
+
const AXP_LAYOUT_GRID_PROPERTY_GROUP = {
|
|
4078
|
+
name: 'grid',
|
|
4079
|
+
order: 1,
|
|
4080
|
+
title: 'Grid Layout',
|
|
4081
|
+
};
|
|
4082
|
+
const AXP_LAYOUT_FLEX_PROPERTY_GROUP = {
|
|
4083
|
+
name: 'flex',
|
|
4084
|
+
order: 1,
|
|
4085
|
+
title: 'Flex Layout',
|
|
4086
|
+
};
|
|
4087
|
+
const AXP_BOX_MODEL_PROPERTY_GROUP = {
|
|
4088
|
+
name: 'box',
|
|
4089
|
+
order: 1,
|
|
4090
|
+
title: 'Box Model',
|
|
4091
|
+
};
|
|
4092
|
+
const AXP_LAYOUT_TABLE_PROPERTY_GROUP = {
|
|
4093
|
+
name: 'table',
|
|
4094
|
+
order: 1,
|
|
4095
|
+
title: 'Table Layout',
|
|
4096
|
+
};
|
|
4097
|
+
const AXP_LAYOUT_GAP_PROPERTY = {
|
|
4098
|
+
name: 'gap',
|
|
4099
|
+
title: 'Gap',
|
|
4100
|
+
group: AXP_LAYOUT_GRID_PROPERTY_GROUP,
|
|
4101
|
+
schema: {
|
|
4102
|
+
dataType: 'number',
|
|
4103
|
+
defaultValue: 2,
|
|
4104
|
+
interface: {
|
|
4105
|
+
name: 'gap',
|
|
4106
|
+
path: 'options.gap',
|
|
4107
|
+
type: AXPWidgetsCatalog.number,
|
|
4108
|
+
options: {
|
|
4109
|
+
minValue: 0,
|
|
4110
|
+
maxValue: 12,
|
|
4111
|
+
},
|
|
4112
|
+
},
|
|
4113
|
+
},
|
|
4114
|
+
visible: true,
|
|
4115
|
+
};
|
|
4116
|
+
const AXP_LAYOUT_COLUMNS_PROPERTY = {
|
|
4117
|
+
name: 'cols',
|
|
4118
|
+
title: 'Columns',
|
|
4119
|
+
group: AXP_LAYOUT_GRID_PROPERTY_GROUP,
|
|
4120
|
+
schema: {
|
|
4121
|
+
dataType: 'number',
|
|
4122
|
+
defaultValue: 1,
|
|
4123
|
+
interface: {
|
|
4124
|
+
name: 'cols',
|
|
4125
|
+
path: 'options.cols',
|
|
4126
|
+
type: AXPWidgetsCatalog.number,
|
|
4127
|
+
options: {
|
|
4128
|
+
minValue: 1,
|
|
4129
|
+
maxValue: 12,
|
|
4130
|
+
},
|
|
4131
|
+
},
|
|
4132
|
+
},
|
|
4133
|
+
visible: true,
|
|
4134
|
+
};
|
|
4135
|
+
const AXP_LAYOUT_ROWS_PROPERTY = {
|
|
4136
|
+
name: 'rows',
|
|
4137
|
+
title: 'Rows',
|
|
4138
|
+
group: AXP_LAYOUT_GRID_PROPERTY_GROUP,
|
|
4139
|
+
schema: {
|
|
4140
|
+
dataType: 'number',
|
|
4141
|
+
defaultValue: 1,
|
|
4142
|
+
interface: {
|
|
4143
|
+
name: 'rows',
|
|
4144
|
+
path: 'options.rows',
|
|
4145
|
+
type: AXPWidgetsCatalog.number,
|
|
4146
|
+
options: {
|
|
4147
|
+
minValue: 1,
|
|
4148
|
+
maxValue: 100,
|
|
4149
|
+
},
|
|
4150
|
+
},
|
|
4151
|
+
},
|
|
4152
|
+
visible: true,
|
|
4153
|
+
};
|
|
4154
|
+
const AXP_LAYOUT_GRID_PROPERTIES = [
|
|
4155
|
+
AXP_LAYOUT_GAP_PROPERTY,
|
|
4156
|
+
AXP_LAYOUT_COLUMNS_PROPERTY,
|
|
4157
|
+
AXP_LAYOUT_ROWS_PROPERTY,
|
|
4158
|
+
];
|
|
4159
|
+
const AXP_LAYOUT_GRID_ROW_PROPERTIES = [
|
|
4160
|
+
AXP_LAYOUT_GAP_PROPERTY,
|
|
4161
|
+
cloneProperty(AXP_LAYOUT_COLUMNS_PROPERTY, { schema: { defaultValue: 12 } }),
|
|
4162
|
+
];
|
|
4163
|
+
const AXP_LAYOUT_GRID_ITEM_PROPERTY = {
|
|
4164
|
+
name: 'gridItem',
|
|
4165
|
+
title: 'Grid Item',
|
|
4166
|
+
group: AXP_LAYOUT_GRID_PROPERTY_GROUP,
|
|
4167
|
+
schema: {
|
|
4168
|
+
dataType: 'object',
|
|
4169
|
+
interface: {
|
|
4170
|
+
name: 'gridItem',
|
|
4171
|
+
path: 'options',
|
|
4172
|
+
type: AXPWidgetsCatalog.gridItemOptions,
|
|
4173
|
+
options: {},
|
|
4174
|
+
},
|
|
4175
|
+
},
|
|
4176
|
+
visible: true,
|
|
4177
|
+
};
|
|
4178
|
+
const AXP_LAYOUT_SPACING_PROPERTY = {
|
|
4179
|
+
name: 'spacing',
|
|
4180
|
+
title: 'Spacing',
|
|
4181
|
+
group: AXP_BOX_MODEL_PROPERTY_GROUP,
|
|
4182
|
+
schema: {
|
|
4183
|
+
dataType: 'object',
|
|
4184
|
+
interface: {
|
|
4185
|
+
name: 'spacing',
|
|
4186
|
+
path: 'options.spacing',
|
|
4187
|
+
type: AXPWidgetsCatalog.spacing,
|
|
4188
|
+
options: {},
|
|
4189
|
+
},
|
|
4190
|
+
},
|
|
4191
|
+
visible: true,
|
|
4192
|
+
};
|
|
4193
|
+
const AXP_LAYOUT_BORDER_PROPERTY = {
|
|
4194
|
+
name: 'border',
|
|
4195
|
+
title: 'Border',
|
|
4196
|
+
group: AXP_BOX_MODEL_PROPERTY_GROUP,
|
|
4197
|
+
schema: {
|
|
4198
|
+
dataType: 'object',
|
|
4199
|
+
interface: {
|
|
4200
|
+
name: 'border',
|
|
4201
|
+
path: 'options.border',
|
|
4202
|
+
type: AXPWidgetsCatalog.border,
|
|
4203
|
+
options: {},
|
|
4204
|
+
},
|
|
4205
|
+
},
|
|
4206
|
+
visible: true,
|
|
4207
|
+
};
|
|
4208
|
+
const AXP_LAYOUT_FLEX_PROPERTY = {
|
|
4209
|
+
name: 'flex',
|
|
4210
|
+
title: 'Flex',
|
|
4211
|
+
group: AXP_LAYOUT_FLEX_PROPERTY_GROUP,
|
|
4212
|
+
schema: {
|
|
4213
|
+
dataType: 'object',
|
|
4214
|
+
interface: {
|
|
4215
|
+
name: 'flex',
|
|
4216
|
+
path: 'options',
|
|
4217
|
+
type: AXPWidgetsCatalog.flexOptions,
|
|
4218
|
+
options: {},
|
|
4219
|
+
},
|
|
4220
|
+
},
|
|
4221
|
+
visible: true,
|
|
4222
|
+
};
|
|
4223
|
+
const AXP_LAYOUT_FLEX_ITEM_PROPERTY = {
|
|
4224
|
+
name: 'flexItem',
|
|
4225
|
+
title: 'Flex Item',
|
|
4226
|
+
group: AXP_LAYOUT_FLEX_PROPERTY_GROUP,
|
|
4227
|
+
schema: {
|
|
4228
|
+
dataType: 'object',
|
|
4229
|
+
interface: {
|
|
4230
|
+
name: 'flexItem',
|
|
4231
|
+
path: 'options',
|
|
4232
|
+
type: AXPWidgetsCatalog.flexItemOptions,
|
|
4233
|
+
options: {},
|
|
4234
|
+
},
|
|
4235
|
+
},
|
|
4236
|
+
visible: true,
|
|
4237
|
+
};
|
|
4238
|
+
const AXP_LAYOUT_GRID_PROPERTY = {
|
|
4239
|
+
name: 'grid',
|
|
4240
|
+
title: 'Grid',
|
|
4241
|
+
group: AXP_LAYOUT_GRID_PROPERTY_GROUP,
|
|
4242
|
+
schema: {
|
|
4243
|
+
dataType: 'object',
|
|
4244
|
+
interface: {
|
|
4245
|
+
name: 'grid',
|
|
4246
|
+
path: 'options.grid',
|
|
4247
|
+
type: AXPWidgetsCatalog.gridOptions,
|
|
4248
|
+
options: {},
|
|
4249
|
+
},
|
|
4250
|
+
},
|
|
4251
|
+
visible: true,
|
|
4252
|
+
};
|
|
4253
|
+
const AXP_TABLE_COLUMNS_PROPERTY = {
|
|
4254
|
+
name: 'columns',
|
|
4255
|
+
title: 'Columns',
|
|
4256
|
+
group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,
|
|
4257
|
+
schema: {
|
|
4258
|
+
dataType: 'number',
|
|
4259
|
+
defaultValue: 3,
|
|
4260
|
+
interface: {
|
|
4261
|
+
name: 'columns',
|
|
4262
|
+
path: 'options.columns',
|
|
4263
|
+
type: AXPWidgetsCatalog.number,
|
|
4264
|
+
options: {
|
|
4265
|
+
minValue: 1,
|
|
4266
|
+
maxValue: 12,
|
|
4267
|
+
},
|
|
4268
|
+
},
|
|
4269
|
+
},
|
|
4270
|
+
visible: true,
|
|
4271
|
+
};
|
|
4272
|
+
// Removed rowHeight/rows from table properties
|
|
4273
|
+
const AXP_TABLE_ITEM_COLSPAN_PROPERTY = {
|
|
4274
|
+
name: 'colSpan',
|
|
4275
|
+
title: 'Column Span',
|
|
4276
|
+
group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,
|
|
4277
|
+
schema: {
|
|
4278
|
+
dataType: 'number',
|
|
4279
|
+
defaultValue: 1,
|
|
4280
|
+
interface: {
|
|
4281
|
+
name: 'colSpan',
|
|
4282
|
+
path: 'options.colSpan',
|
|
4283
|
+
type: AXPWidgetsCatalog.number,
|
|
4284
|
+
options: {
|
|
4285
|
+
minValue: 1,
|
|
4286
|
+
maxValue: 24,
|
|
4287
|
+
},
|
|
4288
|
+
},
|
|
4289
|
+
},
|
|
4290
|
+
visible: true,
|
|
4291
|
+
};
|
|
4292
|
+
const AXP_TABLE_ITEM_ROWSPAN_PROPERTY = {
|
|
4293
|
+
name: 'rowSpan',
|
|
4294
|
+
title: 'Row Span',
|
|
4295
|
+
group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,
|
|
4296
|
+
schema: {
|
|
4297
|
+
dataType: 'number',
|
|
4298
|
+
defaultValue: 1,
|
|
4299
|
+
interface: {
|
|
4300
|
+
name: 'rowSpan',
|
|
4301
|
+
path: 'options.rowSpan',
|
|
4302
|
+
type: AXPWidgetsCatalog.number,
|
|
4303
|
+
options: {
|
|
4304
|
+
minValue: 1,
|
|
4305
|
+
maxValue: 100,
|
|
4306
|
+
},
|
|
4307
|
+
},
|
|
4308
|
+
},
|
|
4309
|
+
visible: true,
|
|
4310
|
+
};
|
|
4311
|
+
// Removed header/footer/sticky related table properties
|
|
4312
|
+
const AXP_LAYOUT_ADVANCED_GRID_PROPERTY = {
|
|
4313
|
+
name: 'advancedGrid',
|
|
4314
|
+
title: 'Advanced Grid',
|
|
4315
|
+
group: AXP_LAYOUT_GRID_PROPERTY_GROUP,
|
|
4316
|
+
schema: {
|
|
4317
|
+
dataType: 'object',
|
|
4318
|
+
interface: {
|
|
4319
|
+
name: 'advancedGrid',
|
|
4320
|
+
path: 'options.advancedGrid',
|
|
4321
|
+
type: AXPWidgetsCatalog.advancedGridOptions,
|
|
4322
|
+
options: {},
|
|
4323
|
+
},
|
|
4324
|
+
},
|
|
4325
|
+
visible: true,
|
|
4326
|
+
};
|
|
4327
|
+
const AXP_LAYOUT_SHOW_HEADER_PROPERTY = createBooleanProperty({
|
|
4328
|
+
name: 'showHeader',
|
|
4329
|
+
title: 'Show Header',
|
|
4330
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
4331
|
+
path: 'options.showHeader',
|
|
4332
|
+
defaultValue: true,
|
|
4333
|
+
});
|
|
4334
|
+
const AXP_LAYOUT_DIRECTION_PROPERTY = {
|
|
4335
|
+
name: 'direction',
|
|
4336
|
+
title: 'Direction',
|
|
4337
|
+
group: AXP_BOX_MODEL_PROPERTY_GROUP,
|
|
4338
|
+
order: 99,
|
|
4339
|
+
schema: {
|
|
4340
|
+
dataType: 'string',
|
|
4341
|
+
interface: {
|
|
4342
|
+
name: 'direction',
|
|
4343
|
+
path: 'options.direction',
|
|
4344
|
+
type: AXPWidgetsCatalog.direction,
|
|
4345
|
+
options: {},
|
|
4346
|
+
},
|
|
4347
|
+
},
|
|
4348
|
+
visible: true,
|
|
4349
|
+
};
|
|
4350
|
+
|
|
4351
|
+
const TABLE_COLUMN_ALIGN_DATA_SOURCE = [
|
|
4352
|
+
{ id: 'start', title: 'Start' },
|
|
4353
|
+
{ id: 'center', title: 'Center' },
|
|
4354
|
+
{ id: 'end', title: 'End' },
|
|
4355
|
+
];
|
|
4356
|
+
const AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY = {
|
|
4357
|
+
name: 'alignHeader',
|
|
4358
|
+
title: 'Header alignment',
|
|
4359
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
4360
|
+
schema: {
|
|
4361
|
+
dataType: 'string',
|
|
4362
|
+
defaultValue: 'start',
|
|
4363
|
+
interface: {
|
|
4364
|
+
name: 'alignHeader',
|
|
4365
|
+
path: 'options.align.header',
|
|
4366
|
+
type: AXPWidgetsCatalog.select,
|
|
4367
|
+
options: {
|
|
4368
|
+
dataSource: [...TABLE_COLUMN_ALIGN_DATA_SOURCE],
|
|
4369
|
+
},
|
|
4370
|
+
},
|
|
4371
|
+
},
|
|
4372
|
+
visible: true,
|
|
4373
|
+
};
|
|
4374
|
+
const AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY = {
|
|
4375
|
+
name: 'alignCell',
|
|
4376
|
+
title: 'Cell alignment',
|
|
4377
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
4378
|
+
schema: {
|
|
4379
|
+
dataType: 'string',
|
|
4380
|
+
defaultValue: 'start',
|
|
4381
|
+
interface: {
|
|
4382
|
+
name: 'alignCell',
|
|
4383
|
+
path: 'options.align.cell',
|
|
4384
|
+
type: AXPWidgetsCatalog.select,
|
|
4385
|
+
options: {
|
|
4386
|
+
dataSource: [...TABLE_COLUMN_ALIGN_DATA_SOURCE],
|
|
4387
|
+
},
|
|
4388
|
+
},
|
|
4389
|
+
},
|
|
4390
|
+
visible: true,
|
|
4391
|
+
};
|
|
4392
|
+
/** Optional column designer fields; spread next to `AXP_TABLE_COLUMN_WIDTH_PROPERTY` where needed. */
|
|
4393
|
+
const AXP_TABLE_COLUMN_ALIGNMENT_PROPERTIES = [
|
|
4394
|
+
AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY,
|
|
4395
|
+
AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY,
|
|
4396
|
+
];
|
|
4397
|
+
const AXP_TABLE_COLUMN_WIDTH_PROPERTY = {
|
|
4398
|
+
name: 'width',
|
|
4399
|
+
title: 'Width',
|
|
4400
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
4401
|
+
schema: {
|
|
4402
|
+
dataType: 'string',
|
|
4403
|
+
defaultValue: '300px',
|
|
4404
|
+
interface: {
|
|
4405
|
+
name: 'width',
|
|
4406
|
+
path: 'options.width',
|
|
4407
|
+
type: AXPWidgetsCatalog.text,
|
|
4408
|
+
},
|
|
4409
|
+
},
|
|
4410
|
+
visible: true,
|
|
4411
|
+
};
|
|
4412
|
+
const AXP_TABLE_COLUMN_HEIGHT_PROPERTY = {
|
|
4413
|
+
name: 'height',
|
|
4414
|
+
title: 'Height',
|
|
4415
|
+
group: AXP_STYLING_PROPERTY_GROUP,
|
|
4416
|
+
schema: {
|
|
4417
|
+
dataType: 'string',
|
|
4418
|
+
defaultValue: '300px',
|
|
4419
|
+
interface: {
|
|
4420
|
+
name: 'height',
|
|
4421
|
+
path: 'options.height',
|
|
4422
|
+
type: AXPWidgetsCatalog.text,
|
|
4423
|
+
},
|
|
4424
|
+
},
|
|
4425
|
+
visible: true,
|
|
4426
|
+
};
|
|
4427
|
+
|
|
4428
|
+
const AXP_REQUIRED_VALIDATION_PROPERTY = {
|
|
4429
|
+
name: 'requiredValidation',
|
|
4430
|
+
title: 'Required',
|
|
4431
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4432
|
+
schema: {
|
|
4433
|
+
dataType: 'object',
|
|
4434
|
+
interface: {
|
|
4435
|
+
name: 'requiredValidation',
|
|
4436
|
+
path: 'options.validations.required',
|
|
4437
|
+
type: AXPWidgetsCatalog.requiredValidation,
|
|
4438
|
+
defaultValue: false,
|
|
4439
|
+
},
|
|
4440
|
+
},
|
|
4441
|
+
visible: true,
|
|
4442
|
+
};
|
|
4443
|
+
const AXP_MIN_LENGTH_VALIDATION_PROPERTY = {
|
|
4444
|
+
name: 'minLengthValidation',
|
|
4445
|
+
title: 'Minimum Length',
|
|
4446
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4447
|
+
schema: {
|
|
4448
|
+
dataType: 'object',
|
|
4449
|
+
interface: {
|
|
4450
|
+
name: 'minLengthValidation',
|
|
4451
|
+
path: 'options.validations.minLength',
|
|
4452
|
+
type: AXPWidgetsCatalog.minLengthValidation,
|
|
4453
|
+
defaultValue: null,
|
|
4454
|
+
},
|
|
4455
|
+
},
|
|
4456
|
+
visible: true,
|
|
4457
|
+
};
|
|
4458
|
+
const AXP_MAX_LENGTH_VALIDATION_PROPERTY = {
|
|
4459
|
+
name: 'maxLengthValidation',
|
|
4460
|
+
title: 'Maximum Length',
|
|
4461
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4462
|
+
schema: {
|
|
4463
|
+
dataType: 'object',
|
|
4464
|
+
interface: {
|
|
4465
|
+
name: 'maxLengthValidation',
|
|
4466
|
+
path: 'options.validations.maxLength',
|
|
4467
|
+
type: AXPWidgetsCatalog.maxLengthValidation,
|
|
4468
|
+
defaultValue: null,
|
|
4469
|
+
},
|
|
4470
|
+
},
|
|
4471
|
+
visible: true,
|
|
4472
|
+
};
|
|
4473
|
+
const AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY = {
|
|
4474
|
+
name: 'regularExpressionValidation',
|
|
4475
|
+
title: 'Regular Expression',
|
|
4476
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4477
|
+
schema: {
|
|
4478
|
+
dataType: 'object',
|
|
4479
|
+
interface: {
|
|
4480
|
+
name: 'regularExpressionValidation',
|
|
4481
|
+
path: 'options.validations.regex',
|
|
4482
|
+
type: AXPWidgetsCatalog.regularExpressionValidation,
|
|
4483
|
+
defaultValue: false,
|
|
4484
|
+
},
|
|
4485
|
+
},
|
|
4486
|
+
visible: true,
|
|
4487
|
+
};
|
|
4488
|
+
const AXP_LESS_THAN_VALIDATION_PROPERTY = {
|
|
4489
|
+
name: 'lessThanValidation',
|
|
4490
|
+
title: 'Less Than',
|
|
4491
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4492
|
+
schema: {
|
|
4493
|
+
dataType: 'object',
|
|
4494
|
+
interface: {
|
|
4495
|
+
name: 'lessThanValidation',
|
|
4496
|
+
path: 'options.validations.lessThan',
|
|
4497
|
+
type: AXPWidgetsCatalog.lessThanValidation,
|
|
4498
|
+
defaultValue: false,
|
|
4499
|
+
},
|
|
4500
|
+
},
|
|
4501
|
+
visible: true,
|
|
4502
|
+
};
|
|
4503
|
+
const AXP_GREATER_THAN_VALIDATION_PROPERTY = {
|
|
4504
|
+
name: 'greaterThanValidation',
|
|
4505
|
+
title: 'Greater Than',
|
|
4506
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4507
|
+
schema: {
|
|
4508
|
+
dataType: 'object',
|
|
4509
|
+
interface: {
|
|
4510
|
+
name: 'greaterThanValidation',
|
|
4511
|
+
path: 'options.validations.greaterThan',
|
|
4512
|
+
type: AXPWidgetsCatalog.greaterThanValidation,
|
|
4513
|
+
defaultValue: false,
|
|
4514
|
+
},
|
|
4515
|
+
},
|
|
4516
|
+
visible: true,
|
|
4517
|
+
};
|
|
4518
|
+
const AXP_BETWEEN_VALIDATION_PROPERTY = {
|
|
4519
|
+
name: 'betweenValidation',
|
|
4520
|
+
title: 'Between',
|
|
4521
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4522
|
+
schema: {
|
|
4523
|
+
dataType: 'object',
|
|
4524
|
+
interface: {
|
|
4525
|
+
name: 'betweenValidation',
|
|
4526
|
+
path: 'options.validations.between',
|
|
4527
|
+
type: AXPWidgetsCatalog.betweenValidation,
|
|
4528
|
+
defaultValue: false,
|
|
4529
|
+
},
|
|
4530
|
+
},
|
|
4531
|
+
visible: true,
|
|
4532
|
+
};
|
|
4533
|
+
const AXP_EQUAL_VALIDATION_PROPERTY = {
|
|
4534
|
+
name: 'equalValidation',
|
|
4535
|
+
title: 'Equal',
|
|
4536
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4537
|
+
schema: {
|
|
4538
|
+
dataType: 'object',
|
|
4539
|
+
interface: {
|
|
4540
|
+
name: 'equalValidation',
|
|
4541
|
+
path: 'options.validations.equal',
|
|
4542
|
+
type: AXPWidgetsCatalog.equalValidation,
|
|
4543
|
+
defaultValue: false,
|
|
4544
|
+
},
|
|
4545
|
+
},
|
|
4546
|
+
visible: true,
|
|
4547
|
+
};
|
|
4548
|
+
const AXP_CALLBACK_VALIDATION_PROPERTY = {
|
|
4549
|
+
name: 'callbackValidation',
|
|
4550
|
+
title: 'Callback',
|
|
4551
|
+
group: AXP_VALIDATION_PROPERTY_GROUP,
|
|
4552
|
+
schema: {
|
|
4553
|
+
dataType: 'object',
|
|
4554
|
+
interface: {
|
|
4555
|
+
name: 'callbackValidation',
|
|
4556
|
+
path: 'options.validations.callback',
|
|
4557
|
+
type: AXPWidgetsCatalog.callbackValidation,
|
|
4558
|
+
defaultValue: false,
|
|
4559
|
+
},
|
|
4560
|
+
},
|
|
4561
|
+
visible: true,
|
|
4562
|
+
};
|
|
2960
4563
|
|
|
2961
4564
|
/**
|
|
2962
4565
|
* Generated bundle index. Do not edit.
|
|
2963
4566
|
*/
|
|
2964
4567
|
|
|
2965
|
-
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPageStatus, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent,
|
|
4568
|
+
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPageStatus, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnCellComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetSerializationHelper, AXPWidgetStatus, AXPWidgetsCatalog, AXP_ALLOW_CLEAR_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, AXP_ANIMATION_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BETWEEN_VALIDATION_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_BOX_MODEL_PROPERTY_GROUP, AXP_CALLBACK_VALIDATION_PROPERTY, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DATA_SOURCE_OPTIONS_PROPERTY, AXP_DATE_DEPTH_PROPERTY, AXP_DATE_FORMAT_PROPERTY, AXP_DATE_RANGE_LIMIT_PROPERTY, AXP_DEFAULT_ROW_COUNT_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_DIRECTION_PROPERTY, AXP_DISABLED_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_EQUAL_VALIDATION_PROPERTY, AXP_FALSY_TEXT_PROPERTY, AXP_FIT_LINE_COUNT_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_LABEL_PROPERTY, AXP_LAYOUT_ADVANCED_GRID_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_LAYOUT_FLEX_ITEM_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY_GROUP, AXP_LAYOUT_GAP_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTY, AXP_LAYOUT_GRID_PROPERTIES, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_PROPERTY_GROUP, AXP_LAYOUT_GRID_ROW_PROPERTIES, AXP_LAYOUT_ROWS_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_TABLE_PROPERTY_GROUP, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_MAX_LENGTH_VALIDATION_PROPERTY, AXP_MAX_LINE_COUNT_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_MIN_LINE_COUNT_PROPERTY, AXP_MULTI_LANGUAGE_PROPERTY, AXP_NAME_PROPERTY, AXP_NUMBER_SEPARATOR_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_READONLY_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_SHOW_PASSWORD_PROPERTY, AXP_SPIN_BUTTON_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_STYLING_PROPERTY_GROUP, AXP_TABLE_COLUMNS_PROPERTY, AXP_TABLE_COLUMN_ALIGNMENT_PROPERTIES, AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEIGHT_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_TABLE_ITEM_COLSPAN_PROPERTY, AXP_TABLE_ITEM_ROWSPAN_PROPERTY, AXP_TEXT_ALIGN_PROPERTY, AXP_TEXT_FIELD_PROPERTY, AXP_TEXT_PROPERTY, AXP_THEME_PROPERTY, AXP_TITLE_PROPERTY, AXP_TRIGGERS_PROPERTY, AXP_TRIGGERS_PROPERTY_GROUP, AXP_TRULY_TEXT_PROPERTY, AXP_VALIDATION_PROPERTY_GROUP, AXP_VALUE_FIELD_PROPERTY, AXP_VERTICAL_ALIGN_PROPERTY, AXP_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_PROPERTY_GROUP, AXP_WIDGET_TOKEN, booleanDefaultProperty, buildWidgetRegistryMapFromProviders, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty, findNonEmptyBreakpoints, largeTextDefaultProperty, mapAXPPropertyToWidgetProperty, normalizeWidgetCategories, numberDefaultProperty, numberMaxValueProperty, numberMinValueProperty, plainTextDefaultProperty, richTextDefaultProperty, selectEditorDefaultValueProperty, selectionListEditorDefaultValueProperty };
|
|
2966
4569
|
//# sourceMappingURL=acorex-platform-layout-widget-core.mjs.map
|