@acorex/platform 21.0.0-next.0 → 21.0.0-next.2
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/auth/index.d.ts +238 -92
- package/common/index.d.ts +42 -606
- package/core/index.d.ts +432 -574
- package/fesm2022/acorex-platform-auth.mjs +200 -153
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +112 -1009
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +416 -694
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +11 -54
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +272 -414
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +3105 -2064
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +7 -7
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +648 -756
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +4 -4
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +174 -248
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs +50 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs +42 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs +55 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs +50 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs +48 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs +42 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.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-m8rHZP8L.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +974 -2994
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs → acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs} +5 -26
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs → acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs} +5 -4
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.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-B_P0a5KW.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +30 -166
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +27 -27
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/layout/builder/index.d.ts +1 -4
- package/layout/components/index.d.ts +327 -405
- package/layout/designer/index.d.ts +3 -3
- package/layout/entity/index.d.ts +108 -163
- package/layout/widget-core/index.d.ts +49 -39
- package/layout/widgets/index.d.ts +54 -368
- package/package.json +1 -1
- package/themes/default/index.d.ts +2 -15
- package/themes/shared/index.d.ts +10 -10
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.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-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Injectable, computed, input, effect, Directive, EventEmitter, HostListener, Output, ViewContainerRef, ElementRef,
|
|
2
|
+
import { InjectionToken, inject, Injectable, computed, input, effect, Directive, EventEmitter, HostListener, Output, ViewContainerRef, ElementRef, Injector, runInInjectionContext, provideAppInitializer, signal, Pipe } from '@angular/core';
|
|
3
3
|
import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
|
|
4
4
|
import { get, isPlainObject, set, isArray, merge, isNil, isObjectLike, transform, isEmpty, isEqual, differenceWith, union, cloneDeep, isUndefined, endsWith, startsWith, includes, lte, gte, lt, gt, orderBy } from 'lodash-es';
|
|
5
5
|
import { Subject, interval, fromEvent } from 'rxjs';
|
|
@@ -115,41 +115,6 @@ class AXPColorPaletteService {
|
|
|
115
115
|
this.cache = null;
|
|
116
116
|
await this.loadPalettes();
|
|
117
117
|
}
|
|
118
|
-
/**
|
|
119
|
-
* Get the default palette (material-design) or fallback colors
|
|
120
|
-
* @returns Promise of default palette, never returns undefined
|
|
121
|
-
*/
|
|
122
|
-
async getDefaultPalette() {
|
|
123
|
-
const defaultPalette = await this.getPalette('material-design');
|
|
124
|
-
if (defaultPalette) {
|
|
125
|
-
return defaultPalette;
|
|
126
|
-
}
|
|
127
|
-
// Fallback to hardcoded material design colors if provider fails
|
|
128
|
-
return {
|
|
129
|
-
name: 'material-design',
|
|
130
|
-
title: 'Material Design',
|
|
131
|
-
category: 'material',
|
|
132
|
-
description: 'Google Material Design color palette',
|
|
133
|
-
colors: [
|
|
134
|
-
'#F44336', // Red
|
|
135
|
-
'#E91E63', // Pink
|
|
136
|
-
'#9C27B0', // Purple
|
|
137
|
-
'#673AB7', // Deep Purple
|
|
138
|
-
'#3F51B5', // Indigo
|
|
139
|
-
'#2196F3', // Blue
|
|
140
|
-
'#03A9F4', // Light Blue
|
|
141
|
-
'#00BCD4', // Cyan
|
|
142
|
-
'#009688', // Teal
|
|
143
|
-
'#4CAF50', // Green
|
|
144
|
-
'#8BC34A', // Light Green
|
|
145
|
-
'#CDDC39', // Lime
|
|
146
|
-
'#FFEB3B', // Yellow
|
|
147
|
-
'#FFC107', // Amber
|
|
148
|
-
'#FF9800', // Orange
|
|
149
|
-
'#FF5722', // Deep Orange
|
|
150
|
-
],
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
118
|
//#endregion
|
|
154
119
|
//#region ---- Private Methods ----
|
|
155
120
|
/**
|
|
@@ -805,10 +770,6 @@ class AXPDataGenerator {
|
|
|
805
770
|
const country = this.country();
|
|
806
771
|
return `${streetNumber} ${street}, ${city}, ${state} ${zip}, ${country}`;
|
|
807
772
|
}
|
|
808
|
-
static avatar() {
|
|
809
|
-
return `https://avatar.iran.liara.run/public/${this.pick([35, 22, 16, 6, 31])}`;
|
|
810
|
-
//return `https://i.pravatar.cc/300?u=${this.uuid()}`;
|
|
811
|
-
}
|
|
812
773
|
}
|
|
813
774
|
|
|
814
775
|
function objectKeyValueTransforms(keyName) {
|
|
@@ -822,152 +783,19 @@ function objectKeyValueTransforms(keyName) {
|
|
|
822
783
|
};
|
|
823
784
|
}
|
|
824
785
|
|
|
825
|
-
//#region ---- Imports ----
|
|
826
|
-
//#endregion
|
|
827
|
-
//#region ---- Provider Registry Service ----
|
|
828
|
-
/**
|
|
829
|
-
* Registry service for dynamically loaded module providers.
|
|
830
|
-
* Stores provider instances that are loaded conditionally based on access control.
|
|
831
|
-
*/
|
|
832
|
-
class AXPModuleProviderRegistry {
|
|
833
|
-
constructor() {
|
|
834
|
-
//#region ---- Fields ----
|
|
835
|
-
this.permissionProviders = [];
|
|
836
|
-
this.menuProviders = [];
|
|
837
|
-
this.entityProviders = [];
|
|
838
|
-
this.settingProviders = [];
|
|
839
|
-
this.searchProviders = [];
|
|
840
|
-
this.featureProviders = [];
|
|
841
|
-
this.datasourceProviders = [];
|
|
842
|
-
}
|
|
843
|
-
//#endregion
|
|
844
|
-
//#region ---- Public Methods ----
|
|
845
|
-
/**
|
|
846
|
-
* Register a permission provider.
|
|
847
|
-
*/
|
|
848
|
-
registerPermissionProvider(provider) {
|
|
849
|
-
this.permissionProviders.push(provider);
|
|
850
|
-
}
|
|
851
|
-
/**
|
|
852
|
-
* Get all registered permission providers.
|
|
853
|
-
*/
|
|
854
|
-
getPermissionProviders() {
|
|
855
|
-
return [...this.permissionProviders];
|
|
856
|
-
}
|
|
857
|
-
/**
|
|
858
|
-
* Register a menu provider.
|
|
859
|
-
*/
|
|
860
|
-
registerMenuProvider(provider) {
|
|
861
|
-
this.menuProviders.push(provider);
|
|
862
|
-
}
|
|
863
|
-
/**
|
|
864
|
-
* Get all registered menu providers.
|
|
865
|
-
*/
|
|
866
|
-
getMenuProviders() {
|
|
867
|
-
return [...this.menuProviders];
|
|
868
|
-
}
|
|
869
|
-
/**
|
|
870
|
-
* Register an entity provider.
|
|
871
|
-
*/
|
|
872
|
-
registerEntityProvider(provider) {
|
|
873
|
-
this.entityProviders.push(provider);
|
|
874
|
-
}
|
|
875
|
-
/**
|
|
876
|
-
* Get all registered entity providers.
|
|
877
|
-
*/
|
|
878
|
-
getEntityProviders() {
|
|
879
|
-
return [...this.entityProviders];
|
|
880
|
-
}
|
|
881
|
-
/**
|
|
882
|
-
* Register a settings provider.
|
|
883
|
-
*/
|
|
884
|
-
registerSettingProvider(provider) {
|
|
885
|
-
this.settingProviders.push(provider);
|
|
886
|
-
}
|
|
887
|
-
/**
|
|
888
|
-
* Get all registered settings providers.
|
|
889
|
-
*/
|
|
890
|
-
getSettingProviders() {
|
|
891
|
-
return [...this.settingProviders];
|
|
892
|
-
}
|
|
893
|
-
/**
|
|
894
|
-
* Register a search provider.
|
|
895
|
-
*/
|
|
896
|
-
registerSearchProvider(provider) {
|
|
897
|
-
this.searchProviders.push(provider);
|
|
898
|
-
}
|
|
899
|
-
/**
|
|
900
|
-
* Get all registered search providers.
|
|
901
|
-
*/
|
|
902
|
-
getSearchProviders() {
|
|
903
|
-
return [...this.searchProviders];
|
|
904
|
-
}
|
|
905
|
-
/**
|
|
906
|
-
* Register a feature provider.
|
|
907
|
-
*/
|
|
908
|
-
registerFeatureProvider(provider) {
|
|
909
|
-
this.featureProviders.push(provider);
|
|
910
|
-
}
|
|
911
|
-
/**
|
|
912
|
-
* Get all registered feature providers.
|
|
913
|
-
*/
|
|
914
|
-
getFeatureProviders() {
|
|
915
|
-
return [...this.featureProviders];
|
|
916
|
-
}
|
|
917
|
-
/**
|
|
918
|
-
* Register a datasource provider.
|
|
919
|
-
*/
|
|
920
|
-
registerDatasourceProvider(provider) {
|
|
921
|
-
this.datasourceProviders.push(provider);
|
|
922
|
-
}
|
|
923
|
-
/**
|
|
924
|
-
* Get all registered datasource providers.
|
|
925
|
-
*/
|
|
926
|
-
getDatasourceProviders() {
|
|
927
|
-
return [...this.datasourceProviders];
|
|
928
|
-
}
|
|
929
|
-
/**
|
|
930
|
-
* Clear all registered providers.
|
|
931
|
-
* Useful for testing or re-initialization.
|
|
932
|
-
*/
|
|
933
|
-
clear() {
|
|
934
|
-
this.permissionProviders.length = 0;
|
|
935
|
-
this.menuProviders.length = 0;
|
|
936
|
-
this.entityProviders.length = 0;
|
|
937
|
-
this.settingProviders.length = 0;
|
|
938
|
-
this.searchProviders.length = 0;
|
|
939
|
-
this.featureProviders.length = 0;
|
|
940
|
-
this.datasourceProviders.length = 0;
|
|
941
|
-
}
|
|
942
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPModuleProviderRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
943
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPModuleProviderRegistry, providedIn: 'root' }); }
|
|
944
|
-
}
|
|
945
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPModuleProviderRegistry, decorators: [{
|
|
946
|
-
type: Injectable,
|
|
947
|
-
args: [{ providedIn: 'root' }]
|
|
948
|
-
}] });
|
|
949
|
-
|
|
950
786
|
const AXP_DATASOURCE_DEFINITION_PROVIDER = new InjectionToken('AXP_DATASOURCE_TYPE_PROVIDER');
|
|
951
787
|
class AXPDataSourceDefinitionProviderService {
|
|
952
788
|
constructor() {
|
|
953
789
|
this.providers = inject(AXP_DATASOURCE_DEFINITION_PROVIDER, { optional: true });
|
|
954
|
-
this.providerRegistry = inject(AXPModuleProviderRegistry);
|
|
955
790
|
}
|
|
956
791
|
async items() {
|
|
957
792
|
const items = [];
|
|
958
|
-
// Load from DI tokens (backward compatibility)
|
|
959
793
|
if (Array.isArray(this.providers)) {
|
|
960
794
|
for (const provider of this.providers) {
|
|
961
795
|
set(provider, '__parent__', this);
|
|
962
796
|
items.push(...(await provider.items()));
|
|
963
797
|
}
|
|
964
798
|
}
|
|
965
|
-
// Load from registry (manifest-based, conditionally loaded)
|
|
966
|
-
const registryProviders = this.providerRegistry.getDatasourceProviders();
|
|
967
|
-
for (const provider of registryProviders) {
|
|
968
|
-
set(provider, '__parent__', this);
|
|
969
|
-
items.push(...(await provider.items()));
|
|
970
|
-
}
|
|
971
799
|
return items;
|
|
972
800
|
}
|
|
973
801
|
async get(name) {
|
|
@@ -1138,203 +966,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1138
966
|
}]
|
|
1139
967
|
}] });
|
|
1140
968
|
|
|
1141
|
-
//#region ---- Imports ----
|
|
1142
|
-
//#endregion
|
|
1143
|
-
//#region ---- Directive ----
|
|
1144
|
-
/**
|
|
1145
|
-
* Fullscreen directive that provides CSS-based fullscreen functionality
|
|
1146
|
-
* Usage: <element axFullscreen #fullscreen="axFullscreen"></element>
|
|
1147
|
-
* Then: fullscreen.toggle() or fullscreen.enter() or fullscreen.exit()
|
|
1148
|
-
*/
|
|
1149
|
-
class AXFullscreenDirective {
|
|
1150
|
-
constructor(elementRef) {
|
|
1151
|
-
this.elementRef = elementRef;
|
|
1152
|
-
//#region ---- Properties ----
|
|
1153
|
-
/**
|
|
1154
|
-
* Current fullscreen state
|
|
1155
|
-
*/
|
|
1156
|
-
this.isFullscreenState = signal(false, ...(ngDevMode ? [{ debugName: "isFullscreenState" }] : []));
|
|
1157
|
-
/**
|
|
1158
|
-
* Original element styles to restore
|
|
1159
|
-
*/
|
|
1160
|
-
this.originalStyles = {};
|
|
1161
|
-
/**
|
|
1162
|
-
* Original parent element reference
|
|
1163
|
-
*/
|
|
1164
|
-
this.originalParent = null;
|
|
1165
|
-
/**
|
|
1166
|
-
* Fullscreen container element
|
|
1167
|
-
*/
|
|
1168
|
-
this.fullscreenContainer = null;
|
|
1169
|
-
/**
|
|
1170
|
-
* Fullscreen change event
|
|
1171
|
-
*/
|
|
1172
|
-
this.fullscreenChange = output();
|
|
1173
|
-
//#endregion
|
|
1174
|
-
//#region ---- Constructor ----
|
|
1175
|
-
this.destroyRef = inject(DestroyRef);
|
|
1176
|
-
this.renderer = inject(Renderer2);
|
|
1177
|
-
// Sync state changes to output
|
|
1178
|
-
effect(() => {
|
|
1179
|
-
const isFullscreen = this.isFullscreenState();
|
|
1180
|
-
untracked(() => {
|
|
1181
|
-
this.fullscreenChange.emit(isFullscreen);
|
|
1182
|
-
});
|
|
1183
|
-
});
|
|
1184
|
-
}
|
|
1185
|
-
//#endregion
|
|
1186
|
-
//#region ---- Public API ----
|
|
1187
|
-
/**
|
|
1188
|
-
* Toggle fullscreen state
|
|
1189
|
-
*/
|
|
1190
|
-
async toggle() {
|
|
1191
|
-
if (this.isFullscreenState()) {
|
|
1192
|
-
await this.exit();
|
|
1193
|
-
}
|
|
1194
|
-
else {
|
|
1195
|
-
await this.enter();
|
|
1196
|
-
}
|
|
1197
|
-
}
|
|
1198
|
-
/**
|
|
1199
|
-
* Enter fullscreen mode using CSS
|
|
1200
|
-
*/
|
|
1201
|
-
async enter() {
|
|
1202
|
-
if (this.isFullscreenState()) {
|
|
1203
|
-
return;
|
|
1204
|
-
}
|
|
1205
|
-
const element = this.elementRef.nativeElement;
|
|
1206
|
-
try {
|
|
1207
|
-
// Store original styles and parent
|
|
1208
|
-
this.storeOriginalStyles(element);
|
|
1209
|
-
this.originalParent = element.parentElement;
|
|
1210
|
-
// Create fullscreen container
|
|
1211
|
-
this.fullscreenContainer = this.renderer.createElement('div');
|
|
1212
|
-
this.renderer.setStyle(this.fullscreenContainer, 'position', 'fixed');
|
|
1213
|
-
this.renderer.setStyle(this.fullscreenContainer, 'top', '0');
|
|
1214
|
-
this.renderer.setStyle(this.fullscreenContainer, 'left', '0');
|
|
1215
|
-
this.renderer.setStyle(this.fullscreenContainer, 'width', '100vw');
|
|
1216
|
-
this.renderer.setStyle(this.fullscreenContainer, 'height', '100vh');
|
|
1217
|
-
this.renderer.setStyle(this.fullscreenContainer, 'z-index', '9999');
|
|
1218
|
-
this.renderer.setStyle(this.fullscreenContainer, 'background-color', '#ffffff');
|
|
1219
|
-
this.renderer.setStyle(this.fullscreenContainer, 'overflow', 'auto');
|
|
1220
|
-
// Move element to container
|
|
1221
|
-
this.renderer.appendChild(this.fullscreenContainer, element);
|
|
1222
|
-
// Apply fullscreen styles to element
|
|
1223
|
-
this.renderer.setStyle(element, 'position', 'relative');
|
|
1224
|
-
this.renderer.setStyle(element, 'width', '100%');
|
|
1225
|
-
this.renderer.setStyle(element, 'height', '100%');
|
|
1226
|
-
this.renderer.setStyle(element, 'margin', '0');
|
|
1227
|
-
this.renderer.setStyle(element, 'padding', '0');
|
|
1228
|
-
// Append container to body
|
|
1229
|
-
this.renderer.appendChild(document.body, this.fullscreenContainer);
|
|
1230
|
-
// Prevent body scroll
|
|
1231
|
-
this.renderer.setStyle(document.body, 'overflow', 'hidden');
|
|
1232
|
-
this.isFullscreenState.set(true);
|
|
1233
|
-
}
|
|
1234
|
-
catch (error) {
|
|
1235
|
-
console.error('Error entering fullscreen:', error);
|
|
1236
|
-
this.restoreOriginalStyles(element);
|
|
1237
|
-
}
|
|
1238
|
-
}
|
|
1239
|
-
/**
|
|
1240
|
-
* Exit fullscreen mode
|
|
1241
|
-
*/
|
|
1242
|
-
async exit() {
|
|
1243
|
-
if (!this.isFullscreenState()) {
|
|
1244
|
-
return;
|
|
1245
|
-
}
|
|
1246
|
-
const element = this.elementRef.nativeElement;
|
|
1247
|
-
try {
|
|
1248
|
-
// Restore body scroll
|
|
1249
|
-
this.renderer.removeStyle(document.body, 'overflow');
|
|
1250
|
-
// Move element back to original parent
|
|
1251
|
-
if (this.fullscreenContainer && this.originalParent) {
|
|
1252
|
-
this.renderer.removeChild(this.fullscreenContainer, element);
|
|
1253
|
-
this.renderer.appendChild(this.originalParent, element);
|
|
1254
|
-
// Remove container
|
|
1255
|
-
this.renderer.removeChild(document.body, this.fullscreenContainer);
|
|
1256
|
-
this.fullscreenContainer = null;
|
|
1257
|
-
}
|
|
1258
|
-
// Restore original styles
|
|
1259
|
-
this.restoreOriginalStyles(element);
|
|
1260
|
-
this.isFullscreenState.set(false);
|
|
1261
|
-
}
|
|
1262
|
-
catch (error) {
|
|
1263
|
-
console.error('Error exiting fullscreen:', error);
|
|
1264
|
-
}
|
|
1265
|
-
}
|
|
1266
|
-
/**
|
|
1267
|
-
* Check if currently in fullscreen mode
|
|
1268
|
-
*/
|
|
1269
|
-
isFullscreen() {
|
|
1270
|
-
return this.isFullscreenState();
|
|
1271
|
-
}
|
|
1272
|
-
//#endregion
|
|
1273
|
-
//#region ---- Private Methods ----
|
|
1274
|
-
/**
|
|
1275
|
-
* Store original element styles
|
|
1276
|
-
*/
|
|
1277
|
-
storeOriginalStyles(element) {
|
|
1278
|
-
const computedStyle = window.getComputedStyle(element);
|
|
1279
|
-
this.originalStyles = {
|
|
1280
|
-
position: computedStyle.position,
|
|
1281
|
-
top: computedStyle.top,
|
|
1282
|
-
left: computedStyle.left,
|
|
1283
|
-
width: computedStyle.width,
|
|
1284
|
-
height: computedStyle.height,
|
|
1285
|
-
zIndex: computedStyle.zIndex,
|
|
1286
|
-
backgroundColor: computedStyle.backgroundColor,
|
|
1287
|
-
margin: computedStyle.margin,
|
|
1288
|
-
padding: computedStyle.padding,
|
|
1289
|
-
};
|
|
1290
|
-
}
|
|
1291
|
-
/**
|
|
1292
|
-
* Restore original element styles
|
|
1293
|
-
*/
|
|
1294
|
-
restoreOriginalStyles(element) {
|
|
1295
|
-
if (!this.originalStyles) {
|
|
1296
|
-
return;
|
|
1297
|
-
}
|
|
1298
|
-
// Restore each style property
|
|
1299
|
-
Object.entries(this.originalStyles).forEach(([key, value]) => {
|
|
1300
|
-
const styleKey = this.camelToKebabCase(key);
|
|
1301
|
-
if (value) {
|
|
1302
|
-
this.renderer.setStyle(element, styleKey, value);
|
|
1303
|
-
}
|
|
1304
|
-
else {
|
|
1305
|
-
this.renderer.removeStyle(element, styleKey);
|
|
1306
|
-
}
|
|
1307
|
-
});
|
|
1308
|
-
this.originalStyles = {};
|
|
1309
|
-
}
|
|
1310
|
-
/**
|
|
1311
|
-
* Convert camelCase to kebab-case for CSS properties
|
|
1312
|
-
*/
|
|
1313
|
-
camelToKebabCase(str) {
|
|
1314
|
-
return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();
|
|
1315
|
-
}
|
|
1316
|
-
//#endregion
|
|
1317
|
-
//#region ---- Lifecycle ----
|
|
1318
|
-
ngOnDestroy() {
|
|
1319
|
-
// Exit fullscreen if still active
|
|
1320
|
-
if (this.isFullscreenState()) {
|
|
1321
|
-
this.exit().catch(() => {
|
|
1322
|
-
// Ignore errors during cleanup
|
|
1323
|
-
});
|
|
1324
|
-
}
|
|
1325
|
-
}
|
|
1326
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXFullscreenDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1327
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.12", type: AXFullscreenDirective, isStandalone: true, selector: "[axFullscreen]", outputs: { fullscreenChange: "fullscreenChange" }, exportAs: ["axFullscreen"], ngImport: i0 }); }
|
|
1328
|
-
}
|
|
1329
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXFullscreenDirective, decorators: [{
|
|
1330
|
-
type: Directive,
|
|
1331
|
-
args: [{
|
|
1332
|
-
selector: '[axFullscreen]',
|
|
1333
|
-
standalone: true,
|
|
1334
|
-
exportAs: 'axFullscreen',
|
|
1335
|
-
}]
|
|
1336
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { fullscreenChange: [{ type: i0.Output, args: ["fullscreenChange"] }] } });
|
|
1337
|
-
|
|
1338
969
|
const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER = new InjectionToken('AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER');
|
|
1339
970
|
|
|
1340
971
|
//#region ---- Imports ----
|
|
@@ -1814,362 +1445,459 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1814
1445
|
args: [{ providedIn: 'root' }]
|
|
1815
1446
|
}] });
|
|
1816
1447
|
|
|
1817
|
-
|
|
1818
|
-
//#endregion
|
|
1819
|
-
|
|
1820
|
-
//#region ---- Imports ----
|
|
1821
|
-
//#endregion
|
|
1822
|
-
//#region ---- Injection Token ----
|
|
1823
|
-
/**
|
|
1824
|
-
* Injection token for module manifest providers.
|
|
1825
|
-
* Modules register their manifest providers using this token.
|
|
1826
|
-
*/
|
|
1827
|
-
const AXP_MODULE_MANIFEST_PROVIDER = new InjectionToken('AXP_MODULE_MANIFEST_PROVIDER');
|
|
1828
|
-
//#endregion
|
|
1829
|
-
//#region ---- Default Provider ----
|
|
1830
|
-
|
|
1831
|
-
//#region ---- Imports ----
|
|
1832
|
-
//#endregion
|
|
1833
|
-
//#region ---- Registry Service ----
|
|
1834
|
-
/**
|
|
1835
|
-
* Registry service for module manifests.
|
|
1836
|
-
* Collects and manages all registered module manifests.
|
|
1837
|
-
*/
|
|
1838
|
-
class AXPModuleManifestRegistry {
|
|
1448
|
+
class AXPAppStartUpService {
|
|
1839
1449
|
constructor() {
|
|
1840
|
-
|
|
1841
|
-
this.manifests = new Map();
|
|
1842
|
-
this.featureDefinitions = new Map();
|
|
1843
|
-
this.injector = inject(Injector);
|
|
1844
|
-
this.initializationPromise = null;
|
|
1845
|
-
this.isInitialized = false;
|
|
1846
|
-
}
|
|
1847
|
-
//#endregion
|
|
1848
|
-
//#region ---- Initialization ----
|
|
1849
|
-
/**
|
|
1850
|
-
* Initialize registry by loading all manifest providers.
|
|
1851
|
-
* Should be called during app startup.
|
|
1852
|
-
* Safe to call multiple times - will only initialize once.
|
|
1853
|
-
*/
|
|
1854
|
-
async initialize() {
|
|
1855
|
-
// If already initialized, return immediately
|
|
1856
|
-
if (this.isInitialized) {
|
|
1857
|
-
return;
|
|
1858
|
-
}
|
|
1859
|
-
// If initialization is in progress, wait for it
|
|
1860
|
-
if (this.initializationPromise) {
|
|
1861
|
-
return this.initializationPromise;
|
|
1862
|
-
}
|
|
1863
|
-
// Start initialization
|
|
1864
|
-
this.initializationPromise = this._doInitialize();
|
|
1865
|
-
await this.initializationPromise;
|
|
1450
|
+
this.tasks = [];
|
|
1866
1451
|
}
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
*/
|
|
1870
|
-
async _doInitialize() {
|
|
1871
|
-
// Get manifests from injector (using useValue, they are provided directly)
|
|
1872
|
-
let manifests;
|
|
1873
|
-
try {
|
|
1874
|
-
const injectedManifests = this.injector.get(AXP_MODULE_MANIFEST_PROVIDER, []);
|
|
1875
|
-
manifests = Array.isArray(injectedManifests) ? injectedManifests : injectedManifests ? [injectedManifests] : [];
|
|
1876
|
-
}
|
|
1877
|
-
catch (error) {
|
|
1878
|
-
console.error('Failed to get manifest providers from injector:', error);
|
|
1879
|
-
manifests = [];
|
|
1880
|
-
}
|
|
1881
|
-
// Register all manifests directly
|
|
1882
|
-
const registerPromises = manifests.map(async (manifest) => {
|
|
1883
|
-
try {
|
|
1884
|
-
// Validate manifest
|
|
1885
|
-
if (!manifest) {
|
|
1886
|
-
console.error('Invalid manifest:', manifest);
|
|
1887
|
-
return;
|
|
1888
|
-
}
|
|
1889
|
-
await this.register(manifest);
|
|
1890
|
-
}
|
|
1891
|
-
catch (error) {
|
|
1892
|
-
console.error(`Failed to register manifest:`, error);
|
|
1893
|
-
}
|
|
1894
|
-
});
|
|
1895
|
-
await Promise.all(registerPromises);
|
|
1896
|
-
this.isInitialized = true;
|
|
1452
|
+
registerTask(task) {
|
|
1453
|
+
this.tasks.push(task);
|
|
1897
1454
|
}
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
async register(manifest) {
|
|
1904
|
-
// Validate manifest
|
|
1905
|
-
if (!manifest.name) {
|
|
1906
|
-
throw new Error('Manifest must have a name');
|
|
1907
|
-
}
|
|
1908
|
-
if (!manifest.version) {
|
|
1909
|
-
throw new Error(`Manifest for module '${manifest.name}' must have a version`);
|
|
1455
|
+
async runAllTasks() {
|
|
1456
|
+
for (const task of this.tasks.sort((a, b) => a.priority - b.priority)) {
|
|
1457
|
+
console.log(`Running "${task.statusText}" with priority "${task.priority}"`);
|
|
1458
|
+
this.updateStatus(task.statusText);
|
|
1459
|
+
await task.run();
|
|
1910
1460
|
}
|
|
1911
|
-
// Register manifest
|
|
1912
|
-
this.manifests.set(manifest.name, manifest);
|
|
1913
|
-
}
|
|
1914
|
-
/**
|
|
1915
|
-
* Get manifest for a module.
|
|
1916
|
-
*/
|
|
1917
|
-
get(moduleName) {
|
|
1918
|
-
return this.manifests.get(moduleName);
|
|
1919
|
-
}
|
|
1920
|
-
/**
|
|
1921
|
-
* Get all registered manifests.
|
|
1922
|
-
*/
|
|
1923
|
-
getAll() {
|
|
1924
|
-
return Array.from(this.manifests.values());
|
|
1925
|
-
}
|
|
1926
|
-
/**
|
|
1927
|
-
* Check if a module manifest is registered.
|
|
1928
|
-
*/
|
|
1929
|
-
has(moduleName) {
|
|
1930
|
-
return this.manifests.has(moduleName);
|
|
1931
|
-
}
|
|
1932
|
-
//#endregion
|
|
1933
|
-
//#region ---- Feature Definition Management ----
|
|
1934
|
-
/**
|
|
1935
|
-
* Get all feature definitions from all manifests.
|
|
1936
|
-
*/
|
|
1937
|
-
getAllFeatureDefinitions() {
|
|
1938
|
-
return Array.from(this.featureDefinitions.values());
|
|
1939
|
-
}
|
|
1940
|
-
/**
|
|
1941
|
-
* Get feature definition by full name.
|
|
1942
|
-
*/
|
|
1943
|
-
getFeatureDefinition(featureName) {
|
|
1944
|
-
return this.featureDefinitions.get(featureName);
|
|
1945
|
-
}
|
|
1946
|
-
/**
|
|
1947
|
-
* Check if a feature is defined in any manifest.
|
|
1948
|
-
*/
|
|
1949
|
-
isFeatureDefined(featureName) {
|
|
1950
|
-
return this.featureDefinitions.has(featureName);
|
|
1951
|
-
}
|
|
1952
|
-
/**
|
|
1953
|
-
* Get default value for a feature.
|
|
1954
|
-
* Returns undefined if feature is not defined.
|
|
1955
|
-
*/
|
|
1956
|
-
getFeatureDefault(featureName) {
|
|
1957
|
-
const definition = this.getFeatureDefinition(featureName);
|
|
1958
|
-
return definition?.defaultValue;
|
|
1959
|
-
}
|
|
1960
|
-
/**
|
|
1961
|
-
* Get all feature definitions for a specific module.
|
|
1962
|
-
*/
|
|
1963
|
-
getModuleFeatures(moduleName) {
|
|
1964
|
-
return Array.from(this.featureDefinitions.values()).filter((def) => def.module === moduleName);
|
|
1965
|
-
}
|
|
1966
|
-
/**
|
|
1967
|
-
* Register a feature definition dynamically (e.g., from feature definition provider).
|
|
1968
|
-
* Used to add features that are defined at runtime via featuresProvider.
|
|
1969
|
-
*/
|
|
1970
|
-
registerFeatureDefinition(definition) {
|
|
1971
|
-
this.featureDefinitions.set(definition.name, definition);
|
|
1972
1461
|
}
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
* Returns array of missing dependencies.
|
|
1978
|
-
*/
|
|
1979
|
-
checkDependencies(moduleName) {
|
|
1980
|
-
const manifest = this.get(moduleName);
|
|
1981
|
-
if (!manifest?.dependencies) {
|
|
1982
|
-
return { missingModules: [], missingFeatures: [] };
|
|
1983
|
-
}
|
|
1984
|
-
const missingModules = [];
|
|
1985
|
-
const missingFeatures = [];
|
|
1986
|
-
// Check module dependencies
|
|
1987
|
-
if (manifest.dependencies.modules) {
|
|
1988
|
-
for (const depModule of manifest.dependencies.modules) {
|
|
1989
|
-
if (!this.has(depModule)) {
|
|
1990
|
-
missingModules.push(depModule);
|
|
1991
|
-
}
|
|
1992
|
-
}
|
|
1993
|
-
}
|
|
1994
|
-
// Check feature dependencies
|
|
1995
|
-
if (manifest.dependencies.features) {
|
|
1996
|
-
for (const featureName of manifest.dependencies.features) {
|
|
1997
|
-
if (!this.isFeatureDefined(featureName)) {
|
|
1998
|
-
missingFeatures.push(featureName);
|
|
1999
|
-
}
|
|
2000
|
-
}
|
|
1462
|
+
updateStatus(status) {
|
|
1463
|
+
const loadingText = document.querySelector('#loadingText');
|
|
1464
|
+
if (loadingText) {
|
|
1465
|
+
loadingText.innerHTML = status;
|
|
2001
1466
|
}
|
|
2002
|
-
return { missingModules, missingFeatures };
|
|
2003
1467
|
}
|
|
2004
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type:
|
|
2005
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type:
|
|
1468
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPAppStartUpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1469
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPAppStartUpService, providedIn: 'root' }); }
|
|
2006
1470
|
}
|
|
2007
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type:
|
|
1471
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPAppStartUpService, decorators: [{
|
|
2008
1472
|
type: Injectable,
|
|
2009
|
-
args: [{
|
|
1473
|
+
args: [{
|
|
1474
|
+
providedIn: 'root',
|
|
1475
|
+
}]
|
|
2010
1476
|
}] });
|
|
1477
|
+
function initAppFactory(appInitService) {
|
|
1478
|
+
return () => appInitService.runAllTasks();
|
|
1479
|
+
}
|
|
1480
|
+
const AXPAppStartUpProvider = provideAppInitializer(() => {
|
|
1481
|
+
const initializerFn = initAppFactory(inject(AXPAppStartUpService));
|
|
1482
|
+
return initializerFn();
|
|
1483
|
+
});
|
|
2011
1484
|
|
|
2012
|
-
//#region ---- Imports ----
|
|
2013
|
-
//#endregion
|
|
2014
|
-
//#region ---- Initializer ----
|
|
2015
1485
|
/**
|
|
2016
|
-
*
|
|
2017
|
-
*
|
|
1486
|
+
* Status Definition Types
|
|
1487
|
+
* Defines the structure for status definitions and their transitions
|
|
2018
1488
|
*/
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
//#endregion
|
|
2025
|
-
//#region ---- Public Methods ----
|
|
2026
|
-
/**
|
|
2027
|
-
* Create startup task for manifest initialization.
|
|
2028
|
-
*/
|
|
2029
|
-
createStartupTask() {
|
|
2030
|
-
return {
|
|
2031
|
-
name: 'ModuleManifests',
|
|
2032
|
-
statusText: 'Loading module manifests...',
|
|
2033
|
-
priority: 1, // Load early, before features/permissions
|
|
2034
|
-
run: async () => {
|
|
2035
|
-
await this.manifestRegistry.initialize();
|
|
2036
|
-
},
|
|
2037
|
-
};
|
|
2038
|
-
}
|
|
2039
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPModuleManifestInitializer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2040
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPModuleManifestInitializer, providedIn: 'root' }); }
|
|
1489
|
+
/**
|
|
1490
|
+
* Abstract class for status providers
|
|
1491
|
+
* Similar to AXPTaskBadgeProvider pattern
|
|
1492
|
+
*/
|
|
1493
|
+
class AXPStatusProvider {
|
|
2041
1494
|
}
|
|
2042
|
-
|
|
2043
|
-
type: Injectable,
|
|
2044
|
-
args: [{ providedIn: 'root' }]
|
|
2045
|
-
}] });
|
|
1495
|
+
//#endregion
|
|
2046
1496
|
|
|
2047
|
-
//#region ----
|
|
1497
|
+
//#region ---- Injection Token ----
|
|
1498
|
+
/**
|
|
1499
|
+
* Injection token for status providers
|
|
1500
|
+
* Use with multi: true to register multiple providers
|
|
1501
|
+
*/
|
|
1502
|
+
const AXP_STATUS_PROVIDERS = new InjectionToken('AXP_STATUS_PROVIDERS');
|
|
2048
1503
|
//#endregion
|
|
2049
|
-
//#region ----
|
|
1504
|
+
//#region ---- Provider Service ----
|
|
2050
1505
|
/**
|
|
2051
|
-
*
|
|
2052
|
-
*
|
|
1506
|
+
* Service for managing status definitions from multiple providers
|
|
1507
|
+
* Similar to AXPTaskBadgeService pattern - no cache, direct access
|
|
1508
|
+
*
|
|
1509
|
+
* @example
|
|
1510
|
+
* ```typescript
|
|
1511
|
+
* // In a module providers array:
|
|
1512
|
+
* {
|
|
1513
|
+
* provide: AXP_STATUS_PROVIDERS,
|
|
1514
|
+
* useClass: TaskStatusProvider,
|
|
1515
|
+
* multi: true,
|
|
1516
|
+
* }
|
|
1517
|
+
*
|
|
1518
|
+
* // Example provider implementation:
|
|
1519
|
+
* export class TaskStatusProvider extends AXPStatusProvider {
|
|
1520
|
+
* readonly key = 'task-management.status';
|
|
1521
|
+
* readonly statuses = [
|
|
1522
|
+
* { name: 'todo', title: 'To Do', color: '#6b7280', icon: 'fa-light fa-circle', isInitial: true },
|
|
1523
|
+
* { name: 'in-progress', title: 'In Progress', color: '#3b82f6', icon: 'fa-light fa-play' },
|
|
1524
|
+
* { name: 'done', title: 'Done', color: '#10b981', icon: 'fa-light fa-check-circle', isFinal: true },
|
|
1525
|
+
* ];
|
|
1526
|
+
* readonly transitions = [
|
|
1527
|
+
* { from: 'todo', to: 'in-progress', title: 'Start', condition: '{{user.canEdit}}' },
|
|
1528
|
+
* { from: 'in-progress', to: 'done', title: 'Complete' },
|
|
1529
|
+
* ];
|
|
1530
|
+
* readonly defaultStatus = 'todo';
|
|
1531
|
+
* }
|
|
1532
|
+
*
|
|
1533
|
+
* // Later, get the status:
|
|
1534
|
+
* const status = statusService.getStatus('task-management.status');
|
|
1535
|
+
* if (status) {
|
|
1536
|
+
* console.log('Statuses:', status.statuses);
|
|
1537
|
+
* console.log('Transitions:', status.transitions);
|
|
1538
|
+
* }
|
|
1539
|
+
* ```
|
|
2053
1540
|
*/
|
|
2054
|
-
class
|
|
1541
|
+
class AXPStatusDefinitionProviderService {
|
|
1542
|
+
//#endregion
|
|
1543
|
+
//#region ---- Constructor ----
|
|
2055
1544
|
constructor() {
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
1545
|
+
//#region ---- Dependencies ----
|
|
1546
|
+
this.providers = inject(AXP_STATUS_PROVIDERS, { optional: true }) ?? [];
|
|
1547
|
+
//#endregion
|
|
1548
|
+
//#region ---- State ----
|
|
1549
|
+
this.statusMap = new Map();
|
|
1550
|
+
// Register all providers in constructor (like badge service)
|
|
1551
|
+
for (const provider of this.providers) {
|
|
1552
|
+
if (this.statusMap.has(provider.key)) {
|
|
1553
|
+
console.warn(`Status with key "${provider.key}" already exists. Overwriting with new status.`);
|
|
1554
|
+
}
|
|
1555
|
+
this.statusMap.set(provider.key, provider);
|
|
1556
|
+
}
|
|
2065
1557
|
}
|
|
1558
|
+
//#endregion
|
|
1559
|
+
//#region ---- Public API ----
|
|
2066
1560
|
/**
|
|
2067
|
-
* Get
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
1561
|
+
* Get a status provider by key
|
|
1562
|
+
* Direct access from Map (no lazy load, no cache)
|
|
1563
|
+
*
|
|
1564
|
+
* @param key - Status key (e.g., 'task-management.status')
|
|
1565
|
+
* @returns Status provider with all statuses and transitions, or undefined if not found
|
|
1566
|
+
*
|
|
1567
|
+
* @example
|
|
1568
|
+
* ```typescript
|
|
1569
|
+
* const status = statusService.getStatus('task-management.status');
|
|
1570
|
+
* if (status) {
|
|
1571
|
+
* console.log('Statuses:', status.statuses);
|
|
1572
|
+
* console.log('Transitions:', status.transitions);
|
|
1573
|
+
* }
|
|
1574
|
+
* ```
|
|
1575
|
+
*/
|
|
1576
|
+
getStatus(key) {
|
|
1577
|
+
return this.statusMap.get(key);
|
|
1578
|
+
}
|
|
1579
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPStatusDefinitionProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1580
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPStatusDefinitionProviderService, providedIn: 'root' }); }
|
|
2072
1581
|
}
|
|
1582
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPStatusDefinitionProviderService, decorators: [{
|
|
1583
|
+
type: Injectable,
|
|
1584
|
+
args: [{ providedIn: 'root' }]
|
|
1585
|
+
}], ctorParameters: () => [] });
|
|
1586
|
+
|
|
2073
1587
|
/**
|
|
2074
|
-
*
|
|
1588
|
+
* Standard system status types
|
|
1589
|
+
* These are the predefined status values used across the platform
|
|
2075
1590
|
*/
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
1591
|
+
var AXPSystemStatusType;
|
|
1592
|
+
(function (AXPSystemStatusType) {
|
|
1593
|
+
AXPSystemStatusType["Todo"] = "todo";
|
|
1594
|
+
AXPSystemStatusType["InProgress"] = "in-progress";
|
|
1595
|
+
AXPSystemStatusType["InReview"] = "in-review";
|
|
1596
|
+
AXPSystemStatusType["Blocked"] = "blocked";
|
|
1597
|
+
AXPSystemStatusType["Done"] = "done";
|
|
1598
|
+
AXPSystemStatusType["Cancelled"] = "cancelled";
|
|
1599
|
+
AXPSystemStatusType["Draft"] = "draft";
|
|
1600
|
+
AXPSystemStatusType["PendingReview"] = "pending-review";
|
|
1601
|
+
AXPSystemStatusType["Approved"] = "approved";
|
|
1602
|
+
AXPSystemStatusType["Published"] = "published";
|
|
1603
|
+
AXPSystemStatusType["Archived"] = "archived";
|
|
1604
|
+
AXPSystemStatusType["Rejected"] = "rejected";
|
|
1605
|
+
AXPSystemStatusType["Active"] = "active";
|
|
1606
|
+
AXPSystemStatusType["Inactive"] = "inactive";
|
|
1607
|
+
AXPSystemStatusType["Pending"] = "pending";
|
|
1608
|
+
AXPSystemStatusType["Completed"] = "completed";
|
|
1609
|
+
AXPSystemStatusType["Suspended"] = "suspended";
|
|
1610
|
+
AXPSystemStatusType["Failed"] = "failed";
|
|
1611
|
+
AXPSystemStatusType["Review"] = "review";
|
|
1612
|
+
})(AXPSystemStatusType || (AXPSystemStatusType = {}));
|
|
1613
|
+
const i18n$1 = (key) => `@general:statuses.${key}`;
|
|
2083
1614
|
/**
|
|
2084
|
-
*
|
|
2085
|
-
*
|
|
1615
|
+
* Standard system status definitions
|
|
1616
|
+
* Provides consistent status definitions across the platform
|
|
1617
|
+
* Uses AXPStatusDefinition interface from status-definition.types.ts
|
|
2086
1618
|
*/
|
|
2087
|
-
const
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
1619
|
+
const AXPSystemStatuses = Object.freeze({
|
|
1620
|
+
Todo: {
|
|
1621
|
+
name: AXPSystemStatusType.Todo,
|
|
1622
|
+
title: i18n$1('todo.title'),
|
|
1623
|
+
icon: 'fa-light fa-circle',
|
|
1624
|
+
color: 'secondary',
|
|
1625
|
+
description: i18n$1('todo.description'),
|
|
1626
|
+
order: 1,
|
|
1627
|
+
isActive: true,
|
|
1628
|
+
isInitial: true,
|
|
1629
|
+
isFinal: false,
|
|
1630
|
+
},
|
|
1631
|
+
InProgress: {
|
|
1632
|
+
name: AXPSystemStatusType.InProgress,
|
|
1633
|
+
title: i18n$1('in-progress.title'),
|
|
1634
|
+
icon: 'fa-light fa-play',
|
|
1635
|
+
color: 'info',
|
|
1636
|
+
description: i18n$1('in-progress.description'),
|
|
1637
|
+
order: 2,
|
|
1638
|
+
isActive: true,
|
|
1639
|
+
isInitial: false,
|
|
1640
|
+
isFinal: false,
|
|
1641
|
+
},
|
|
1642
|
+
InReview: {
|
|
1643
|
+
name: AXPSystemStatusType.InReview,
|
|
1644
|
+
title: i18n$1('in-review.title'),
|
|
1645
|
+
icon: 'fa-light fa-eye',
|
|
1646
|
+
color: 'info',
|
|
1647
|
+
description: i18n$1('in-review.description'),
|
|
1648
|
+
order: 3,
|
|
1649
|
+
isActive: true,
|
|
1650
|
+
isInitial: false,
|
|
1651
|
+
isFinal: false,
|
|
1652
|
+
},
|
|
1653
|
+
Blocked: {
|
|
1654
|
+
name: AXPSystemStatusType.Blocked,
|
|
1655
|
+
title: i18n$1('blocked.title'),
|
|
1656
|
+
icon: 'fa-light fa-ban',
|
|
1657
|
+
color: 'danger',
|
|
1658
|
+
description: i18n$1('blocked.description'),
|
|
1659
|
+
order: 4,
|
|
1660
|
+
isActive: true,
|
|
1661
|
+
isInitial: false,
|
|
1662
|
+
isFinal: false,
|
|
1663
|
+
},
|
|
1664
|
+
Done: {
|
|
1665
|
+
name: AXPSystemStatusType.Done,
|
|
1666
|
+
title: i18n$1('done.title'),
|
|
1667
|
+
icon: 'fa-light fa-check-circle',
|
|
1668
|
+
color: 'success',
|
|
1669
|
+
description: i18n$1('done.description'),
|
|
1670
|
+
order: 5,
|
|
1671
|
+
isActive: true,
|
|
1672
|
+
isInitial: false,
|
|
1673
|
+
isFinal: true,
|
|
1674
|
+
},
|
|
1675
|
+
Cancelled: {
|
|
1676
|
+
name: AXPSystemStatusType.Cancelled,
|
|
1677
|
+
title: i18n$1('cancelled.title'),
|
|
1678
|
+
icon: 'fa-light fa-times-circle',
|
|
1679
|
+
color: 'neutral',
|
|
1680
|
+
description: i18n$1('cancelled.description'),
|
|
1681
|
+
order: 6,
|
|
1682
|
+
isActive: true,
|
|
1683
|
+
isInitial: false,
|
|
1684
|
+
isFinal: true,
|
|
1685
|
+
},
|
|
1686
|
+
Draft: {
|
|
1687
|
+
name: AXPSystemStatusType.Draft,
|
|
1688
|
+
title: i18n$1('draft.title'),
|
|
1689
|
+
icon: 'fa-light fa-file-pen',
|
|
1690
|
+
color: 'neutral',
|
|
1691
|
+
description: i18n$1('draft.description'),
|
|
1692
|
+
order: 1,
|
|
1693
|
+
isActive: true,
|
|
1694
|
+
isInitial: true,
|
|
1695
|
+
isFinal: false,
|
|
1696
|
+
},
|
|
1697
|
+
PendingReview: {
|
|
1698
|
+
name: AXPSystemStatusType.PendingReview,
|
|
1699
|
+
title: i18n$1('pending-review.title'),
|
|
1700
|
+
icon: 'fa-light fa-clock',
|
|
1701
|
+
color: 'warning',
|
|
1702
|
+
description: i18n$1('pending-review.description'),
|
|
1703
|
+
order: 2,
|
|
1704
|
+
isActive: true,
|
|
1705
|
+
isInitial: false,
|
|
1706
|
+
isFinal: false,
|
|
1707
|
+
},
|
|
1708
|
+
Approved: {
|
|
1709
|
+
name: AXPSystemStatusType.Approved,
|
|
1710
|
+
title: i18n$1('approved.title'),
|
|
1711
|
+
icon: 'fa-light fa-check-circle',
|
|
1712
|
+
color: 'success',
|
|
1713
|
+
description: i18n$1('approved.description'),
|
|
1714
|
+
order: 3,
|
|
1715
|
+
isActive: true,
|
|
1716
|
+
isInitial: false,
|
|
1717
|
+
isFinal: false,
|
|
1718
|
+
},
|
|
1719
|
+
Published: {
|
|
1720
|
+
name: AXPSystemStatusType.Published,
|
|
1721
|
+
title: i18n$1('published.title'),
|
|
1722
|
+
icon: 'fa-light fa-globe',
|
|
1723
|
+
color: 'primary',
|
|
1724
|
+
description: i18n$1('published.description'),
|
|
1725
|
+
order: 4,
|
|
1726
|
+
isActive: true,
|
|
1727
|
+
isInitial: false,
|
|
1728
|
+
isFinal: false,
|
|
1729
|
+
},
|
|
1730
|
+
Archived: {
|
|
1731
|
+
name: AXPSystemStatusType.Archived,
|
|
1732
|
+
title: i18n$1('archived.title'),
|
|
1733
|
+
icon: 'fa-light fa-archive',
|
|
1734
|
+
color: 'neutral',
|
|
1735
|
+
description: i18n$1('archived.description'),
|
|
1736
|
+
order: 5,
|
|
1737
|
+
isActive: true,
|
|
1738
|
+
isInitial: false,
|
|
1739
|
+
isFinal: true,
|
|
1740
|
+
},
|
|
1741
|
+
Rejected: {
|
|
1742
|
+
name: AXPSystemStatusType.Rejected,
|
|
1743
|
+
title: i18n$1('rejected.title'),
|
|
1744
|
+
icon: 'fa-light fa-times-circle',
|
|
1745
|
+
color: 'danger',
|
|
1746
|
+
description: i18n$1('rejected.description'),
|
|
1747
|
+
order: 6,
|
|
1748
|
+
isActive: true,
|
|
1749
|
+
isInitial: false,
|
|
1750
|
+
isFinal: true,
|
|
1751
|
+
},
|
|
1752
|
+
Active: {
|
|
1753
|
+
name: AXPSystemStatusType.Active,
|
|
1754
|
+
title: i18n$1('active.title'),
|
|
1755
|
+
icon: 'fa-light fa-check-circle',
|
|
1756
|
+
color: 'success',
|
|
1757
|
+
description: i18n$1('active.description'),
|
|
1758
|
+
order: 1,
|
|
1759
|
+
isActive: true,
|
|
1760
|
+
isInitial: false,
|
|
1761
|
+
isFinal: false,
|
|
1762
|
+
},
|
|
1763
|
+
Inactive: {
|
|
1764
|
+
name: AXPSystemStatusType.Inactive,
|
|
1765
|
+
title: i18n$1('inactive.title'),
|
|
1766
|
+
icon: 'fa-light fa-circle',
|
|
1767
|
+
color: 'secondary',
|
|
1768
|
+
description: i18n$1('inactive.description'),
|
|
1769
|
+
order: 2,
|
|
1770
|
+
isActive: true,
|
|
1771
|
+
isInitial: false,
|
|
1772
|
+
isFinal: false,
|
|
1773
|
+
},
|
|
1774
|
+
Pending: {
|
|
1775
|
+
name: AXPSystemStatusType.Pending,
|
|
1776
|
+
title: i18n$1('pending.title'),
|
|
1777
|
+
icon: 'fa-light fa-clock',
|
|
1778
|
+
color: 'warning',
|
|
1779
|
+
description: i18n$1('pending.description'),
|
|
1780
|
+
order: 1,
|
|
1781
|
+
isActive: true,
|
|
1782
|
+
isInitial: true,
|
|
1783
|
+
isFinal: false,
|
|
1784
|
+
},
|
|
1785
|
+
Completed: {
|
|
1786
|
+
name: AXPSystemStatusType.Completed,
|
|
1787
|
+
title: i18n$1('completed.title'),
|
|
1788
|
+
icon: 'fa-light fa-check-circle',
|
|
1789
|
+
color: 'success',
|
|
1790
|
+
description: i18n$1('completed.description'),
|
|
1791
|
+
order: 10,
|
|
1792
|
+
isActive: true,
|
|
1793
|
+
isInitial: false,
|
|
1794
|
+
isFinal: true,
|
|
1795
|
+
},
|
|
1796
|
+
Suspended: {
|
|
1797
|
+
name: AXPSystemStatusType.Suspended,
|
|
1798
|
+
title: i18n$1('suspended.title'),
|
|
1799
|
+
icon: 'fa-light fa-pause-circle',
|
|
1800
|
+
color: 'neutral',
|
|
1801
|
+
description: i18n$1('suspended.description'),
|
|
1802
|
+
order: 5,
|
|
1803
|
+
isActive: true,
|
|
1804
|
+
isInitial: false,
|
|
1805
|
+
isFinal: false,
|
|
1806
|
+
},
|
|
1807
|
+
Failed: {
|
|
1808
|
+
name: AXPSystemStatusType.Failed,
|
|
1809
|
+
title: i18n$1('failed.title'),
|
|
1810
|
+
icon: 'fa-light fa-xmark-circle',
|
|
1811
|
+
color: 'danger',
|
|
1812
|
+
description: i18n$1('failed.description'),
|
|
1813
|
+
order: 10,
|
|
1814
|
+
isActive: true,
|
|
1815
|
+
isInitial: false,
|
|
1816
|
+
isFinal: true,
|
|
1817
|
+
},
|
|
1818
|
+
Review: {
|
|
1819
|
+
name: AXPSystemStatusType.Review,
|
|
1820
|
+
title: i18n$1('review.title'),
|
|
1821
|
+
icon: 'fa-light fa-eye',
|
|
1822
|
+
color: 'info',
|
|
1823
|
+
description: i18n$1('review.description'),
|
|
1824
|
+
order: 3,
|
|
1825
|
+
isActive: true,
|
|
2091
1826
|
},
|
|
2092
1827
|
});
|
|
2093
1828
|
/**
|
|
2094
|
-
*
|
|
2095
|
-
*
|
|
2096
|
-
|
|
2097
|
-
const AXP_MODULE_PROVIDER_LOADER = new InjectionToken('AXP_MODULE_PROVIDER_LOADER');
|
|
2098
|
-
/**
|
|
2099
|
-
* Injection token for module provider initializer.
|
|
2100
|
-
* Implementation: @acorex/platform/auth
|
|
1829
|
+
* Get system status definition by type
|
|
1830
|
+
* @param type - Status type
|
|
1831
|
+
* @returns System status definition or undefined
|
|
2101
1832
|
*/
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
* Injection token for session service.
|
|
2105
|
-
* Implementation: @acorex/platform/auth
|
|
2106
|
-
*/
|
|
2107
|
-
const AXP_SESSION_SERVICE = new InjectionToken('AXP_SESSION_SERVICE');
|
|
2108
|
-
//#endregion
|
|
2109
|
-
|
|
2110
|
-
//#region ---- Imports ----
|
|
2111
|
-
//#endregion
|
|
2112
|
-
//#region ---- Default Implementation ----
|
|
2113
|
-
/**
|
|
2114
|
-
* Default implementation of module access control service.
|
|
2115
|
-
* Checks if module is enabled in edition.modulesAndFeatures.modules.
|
|
2116
|
-
*/
|
|
2117
|
-
class DefaultModuleAccessControlService {
|
|
2118
|
-
checkAccess(moduleName, context) {
|
|
2119
|
-
// Check if module is enabled in edition
|
|
2120
|
-
const enabledModules = context.edition.modulesAndFeatures?.modules || [];
|
|
2121
|
-
return enabledModules.includes(moduleName);
|
|
2122
|
-
}
|
|
2123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: DefaultModuleAccessControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2124
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: DefaultModuleAccessControlService, providedIn: 'root' }); }
|
|
1833
|
+
function getSystemStatus(type) {
|
|
1834
|
+
return Object.values(AXPSystemStatuses).find(status => status.name === type);
|
|
2125
1835
|
}
|
|
2126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: DefaultModuleAccessControlService, decorators: [{
|
|
2127
|
-
type: Injectable,
|
|
2128
|
-
args: [{ providedIn: 'root' }]
|
|
2129
|
-
}] });
|
|
2130
|
-
//#endregion
|
|
2131
|
-
//#region ---- Injection Token ----
|
|
2132
1836
|
/**
|
|
2133
|
-
*
|
|
2134
|
-
*
|
|
1837
|
+
* Resolves the visual appearance (color and icon) for status
|
|
1838
|
+
* using the system statuses from the core module.
|
|
1839
|
+
* @param statusType - Status type string
|
|
1840
|
+
* @returns Color and icon for the status
|
|
2135
1841
|
*/
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
await task.run();
|
|
1842
|
+
function resolveStatusLook(statusType) {
|
|
1843
|
+
// Try to get system status first
|
|
1844
|
+
const systemStatusType = statusType;
|
|
1845
|
+
if (systemStatusType) {
|
|
1846
|
+
const systemStatus = getSystemStatus(systemStatusType);
|
|
1847
|
+
if (systemStatus) {
|
|
1848
|
+
// Convert hex color to semantic color type if needed
|
|
1849
|
+
// For now, return as-is and let the UI handle it
|
|
1850
|
+
return {
|
|
1851
|
+
color: systemStatus.color,
|
|
1852
|
+
icon: systemStatus.icon || ''
|
|
1853
|
+
};
|
|
2149
1854
|
}
|
|
2150
1855
|
}
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
1856
|
+
// Fallback for unknown statuses
|
|
1857
|
+
return {
|
|
1858
|
+
color: 'secondary',
|
|
1859
|
+
icon: ''
|
|
1860
|
+
};
|
|
1861
|
+
}
|
|
1862
|
+
/**
|
|
1863
|
+
* Resolves the complete status information (title, description, icon, color) for a status
|
|
1864
|
+
* using the system statuses from the core module.
|
|
1865
|
+
* @param statusType - Status type string
|
|
1866
|
+
* @returns Complete status information as AXPStatusDefinition
|
|
1867
|
+
*/
|
|
1868
|
+
function getStatusInfo(statusType) {
|
|
1869
|
+
const systemStatusType = statusType;
|
|
1870
|
+
if (systemStatusType) {
|
|
1871
|
+
const systemStatus = getSystemStatus(systemStatusType);
|
|
1872
|
+
if (systemStatus) {
|
|
1873
|
+
return systemStatus;
|
|
2155
1874
|
}
|
|
2156
1875
|
}
|
|
2157
|
-
|
|
2158
|
-
|
|
1876
|
+
// Fallback for unknown statuses
|
|
1877
|
+
return {
|
|
1878
|
+
name: statusType,
|
|
1879
|
+
title: statusType,
|
|
1880
|
+
description: `Status: ${statusType}`,
|
|
1881
|
+
icon: '',
|
|
1882
|
+
color: 'secondary'
|
|
1883
|
+
};
|
|
2159
1884
|
}
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
function
|
|
2167
|
-
|
|
1885
|
+
/**
|
|
1886
|
+
* Get system status definition directly (no conversion needed since it's already AXPStatusDefinition)
|
|
1887
|
+
* @param statusType - Status type
|
|
1888
|
+
* @param overrides - Optional overrides for the status definition
|
|
1889
|
+
* @returns AXPStatusDefinition
|
|
1890
|
+
*/
|
|
1891
|
+
function systemStatusToDefinition(statusType, overrides) {
|
|
1892
|
+
const systemStatus = getSystemStatus(statusType);
|
|
1893
|
+
if (!systemStatus) {
|
|
1894
|
+
throw new Error(`System status ${statusType} not found`);
|
|
1895
|
+
}
|
|
1896
|
+
return {
|
|
1897
|
+
...systemStatus,
|
|
1898
|
+
...overrides,
|
|
1899
|
+
};
|
|
2168
1900
|
}
|
|
2169
|
-
const AXPAppStartUpProvider = provideAppInitializer(() => {
|
|
2170
|
-
const initializerFn = initAppFactory(inject(AXPAppStartUpService));
|
|
2171
|
-
return initializerFn();
|
|
2172
|
-
});
|
|
2173
1901
|
|
|
2174
1902
|
//#region ---- Tag Types ----
|
|
2175
1903
|
//#endregion
|
|
@@ -3279,12 +3007,6 @@ class AXPComponentLogoConfig {
|
|
|
3279
3007
|
this.component = component;
|
|
3280
3008
|
}
|
|
3281
3009
|
}
|
|
3282
|
-
class AXPIconLogoConfig {
|
|
3283
|
-
constructor(icon, color) {
|
|
3284
|
-
this.icon = icon;
|
|
3285
|
-
this.color = color;
|
|
3286
|
-
}
|
|
3287
|
-
}
|
|
3288
3010
|
|
|
3289
3011
|
var AXPPlatformScope;
|
|
3290
3012
|
(function (AXPPlatformScope) {
|
|
@@ -3886,5 +3608,5 @@ function generateKebabCase(title) {
|
|
|
3886
3608
|
* Generated bundle index. Do not edit.
|
|
3887
3609
|
*/
|
|
3888
3610
|
|
|
3889
|
-
export {
|
|
3611
|
+
export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPComponentLogoConfig, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPGridLayoutDirective, AXPHookService, AXPImageUrlLogoConfig, AXPPlatformScope, AXPScreenSize, AXPStatusDefinitionProviderService, AXPStatusProvider, AXPSystemActionType, AXPSystemActions, AXPSystemStatusType, AXPSystemStatuses, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_STATUS_PROVIDERS, AXP_TAG_PROVIDER, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getStatusInfo, getSystemActions, getSystemStatus, objectKeyValueTransforms, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, resolveStatusLook, setSmart, systemStatusToDefinition };
|
|
3890
3612
|
//# sourceMappingURL=acorex-platform-core.mjs.map
|