oip-common 0.3.2 → 0.4.0

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.
@@ -1,18 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, signal, computed, effect, DestroyRef, ChangeDetectorRef, Component, Input, InjectionToken, PLATFORM_ID, ViewChild, HostBinding, EventEmitter, Output, Renderer2, SecurityContext, ChangeDetectionStrategy, makeEnvironmentProviders, importProvidersFrom } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import * as i2$3 from 'primeng/api';
4
+ import * as i2$2 from 'primeng/api';
5
5
  import { MessageService, ConfirmationService, PrimeIcons, SharedModule } from 'primeng/api';
6
6
  import { HttpErrorResponse, HttpClient as HttpClient$1, provideHttpClient, withInterceptors, withFetch } from '@angular/common/http';
7
- import * as i2$4 from '@ngx-translate/core';
7
+ import * as i2$3 from '@ngx-translate/core';
8
8
  import { TranslateService, TranslatePipe, TranslateModule, TranslateLoader } from '@ngx-translate/core';
9
- import * as i1$4 from '@angular/router';
9
+ import * as i1$5 from '@angular/router';
10
10
  import { ActivatedRoute, Router, RouterModule, NavigationEnd, RouterLinkActive, RouterLink } from '@angular/router';
11
- import { BehaviorSubject, Subject, of, tap, shareReplay, ReplaySubject, firstValueFrom, merge, from, finalize, filter as filter$1 } from 'rxjs';
12
- import { tap as tap$1, catchError, filter, distinctUntilChanged, map, switchMap, take } from 'rxjs/operators';
11
+ import { BehaviorSubject, Subject, of, tap, shareReplay, ReplaySubject, firstValueFrom, from, filter as filter$1 } from 'rxjs';
12
+ import { tap as tap$1, catchError, filter, distinctUntilChanged, switchMap, map, take } from 'rxjs/operators';
13
13
  import { Title, DomSanitizer } from '@angular/platform-browser';
14
14
  import { PrimeNG } from 'primeng/config';
15
- import { OidcSecurityService, PublicEventsService, EventTypes } from 'angular-auth-oidc-client';
16
15
  import * as i1 from 'primeng/multiselect';
17
16
  import { MultiSelectModule } from 'primeng/multiselect';
18
17
  import * as i2 from 'primeng/tooltip';
@@ -21,9 +20,9 @@ import * as i1$2 from 'primeng/button';
21
20
  import { ButtonModule, Button } from 'primeng/button';
22
21
  import * as i1$1 from '@angular/forms';
23
22
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
24
- import * as i2$1 from '@angular/common';
23
+ import * as i1$3 from '@angular/common';
25
24
  import { isPlatformBrowser, CommonModule, NgComponentOutlet, NgClass, DatePipe, PathLocationStrategy, LocationStrategy } from '@angular/common';
26
- import * as i3$2 from 'primeng/styleclass';
25
+ import * as i3$3 from 'primeng/styleclass';
27
26
  import { StyleClassModule } from 'primeng/styleclass';
28
27
  import { updatePreset, updateSurfacePalette, $t } from '@primeng/themes';
29
28
  import Aura from '@primeng/themes/aura';
@@ -32,10 +31,10 @@ import Nora from '@primeng/themes/nora';
32
31
  import * as i3 from 'primeng/selectbutton';
33
32
  import { SelectButtonModule } from 'primeng/selectbutton';
34
33
  import { Tabs, TabList, Tab } from 'primeng/tabs';
35
- import * as i2$2 from 'primeng/avatar';
34
+ import * as i2$1 from 'primeng/avatar';
36
35
  import { AvatarModule } from 'primeng/avatar';
37
36
  import { ConfirmDialog } from 'primeng/confirmdialog';
38
- import * as i1$3 from 'primeng/badge';
37
+ import * as i1$4 from 'primeng/badge';
39
38
  import { BadgeModule } from 'primeng/badge';
40
39
  import * as i3$1 from 'primeng/paginator';
41
40
  import { PaginatorModule } from 'primeng/paginator';
@@ -46,22 +45,24 @@ import { ProgressSpinnerModule } from 'primeng/progressspinner';
46
45
  import * as i9 from 'primeng/tag';
47
46
  import { Tag, TagModule } from 'primeng/tag';
48
47
  import * as signalR from '@microsoft/signalr';
49
- import * as i1$5 from 'primeng/contextmenu';
48
+ import * as i3$2 from 'primeng/menu';
49
+ import { MenuModule } from 'primeng/menu';
50
+ import * as i1$6 from 'primeng/contextmenu';
50
51
  import { ContextMenuModule, ContextMenu } from 'primeng/contextmenu';
51
- import * as i3$4 from 'primeng/dialog';
52
+ import * as i3$5 from 'primeng/dialog';
52
53
  import { DialogModule } from 'primeng/dialog';
53
54
  import * as i4$1 from 'primeng/inputtext';
54
55
  import { InputTextModule, InputText } from 'primeng/inputtext';
55
- import * as i3$3 from 'primeng/ripple';
56
+ import * as i3$4 from 'primeng/ripple';
56
57
  import { RippleModule } from 'primeng/ripple';
57
58
  import * as i5 from 'primeng/select';
58
59
  import { SelectModule, Select } from 'primeng/select';
59
- import * as i1$6 from 'primeng/fileupload';
60
+ import * as i1$7 from 'primeng/fileupload';
60
61
  import { FileUploadModule } from 'primeng/fileupload';
61
62
  import { ImageModule } from 'primeng/image';
62
- import * as i1$7 from 'primeng/table';
63
+ import * as i1$8 from 'primeng/table';
63
64
  import { TableModule } from 'primeng/table';
64
- import * as i2$5 from 'primeng/toggleswitch';
65
+ import * as i2$4 from 'primeng/toggleswitch';
65
66
  import { ToggleSwitchModule } from 'primeng/toggleswitch';
66
67
  import { TextareaModule, Textarea } from 'primeng/textarea';
67
68
  import * as i4$2 from 'primeng/toolbar';
@@ -105,10 +106,10 @@ class TopBarService {
105
106
  return false;
106
107
  return this.activeTopBarItem.id == id;
107
108
  }
108
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TopBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
109
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TopBarService, providedIn: 'root' }); }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TopBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
110
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TopBarService, providedIn: 'root' }); }
110
111
  }
111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TopBarService, decorators: [{
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TopBarService, decorators: [{
112
113
  type: Injectable,
113
114
  args: [{
114
115
  providedIn: 'root'
@@ -231,10 +232,10 @@ class MsgService {
231
232
  life: life
232
233
  });
233
234
  }
234
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MsgService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
235
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MsgService, providedIn: 'root' }); }
235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MsgService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
236
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MsgService, providedIn: 'root' }); }
236
237
  }
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MsgService, decorators: [{
238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MsgService, decorators: [{
238
239
  type: Injectable,
239
240
  args: [{ providedIn: 'root' }]
240
241
  }] });
@@ -256,10 +257,10 @@ class AppTitleService {
256
257
  this.title.setTitle(newTitle);
257
258
  this.titleSubject.next(newTitle);
258
259
  }
259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTitleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
260
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTitleService, providedIn: 'root' }); }
260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppTitleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
261
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppTitleService, providedIn: 'root' }); }
261
262
  }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTitleService, decorators: [{
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppTitleService, decorators: [{
263
264
  type: Injectable,
264
265
  args: [{ providedIn: 'root' }]
265
266
  }] });
@@ -513,10 +514,10 @@ class LayoutService {
513
514
  reset() {
514
515
  this.resetSource.next(true);
515
516
  }
516
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
517
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LayoutService, providedIn: 'root' }); }
517
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
518
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LayoutService, providedIn: 'root' }); }
518
519
  }
519
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LayoutService, decorators: [{
520
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LayoutService, decorators: [{
520
521
  type: Injectable,
521
522
  args: [{ providedIn: 'root' }]
522
523
  }], ctorParameters: () => [] });
@@ -601,10 +602,10 @@ class L10nService {
601
602
  instant(key, interpolateParams) {
602
603
  return this.translateService.instant(key, interpolateParams);
603
604
  }
604
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: L10nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
605
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: L10nService, providedIn: 'root' }); }
605
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: L10nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
606
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: L10nService, providedIn: 'root' }); }
606
607
  }
607
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: L10nService, decorators: [{
608
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: L10nService, decorators: [{
608
609
  type: Injectable,
609
610
  args: [{ providedIn: 'root' }]
610
611
  }] });
@@ -728,308 +729,12 @@ class BffSecurityService {
728
729
  const normalizedBase = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
729
730
  return `${normalizedBase}${path}`;
730
731
  }
731
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BffSecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
732
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BffSecurityService }); }
732
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: BffSecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
733
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: BffSecurityService }); }
733
734
  }
734
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BffSecurityService, decorators: [{
735
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: BffSecurityService, decorators: [{
735
736
  type: Injectable
736
737
  }] });
737
- /**
738
- * SecurityService extends OidcSecurityService to manage authentication,
739
- * token handling, and user role access in an Angular application.
740
- *
741
- * It provides helper methods for checking authentication, managing tokens,
742
- * determining user roles, and performing logout and refresh operations.
743
- */
744
- class KeycloakSecurityService extends OidcSecurityService {
745
- /**
746
- * Initializes service and subscribes to authentication events.
747
- * When a 'NewAuthenticationResult' event is received, the `auth` method is called.
748
- */
749
- constructor() {
750
- super();
751
- this.refreshLockKeyPrefix = 'oip:keycloak-refresh-lock';
752
- this.refreshResultKeyPrefix = 'oip:keycloak-refresh-result';
753
- this.refreshLockTtlMs = 15000;
754
- this.refreshWaitTimeoutMs = 10000;
755
- this.refreshTabId = this.createRefreshTabId();
756
- /**
757
- * Handles angular OIDC events.
758
- */
759
- this.publicEventsService = inject(PublicEventsService);
760
- /**
761
- * Stores the latest login response from checkAuth().
762
- */
763
- this.loginResponse = new BehaviorSubject(null);
764
- /**
765
- * Stores the decoded access token payload.
766
- */
767
- this.payload = new BehaviorSubject(null);
768
- /**
769
- * Stores user-specific data from the login response.
770
- */
771
- this.currentUser = new BehaviorSubject(null);
772
- /**
773
- * Emits access token updates from initial auth check, manual refresh,
774
- * and library authentication events.
775
- */
776
- this.accessToken = new ReplaySubject(1);
777
- this.publicEventsService
778
- .registerForEvents()
779
- .pipe(filter((event) => event.type === EventTypes.NewAuthenticationResult))
780
- .subscribe(() => {
781
- super.getAccessToken().subscribe(token => {
782
- this.accessToken.next(token);
783
- });
784
- this.auth();
785
- });
786
- }
787
- getCurrentUser() {
788
- return this.currentUser.getValue();
789
- }
790
- getCurrentUser$() {
791
- return this.currentUser.asObservable();
792
- }
793
- /**
794
- * Returns the ID token for the sign-in.
795
- * @returns A string with the id token.
796
- */
797
- getAccessToken(configId) {
798
- return merge(super.getAccessToken(configId), this.accessToken.asObservable()).pipe(distinctUntilChanged());
799
- }
800
- forceRefreshSession(customParams, configId) {
801
- if (!this.refreshSession$) {
802
- this.refreshSession$ = from(this.runSynchronizedRefresh(customParams, configId)).pipe(finalize(() => {
803
- this.refreshSession$ = undefined;
804
- }), shareReplay({ bufferSize: 1, refCount: false }));
805
- }
806
- return this.refreshSession$;
807
- }
808
- getCsrfToken() {
809
- return of(null);
810
- }
811
- /**
812
- * Indicates whether the current user has the 'admin' role.
813
- *
814
- * @returns {boolean} True if the user is an admin, false otherwise.
815
- */
816
- isAdmin() {
817
- return this.payload.getValue()?.realm_access?.roles?.includes('admin');
818
- }
819
- /**
820
- * Initiates authentication check and updates login response, user data,
821
- * and decoded token payload if authenticated.
822
- */
823
- auth() {
824
- super.checkAuth().subscribe((_response) => {
825
- this.loginResponse.next(_response);
826
- this.currentUser.next(_response.userData);
827
- this.getPayloadFromAccessToken().subscribe((_token) => {
828
- this.payload.next(_token);
829
- });
830
- });
831
- }
832
- /**
833
- * Performs logout and clears the local token payload.
834
- *
835
- * @param {string} [configId] Optional configuration ID for logout.
836
- * @param {LogoutAuthOptions} [logoutAuthOptions] Optional logout options.
837
- */
838
- logout(configId, logoutAuthOptions) {
839
- this.logoff(configId, logoutAuthOptions).subscribe((x) => this.payload.next(x));
840
- }
841
- /**
842
- * Completes the BehaviorSubjects when the service is destroyed to avoid memory leaks.
843
- */
844
- ngOnDestroy() {
845
- this.loginResponse.complete();
846
- this.payload.complete();
847
- this.currentUser.complete();
848
- }
849
- /**
850
- * Checks whether the current access token is expired based on the 'exp' claim.
851
- *
852
- * @returns {Observable<boolean>} Observable that emits true if the token is expired.
853
- */
854
- isTokenExpired() {
855
- return this.getPayloadFromAccessToken().pipe(map((payload) => {
856
- return payload.exp < Math.floor(Date.now() / 1000);
857
- }));
858
- }
859
- async runSynchronizedRefresh(customParams, configId) {
860
- const webLocks = this.getWebLocks();
861
- if (webLocks) {
862
- return webLocks.request(this.getRefreshLockKey(configId), { mode: 'exclusive' }, async () => {
863
- const currentState = await this.syncAuthState(configId);
864
- if (!(await this.isCurrentAccessTokenExpired())) {
865
- return currentState;
866
- }
867
- return this.refreshAsLockOwner(customParams, configId);
868
- });
869
- }
870
- return this.runSynchronizedRefreshWithStorageLock(customParams, configId);
871
- }
872
- async runSynchronizedRefreshWithStorageLock(customParams, configId) {
873
- const startedAt = Date.now();
874
- if (this.tryAcquireRefreshLock(configId)) {
875
- try {
876
- const currentState = await this.syncAuthState(configId);
877
- if (!(await this.isCurrentAccessTokenExpired())) {
878
- return currentState;
879
- }
880
- return await this.refreshAsLockOwner(customParams, configId);
881
- }
882
- finally {
883
- this.releaseRefreshLock(configId);
884
- }
885
- }
886
- const waitResult = await this.waitForRefreshResult(startedAt, configId);
887
- if (waitResult === 'success') {
888
- return this.syncAuthState(configId);
889
- }
890
- if (waitResult === 'error') {
891
- throw new Error('Token refresh failed in another tab.');
892
- }
893
- return this.runSynchronizedRefreshWithStorageLock(customParams, configId);
894
- }
895
- async refreshAsLockOwner(customParams, configId) {
896
- try {
897
- const response = await firstValueFrom(super.forceRefreshSession(customParams, configId));
898
- await this.applyLoginResponse(response, configId);
899
- this.publishRefreshResult('success', configId);
900
- return response;
901
- }
902
- catch (error) {
903
- this.publishRefreshResult('error', configId);
904
- throw error;
905
- }
906
- }
907
- async syncAuthState(configId) {
908
- const response = await firstValueFrom(super.checkAuth(undefined, configId));
909
- await this.applyLoginResponse(response, configId);
910
- return response;
911
- }
912
- async applyLoginResponse(response, configId) {
913
- this.loginResponse.next(response);
914
- this.currentUser.next(response.userData);
915
- const token = await firstValueFrom(super.getAccessToken(configId));
916
- this.accessToken.next(token);
917
- const payload = await firstValueFrom(this.getPayloadFromAccessToken());
918
- this.payload.next(payload);
919
- }
920
- async isCurrentAccessTokenExpired() {
921
- const payload = await firstValueFrom(this.getPayloadFromAccessToken());
922
- return !payload?.exp || payload.exp < Math.floor(Date.now() / 1000);
923
- }
924
- tryAcquireRefreshLock(configId) {
925
- const lockKey = this.getRefreshLockKey(configId);
926
- const now = Date.now();
927
- const currentLock = this.readRefreshLock(lockKey);
928
- if (currentLock && currentLock.ownerId !== this.refreshTabId && currentLock.expiresAt > now) {
929
- return false;
930
- }
931
- const nextLock = {
932
- ownerId: this.refreshTabId,
933
- expiresAt: now + this.refreshLockTtlMs
934
- };
935
- localStorage.setItem(lockKey, JSON.stringify(nextLock));
936
- return this.readRefreshLock(lockKey)?.ownerId === this.refreshTabId;
937
- }
938
- releaseRefreshLock(configId) {
939
- const lockKey = this.getRefreshLockKey(configId);
940
- const currentLock = this.readRefreshLock(lockKey);
941
- if (currentLock?.ownerId === this.refreshTabId) {
942
- localStorage.removeItem(lockKey);
943
- }
944
- }
945
- waitForRefreshResult(startedAt, configId) {
946
- const resultKey = this.getRefreshResultKey(configId);
947
- return new Promise((resolve) => {
948
- const timeoutId = window.setTimeout(() => {
949
- cleanup();
950
- resolve('timeout');
951
- }, this.refreshWaitTimeoutMs);
952
- const intervalId = window.setInterval(() => {
953
- const result = this.tryResolveRefreshResult(resultKey, startedAt, configId);
954
- if (result) {
955
- cleanup();
956
- resolve(result);
957
- }
958
- }, 250);
959
- const onStorage = (event) => {
960
- if (event.key === resultKey) {
961
- const result = this.tryResolveRefreshResult(resultKey, startedAt, configId);
962
- if (result) {
963
- cleanup();
964
- resolve(result);
965
- }
966
- }
967
- };
968
- const cleanup = () => {
969
- window.clearTimeout(timeoutId);
970
- window.clearInterval(intervalId);
971
- window.removeEventListener('storage', onStorage);
972
- };
973
- window.addEventListener('storage', onStorage);
974
- const result = this.tryResolveRefreshResult(resultKey, startedAt, configId);
975
- if (result) {
976
- cleanup();
977
- resolve(result);
978
- }
979
- });
980
- }
981
- tryResolveRefreshResult(resultKey, startedAt, configId) {
982
- const result = this.readRefreshResult(resultKey);
983
- if (!result || result.timestamp < startedAt || result.configId !== configId) {
984
- return null;
985
- }
986
- return result.status;
987
- }
988
- publishRefreshResult(status, configId) {
989
- const result = {
990
- configId,
991
- ownerId: this.refreshTabId,
992
- status,
993
- timestamp: Date.now()
994
- };
995
- localStorage.setItem(this.getRefreshResultKey(configId), JSON.stringify(result));
996
- }
997
- readRefreshLock(lockKey) {
998
- try {
999
- const value = localStorage.getItem(lockKey);
1000
- return value ? JSON.parse(value) : null;
1001
- }
1002
- catch {
1003
- return null;
1004
- }
1005
- }
1006
- readRefreshResult(resultKey) {
1007
- try {
1008
- const value = localStorage.getItem(resultKey);
1009
- return value ? JSON.parse(value) : null;
1010
- }
1011
- catch {
1012
- return null;
1013
- }
1014
- }
1015
- getRefreshLockKey(configId) {
1016
- return `${this.refreshLockKeyPrefix}:${configId ?? 'default'}`;
1017
- }
1018
- getRefreshResultKey(configId) {
1019
- return `${this.refreshResultKeyPrefix}:${configId ?? 'default'}`;
1020
- }
1021
- getWebLocks() {
1022
- return navigator.locks ?? null;
1023
- }
1024
- createRefreshTabId() {
1025
- return window.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random()}`;
1026
- }
1027
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeycloakSecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1028
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeycloakSecurityService }); }
1029
- }
1030
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeycloakSecurityService, decorators: [{
1031
- type: Injectable
1032
- }], ctorParameters: () => [] });
1033
738
 
1034
739
  /* eslint-disable */
1035
740
  /* tslint:disable */
@@ -1215,10 +920,10 @@ class HttpClient {
1215
920
  ? { headers: { [csrfToken.headerName]: csrfToken.token } }
1216
921
  : {};
1217
922
  }
1218
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HttpClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1219
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HttpClient, providedIn: "root" }); }
923
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: HttpClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
924
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: HttpClient, providedIn: "root" }); }
1220
925
  }
1221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HttpClient, decorators: [{
926
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: HttpClient, decorators: [{
1222
927
  type: Injectable,
1223
928
  args: [{ providedIn: "root" }]
1224
929
  }] });
@@ -1582,10 +1287,10 @@ class BaseModuleComponent {
1582
1287
  });
1583
1288
  await this.moduleInstanceReloadPromise;
1584
1289
  }
1585
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BaseModuleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1586
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: BaseModuleComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
1290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: BaseModuleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1291
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: BaseModuleComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
1587
1292
  }
1588
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BaseModuleComponent, decorators: [{
1293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: BaseModuleComponent, decorators: [{
1589
1294
  type: Component,
1590
1295
  args: [{ standalone: true, template: '' }]
1591
1296
  }], ctorParameters: () => [] });
@@ -1622,13 +1327,6 @@ class SecurityApi extends HttpClient {
1622
1327
  format: "json",
1623
1328
  ...params,
1624
1329
  });
1625
- this.getKeycloakClientSettings = (params = {}) => this.request({
1626
- path: `/api/security/get-keycloak-client-settings`,
1627
- method: "GET",
1628
- secure: true,
1629
- format: "json",
1630
- ...params,
1631
- });
1632
1330
  this.getRealmRoles = (params = {}) => this.request({
1633
1331
  path: `/api/security/get-realm-roles`,
1634
1332
  method: "GET",
@@ -1637,10 +1335,10 @@ class SecurityApi extends HttpClient {
1637
1335
  ...params,
1638
1336
  });
1639
1337
  }
1640
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SecurityApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1641
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SecurityApi }); }
1338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SecurityApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1339
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SecurityApi }); }
1642
1340
  }
1643
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SecurityApi, decorators: [{
1341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SecurityApi, decorators: [{
1644
1342
  type: Injectable
1645
1343
  }] });
1646
1344
 
@@ -1727,8 +1425,8 @@ class SecurityComponent {
1727
1425
  type: ContentType.Json
1728
1426
  });
1729
1427
  }
1730
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SecurityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1731
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SecurityComponent, isStandalone: true, selector: "security", inputs: { id: "id", controller: "controller" }, usesOnChanges: true, ngImport: i0, template: `
1428
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SecurityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1429
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: SecurityComponent, isStandalone: true, selector: "security", inputs: { id: "id", controller: "controller" }, usesOnChanges: true, ngImport: i0, template: `
1732
1430
  <div class="flex flex-col md:flex-row gap-8">
1733
1431
  <div class="md:w-1/2">
1734
1432
  <div class="card flex flex-col gap-4">
@@ -1762,7 +1460,7 @@ class SecurityComponent {
1762
1460
  </div>
1763
1461
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i1.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "styleClass", "panelStyle", "panelStyleClass", "inputId", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "dataKey", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "placeholder", "options", "filterValue", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect", "size", "variant", "fluid", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
1764
1462
  }
1765
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SecurityComponent, decorators: [{
1463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SecurityComponent, decorators: [{
1766
1464
  type: Component,
1767
1465
  args: [{
1768
1466
  selector: 'security',
@@ -2244,8 +1942,8 @@ class AppConfiguratorComponent {
2244
1942
  menuMode: event
2245
1943
  }));
2246
1944
  }
2247
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppConfiguratorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2248
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AppConfiguratorComponent, isStandalone: true, selector: "app-configurator", host: { classAttribute: "hidden absolute top-[3.25rem] right-0 w-72 p-4 bg-surface-0 dark:bg-surface-900 border border-surface rounded-border origin-top shadow-[0px_3px_5px_rgba(0,0,0,0.02),0px_0px_2px_rgba(0,0,0,0.05),0px_1px_4px_rgba(0,0,0,0.08)]" }, ngImport: i0, template: `
1945
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppConfiguratorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1946
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: AppConfiguratorComponent, isStandalone: true, selector: "app-configurator", host: { classAttribute: "hidden absolute top-[3.25rem] right-0 w-72 p-4 bg-surface-0 dark:bg-surface-900 border border-surface rounded-border origin-top shadow-[0px_3px_5px_rgba(0,0,0,0.02),0px_0px_2px_rgba(0,0,0,0.05),0px_1px_4px_rgba(0,0,0,0.08)]" }, ngImport: i0, template: `
2249
1947
  <div class="flex flex-col gap-4">
2250
1948
  <div>
2251
1949
  <span class="text-sm text-muted-color font-semibold">{{ 'app-configurator.primary' | translate }}</span>
@@ -2314,9 +2012,9 @@ class AppConfiguratorComponent {
2314
2012
  </div>
2315
2013
  }
2316
2014
  </div>
2317
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectButtonModule }, { kind: "component", type: i3.SelectButton, selector: "p-selectButton, p-selectbutton, p-select-button", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "styleClass", "ariaLabelledBy", "dataKey", "autofocus", "size", "fluid"], outputs: ["onOptionClick", "onChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
2015
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectButtonModule }, { kind: "component", type: i3.SelectButton, selector: "p-selectButton, p-selectbutton, p-select-button", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "styleClass", "ariaLabelledBy", "dataKey", "autofocus", "size", "fluid"], outputs: ["onOptionClick", "onChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
2318
2016
  }
2319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppConfiguratorComponent, decorators: [{
2017
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppConfiguratorComponent, decorators: [{
2320
2018
  type: Component,
2321
2019
  args: [{
2322
2020
  selector: 'app-configurator',
@@ -2436,10 +2134,10 @@ class UserProfileApi extends HttpClient {
2436
2134
  ...params,
2437
2135
  });
2438
2136
  }
2439
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2440
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileApi }); }
2137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserProfileApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2138
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserProfileApi }); }
2441
2139
  }
2442
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileApi, decorators: [{
2140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserProfileApi, decorators: [{
2443
2141
  type: Injectable
2444
2142
  }] });
2445
2143
 
@@ -2533,65 +2231,65 @@ class UserService {
2533
2231
  .join('')
2534
2232
  .toUpperCase() ?? '';
2535
2233
  }
2536
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2537
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserService }); }
2234
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2235
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserService }); }
2538
2236
  }
2539
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserService, decorators: [{
2237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserService, decorators: [{
2540
2238
  type: Injectable
2541
2239
  }], ctorParameters: () => [] });
2542
2240
 
2543
2241
  class LogoComponent {
2544
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2545
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LogoComponent, isStandalone: true, selector: "logo", inputs: { width: "width", height: "height" }, ngImport: i0, template: `
2546
- <svg
2547
- viewBox="0.8516 1.7159 60.0074 64.7142"
2548
- xmlns="http://www.w3.org/2000/svg"
2549
- [attr.height]="height + 'px'"
2550
- [attr.width]="width + 'px'">
2551
- <path
2552
- class="primary-logo-color"
2553
- d="M -130.45 -104.78 C -130.45 -105.9 -130.43 -107.01 -130.45 -108.13 C -130.49 -108.52 -130.28 -108.9 -129.92 -109.07 C -125.87 -111.4 -121.82 -113.74 -117.77 -116.08 C -115.7 -117.26 -113.63 -118.45 -111.58 -119.67 C -111.26 -119.89 -110.83 -119.89 -110.51 -119.67 C -101.66 -114.53 -92.787 -109.41 -83.915 -104.29 C -83.752 -104.2 -83.479 -104.16 -83.475 -103.94 C -83.472 -103.72 -83.766 -103.65 -83.947 -103.54 C -86.326 -102.16 -88.716 -100.79 -91.092 -99.39 C -91.377 -99.18 -91.761 -99.18 -92.046 -99.39 C -98.211 -102.98 -104.38 -106.55 -110.56 -110.12 C -110.85 -110.33 -111.23 -110.33 -111.52 -110.12 C -114.88 -108.16 -118.25 -106.22 -121.63 -104.28 C -122.01 -104.11 -122.24 -103.71 -122.2 -103.3 C -122.18 -101.11 -122.2 -98.922 -122.2 -96.736 C -122.19 -95.98 -122.21 -95.98 -122.84 -96.335 C -125.2 -97.7 -127.57 -99.07 -129.93 -100.42 C -130.27 -100.57 -130.49 -100.92 -130.46 -101.3 C -130.43 -102.46 -130.45 -103.62 -130.45 -104.78 Z"
2554
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2555
- <path
2556
- class="primary-logo-color"
2557
- d="M -70.504 -100.94 L -70.504 -90.438 C -70.447 -89.98 -70.692 -89.537 -71.11 -89.342 C -78.942 -84.839 -86.769 -80.325 -94.592 -75.8 C -95.635 -75.2 -96.684 -74.612 -97.713 -73.988 C -98.17 -73.708 -98.255 -73.846 -98.255 -74.314 L -98.255 -82.785 C -98.268 -83.116 -98.07 -83.419 -97.762 -83.541 C -92.003 -86.86 -86.269 -90.236 -80.468 -93.47 C -79.181 -94.179 -78.667 -94.934 -78.731 -96.441 C -78.869 -99.76 -78.791 -103.09 -78.755 -106.42 C -78.694 -107 -79.02 -107.56 -79.56 -107.8 C -81.436 -108.83 -83.28 -109.93 -85.138 -110.99 C -85.734 -111.34 -85.734 -111.34 -85.113 -111.7 C -82.748 -113.07 -80.379 -114.43 -78.021 -115.82 C -77.707 -116.05 -77.283 -116.06 -76.957 -115.84 C -74.962 -114.66 -72.953 -113.5 -70.929 -112.37 C -70.62 -112.19 -70.456 -111.84 -70.521 -111.49 C -70.514 -107.99 -70.508 -104.48 -70.504 -100.94 Z"
2558
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2559
- <path
2560
- class="primary-logo-color"
2561
- d="M -108.68 -85.743 L -108.68 -75.169 C -108.72 -74.754 -108.5 -74.358 -108.12 -74.179 C -104.77 -72.267 -101.44 -70.339 -98.117 -68.396 C -97.762 -68.141 -97.284 -68.141 -96.929 -68.396 C -95.028 -69.527 -93.096 -70.598 -91.195 -71.725 C -90.667 -72.041 -90.581 -71.892 -90.581 -71.371 C -90.596 -68.591 -90.596 -65.811 -90.581 -63.03 C -90.551 -62.7 -90.729 -62.386 -91.028 -62.243 C -93.083 -61.073 -95.13 -59.891 -97.17 -58.697 C -97.436 -58.537 -97.775 -58.569 -98.007 -58.775 C -102.74 -61.517 -107.47 -64.254 -112.22 -66.984 C -113.63 -67.796 -115.01 -68.615 -116.42 -69.406 C -116.77 -69.561 -116.97 -69.913 -116.94 -70.286 C -116.93 -80.555 -116.93 -90.823 -116.94 -101.09 C -116.94 -101.63 -116.86 -101.75 -116.35 -101.44 C -113.98 -100.05 -111.59 -98.667 -109.19 -97.303 C -108.84 -97.135 -108.62 -96.76 -108.66 -96.367 C -108.68 -92.833 -108.69 -89.291 -108.68 -85.743 Z"
2562
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2563
- <path
2564
- class="secondary-logo-color"
2565
- d="M -122.18 -85.807 L -122.18 -82.129 C -122.18 -81.637 -122.34 -81.615 -122.72 -81.839 C -125.16 -83.257 -127.6 -84.667 -130.05 -86.069 C -130.35 -86.219 -130.53 -86.535 -130.5 -86.867 L -130.5 -94.09 C -130.5 -94.64 -130.34 -94.679 -129.89 -94.417 C -127.49 -92.998 -125.09 -91.607 -122.67 -90.243 C -122.35 -90.103 -122.15 -89.772 -122.18 -89.42 C -122.21 -88.214 -122.18 -87.012 -122.18 -85.807 Z M -82.688 -119.15 C -83.954 -118.41 -85.17 -117.7 -86.365 -117.02 C -87.748 -116.22 -89.138 -115.44 -90.514 -114.63 C -90.761 -114.45 -91.093 -114.45 -91.34 -114.63 C -93.432 -115.86 -95.535 -117.07 -97.649 -118.27 C -98.053 -118.5 -98.191 -118.63 -97.67 -118.93 C -95.216 -120.32 -92.776 -121.74 -90.337 -123.15 C -90.134 -123.33 -89.845 -123.36 -89.61 -123.23 L -82.918 -119.33 C -82.862 -119.28 -82.812 -119.24 -82.688 -119.15 Z M -85.365 -65.616 L -85.365 -72.062 L -85.365 -74.622 C -85.403 -74.928 -85.24 -75.223 -84.961 -75.353 C -82.886 -76.534 -80.83 -77.736 -78.77 -78.931 C -78.174 -79.286 -78.135 -79.257 -78.135 -78.576 L -78.135 -70.303 C -78.135 -69.991 -78.135 -69.711 -78.468 -69.52 C -80.656 -68.275 -82.833 -67.013 -85.014 -65.761 C -85.127 -65.704 -85.245 -65.655 -85.365 -65.616 Z"
2566
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2567
- </svg>
2242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2243
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: LogoComponent, isStandalone: true, selector: "logo", inputs: { width: "width", height: "height" }, ngImport: i0, template: `
2244
+ <svg
2245
+ viewBox="0.8516 1.7159 60.0074 64.7142"
2246
+ xmlns="http://www.w3.org/2000/svg"
2247
+ [attr.height]="height + 'px'"
2248
+ [attr.width]="width + 'px'">
2249
+ <path
2250
+ class="primary-logo-color"
2251
+ d="M -130.45 -104.78 C -130.45 -105.9 -130.43 -107.01 -130.45 -108.13 C -130.49 -108.52 -130.28 -108.9 -129.92 -109.07 C -125.87 -111.4 -121.82 -113.74 -117.77 -116.08 C -115.7 -117.26 -113.63 -118.45 -111.58 -119.67 C -111.26 -119.89 -110.83 -119.89 -110.51 -119.67 C -101.66 -114.53 -92.787 -109.41 -83.915 -104.29 C -83.752 -104.2 -83.479 -104.16 -83.475 -103.94 C -83.472 -103.72 -83.766 -103.65 -83.947 -103.54 C -86.326 -102.16 -88.716 -100.79 -91.092 -99.39 C -91.377 -99.18 -91.761 -99.18 -92.046 -99.39 C -98.211 -102.98 -104.38 -106.55 -110.56 -110.12 C -110.85 -110.33 -111.23 -110.33 -111.52 -110.12 C -114.88 -108.16 -118.25 -106.22 -121.63 -104.28 C -122.01 -104.11 -122.24 -103.71 -122.2 -103.3 C -122.18 -101.11 -122.2 -98.922 -122.2 -96.736 C -122.19 -95.98 -122.21 -95.98 -122.84 -96.335 C -125.2 -97.7 -127.57 -99.07 -129.93 -100.42 C -130.27 -100.57 -130.49 -100.92 -130.46 -101.3 C -130.43 -102.46 -130.45 -103.62 -130.45 -104.78 Z"
2252
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2253
+ <path
2254
+ class="primary-logo-color"
2255
+ d="M -70.504 -100.94 L -70.504 -90.438 C -70.447 -89.98 -70.692 -89.537 -71.11 -89.342 C -78.942 -84.839 -86.769 -80.325 -94.592 -75.8 C -95.635 -75.2 -96.684 -74.612 -97.713 -73.988 C -98.17 -73.708 -98.255 -73.846 -98.255 -74.314 L -98.255 -82.785 C -98.268 -83.116 -98.07 -83.419 -97.762 -83.541 C -92.003 -86.86 -86.269 -90.236 -80.468 -93.47 C -79.181 -94.179 -78.667 -94.934 -78.731 -96.441 C -78.869 -99.76 -78.791 -103.09 -78.755 -106.42 C -78.694 -107 -79.02 -107.56 -79.56 -107.8 C -81.436 -108.83 -83.28 -109.93 -85.138 -110.99 C -85.734 -111.34 -85.734 -111.34 -85.113 -111.7 C -82.748 -113.07 -80.379 -114.43 -78.021 -115.82 C -77.707 -116.05 -77.283 -116.06 -76.957 -115.84 C -74.962 -114.66 -72.953 -113.5 -70.929 -112.37 C -70.62 -112.19 -70.456 -111.84 -70.521 -111.49 C -70.514 -107.99 -70.508 -104.48 -70.504 -100.94 Z"
2256
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2257
+ <path
2258
+ class="primary-logo-color"
2259
+ d="M -108.68 -85.743 L -108.68 -75.169 C -108.72 -74.754 -108.5 -74.358 -108.12 -74.179 C -104.77 -72.267 -101.44 -70.339 -98.117 -68.396 C -97.762 -68.141 -97.284 -68.141 -96.929 -68.396 C -95.028 -69.527 -93.096 -70.598 -91.195 -71.725 C -90.667 -72.041 -90.581 -71.892 -90.581 -71.371 C -90.596 -68.591 -90.596 -65.811 -90.581 -63.03 C -90.551 -62.7 -90.729 -62.386 -91.028 -62.243 C -93.083 -61.073 -95.13 -59.891 -97.17 -58.697 C -97.436 -58.537 -97.775 -58.569 -98.007 -58.775 C -102.74 -61.517 -107.47 -64.254 -112.22 -66.984 C -113.63 -67.796 -115.01 -68.615 -116.42 -69.406 C -116.77 -69.561 -116.97 -69.913 -116.94 -70.286 C -116.93 -80.555 -116.93 -90.823 -116.94 -101.09 C -116.94 -101.63 -116.86 -101.75 -116.35 -101.44 C -113.98 -100.05 -111.59 -98.667 -109.19 -97.303 C -108.84 -97.135 -108.62 -96.76 -108.66 -96.367 C -108.68 -92.833 -108.69 -89.291 -108.68 -85.743 Z"
2260
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2261
+ <path
2262
+ class="secondary-logo-color"
2263
+ d="M -122.18 -85.807 L -122.18 -82.129 C -122.18 -81.637 -122.34 -81.615 -122.72 -81.839 C -125.16 -83.257 -127.6 -84.667 -130.05 -86.069 C -130.35 -86.219 -130.53 -86.535 -130.5 -86.867 L -130.5 -94.09 C -130.5 -94.64 -130.34 -94.679 -129.89 -94.417 C -127.49 -92.998 -125.09 -91.607 -122.67 -90.243 C -122.35 -90.103 -122.15 -89.772 -122.18 -89.42 C -122.21 -88.214 -122.18 -87.012 -122.18 -85.807 Z M -82.688 -119.15 C -83.954 -118.41 -85.17 -117.7 -86.365 -117.02 C -87.748 -116.22 -89.138 -115.44 -90.514 -114.63 C -90.761 -114.45 -91.093 -114.45 -91.34 -114.63 C -93.432 -115.86 -95.535 -117.07 -97.649 -118.27 C -98.053 -118.5 -98.191 -118.63 -97.67 -118.93 C -95.216 -120.32 -92.776 -121.74 -90.337 -123.15 C -90.134 -123.33 -89.845 -123.36 -89.61 -123.23 L -82.918 -119.33 C -82.862 -119.28 -82.812 -119.24 -82.688 -119.15 Z M -85.365 -65.616 L -85.365 -72.062 L -85.365 -74.622 C -85.403 -74.928 -85.24 -75.223 -84.961 -75.353 C -82.886 -76.534 -80.83 -77.736 -78.77 -78.931 C -78.174 -79.286 -78.135 -79.257 -78.135 -78.576 L -78.135 -70.303 C -78.135 -69.991 -78.135 -69.711 -78.468 -69.52 C -80.656 -68.275 -82.833 -67.013 -85.014 -65.761 C -85.127 -65.704 -85.245 -65.655 -85.365 -65.616 Z"
2264
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2265
+ </svg>
2568
2266
  `, isInline: true, styles: [".primary-logo-color{fill:var(--primary-color)}.secondary-logo-color{fill:var(--p-primary-600)}\n"] }); }
2569
2267
  }
2570
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LogoComponent, decorators: [{
2268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LogoComponent, decorators: [{
2571
2269
  type: Component,
2572
- args: [{ selector: 'logo', standalone: true, template: `
2573
- <svg
2574
- viewBox="0.8516 1.7159 60.0074 64.7142"
2575
- xmlns="http://www.w3.org/2000/svg"
2576
- [attr.height]="height + 'px'"
2577
- [attr.width]="width + 'px'">
2578
- <path
2579
- class="primary-logo-color"
2580
- d="M -130.45 -104.78 C -130.45 -105.9 -130.43 -107.01 -130.45 -108.13 C -130.49 -108.52 -130.28 -108.9 -129.92 -109.07 C -125.87 -111.4 -121.82 -113.74 -117.77 -116.08 C -115.7 -117.26 -113.63 -118.45 -111.58 -119.67 C -111.26 -119.89 -110.83 -119.89 -110.51 -119.67 C -101.66 -114.53 -92.787 -109.41 -83.915 -104.29 C -83.752 -104.2 -83.479 -104.16 -83.475 -103.94 C -83.472 -103.72 -83.766 -103.65 -83.947 -103.54 C -86.326 -102.16 -88.716 -100.79 -91.092 -99.39 C -91.377 -99.18 -91.761 -99.18 -92.046 -99.39 C -98.211 -102.98 -104.38 -106.55 -110.56 -110.12 C -110.85 -110.33 -111.23 -110.33 -111.52 -110.12 C -114.88 -108.16 -118.25 -106.22 -121.63 -104.28 C -122.01 -104.11 -122.24 -103.71 -122.2 -103.3 C -122.18 -101.11 -122.2 -98.922 -122.2 -96.736 C -122.19 -95.98 -122.21 -95.98 -122.84 -96.335 C -125.2 -97.7 -127.57 -99.07 -129.93 -100.42 C -130.27 -100.57 -130.49 -100.92 -130.46 -101.3 C -130.43 -102.46 -130.45 -103.62 -130.45 -104.78 Z"
2581
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2582
- <path
2583
- class="primary-logo-color"
2584
- d="M -70.504 -100.94 L -70.504 -90.438 C -70.447 -89.98 -70.692 -89.537 -71.11 -89.342 C -78.942 -84.839 -86.769 -80.325 -94.592 -75.8 C -95.635 -75.2 -96.684 -74.612 -97.713 -73.988 C -98.17 -73.708 -98.255 -73.846 -98.255 -74.314 L -98.255 -82.785 C -98.268 -83.116 -98.07 -83.419 -97.762 -83.541 C -92.003 -86.86 -86.269 -90.236 -80.468 -93.47 C -79.181 -94.179 -78.667 -94.934 -78.731 -96.441 C -78.869 -99.76 -78.791 -103.09 -78.755 -106.42 C -78.694 -107 -79.02 -107.56 -79.56 -107.8 C -81.436 -108.83 -83.28 -109.93 -85.138 -110.99 C -85.734 -111.34 -85.734 -111.34 -85.113 -111.7 C -82.748 -113.07 -80.379 -114.43 -78.021 -115.82 C -77.707 -116.05 -77.283 -116.06 -76.957 -115.84 C -74.962 -114.66 -72.953 -113.5 -70.929 -112.37 C -70.62 -112.19 -70.456 -111.84 -70.521 -111.49 C -70.514 -107.99 -70.508 -104.48 -70.504 -100.94 Z"
2585
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2586
- <path
2587
- class="primary-logo-color"
2588
- d="M -108.68 -85.743 L -108.68 -75.169 C -108.72 -74.754 -108.5 -74.358 -108.12 -74.179 C -104.77 -72.267 -101.44 -70.339 -98.117 -68.396 C -97.762 -68.141 -97.284 -68.141 -96.929 -68.396 C -95.028 -69.527 -93.096 -70.598 -91.195 -71.725 C -90.667 -72.041 -90.581 -71.892 -90.581 -71.371 C -90.596 -68.591 -90.596 -65.811 -90.581 -63.03 C -90.551 -62.7 -90.729 -62.386 -91.028 -62.243 C -93.083 -61.073 -95.13 -59.891 -97.17 -58.697 C -97.436 -58.537 -97.775 -58.569 -98.007 -58.775 C -102.74 -61.517 -107.47 -64.254 -112.22 -66.984 C -113.63 -67.796 -115.01 -68.615 -116.42 -69.406 C -116.77 -69.561 -116.97 -69.913 -116.94 -70.286 C -116.93 -80.555 -116.93 -90.823 -116.94 -101.09 C -116.94 -101.63 -116.86 -101.75 -116.35 -101.44 C -113.98 -100.05 -111.59 -98.667 -109.19 -97.303 C -108.84 -97.135 -108.62 -96.76 -108.66 -96.367 C -108.68 -92.833 -108.69 -89.291 -108.68 -85.743 Z"
2589
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2590
- <path
2591
- class="secondary-logo-color"
2592
- d="M -122.18 -85.807 L -122.18 -82.129 C -122.18 -81.637 -122.34 -81.615 -122.72 -81.839 C -125.16 -83.257 -127.6 -84.667 -130.05 -86.069 C -130.35 -86.219 -130.53 -86.535 -130.5 -86.867 L -130.5 -94.09 C -130.5 -94.64 -130.34 -94.679 -129.89 -94.417 C -127.49 -92.998 -125.09 -91.607 -122.67 -90.243 C -122.35 -90.103 -122.15 -89.772 -122.18 -89.42 C -122.21 -88.214 -122.18 -87.012 -122.18 -85.807 Z M -82.688 -119.15 C -83.954 -118.41 -85.17 -117.7 -86.365 -117.02 C -87.748 -116.22 -89.138 -115.44 -90.514 -114.63 C -90.761 -114.45 -91.093 -114.45 -91.34 -114.63 C -93.432 -115.86 -95.535 -117.07 -97.649 -118.27 C -98.053 -118.5 -98.191 -118.63 -97.67 -118.93 C -95.216 -120.32 -92.776 -121.74 -90.337 -123.15 C -90.134 -123.33 -89.845 -123.36 -89.61 -123.23 L -82.918 -119.33 C -82.862 -119.28 -82.812 -119.24 -82.688 -119.15 Z M -85.365 -65.616 L -85.365 -72.062 L -85.365 -74.622 C -85.403 -74.928 -85.24 -75.223 -84.961 -75.353 C -82.886 -76.534 -80.83 -77.736 -78.77 -78.931 C -78.174 -79.286 -78.135 -79.257 -78.135 -78.576 L -78.135 -70.303 C -78.135 -69.991 -78.135 -69.711 -78.468 -69.52 C -80.656 -68.275 -82.833 -67.013 -85.014 -65.761 C -85.127 -65.704 -85.245 -65.655 -85.365 -65.616 Z"
2593
- transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2594
- </svg>
2270
+ args: [{ selector: 'logo', standalone: true, template: `
2271
+ <svg
2272
+ viewBox="0.8516 1.7159 60.0074 64.7142"
2273
+ xmlns="http://www.w3.org/2000/svg"
2274
+ [attr.height]="height + 'px'"
2275
+ [attr.width]="width + 'px'">
2276
+ <path
2277
+ class="primary-logo-color"
2278
+ d="M -130.45 -104.78 C -130.45 -105.9 -130.43 -107.01 -130.45 -108.13 C -130.49 -108.52 -130.28 -108.9 -129.92 -109.07 C -125.87 -111.4 -121.82 -113.74 -117.77 -116.08 C -115.7 -117.26 -113.63 -118.45 -111.58 -119.67 C -111.26 -119.89 -110.83 -119.89 -110.51 -119.67 C -101.66 -114.53 -92.787 -109.41 -83.915 -104.29 C -83.752 -104.2 -83.479 -104.16 -83.475 -103.94 C -83.472 -103.72 -83.766 -103.65 -83.947 -103.54 C -86.326 -102.16 -88.716 -100.79 -91.092 -99.39 C -91.377 -99.18 -91.761 -99.18 -92.046 -99.39 C -98.211 -102.98 -104.38 -106.55 -110.56 -110.12 C -110.85 -110.33 -111.23 -110.33 -111.52 -110.12 C -114.88 -108.16 -118.25 -106.22 -121.63 -104.28 C -122.01 -104.11 -122.24 -103.71 -122.2 -103.3 C -122.18 -101.11 -122.2 -98.922 -122.2 -96.736 C -122.19 -95.98 -122.21 -95.98 -122.84 -96.335 C -125.2 -97.7 -127.57 -99.07 -129.93 -100.42 C -130.27 -100.57 -130.49 -100.92 -130.46 -101.3 C -130.43 -102.46 -130.45 -103.62 -130.45 -104.78 Z"
2279
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2280
+ <path
2281
+ class="primary-logo-color"
2282
+ d="M -70.504 -100.94 L -70.504 -90.438 C -70.447 -89.98 -70.692 -89.537 -71.11 -89.342 C -78.942 -84.839 -86.769 -80.325 -94.592 -75.8 C -95.635 -75.2 -96.684 -74.612 -97.713 -73.988 C -98.17 -73.708 -98.255 -73.846 -98.255 -74.314 L -98.255 -82.785 C -98.268 -83.116 -98.07 -83.419 -97.762 -83.541 C -92.003 -86.86 -86.269 -90.236 -80.468 -93.47 C -79.181 -94.179 -78.667 -94.934 -78.731 -96.441 C -78.869 -99.76 -78.791 -103.09 -78.755 -106.42 C -78.694 -107 -79.02 -107.56 -79.56 -107.8 C -81.436 -108.83 -83.28 -109.93 -85.138 -110.99 C -85.734 -111.34 -85.734 -111.34 -85.113 -111.7 C -82.748 -113.07 -80.379 -114.43 -78.021 -115.82 C -77.707 -116.05 -77.283 -116.06 -76.957 -115.84 C -74.962 -114.66 -72.953 -113.5 -70.929 -112.37 C -70.62 -112.19 -70.456 -111.84 -70.521 -111.49 C -70.514 -107.99 -70.508 -104.48 -70.504 -100.94 Z"
2283
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2284
+ <path
2285
+ class="primary-logo-color"
2286
+ d="M -108.68 -85.743 L -108.68 -75.169 C -108.72 -74.754 -108.5 -74.358 -108.12 -74.179 C -104.77 -72.267 -101.44 -70.339 -98.117 -68.396 C -97.762 -68.141 -97.284 -68.141 -96.929 -68.396 C -95.028 -69.527 -93.096 -70.598 -91.195 -71.725 C -90.667 -72.041 -90.581 -71.892 -90.581 -71.371 C -90.596 -68.591 -90.596 -65.811 -90.581 -63.03 C -90.551 -62.7 -90.729 -62.386 -91.028 -62.243 C -93.083 -61.073 -95.13 -59.891 -97.17 -58.697 C -97.436 -58.537 -97.775 -58.569 -98.007 -58.775 C -102.74 -61.517 -107.47 -64.254 -112.22 -66.984 C -113.63 -67.796 -115.01 -68.615 -116.42 -69.406 C -116.77 -69.561 -116.97 -69.913 -116.94 -70.286 C -116.93 -80.555 -116.93 -90.823 -116.94 -101.09 C -116.94 -101.63 -116.86 -101.75 -116.35 -101.44 C -113.98 -100.05 -111.59 -98.667 -109.19 -97.303 C -108.84 -97.135 -108.62 -96.76 -108.66 -96.367 C -108.68 -92.833 -108.69 -89.291 -108.68 -85.743 Z"
2287
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2288
+ <path
2289
+ class="secondary-logo-color"
2290
+ d="M -122.18 -85.807 L -122.18 -82.129 C -122.18 -81.637 -122.34 -81.615 -122.72 -81.839 C -125.16 -83.257 -127.6 -84.667 -130.05 -86.069 C -130.35 -86.219 -130.53 -86.535 -130.5 -86.867 L -130.5 -94.09 C -130.5 -94.64 -130.34 -94.679 -129.89 -94.417 C -127.49 -92.998 -125.09 -91.607 -122.67 -90.243 C -122.35 -90.103 -122.15 -89.772 -122.18 -89.42 C -122.21 -88.214 -122.18 -87.012 -122.18 -85.807 Z M -82.688 -119.15 C -83.954 -118.41 -85.17 -117.7 -86.365 -117.02 C -87.748 -116.22 -89.138 -115.44 -90.514 -114.63 C -90.761 -114.45 -91.093 -114.45 -91.34 -114.63 C -93.432 -115.86 -95.535 -117.07 -97.649 -118.27 C -98.053 -118.5 -98.191 -118.63 -97.67 -118.93 C -95.216 -120.32 -92.776 -121.74 -90.337 -123.15 C -90.134 -123.33 -89.845 -123.36 -89.61 -123.23 L -82.918 -119.33 C -82.862 -119.28 -82.812 -119.24 -82.688 -119.15 Z M -85.365 -65.616 L -85.365 -72.062 L -85.365 -74.622 C -85.403 -74.928 -85.24 -75.223 -84.961 -75.353 C -82.886 -76.534 -80.83 -77.736 -78.77 -78.931 C -78.174 -79.286 -78.135 -79.257 -78.135 -78.576 L -78.135 -70.303 C -78.135 -69.991 -78.135 -69.711 -78.468 -69.52 C -80.656 -68.275 -82.833 -67.013 -85.014 -65.761 C -85.127 -65.704 -85.245 -65.655 -85.365 -65.616 Z"
2291
+ transform="matrix(1, 0, 0, 1, 131.35482788085938, 125.0257797241211)" />
2292
+ </svg>
2595
2293
  `, styles: [".primary-logo-color{fill:var(--primary-color)}.secondary-logo-color{fill:var(--p-primary-600)}\n"] }]
2596
2294
  }], propDecorators: { width: [{
2597
2295
  type: Input
@@ -2613,10 +2311,10 @@ class LogoService {
2613
2311
  getLogoComponent() {
2614
2312
  return this.customLogoComponent || LogoComponent;
2615
2313
  }
2616
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LogoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2617
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LogoService, providedIn: 'root' }); }
2314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LogoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2315
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LogoService, providedIn: 'root' }); }
2618
2316
  }
2619
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LogoService, decorators: [{
2317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LogoService, decorators: [{
2620
2318
  type: Injectable,
2621
2319
  args: [{ providedIn: 'root' }]
2622
2320
  }] });
@@ -2657,10 +2355,10 @@ class NotificationApi extends HttpClient {
2657
2355
  ...params,
2658
2356
  });
2659
2357
  }
2660
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotificationApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2661
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotificationApi }); }
2358
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotificationApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2359
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotificationApi }); }
2662
2360
  }
2663
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotificationApi, decorators: [{
2361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotificationApi, decorators: [{
2664
2362
  type: Injectable
2665
2363
  }] });
2666
2364
 
@@ -2712,10 +2410,10 @@ class NotificationService {
2712
2410
  .then((response) => this.unreadNotificationCount.set(response.count ?? 0))
2713
2411
  .catch((error) => console.error('Failed to load notification count', error));
2714
2412
  }
2715
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2716
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
2413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2414
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
2717
2415
  }
2718
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotificationService, decorators: [{
2416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotificationService, decorators: [{
2719
2417
  type: Injectable,
2720
2418
  args: [{ providedIn: 'root' }]
2721
2419
  }], ctorParameters: () => [] });
@@ -2798,8 +2496,8 @@ class UserNotificationsComponent {
2798
2496
  return 'secondary';
2799
2497
  }
2800
2498
  }
2801
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserNotificationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2802
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: UserNotificationsComponent, isStandalone: true, selector: "app-user-notifications", viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: `
2499
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserNotificationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2500
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: UserNotificationsComponent, isStandalone: true, selector: "app-user-notifications", viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: `
2803
2501
  <button
2804
2502
  class="layout-topbar-action relative"
2805
2503
  id="oip-app-topbar-notification-button"
@@ -2886,9 +2584,9 @@ class UserNotificationsComponent {
2886
2584
  (onPageChange)="onPageChange($event)"></p-paginator>
2887
2585
  }
2888
2586
  </p-popover>
2889
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i1$3.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i3$1.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first", "appendTo"], outputs: ["onPageChange"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
2587
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i1$4.Badge, selector: "p-badge", inputs: ["styleClass", "badgeSize", "size", "severity", "value", "badgeDisabled"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i3$1.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first", "appendTo"], outputs: ["onPageChange"] }, { kind: "component", type: Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "pipe", type: i1$3.DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
2890
2588
  }
2891
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserNotificationsComponent, decorators: [{
2589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UserNotificationsComponent, decorators: [{
2892
2590
  type: Component,
2893
2591
  args: [{
2894
2592
  selector: 'app-user-notifications',
@@ -2988,6 +2686,149 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2988
2686
  args: ['popover']
2989
2687
  }] } });
2990
2688
 
2689
+ /* eslint-disable */
2690
+ /* tslint:disable */
2691
+ // @ts-nocheck
2692
+ class ApplicationsApi extends HttpClient {
2693
+ constructor() {
2694
+ super(...arguments);
2695
+ this.getApplicationRegistryItems = (params = {}) => this.request({
2696
+ path: `/api/applications/get-application-registry-items`,
2697
+ method: "GET",
2698
+ secure: true,
2699
+ format: "json",
2700
+ ...params,
2701
+ });
2702
+ this.getApplicationRegistryItemByCode = ({ code, ...query }, params = {}) => this.request({
2703
+ path: `/api/applications/get-application-registry-item-by-code/${code}`,
2704
+ method: "GET",
2705
+ secure: true,
2706
+ ...params,
2707
+ });
2708
+ this.createApplicationRegistryItem = (data, params = {}) => this.request({
2709
+ path: `/api/applications/create-application-registry-item`,
2710
+ method: "POST",
2711
+ body: data,
2712
+ secure: true,
2713
+ type: ContentType.Json,
2714
+ ...params,
2715
+ });
2716
+ this.updateApplicationRegistryItem = ({ code, ...query }, data, params = {}) => this.request({
2717
+ path: `/api/applications/update-application-registry-item/${code}`,
2718
+ method: "PUT",
2719
+ body: data,
2720
+ secure: true,
2721
+ type: ContentType.Json,
2722
+ ...params,
2723
+ });
2724
+ this.deleteApplicationRegistryItem = ({ code, ...query }, params = {}) => this.request({
2725
+ path: `/api/applications/delete-application-registry-item/${code}`,
2726
+ method: "DELETE",
2727
+ secure: true,
2728
+ ...params,
2729
+ });
2730
+ }
2731
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationsApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2732
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationsApi }); }
2733
+ }
2734
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationsApi, decorators: [{
2735
+ type: Injectable
2736
+ }] });
2737
+
2738
+ class ApplicationRegistryService {
2739
+ constructor() {
2740
+ this.applicationsApi = inject(ApplicationsApi);
2741
+ this.applications = [];
2742
+ this.currentApplication = null;
2743
+ }
2744
+ async loadApplications() {
2745
+ this.applications = await this.applicationsApi.getApplicationRegistryItems();
2746
+ this.currentApplication = this.applications.find((application) => application.isCurrent) ?? null;
2747
+ }
2748
+ openApplication(application) {
2749
+ if (application.isCurrent || !application.baseUrl) {
2750
+ return;
2751
+ }
2752
+ window.location.href = application.baseUrl;
2753
+ }
2754
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2755
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationRegistryService }); }
2756
+ }
2757
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationRegistryService, decorators: [{
2758
+ type: Injectable
2759
+ }] });
2760
+
2761
+ class AppTopbarApplicationSwitcherComponent {
2762
+ constructor() {
2763
+ this.applicationMenuItems = [];
2764
+ this.applicationRegistryService = inject(ApplicationRegistryService);
2765
+ }
2766
+ async ngOnInit() {
2767
+ try {
2768
+ await this.applicationRegistryService.loadApplications();
2769
+ this.applicationMenuItems = this.applicationRegistryService.applications.map((application) => this.createApplicationMenuItem(application));
2770
+ }
2771
+ catch {
2772
+ this.applicationMenuItems = [];
2773
+ }
2774
+ }
2775
+ createApplicationMenuItem(application) {
2776
+ return {
2777
+ id: `oip-app-switcher-${application.code}`,
2778
+ label: application.displayName ?? '',
2779
+ icon: application.icon ?? undefined,
2780
+ disabled: application.isCurrent,
2781
+ command: () => this.applicationRegistryService.openApplication(application)
2782
+ };
2783
+ }
2784
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppTopbarApplicationSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2785
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: AppTopbarApplicationSwitcherComponent, isStandalone: true, selector: "app-topbar-application-switcher", providers: [ApplicationsApi, ApplicationRegistryService], ngImport: i0, template: `
2786
+ @if (applicationRegistryService.applications.length > 1) {
2787
+ <p-button
2788
+ class="layout-topbar-action"
2789
+ id="oip-app-topbar-application-switcher-button"
2790
+ severity="secondary"
2791
+ type="button"
2792
+ [rounded]="true"
2793
+ [text]="true"
2794
+ (click)="applicationMenu.toggle($event)">
2795
+ <i [ngClass]="applicationRegistryService.currentApplication?.icon || 'pi pi-th-large'"></i>
2796
+ <span class="ml-2 hidden md:inline">
2797
+ {{ applicationRegistryService.currentApplication?.displayName || ('topbar.applications' | translate) }}
2798
+ </span>
2799
+ </p-button>
2800
+ <p-menu #applicationMenu [model]="applicationMenuItems" [popup]="true" />
2801
+ }
2802
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i3$2.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex", "appendTo"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
2803
+ }
2804
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppTopbarApplicationSwitcherComponent, decorators: [{
2805
+ type: Component,
2806
+ args: [{
2807
+ selector: 'app-topbar-application-switcher',
2808
+ standalone: true,
2809
+ imports: [CommonModule, ButtonModule, MenuModule, TranslatePipe],
2810
+ template: `
2811
+ @if (applicationRegistryService.applications.length > 1) {
2812
+ <p-button
2813
+ class="layout-topbar-action"
2814
+ id="oip-app-topbar-application-switcher-button"
2815
+ severity="secondary"
2816
+ type="button"
2817
+ [rounded]="true"
2818
+ [text]="true"
2819
+ (click)="applicationMenu.toggle($event)">
2820
+ <i [ngClass]="applicationRegistryService.currentApplication?.icon || 'pi pi-th-large'"></i>
2821
+ <span class="ml-2 hidden md:inline">
2822
+ {{ applicationRegistryService.currentApplication?.displayName || ('topbar.applications' | translate) }}
2823
+ </span>
2824
+ </p-button>
2825
+ <p-menu #applicationMenu [model]="applicationMenuItems" [popup]="true" />
2826
+ }
2827
+ `,
2828
+ providers: [ApplicationsApi, ApplicationRegistryService]
2829
+ }]
2830
+ }] });
2831
+
2991
2832
  class AppTopbar {
2992
2833
  constructor() {
2993
2834
  this.securityService = inject(SecurityService);
@@ -3029,107 +2870,109 @@ class AppTopbar {
3029
2870
  }
3030
2871
  });
3031
2872
  }
3032
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTopbar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3033
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AppTopbar, isStandalone: true, selector: "app-topbar", providers: [ConfirmationService], ngImport: i0, template: ` <div class="layout-topbar">
3034
- <p-confirmDialog appendTo="body" />
3035
- <div class="layout-topbar-logo-container">
3036
- <button class="layout-menu-button layout-topbar-action" (click)="layoutService.onMenuToggle()">
3037
- <i class="pi pi-bars"></i>
3038
- </button>
3039
- <a class="layout-topbar-logo" id="oip-app-topbar-logo-link" routerLink="">
3040
- <ng-container
3041
- *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 36, height: 36 }"></ng-container>
3042
- <span>{{ 'app-info.title' | translate }}</span>
3043
- </a>
3044
- </div>
2873
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppTopbar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2874
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: AppTopbar, isStandalone: true, selector: "app-topbar", providers: [ConfirmationService], ngImport: i0, template: `
2875
+ <div class="layout-topbar">
2876
+ <p-confirmDialog appendTo="body"/>
2877
+ <div class="layout-topbar-logo-container">
2878
+ <button class="layout-menu-button layout-topbar-action" (click)="layoutService.onMenuToggle()">
2879
+ <i class="pi pi-bars"></i>
2880
+ </button>
2881
+ <a class="layout-topbar-logo" id="oip-app-topbar-logo-link" routerLink="">
2882
+ <ng-container
2883
+ *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 36, height: 36 }"></ng-container>
2884
+ <span>{{ 'app-info.title' | translate }}</span>
2885
+ </a>
2886
+ </div>
3045
2887
 
3046
- @if (securityService.isAdmin() && topBarService.topBarItems.length > 0) {
3047
- <p-tabs class="layout-topbar-tabs ml-2" [(value)]="topBarService.activeId">
3048
- <p-tablist>
3049
- @for (tab of topBarService.availableTopBarItems; track tab.id) {
3050
- <p-tab id="oip-app-topbar-tab-{{ tab.id }}" [value]="tab.id">
3051
- <i class="pi {{ tab.icon }}"></i>
3052
- <span class="ml-2">{{ tab.caption }}</span>
3053
- </p-tab>
3054
- }
3055
- </p-tablist>
3056
- </p-tabs>
3057
- }
3058
- <div class="layout-topbar-actions">
3059
- <div class="layout-config-menu">
3060
- <app-user-notifications />
3061
- <p-button
3062
- class="layout-topbar-action"
3063
- id="oip-app-topbar-theme-button"
3064
- severity="secondary"
3065
- type="button"
3066
- [rounded]="true"
3067
- [text]="true"
3068
- (click)="toggleDarkMode()">
3069
- <i
3070
- class="pi"
3071
- [ngClass]="{
2888
+ @if (securityService.isAdmin() && topBarService.topBarItems.length > 0) {
2889
+ <p-tabs class="layout-topbar-tabs ml-2" [(value)]="topBarService.activeId">
2890
+ <p-tablist>
2891
+ @for (tab of topBarService.availableTopBarItems; track tab.id) {
2892
+ <p-tab id="oip-app-topbar-tab-{{ tab.id }}" [value]="tab.id">
2893
+ <i class="pi {{ tab.icon }}"></i>
2894
+ <span class="ml-2">{{ tab.caption }}</span>
2895
+ </p-tab>
2896
+ }
2897
+ </p-tablist>
2898
+ </p-tabs>
2899
+ }
2900
+ <div class="layout-topbar-actions">
2901
+ <div class="layout-config-menu">
2902
+ <app-topbar-application-switcher/>
2903
+ <app-user-notifications/>
2904
+ <p-button
2905
+ class="layout-topbar-action"
2906
+ id="oip-app-topbar-theme-button"
2907
+ severity="secondary"
2908
+ type="button"
2909
+ [rounded]="true"
2910
+ [text]="true"
2911
+ (click)="toggleDarkMode()">
2912
+ <i
2913
+ class="pi"
2914
+ [ngClass]="{
3072
2915
  'pi-moon': layoutService.isDarkTheme(),
3073
2916
  'pi-sun': !layoutService.isDarkTheme()
3074
2917
  }"></i>
3075
- </p-button>
3076
- <div class="relative">
3077
- <p-button
3078
- class="layout-topbar-action layout-topbar-action-highlight"
3079
- enterActiveClass="animate-scalein"
3080
- enterFromClass="hidden"
3081
- id="oip-app-topbar-palette-button"
3082
- leaveActiveClass="animate-fadeout"
3083
- leaveToClass="hidden"
3084
- pStyleClass="@next"
3085
- [hideOnOutsideClick]="true"
3086
- [rounded]="true">
3087
- <i class="pi pi-palette"></i>
3088
2918
  </p-button>
3089
- <app-configurator />
2919
+ <div class="relative">
2920
+ <p-button
2921
+ class="layout-topbar-action layout-topbar-action-highlight"
2922
+ enterActiveClass="animate-scalein"
2923
+ enterFromClass="hidden"
2924
+ id="oip-app-topbar-palette-button"
2925
+ leaveActiveClass="animate-fadeout"
2926
+ leaveToClass="hidden"
2927
+ pStyleClass="@next"
2928
+ [hideOnOutsideClick]="true"
2929
+ [rounded]="true">
2930
+ <i class="pi pi-palette"></i>
2931
+ </p-button>
2932
+ <app-configurator/>
2933
+ </div>
3090
2934
  </div>
3091
- </div>
3092
2935
 
3093
- <button
3094
- class="layout-topbar-menu-button layout-topbar-action"
3095
- enterActiveClass="animate-scalein"
3096
- enterFromClass="hidden"
3097
- id="oip-app-topbar-menu-expand-button"
3098
- leaveActiveClass="animate-fadeout"
3099
- leaveToClass="hidden"
3100
- pStyleClass="@next"
3101
- [hideOnOutsideClick]="true">
3102
- <i class="pi pi-ellipsis-v"></i>
3103
- </button>
2936
+ <button
2937
+ class="layout-topbar-menu-button layout-topbar-action"
2938
+ enterActiveClass="animate-scalein"
2939
+ enterFromClass="hidden"
2940
+ id="oip-app-topbar-menu-expand-button"
2941
+ leaveActiveClass="animate-fadeout"
2942
+ leaveToClass="hidden"
2943
+ pStyleClass="@next"
2944
+ [hideOnOutsideClick]="true">
2945
+ <i class="pi pi-ellipsis-v"></i>
2946
+ </button>
3104
2947
 
3105
- <div class="layout-topbar-menu hidden lg:block">
3106
- <div class="layout-topbar-menu-content">
3107
- <button
3108
- class="layout-topbar-action"
3109
- id="oip-app-topbar-logout-button"
3110
- type="button"
3111
- (click)="confirmLogout()"
3112
- (keydown)="logoutKeyDown($event)">
3113
- <i class="pi pi-sign-out"></i>
3114
- <span>{{ 'topbar.logout' | translate }}</span>
3115
- </button>
3116
- <button class="layout-topbar-action" routerLink="config">
3117
- <p-avatar
3118
- class="p-link flex align-items-center"
3119
- id="oip-app-topbar-user-avatar"
3120
- shape="circle"
3121
- size="normal"
3122
- [image]="userService.photoLoaded ? userService.photo : null"
2948
+ <div class="layout-topbar-menu hidden lg:block">
2949
+ <div class="layout-topbar-menu-content">
2950
+ <button
2951
+ class="layout-topbar-action"
2952
+ id="oip-app-topbar-logout-button"
2953
+ type="button"
2954
+ (click)="confirmLogout()"
2955
+ (keydown)="logoutKeyDown($event)">
2956
+ <i class="pi pi-sign-out"></i>
2957
+ <span>{{ 'topbar.logout' | translate }}</span>
2958
+ </button>
2959
+ <button class="layout-topbar-action" routerLink="config">
2960
+ <p-avatar
2961
+ class="p-link flex align-items-center"
2962
+ id="oip-app-topbar-user-avatar"
2963
+ shape="circle"
2964
+ size="normal"
2965
+ [image]="userService.photoLoaded ? userService.photo : null"
3123
2966
  >{{ !userService.photoLoaded ? userService.shortLabel : null }}
3124
- </p-avatar>
3125
- <span class="ml-2">{{ 'topbar.profile' | translate }}</span>
3126
- </button>
2967
+ </p-avatar>
2968
+ <span class="ml-2">{{ 'topbar.profile' | translate }}</span>
2969
+ </button>
2970
+ </div>
3127
2971
  </div>
3128
2972
  </div>
3129
- </div>
3130
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$2.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }, { kind: "component", type: Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: TabList, selector: "p-tablist" }, { kind: "component", type: Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$2.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "component", type: UserNotificationsComponent, selector: "app-user-notifications" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
2973
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$3.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }, { kind: "component", type: Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: TabList, selector: "p-tablist" }, { kind: "component", type: Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "component", type: UserNotificationsComponent, selector: "app-user-notifications" }, { kind: "component", type: AppTopbarApplicationSwitcherComponent, selector: "app-topbar-application-switcher" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
3131
2974
  }
3132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppTopbar, decorators: [{
2975
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppTopbar, decorators: [{
3133
2976
  type: Component,
3134
2977
  args: [{
3135
2978
  selector: 'app-topbar',
@@ -3146,106 +2989,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3146
2989
  ButtonModule,
3147
2990
  ConfirmDialog,
3148
2991
  UserNotificationsComponent,
3149
- TranslatePipe
2992
+ TranslatePipe,
2993
+ AppTopbarApplicationSwitcherComponent
3150
2994
  ],
3151
- template: ` <div class="layout-topbar">
3152
- <p-confirmDialog appendTo="body" />
3153
- <div class="layout-topbar-logo-container">
3154
- <button class="layout-menu-button layout-topbar-action" (click)="layoutService.onMenuToggle()">
3155
- <i class="pi pi-bars"></i>
3156
- </button>
3157
- <a class="layout-topbar-logo" id="oip-app-topbar-logo-link" routerLink="">
3158
- <ng-container
3159
- *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 36, height: 36 }"></ng-container>
3160
- <span>{{ 'app-info.title' | translate }}</span>
3161
- </a>
3162
- </div>
2995
+ template: `
2996
+ <div class="layout-topbar">
2997
+ <p-confirmDialog appendTo="body"/>
2998
+ <div class="layout-topbar-logo-container">
2999
+ <button class="layout-menu-button layout-topbar-action" (click)="layoutService.onMenuToggle()">
3000
+ <i class="pi pi-bars"></i>
3001
+ </button>
3002
+ <a class="layout-topbar-logo" id="oip-app-topbar-logo-link" routerLink="">
3003
+ <ng-container
3004
+ *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 36, height: 36 }"></ng-container>
3005
+ <span>{{ 'app-info.title' | translate }}</span>
3006
+ </a>
3007
+ </div>
3163
3008
 
3164
- @if (securityService.isAdmin() && topBarService.topBarItems.length > 0) {
3165
- <p-tabs class="layout-topbar-tabs ml-2" [(value)]="topBarService.activeId">
3166
- <p-tablist>
3167
- @for (tab of topBarService.availableTopBarItems; track tab.id) {
3168
- <p-tab id="oip-app-topbar-tab-{{ tab.id }}" [value]="tab.id">
3169
- <i class="pi {{ tab.icon }}"></i>
3170
- <span class="ml-2">{{ tab.caption }}</span>
3171
- </p-tab>
3172
- }
3173
- </p-tablist>
3174
- </p-tabs>
3175
- }
3176
- <div class="layout-topbar-actions">
3177
- <div class="layout-config-menu">
3178
- <app-user-notifications />
3179
- <p-button
3180
- class="layout-topbar-action"
3181
- id="oip-app-topbar-theme-button"
3182
- severity="secondary"
3183
- type="button"
3184
- [rounded]="true"
3185
- [text]="true"
3186
- (click)="toggleDarkMode()">
3187
- <i
3188
- class="pi"
3189
- [ngClass]="{
3009
+ @if (securityService.isAdmin() && topBarService.topBarItems.length > 0) {
3010
+ <p-tabs class="layout-topbar-tabs ml-2" [(value)]="topBarService.activeId">
3011
+ <p-tablist>
3012
+ @for (tab of topBarService.availableTopBarItems; track tab.id) {
3013
+ <p-tab id="oip-app-topbar-tab-{{ tab.id }}" [value]="tab.id">
3014
+ <i class="pi {{ tab.icon }}"></i>
3015
+ <span class="ml-2">{{ tab.caption }}</span>
3016
+ </p-tab>
3017
+ }
3018
+ </p-tablist>
3019
+ </p-tabs>
3020
+ }
3021
+ <div class="layout-topbar-actions">
3022
+ <div class="layout-config-menu">
3023
+ <app-topbar-application-switcher/>
3024
+ <app-user-notifications/>
3025
+ <p-button
3026
+ class="layout-topbar-action"
3027
+ id="oip-app-topbar-theme-button"
3028
+ severity="secondary"
3029
+ type="button"
3030
+ [rounded]="true"
3031
+ [text]="true"
3032
+ (click)="toggleDarkMode()">
3033
+ <i
3034
+ class="pi"
3035
+ [ngClass]="{
3190
3036
  'pi-moon': layoutService.isDarkTheme(),
3191
3037
  'pi-sun': !layoutService.isDarkTheme()
3192
3038
  }"></i>
3193
- </p-button>
3194
- <div class="relative">
3195
- <p-button
3196
- class="layout-topbar-action layout-topbar-action-highlight"
3197
- enterActiveClass="animate-scalein"
3198
- enterFromClass="hidden"
3199
- id="oip-app-topbar-palette-button"
3200
- leaveActiveClass="animate-fadeout"
3201
- leaveToClass="hidden"
3202
- pStyleClass="@next"
3203
- [hideOnOutsideClick]="true"
3204
- [rounded]="true">
3205
- <i class="pi pi-palette"></i>
3206
3039
  </p-button>
3207
- <app-configurator />
3040
+ <div class="relative">
3041
+ <p-button
3042
+ class="layout-topbar-action layout-topbar-action-highlight"
3043
+ enterActiveClass="animate-scalein"
3044
+ enterFromClass="hidden"
3045
+ id="oip-app-topbar-palette-button"
3046
+ leaveActiveClass="animate-fadeout"
3047
+ leaveToClass="hidden"
3048
+ pStyleClass="@next"
3049
+ [hideOnOutsideClick]="true"
3050
+ [rounded]="true">
3051
+ <i class="pi pi-palette"></i>
3052
+ </p-button>
3053
+ <app-configurator/>
3054
+ </div>
3208
3055
  </div>
3209
- </div>
3210
3056
 
3211
- <button
3212
- class="layout-topbar-menu-button layout-topbar-action"
3213
- enterActiveClass="animate-scalein"
3214
- enterFromClass="hidden"
3215
- id="oip-app-topbar-menu-expand-button"
3216
- leaveActiveClass="animate-fadeout"
3217
- leaveToClass="hidden"
3218
- pStyleClass="@next"
3219
- [hideOnOutsideClick]="true">
3220
- <i class="pi pi-ellipsis-v"></i>
3221
- </button>
3057
+ <button
3058
+ class="layout-topbar-menu-button layout-topbar-action"
3059
+ enterActiveClass="animate-scalein"
3060
+ enterFromClass="hidden"
3061
+ id="oip-app-topbar-menu-expand-button"
3062
+ leaveActiveClass="animate-fadeout"
3063
+ leaveToClass="hidden"
3064
+ pStyleClass="@next"
3065
+ [hideOnOutsideClick]="true">
3066
+ <i class="pi pi-ellipsis-v"></i>
3067
+ </button>
3222
3068
 
3223
- <div class="layout-topbar-menu hidden lg:block">
3224
- <div class="layout-topbar-menu-content">
3225
- <button
3226
- class="layout-topbar-action"
3227
- id="oip-app-topbar-logout-button"
3228
- type="button"
3229
- (click)="confirmLogout()"
3230
- (keydown)="logoutKeyDown($event)">
3231
- <i class="pi pi-sign-out"></i>
3232
- <span>{{ 'topbar.logout' | translate }}</span>
3233
- </button>
3234
- <button class="layout-topbar-action" routerLink="config">
3235
- <p-avatar
3236
- class="p-link flex align-items-center"
3237
- id="oip-app-topbar-user-avatar"
3238
- shape="circle"
3239
- size="normal"
3240
- [image]="userService.photoLoaded ? userService.photo : null"
3069
+ <div class="layout-topbar-menu hidden lg:block">
3070
+ <div class="layout-topbar-menu-content">
3071
+ <button
3072
+ class="layout-topbar-action"
3073
+ id="oip-app-topbar-logout-button"
3074
+ type="button"
3075
+ (click)="confirmLogout()"
3076
+ (keydown)="logoutKeyDown($event)">
3077
+ <i class="pi pi-sign-out"></i>
3078
+ <span>{{ 'topbar.logout' | translate }}</span>
3079
+ </button>
3080
+ <button class="layout-topbar-action" routerLink="config">
3081
+ <p-avatar
3082
+ class="p-link flex align-items-center"
3083
+ id="oip-app-topbar-user-avatar"
3084
+ shape="circle"
3085
+ size="normal"
3086
+ [image]="userService.photoLoaded ? userService.photo : null"
3241
3087
  >{{ !userService.photoLoaded ? userService.shortLabel : null }}
3242
- </p-avatar>
3243
- <span class="ml-2">{{ 'topbar.profile' | translate }}</span>
3244
- </button>
3088
+ </p-avatar>
3089
+ <span class="ml-2">{{ 'topbar.profile' | translate }}</span>
3090
+ </button>
3091
+ </div>
3245
3092
  </div>
3246
3093
  </div>
3247
- </div>
3248
- </div>`,
3094
+ </div>`,
3249
3095
  providers: [ConfirmationService]
3250
3096
  }]
3251
3097
  }] });
@@ -3254,35 +3100,35 @@ class FooterComponent {
3254
3100
  constructor() {
3255
3101
  this.logoService = inject(LogoService);
3256
3102
  }
3257
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3258
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: FooterComponent, isStandalone: true, selector: "app-footer", ngImport: i0, template: `
3259
- <div class="layout-footer">
3260
- <div class="flex justify-center flex-1">
3261
- <div class="mr-2 -my-0.5">
3262
- <ng-container
3263
- *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 18, height: 18 }"></ng-container>
3264
- </div>
3265
- <span class="font-medium">{{ 'app-info.footer' | translate }}</span>
3266
- </div>
3267
- <p class="mr-auto">{{ 'app-info.version' | translate }}</p>
3268
- </div>
3103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: FooterComponent, isStandalone: true, selector: "app-footer", ngImport: i0, template: `
3105
+ <div class="layout-footer">
3106
+ <div class="flex justify-center flex-1">
3107
+ <div class="mr-2 -my-0.5">
3108
+ <ng-container
3109
+ *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 18, height: 18 }"></ng-container>
3110
+ </div>
3111
+ <span class="font-medium">{{ 'app-info.footer' | translate }}</span>
3112
+ </div>
3113
+ <p class="mr-auto">{{ 'app-info.version' | translate }}</p>
3114
+ </div>
3269
3115
  `, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
3270
3116
  }
3271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FooterComponent, decorators: [{
3117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: FooterComponent, decorators: [{
3272
3118
  type: Component,
3273
3119
  args: [{
3274
3120
  selector: 'app-footer',
3275
- template: `
3276
- <div class="layout-footer">
3277
- <div class="flex justify-center flex-1">
3278
- <div class="mr-2 -my-0.5">
3279
- <ng-container
3280
- *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 18, height: 18 }"></ng-container>
3281
- </div>
3282
- <span class="font-medium">{{ 'app-info.footer' | translate }}</span>
3283
- </div>
3284
- <p class="mr-auto">{{ 'app-info.version' | translate }}</p>
3285
- </div>
3121
+ template: `
3122
+ <div class="layout-footer">
3123
+ <div class="flex justify-center flex-1">
3124
+ <div class="mr-2 -my-0.5">
3125
+ <ng-container
3126
+ *ngComponentOutlet="logoService.getLogoComponent(); inputs: { width: 18, height: 18 }"></ng-container>
3127
+ </div>
3128
+ <span class="font-medium">{{ 'app-info.footer' | translate }}</span>
3129
+ </div>
3130
+ <p class="mr-auto">{{ 'app-info.version' | translate }}</p>
3131
+ </div>
3286
3132
  `,
3287
3133
  standalone: true,
3288
3134
  imports: [TranslatePipe, NgComponentOutlet]
@@ -3347,10 +3193,10 @@ class MenuApi extends HttpClient {
3347
3193
  ...params,
3348
3194
  });
3349
3195
  }
3350
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3351
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuApi }); }
3196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3197
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuApi }); }
3352
3198
  }
3353
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuApi, decorators: [{
3199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuApi, decorators: [{
3354
3200
  type: Injectable
3355
3201
  }] });
3356
3202
 
@@ -3400,10 +3246,10 @@ class MenuService {
3400
3246
  editModuleInstance(item) {
3401
3247
  return this.menuDataService.editModuleInstance(item);
3402
3248
  }
3403
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3404
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuService }); }
3249
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3250
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuService }); }
3405
3251
  }
3406
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuService, decorators: [{
3252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuService, decorators: [{
3407
3253
  type: Injectable
3408
3254
  }] });
3409
3255
 
@@ -3640,8 +3486,8 @@ class MenuItemComponent {
3640
3486
  const currentIndex = items.findIndex((item) => item.moduleInstanceId == currentItem.moduleInstanceId);
3641
3487
  return this.findNextVisibleIndex(items, currentIndex) !== -1;
3642
3488
  }
3643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$4.Router }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
3644
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MenuItemComponent, isStandalone: true, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey", menuItemCreateDialogComponent: "menuItemCreateDialogComponent", menuItemEditDialogComponent: "menuItemEditDialogComponent", contextMenu: "contextMenu" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, providers: [ConfirmationService], ngImport: i0, template: `
3489
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$5.Router }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
3490
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: MenuItemComponent, isStandalone: true, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey", menuItemCreateDialogComponent: "menuItemCreateDialogComponent", menuItemEditDialogComponent: "menuItemEditDialogComponent", contextMenu: "contextMenu" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, providers: [ConfirmationService], ngImport: i0, template: `
3645
3491
  <ng-container>
3646
3492
  <p-confirm-dialog />
3647
3493
  @if (root && item.visible !== false) {
@@ -3714,9 +3560,9 @@ class MenuItemComponent {
3714
3560
  </ul>
3715
3561
  }
3716
3562
  </ng-container>
3717
- `, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i3$3.Ripple, selector: "[pRipple]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }] }); }
3563
+ `, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i3$4.Ripple, selector: "[pRipple]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }] }); }
3718
3564
  }
3719
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemComponent, decorators: [{
3565
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemComponent, decorators: [{
3720
3566
  type: Component,
3721
3567
  args: [{
3722
3568
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -3798,7 +3644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3798
3644
  imports: [RippleModule, NgClass, RouterLinkActive, RouterLink, ContextMenuModule, ConfirmDialog],
3799
3645
  providers: [ConfirmationService]
3800
3646
  }]
3801
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$4.Router }, { type: MenuService }], propDecorators: { item: [{
3647
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$5.Router }, { type: MenuService }], propDecorators: { item: [{
3802
3648
  type: Input
3803
3649
  }], index: [{
3804
3650
  type: Input
@@ -3881,8 +3727,8 @@ class MenuItemCreateDialogComponent {
3881
3727
  this.visible = true;
3882
3728
  this.visibleChange.emit(this.visible);
3883
3729
  }
3884
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemCreateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3885
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MenuItemCreateDialogComponent, isStandalone: true, selector: "menu-item-create-dialog", inputs: { visible: "visible" }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: `
3730
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemCreateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3731
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: MenuItemCreateDialogComponent, isStandalone: true, selector: "menu-item-create-dialog", inputs: { visible: "visible" }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: `
3886
3732
  <p-dialog
3887
3733
  header="{{ 'menuItemCreateDialogComponent.header' | translate }}"
3888
3734
  [modal]="true"
@@ -3967,9 +3813,9 @@ class MenuItemCreateDialogComponent {
3967
3813
  (click)="save()" />
3968
3814
  </div>
3969
3815
  </p-dialog>
3970
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$4.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
3816
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$5.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
3971
3817
  }
3972
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemCreateDialogComponent, decorators: [{
3818
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemCreateDialogComponent, decorators: [{
3973
3819
  type: Component,
3974
3820
  args: [{
3975
3821
  selector: 'menu-item-create-dialog',
@@ -4134,8 +3980,8 @@ class MenuItemEditDialogComponent {
4134
3980
  this.visible = true;
4135
3981
  this.visibleChange.emit(this.visible);
4136
3982
  }
4137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemEditDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4138
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: MenuItemEditDialogComponent, isStandalone: true, selector: "menu-item-edit-dialog", inputs: { visible: "visible" }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: `
3983
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemEditDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3984
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: MenuItemEditDialogComponent, isStandalone: true, selector: "menu-item-edit-dialog", inputs: { visible: "visible" }, outputs: { visibleChange: "visibleChange" }, ngImport: i0, template: `
4139
3985
  <p-dialog
4140
3986
  header="{{ 'menuItemEditDialogComponent.header' | translate }}"
4141
3987
  [modal]="true"
@@ -4213,9 +4059,9 @@ class MenuItemEditDialogComponent {
4213
4059
  (click)="save()" />
4214
4060
  </div>
4215
4061
  </p-dialog>
4216
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$4.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i1.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "styleClass", "panelStyle", "panelStyleClass", "inputId", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "dataKey", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "placeholder", "options", "filterValue", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect", "size", "variant", "fluid", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
4062
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3$5.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i1.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "styleClass", "panelStyle", "panelStyleClass", "inputId", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "dataKey", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "placeholder", "options", "filterValue", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect", "size", "variant", "fluid", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
4217
4063
  }
4218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemEditDialogComponent, decorators: [{
4064
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuItemEditDialogComponent, decorators: [{
4219
4065
  type: Component,
4220
4066
  args: [{
4221
4067
  imports: [ButtonModule, DialogModule, InputTextModule, SelectModule, FormsModule, TranslatePipe, MultiSelectModule],
@@ -4332,8 +4178,8 @@ class MenuComponent {
4332
4178
  }
4333
4179
  ];
4334
4180
  }
4335
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4336
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MenuComponent, isStandalone: true, selector: "app-menu", providers: [MenuApi], viewQueries: [{ propertyName: "menuItemCreateDialogComponent", first: true, predicate: MenuItemCreateDialogComponent, descendants: true }, { propertyName: "menuItemEditDialogComponent", first: true, predicate: MenuItemEditDialogComponent, descendants: true }, { propertyName: "contextMenu", first: true, predicate: ContextMenu, descendants: true }], ngImport: i0, template: `
4181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: MenuComponent, isStandalone: true, selector: "app-menu", providers: [MenuApi], viewQueries: [{ propertyName: "menuItemCreateDialogComponent", first: true, predicate: MenuItemCreateDialogComponent, descendants: true }, { propertyName: "menuItemEditDialogComponent", first: true, predicate: MenuItemEditDialogComponent, descendants: true }, { propertyName: "contextMenu", first: true, predicate: ContextMenu, descendants: true }], ngImport: i0, template: `
4337
4183
  <div #empty class="layout-sidebar" (contextmenu)="onContextMenu($event)">
4338
4184
  <ul class="layout-menu">
4339
4185
  @for (item of menuService.menu; track item; let i = $index) {
@@ -4358,9 +4204,9 @@ class MenuComponent {
4358
4204
  <p-contextMenu [target]="empty"/>
4359
4205
  <menu-item-create-dialog/>
4360
4206
  <menu-item-edit-dialog/>
4361
- }`, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: i1$5.ContextMenu, selector: "p-contextMenu, p-contextmenu, p-context-menu", inputs: ["model", "triggerEvent", "target", "global", "style", "styleClass", "autoZIndex", "baseZIndex", "id", "breakpoint", "ariaLabel", "ariaLabelledBy", "pressDelay", "appendTo"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "component", type: MenuItemCreateDialogComponent, selector: "menu-item-create-dialog", inputs: ["visible"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: MenuItemEditDialogComponent, selector: "menu-item-edit-dialog", inputs: ["visible"], outputs: ["visibleChange"] }] }); }
4207
+ }`, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: i1$6.ContextMenu, selector: "p-contextMenu, p-contextmenu, p-context-menu", inputs: ["model", "triggerEvent", "target", "global", "style", "styleClass", "autoZIndex", "baseZIndex", "id", "breakpoint", "ariaLabel", "ariaLabelledBy", "pressDelay", "appendTo"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "component", type: MenuItemCreateDialogComponent, selector: "menu-item-create-dialog", inputs: ["visible"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: MenuItemEditDialogComponent, selector: "menu-item-edit-dialog", inputs: ["visible"], outputs: ["visibleChange"] }] }); }
4362
4208
  }
4363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuComponent, decorators: [{
4209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MenuComponent, decorators: [{
4364
4210
  type: Component,
4365
4211
  args: [{
4366
4212
  imports: [
@@ -4416,10 +4262,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4416
4262
 
4417
4263
  class SidebarComponent {
4418
4264
  constructor() { }
4419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4420
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SidebarComponent, isStandalone: true, selector: "app-sidebar", ngImport: i0, template: ` <app-menu></app-menu>`, isInline: true, dependencies: [{ kind: "component", type: MenuComponent, selector: "app-menu" }] }); }
4265
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4266
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: SidebarComponent, isStandalone: true, selector: "app-sidebar", ngImport: i0, template: ` <app-menu></app-menu>`, isInline: true, dependencies: [{ kind: "component", type: MenuComponent, selector: "app-menu" }] }); }
4421
4267
  }
4422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SidebarComponent, decorators: [{
4268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SidebarComponent, decorators: [{
4423
4269
  type: Component,
4424
4270
  args: [{
4425
4271
  selector: 'app-sidebar',
@@ -4506,8 +4352,8 @@ class AppLayoutComponent {
4506
4352
  this.menuOutsideClickListener();
4507
4353
  }
4508
4354
  }
4509
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4510
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AppLayoutComponent, isStandalone: true, selector: "app-layout", providers: [MenuService, MenuApi], viewQueries: [{ propertyName: "appSidebar", first: true, predicate: SidebarComponent, descendants: true }, { propertyName: "appTopBar", first: true, predicate: AppTopbar, descendants: true }], ngImport: i0, template: `
4355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4356
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: AppLayoutComponent, isStandalone: true, selector: "app-layout", providers: [MenuService, MenuApi], viewQueries: [{ propertyName: "appSidebar", first: true, predicate: SidebarComponent, descendants: true }, { propertyName: "appTopBar", first: true, predicate: AppTopbar, descendants: true }], ngImport: i0, template: `
4511
4357
  <div class="layout-wrapper" [ngClass]="containerClass">
4512
4358
  <app-topbar></app-topbar>
4513
4359
  <app-sidebar></app-sidebar>
@@ -4519,9 +4365,9 @@ class AppLayoutComponent {
4519
4365
  </div>
4520
4366
  <div class="layout-mask animate-fadein"></div>
4521
4367
  </div>
4522
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppTopbar, selector: "app-topbar" }, { kind: "component", type: SidebarComponent, selector: "app-sidebar" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: FooterComponent, selector: "app-footer" }] }); }
4368
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: AppTopbar, selector: "app-topbar" }, { kind: "component", type: SidebarComponent, selector: "app-sidebar" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$5.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: FooterComponent, selector: "app-footer" }] }); }
4523
4369
  }
4524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppLayoutComponent, decorators: [{
4370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppLayoutComponent, decorators: [{
4525
4371
  type: Component,
4526
4372
  args: [{
4527
4373
  selector: 'app-layout',
@@ -4561,62 +4407,62 @@ class AppFloatingConfiguratorComponent {
4561
4407
  darkTheme: !state.darkTheme
4562
4408
  }));
4563
4409
  }
4564
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppFloatingConfiguratorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4565
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AppFloatingConfiguratorComponent, isStandalone: true, selector: "app-floating-configurator", ngImport: i0, template: `
4566
- <div class="fixed flex gap-4 top-8 right-8">
4567
- <p-button
4568
- id="oip-app-floating-configurator-dark-theme-button"
4569
- severity="secondary"
4570
- type="button"
4571
- [icon]="isDarkTheme() ? 'pi pi-moon' : 'pi pi-sun'"
4572
- [rounded]="true"
4573
- (onClick)="toggleDarkMode()" />
4574
- <div class="relative">
4575
- <p-button
4576
- enterActiveClass="animate-scalein"
4577
- enterFromClass="hidden"
4578
- icon="pi pi-palette"
4579
- id="oip-app-floating-configurator-next-button"
4580
- leaveActiveClass="animate-fadeout"
4581
- leaveToClass="hidden"
4582
- pStyleClass="@next"
4583
- type="button"
4584
- [hideOnOutsideClick]="true"
4585
- [rounded]="true" />
4586
- <app-configurator />
4587
- </div>
4588
- </div>
4589
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$2.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }] }); }
4410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppFloatingConfiguratorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: AppFloatingConfiguratorComponent, isStandalone: true, selector: "app-floating-configurator", ngImport: i0, template: `
4412
+ <div class="fixed flex gap-4 top-8 right-8">
4413
+ <p-button
4414
+ id="oip-app-floating-configurator-dark-theme-button"
4415
+ severity="secondary"
4416
+ type="button"
4417
+ [icon]="isDarkTheme() ? 'pi pi-moon' : 'pi pi-sun'"
4418
+ [rounded]="true"
4419
+ (onClick)="toggleDarkMode()" />
4420
+ <div class="relative">
4421
+ <p-button
4422
+ enterActiveClass="animate-scalein"
4423
+ enterFromClass="hidden"
4424
+ icon="pi pi-palette"
4425
+ id="oip-app-floating-configurator-next-button"
4426
+ leaveActiveClass="animate-fadeout"
4427
+ leaveToClass="hidden"
4428
+ pStyleClass="@next"
4429
+ type="button"
4430
+ [hideOnOutsideClick]="true"
4431
+ [rounded]="true" />
4432
+ <app-configurator />
4433
+ </div>
4434
+ </div>
4435
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3$3.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape", "hideOnResize", "resizeSelector"] }, { kind: "component", type: AppConfiguratorComponent, selector: "app-configurator" }] }); }
4590
4436
  }
4591
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppFloatingConfiguratorComponent, decorators: [{
4437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppFloatingConfiguratorComponent, decorators: [{
4592
4438
  type: Component,
4593
4439
  args: [{
4594
4440
  selector: 'app-floating-configurator',
4595
4441
  imports: [ButtonModule, StyleClassModule, AppConfiguratorComponent],
4596
- template: `
4597
- <div class="fixed flex gap-4 top-8 right-8">
4598
- <p-button
4599
- id="oip-app-floating-configurator-dark-theme-button"
4600
- severity="secondary"
4601
- type="button"
4602
- [icon]="isDarkTheme() ? 'pi pi-moon' : 'pi pi-sun'"
4603
- [rounded]="true"
4604
- (onClick)="toggleDarkMode()" />
4605
- <div class="relative">
4606
- <p-button
4607
- enterActiveClass="animate-scalein"
4608
- enterFromClass="hidden"
4609
- icon="pi pi-palette"
4610
- id="oip-app-floating-configurator-next-button"
4611
- leaveActiveClass="animate-fadeout"
4612
- leaveToClass="hidden"
4613
- pStyleClass="@next"
4614
- type="button"
4615
- [hideOnOutsideClick]="true"
4616
- [rounded]="true" />
4617
- <app-configurator />
4618
- </div>
4619
- </div>
4442
+ template: `
4443
+ <div class="fixed flex gap-4 top-8 right-8">
4444
+ <p-button
4445
+ id="oip-app-floating-configurator-dark-theme-button"
4446
+ severity="secondary"
4447
+ type="button"
4448
+ [icon]="isDarkTheme() ? 'pi pi-moon' : 'pi pi-sun'"
4449
+ [rounded]="true"
4450
+ (onClick)="toggleDarkMode()" />
4451
+ <div class="relative">
4452
+ <p-button
4453
+ enterActiveClass="animate-scalein"
4454
+ enterFromClass="hidden"
4455
+ icon="pi pi-palette"
4456
+ id="oip-app-floating-configurator-next-button"
4457
+ leaveActiveClass="animate-fadeout"
4458
+ leaveToClass="hidden"
4459
+ pStyleClass="@next"
4460
+ type="button"
4461
+ [hideOnOutsideClick]="true"
4462
+ [rounded]="true" />
4463
+ <app-configurator />
4464
+ </div>
4465
+ </div>
4620
4466
  `
4621
4467
  }]
4622
4468
  }] });
@@ -4625,53 +4471,53 @@ class NotfoundComponent {
4625
4471
  constructor(l10nService) {
4626
4472
  l10nService.get('notfound');
4627
4473
  }
4628
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotfoundComponent, deps: [{ token: L10nService }], target: i0.ɵɵFactoryTarget.Component }); }
4629
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: NotfoundComponent, isStandalone: true, selector: "app-notfound", ngImport: i0, template: ` <app-floating-configurator />
4630
- <div class="flex items-center justify-center min-h-screen overflow-hidden">
4631
- <div class="flex flex-col items-center justify-center">
4632
- <div
4633
- style="border-radius: 56px; padding: 0.3rem; background: linear-gradient(180deg, color-mix(in srgb, var(--primary-color), transparent 60%) 10%, var(--surface-ground) 30%)">
4634
- <div
4635
- class="w-full bg-surface-0 dark:bg-surface-900 py-20 px-8 sm:px-20 flex flex-col items-center"
4636
- style="border-radius: 53px">
4637
- <div class="flex flex-col items-center justify-center">
4638
- <logo [height]="96" [width]="96"></logo>
4639
- </div>
4640
- <span class="text-primary font-bold text-3xl">{{ 'notfound.errorCode' | translate }}</span>
4641
- <h1 class="text-surface-900 dark:text-surface-0 font-bold text-3xl lg:text-5xl mb-2">
4642
- {{ 'notfound.title' | translate }}
4643
- </h1>
4644
- <div class="text-surface-600 dark:text-surface-200 mb-8">{{ 'notfound.description' | translate }}</div>
4645
- <p-button id="oip-app-notfound-go-to-home-button" routerLink="/" [label]="'notfound.button' | translate" />
4646
- </div>
4647
- </div>
4648
- </div>
4649
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LogoComponent, selector: "logo", inputs: ["width", "height"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: AppFloatingConfiguratorComponent, selector: "app-floating-configurator" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$4.TranslatePipe, name: "translate" }] }); }
4650
- }
4651
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NotfoundComponent, decorators: [{
4652
- type: Component,
4653
- args: [{
4474
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotfoundComponent, deps: [{ token: L10nService }], target: i0.ɵɵFactoryTarget.Component }); }
4475
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: NotfoundComponent, isStandalone: true, selector: "app-notfound", ngImport: i0, template: ` <app-floating-configurator />
4476
+ <div class="flex items-center justify-center min-h-screen overflow-hidden">
4477
+ <div class="flex flex-col items-center justify-center">
4478
+ <div
4479
+ style="border-radius: 56px; padding: 0.3rem; background: linear-gradient(180deg, color-mix(in srgb, var(--primary-color), transparent 60%) 10%, var(--surface-ground) 30%)">
4480
+ <div
4481
+ class="w-full bg-surface-0 dark:bg-surface-900 py-20 px-8 sm:px-20 flex flex-col items-center"
4482
+ style="border-radius: 53px">
4483
+ <div class="flex flex-col items-center justify-center">
4484
+ <logo [height]="96" [width]="96"></logo>
4485
+ </div>
4486
+ <span class="text-primary font-bold text-3xl">{{ 'notfound.errorCode' | translate }}</span>
4487
+ <h1 class="text-surface-900 dark:text-surface-0 font-bold text-3xl lg:text-5xl mb-2">
4488
+ {{ 'notfound.title' | translate }}
4489
+ </h1>
4490
+ <div class="text-surface-600 dark:text-surface-200 mb-8">{{ 'notfound.description' | translate }}</div>
4491
+ <p-button id="oip-app-notfound-go-to-home-button" routerLink="/" [label]="'notfound.button' | translate" />
4492
+ </div>
4493
+ </div>
4494
+ </div>
4495
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LogoComponent, selector: "logo", inputs: ["width", "height"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: AppFloatingConfiguratorComponent, selector: "app-floating-configurator" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$3.TranslatePipe, name: "translate" }] }); }
4496
+ }
4497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: NotfoundComponent, decorators: [{
4498
+ type: Component,
4499
+ args: [{
4654
4500
  selector: 'app-notfound',
4655
- template: ` <app-floating-configurator />
4656
- <div class="flex items-center justify-center min-h-screen overflow-hidden">
4657
- <div class="flex flex-col items-center justify-center">
4658
- <div
4659
- style="border-radius: 56px; padding: 0.3rem; background: linear-gradient(180deg, color-mix(in srgb, var(--primary-color), transparent 60%) 10%, var(--surface-ground) 30%)">
4660
- <div
4661
- class="w-full bg-surface-0 dark:bg-surface-900 py-20 px-8 sm:px-20 flex flex-col items-center"
4662
- style="border-radius: 53px">
4663
- <div class="flex flex-col items-center justify-center">
4664
- <logo [height]="96" [width]="96"></logo>
4665
- </div>
4666
- <span class="text-primary font-bold text-3xl">{{ 'notfound.errorCode' | translate }}</span>
4667
- <h1 class="text-surface-900 dark:text-surface-0 font-bold text-3xl lg:text-5xl mb-2">
4668
- {{ 'notfound.title' | translate }}
4669
- </h1>
4670
- <div class="text-surface-600 dark:text-surface-200 mb-8">{{ 'notfound.description' | translate }}</div>
4671
- <p-button id="oip-app-notfound-go-to-home-button" routerLink="/" [label]="'notfound.button' | translate" />
4672
- </div>
4673
- </div>
4674
- </div>
4501
+ template: ` <app-floating-configurator />
4502
+ <div class="flex items-center justify-center min-h-screen overflow-hidden">
4503
+ <div class="flex flex-col items-center justify-center">
4504
+ <div
4505
+ style="border-radius: 56px; padding: 0.3rem; background: linear-gradient(180deg, color-mix(in srgb, var(--primary-color), transparent 60%) 10%, var(--surface-ground) 30%)">
4506
+ <div
4507
+ class="w-full bg-surface-0 dark:bg-surface-900 py-20 px-8 sm:px-20 flex flex-col items-center"
4508
+ style="border-radius: 53px">
4509
+ <div class="flex flex-col items-center justify-center">
4510
+ <logo [height]="96" [width]="96"></logo>
4511
+ </div>
4512
+ <span class="text-primary font-bold text-3xl">{{ 'notfound.errorCode' | translate }}</span>
4513
+ <h1 class="text-surface-900 dark:text-surface-0 font-bold text-3xl lg:text-5xl mb-2">
4514
+ {{ 'notfound.title' | translate }}
4515
+ </h1>
4516
+ <div class="text-surface-600 dark:text-surface-200 mb-8">{{ 'notfound.description' | translate }}</div>
4517
+ <p-button id="oip-app-notfound-go-to-home-button" routerLink="/" [label]="'notfound.button' | translate" />
4518
+ </div>
4519
+ </div>
4520
+ </div>
4675
4521
  </div>`,
4676
4522
  imports: [RouterLink, LogoComponent, Button, AppFloatingConfiguratorComponent, TranslateModule],
4677
4523
  standalone: true
@@ -4691,8 +4537,8 @@ class UnauthorizedComponent {
4691
4537
  replaceUrl: true
4692
4538
  }).then(() => this.securityService.authorize());
4693
4539
  }
4694
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UnauthorizedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4695
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: UnauthorizedComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
4540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UnauthorizedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: UnauthorizedComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
4696
4542
  <app-floating-configurator />
4697
4543
  <div
4698
4544
  class="bg-surface-50 dark:bg-surface-950 flex items-center justify-center min-h-screen min-w-[100vw] overflow-hidden">
@@ -4722,7 +4568,7 @@ class UnauthorizedComponent {
4722
4568
  </div>
4723
4569
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: RippleModule }, { kind: "component", type: LogoComponent, selector: "logo", inputs: ["width", "height"] }, { kind: "component", type: AppFloatingConfiguratorComponent, selector: "app-floating-configurator" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
4724
4570
  }
4725
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UnauthorizedComponent, decorators: [{
4571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UnauthorizedComponent, decorators: [{
4726
4572
  type: Component,
4727
4573
  args: [{
4728
4574
  template: `
@@ -4766,73 +4612,73 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4766
4612
  }] });
4767
4613
 
4768
4614
  class ErrorComponent {
4769
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4770
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ErrorComponent, isStandalone: true, selector: "app-error", ngImport: i0, template: `<div
4771
- class="surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden">
4772
- <div class="flex flex-column align-items-center justify-content-center">
4773
- <img alt="Sakai logo" class="mb-5 w-6rem flex-shrink-0" src="assets/demo/images/error/logo-error.svg" />
4774
- <div
4775
- style="border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(233, 30, 99, 0.4) 10%, rgba(33, 150, 243, 0) 30%);">
4776
- <div
4777
- class="w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center"
4778
- style="border-radius:53px">
4779
- <div class="grid flex flex-column align-items-center">
4780
- <div
4781
- class="flex justify-content-center align-items-center bg-pink-500 border-circle"
4782
- style="height:3.2rem; width:3.2rem;">
4783
- <i class="pi pi-fw pi-exclamation-circle text-2xl text-white"></i>
4784
- </div>
4785
- <h1 class="text-900 font-bold text-5xl mb-2">Error Occured</h1>
4786
- <span class="text-600 mb-5">Requested resource is not available.</span>
4787
- <img alt="Error" class="mb-5" src="assets/demo/images/error/asset-error.svg" width="80%" />
4788
- <button
4789
- class="p-button-text"
4790
- icon="pi pi-arrow-left"
4791
- id="oip-app-error-go-to-dashboard-button"
4792
- label="Go to Dashboard"
4793
- pButton
4794
- pRipple
4795
- [routerLink]="['/']"></button>
4796
- </div>
4797
- </div>
4798
- </div>
4799
- </div>
4800
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i3$3.Ripple, selector: "[pRipple]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
4615
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4616
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: ErrorComponent, isStandalone: true, selector: "app-error", ngImport: i0, template: `<div
4617
+ class="surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden">
4618
+ <div class="flex flex-column align-items-center justify-content-center">
4619
+ <img alt="Sakai logo" class="mb-5 w-6rem flex-shrink-0" src="assets/demo/images/error/logo-error.svg" />
4620
+ <div
4621
+ style="border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(233, 30, 99, 0.4) 10%, rgba(33, 150, 243, 0) 30%);">
4622
+ <div
4623
+ class="w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center"
4624
+ style="border-radius:53px">
4625
+ <div class="grid flex flex-column align-items-center">
4626
+ <div
4627
+ class="flex justify-content-center align-items-center bg-pink-500 border-circle"
4628
+ style="height:3.2rem; width:3.2rem;">
4629
+ <i class="pi pi-fw pi-exclamation-circle text-2xl text-white"></i>
4630
+ </div>
4631
+ <h1 class="text-900 font-bold text-5xl mb-2">Error Occured</h1>
4632
+ <span class="text-600 mb-5">Requested resource is not available.</span>
4633
+ <img alt="Error" class="mb-5" src="assets/demo/images/error/asset-error.svg" width="80%" />
4634
+ <button
4635
+ class="p-button-text"
4636
+ icon="pi pi-arrow-left"
4637
+ id="oip-app-error-go-to-dashboard-button"
4638
+ label="Go to Dashboard"
4639
+ pButton
4640
+ pRipple
4641
+ [routerLink]="['/']"></button>
4642
+ </div>
4643
+ </div>
4644
+ </div>
4645
+ </div>
4646
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1$2.ButtonDirective, selector: "[pButton]", inputs: ["ptButtonDirective", "hostName", "text", "plain", "raised", "size", "outlined", "rounded", "iconPos", "loadingIcon", "fluid", "label", "icon", "loading", "buttonProps", "severity"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i3$4.Ripple, selector: "[pRipple]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
4801
4647
  }
4802
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, decorators: [{
4648
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ErrorComponent, decorators: [{
4803
4649
  type: Component,
4804
4650
  args: [{
4805
4651
  selector: 'app-error',
4806
- template: `<div
4807
- class="surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden">
4808
- <div class="flex flex-column align-items-center justify-content-center">
4809
- <img alt="Sakai logo" class="mb-5 w-6rem flex-shrink-0" src="assets/demo/images/error/logo-error.svg" />
4810
- <div
4811
- style="border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(233, 30, 99, 0.4) 10%, rgba(33, 150, 243, 0) 30%);">
4812
- <div
4813
- class="w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center"
4814
- style="border-radius:53px">
4815
- <div class="grid flex flex-column align-items-center">
4816
- <div
4817
- class="flex justify-content-center align-items-center bg-pink-500 border-circle"
4818
- style="height:3.2rem; width:3.2rem;">
4819
- <i class="pi pi-fw pi-exclamation-circle text-2xl text-white"></i>
4820
- </div>
4821
- <h1 class="text-900 font-bold text-5xl mb-2">Error Occured</h1>
4822
- <span class="text-600 mb-5">Requested resource is not available.</span>
4823
- <img alt="Error" class="mb-5" src="assets/demo/images/error/asset-error.svg" width="80%" />
4824
- <button
4825
- class="p-button-text"
4826
- icon="pi pi-arrow-left"
4827
- id="oip-app-error-go-to-dashboard-button"
4828
- label="Go to Dashboard"
4829
- pButton
4830
- pRipple
4831
- [routerLink]="['/']"></button>
4832
- </div>
4833
- </div>
4834
- </div>
4835
- </div>
4652
+ template: `<div
4653
+ class="surface-ground flex align-items-center justify-content-center min-h-screen min-w-screen overflow-hidden">
4654
+ <div class="flex flex-column align-items-center justify-content-center">
4655
+ <img alt="Sakai logo" class="mb-5 w-6rem flex-shrink-0" src="assets/demo/images/error/logo-error.svg" />
4656
+ <div
4657
+ style="border-radius:56px; padding:0.3rem; background: linear-gradient(180deg, rgba(233, 30, 99, 0.4) 10%, rgba(33, 150, 243, 0) 30%);">
4658
+ <div
4659
+ class="w-full surface-card py-8 px-5 sm:px-8 flex flex-column align-items-center"
4660
+ style="border-radius:53px">
4661
+ <div class="grid flex flex-column align-items-center">
4662
+ <div
4663
+ class="flex justify-content-center align-items-center bg-pink-500 border-circle"
4664
+ style="height:3.2rem; width:3.2rem;">
4665
+ <i class="pi pi-fw pi-exclamation-circle text-2xl text-white"></i>
4666
+ </div>
4667
+ <h1 class="text-900 font-bold text-5xl mb-2">Error Occured</h1>
4668
+ <span class="text-600 mb-5">Requested resource is not available.</span>
4669
+ <img alt="Error" class="mb-5" src="assets/demo/images/error/asset-error.svg" width="80%" />
4670
+ <button
4671
+ class="p-button-text"
4672
+ icon="pi pi-arrow-left"
4673
+ id="oip-app-error-go-to-dashboard-button"
4674
+ label="Go to Dashboard"
4675
+ pButton
4676
+ pRipple
4677
+ [routerLink]="['/']"></button>
4678
+ </div>
4679
+ </div>
4680
+ </div>
4681
+ </div>
4836
4682
  </div>`,
4837
4683
  standalone: true,
4838
4684
  imports: [ButtonModule, RippleModule, RouterLink]
@@ -4848,57 +4694,57 @@ class ProfileComponent {
4848
4694
  onBasicUploadAuto($event) {
4849
4695
  this.msgService.success(this.translateService.instant('profileComponent.successfullyUploaded'));
4850
4696
  }
4851
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProfileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4852
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ProfileComponent, isStandalone: true, selector: "user-profile", ngImport: i0, template: `
4853
- <p-avatar
4854
- class="mr-2"
4855
- id="oip-user-profile-photo-avatar"
4856
- shape="circle"
4857
- size="xlarge"
4858
- [image]="userService.photoLoaded ? userService.photo : null" />
4859
- <div class="mt-2">
4860
- <p-fileupload
4861
- accept="image/*"
4862
- chooseIcon="pi pi-upload"
4863
- chooseLabel="{{ 'profileComponent.changePhoto' | translate }}"
4864
- id="oip-user-profile-file-upload"
4865
- maxFileSize="1000000"
4866
- mode="basic"
4867
- name="files"
4868
- url="/api/user-profile/post-user-photo"
4869
- withCredentials="true"
4870
- [auto]="true"
4871
- (onUpload)="onBasicUploadAuto($event)" />
4872
- </div>
4873
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i1$6.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: ImageModule }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$2.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
4697
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ProfileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4698
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: ProfileComponent, isStandalone: true, selector: "user-profile", ngImport: i0, template: `
4699
+ <p-avatar
4700
+ class="mr-2"
4701
+ id="oip-user-profile-photo-avatar"
4702
+ shape="circle"
4703
+ size="xlarge"
4704
+ [image]="userService.photoLoaded ? userService.photo : null" />
4705
+ <div class="mt-2">
4706
+ <p-fileupload
4707
+ accept="image/*"
4708
+ chooseIcon="pi pi-upload"
4709
+ chooseLabel="{{ 'profileComponent.changePhoto' | translate }}"
4710
+ id="oip-user-profile-file-upload"
4711
+ maxFileSize="1000000"
4712
+ mode="basic"
4713
+ name="files"
4714
+ url="/api/user-profile/post-user-photo"
4715
+ withCredentials="true"
4716
+ [auto]="true"
4717
+ (onUpload)="onBasicUploadAuto($event)" />
4718
+ </div>
4719
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i1$7.FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "ngmodule", type: ImageModule }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
4874
4720
  }
4875
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProfileComponent, decorators: [{
4721
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ProfileComponent, decorators: [{
4876
4722
  type: Component,
4877
4723
  args: [{
4878
4724
  selector: 'user-profile',
4879
4725
  standalone: true,
4880
4726
  imports: [FileUploadModule, ImageModule, ImageModule, FileUploadModule, ImageModule, AvatarModule, TranslatePipe],
4881
- template: `
4882
- <p-avatar
4883
- class="mr-2"
4884
- id="oip-user-profile-photo-avatar"
4885
- shape="circle"
4886
- size="xlarge"
4887
- [image]="userService.photoLoaded ? userService.photo : null" />
4888
- <div class="mt-2">
4889
- <p-fileupload
4890
- accept="image/*"
4891
- chooseIcon="pi pi-upload"
4892
- chooseLabel="{{ 'profileComponent.changePhoto' | translate }}"
4893
- id="oip-user-profile-file-upload"
4894
- maxFileSize="1000000"
4895
- mode="basic"
4896
- name="files"
4897
- url="/api/user-profile/post-user-photo"
4898
- withCredentials="true"
4899
- [auto]="true"
4900
- (onUpload)="onBasicUploadAuto($event)" />
4901
- </div>
4727
+ template: `
4728
+ <p-avatar
4729
+ class="mr-2"
4730
+ id="oip-user-profile-photo-avatar"
4731
+ shape="circle"
4732
+ size="xlarge"
4733
+ [image]="userService.photoLoaded ? userService.photo : null" />
4734
+ <div class="mt-2">
4735
+ <p-fileupload
4736
+ accept="image/*"
4737
+ chooseIcon="pi pi-upload"
4738
+ chooseLabel="{{ 'profileComponent.changePhoto' | translate }}"
4739
+ id="oip-user-profile-file-upload"
4740
+ maxFileSize="1000000"
4741
+ mode="basic"
4742
+ name="files"
4743
+ url="/api/user-profile/post-user-photo"
4744
+ withCredentials="true"
4745
+ [auto]="true"
4746
+ (onUpload)="onBasicUploadAuto($event)" />
4747
+ </div>
4902
4748
  `
4903
4749
  }]
4904
4750
  }] });
@@ -4939,8 +4785,8 @@ class ConfigComponent {
4939
4785
  async onSwitchChange() {
4940
4786
  await this.menuService.loadMenu();
4941
4787
  }
4942
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4943
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ConfigComponent, isStandalone: true, selector: "app-config", ngImport: i0, template: `
4788
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4789
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ConfigComponent, isStandalone: true, selector: "app-config", ngImport: i0, template: `
4944
4790
  <div class="flex flex-col md:flex-row gap-4">
4945
4791
  <div class="md:w-1/2">
4946
4792
  <div class="card flex flex-col gap-4">
@@ -5032,13 +4878,21 @@ class ConfigComponent {
5032
4878
  <label for="oip-app-config-admin-mode">{{ 'config.moduleManagement' | translate }}</label>
5033
4879
  <p-button icon="pi pi-cog" label="{{ 'config.goTo' | translate }}" routerLink="/modules" />
5034
4880
  </div>
4881
+ <div class="flex items-center gap-2">
4882
+ <label for="oip-app-config-applications-link">{{ 'config.applicationManagement' | translate }}</label>
4883
+ <p-button
4884
+ icon="pi pi-th-large"
4885
+ id="oip-app-config-applications-link"
4886
+ label="{{ 'config.goTo' | translate }}"
4887
+ routerLink="/applications" />
4888
+ </div>
5035
4889
  </div>
5036
4890
  </div>
5037
4891
  }
5038
4892
  </div>
5039
- `, isInline: true, dependencies: [{ kind: "component", type: ProfileComponent, selector: "user-profile" }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i2$5.ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["styleClass", "tabindex", "inputId", "readonly", "trueValue", "falseValue", "ariaLabel", "size", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
4893
+ `, isInline: true, dependencies: [{ kind: "component", type: ProfileComponent, selector: "user-profile" }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TableModule }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i2$4.ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["styleClass", "tabindex", "inputId", "readonly", "trueValue", "falseValue", "ariaLabel", "size", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
5040
4894
  }
5041
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ConfigComponent, decorators: [{
4895
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ConfigComponent, decorators: [{
5042
4896
  type: Component,
5043
4897
  args: [{
5044
4898
  selector: 'app-config',
@@ -5134,6 +4988,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5134
4988
  <label for="oip-app-config-admin-mode">{{ 'config.moduleManagement' | translate }}</label>
5135
4989
  <p-button icon="pi pi-cog" label="{{ 'config.goTo' | translate }}" routerLink="/modules" />
5136
4990
  </div>
4991
+ <div class="flex items-center gap-2">
4992
+ <label for="oip-app-config-applications-link">{{ 'config.applicationManagement' | translate }}</label>
4993
+ <p-button
4994
+ icon="pi pi-th-large"
4995
+ id="oip-app-config-applications-link"
4996
+ label="{{ 'config.goTo' | translate }}"
4997
+ routerLink="/applications" />
4998
+ </div>
5137
4999
  </div>
5138
5000
  </div>
5139
5001
  }
@@ -5179,8 +5041,8 @@ class DbMigrationComponent extends BaseModuleComponent {
5179
5041
  const request = { name: rowData.name };
5180
5042
  return this.applyModuleMigration(request);
5181
5043
  }
5182
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DbMigrationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5183
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DbMigrationComponent, isStandalone: true, selector: "db-migration", providers: [ConfirmationService], usesInheritance: true, ngImport: i0, template: `
5044
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DbMigrationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5045
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: DbMigrationComponent, isStandalone: true, selector: "db-migration", providers: [ConfirmationService], usesInheritance: true, ngImport: i0, template: `
5184
5046
  @if (isContent) {
5185
5047
  <div class="card" style="height: 100%">
5186
5048
  <p-confirmDialog/>
@@ -5258,9 +5120,9 @@ class DbMigrationComponent extends BaseModuleComponent {
5258
5120
  } @else if (isSecurity) {
5259
5121
  <security [controller]="controller" [id]="id"/>
5260
5122
  }
5261
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$7.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$7.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i1$7.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i1$7.CancelEditableRow, selector: "[pCancelEditableRow]" }, { kind: "component", type: i1$7.ColumnFilter, selector: "p-columnFilter, p-column-filter, p-columnfilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "filterOn", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: TagModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: TextareaModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "component", type: SecurityComponent, selector: "security", inputs: ["id", "controller"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
5123
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$8.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i1$8.EditableRow, selector: "[pEditableRow]", inputs: ["pEditableRow", "pEditableRowDisabled"] }, { kind: "directive", type: i1$8.CancelEditableRow, selector: "[pCancelEditableRow]" }, { kind: "component", type: i1$8.ColumnFilter, selector: "p-columnFilter, p-column-filter, p-columnfilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "filterOn", "useGrouping", "showButtons", "ariaLabel", "filterButtonProps"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: TagModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: TextareaModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "component", type: SecurityComponent, selector: "security", inputs: ["id", "controller"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
5262
5124
  }
5263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DbMigrationComponent, decorators: [{
5125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DbMigrationComponent, decorators: [{
5264
5126
  type: Component,
5265
5127
  args: [{
5266
5128
  imports: [
@@ -5397,10 +5259,10 @@ class ModuleApi extends HttpClient {
5397
5259
  ...params,
5398
5260
  });
5399
5261
  }
5400
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ModuleApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5401
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ModuleApi }); }
5262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModuleApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5263
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModuleApi }); }
5402
5264
  }
5403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ModuleApi, decorators: [{
5265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModuleApi, decorators: [{
5404
5266
  type: Injectable
5405
5267
  }] });
5406
5268
 
@@ -5454,8 +5316,8 @@ class AppModulesComponent {
5454
5316
  t(key) {
5455
5317
  return this.l10nService.instant(key);
5456
5318
  }
5457
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppModulesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5458
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AppModulesComponent, isStandalone: true, selector: "app-modules", providers: [ConfirmationService, ModuleApi], ngImport: i0, template: `
5319
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppModulesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5320
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: AppModulesComponent, isStandalone: true, selector: "app-modules", providers: [ConfirmationService, ModuleApi], ngImport: i0, template: `
5459
5321
  <p-confirmDialog></p-confirmDialog>
5460
5322
  <div class="flex flex-col md:flex-row gap-4">
5461
5323
  <div class="card w-full">
@@ -5509,9 +5371,9 @@ class AppModulesComponent {
5509
5371
  </p-table>
5510
5372
  </div>
5511
5373
  </div>
5512
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$7.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i4$2.Toolbar, selector: "p-toolbar", inputs: ["styleClass", "ariaLabelledBy"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
5374
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i4$2.Toolbar, selector: "p-toolbar", inputs: ["styleClass", "ariaLabelledBy"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
5513
5375
  }
5514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppModulesComponent, decorators: [{
5376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AppModulesComponent, decorators: [{
5515
5377
  type: Component,
5516
5378
  args: [{
5517
5379
  imports: [FormsModule, TableModule, Tag, ButtonModule, ToolbarModule, Tooltip, ConfirmDialog, TranslatePipe],
@@ -5575,6 +5437,720 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
5575
5437
  }]
5576
5438
  }], ctorParameters: () => [] });
5577
5439
 
5440
+ var ServiceType;
5441
+ (function (ServiceType) {
5442
+ ServiceType["Service"] = "Service";
5443
+ ServiceType["Application"] = "Application";
5444
+ })(ServiceType || (ServiceType = {}));
5445
+
5446
+ class ApplicationsComponent {
5447
+ get serviceTypeOptions() {
5448
+ return [
5449
+ {
5450
+ label: this.t('applications.serviceTypes.service'),
5451
+ value: ServiceType.Service
5452
+ },
5453
+ {
5454
+ label: this.t('applications.serviceTypes.application'),
5455
+ value: ServiceType.Application
5456
+ }
5457
+ ];
5458
+ }
5459
+ constructor() {
5460
+ this.globalFilterFields = ['code', 'displayName', 'baseUrl', 'internalBaseUrl', 'icon', 'serviceType'];
5461
+ this.applications = [];
5462
+ this.visibleApplications = [];
5463
+ this.globalFilter = '';
5464
+ this.loading = false;
5465
+ this.activeRowAction = false;
5466
+ this.applicationsApi = inject(ApplicationsApi);
5467
+ this.msgService = inject(MsgService);
5468
+ this.l10nService = inject(L10nService);
5469
+ this.titleService = inject(AppTitleService);
5470
+ this.confirmationService = inject(ConfirmationService);
5471
+ this.draftApplication = null;
5472
+ this.translationsReady = firstValueFrom(this.l10nService.loadComponentTranslations('applications'));
5473
+ }
5474
+ async ngOnInit() {
5475
+ await this.translationsReady;
5476
+ this.titleService.setTitle(this.t('applications.title'));
5477
+ await this.refreshAction();
5478
+ }
5479
+ async refreshAction() {
5480
+ this.loading = true;
5481
+ this.cancelAllEdits();
5482
+ try {
5483
+ this.applications = (await this.applicationsApi.getApplicationRegistryItems()).map((application) => ({ ...application }));
5484
+ this.syncVisibleApplications();
5485
+ }
5486
+ catch (error) {
5487
+ this.applications = [];
5488
+ this.syncVisibleApplications();
5489
+ this.msgService.error(error);
5490
+ }
5491
+ finally {
5492
+ this.loading = false;
5493
+ }
5494
+ }
5495
+ applyGlobalFilter() {
5496
+ this.visibleApplications = this.filterApplications(this.globalFilter);
5497
+ }
5498
+ clearFilters() {
5499
+ this.globalFilter = '';
5500
+ this.syncVisibleApplications();
5501
+ }
5502
+ beginCreateApplication() {
5503
+ this.cancelAllEdits();
5504
+ this.draftApplication = {
5505
+ code: '',
5506
+ displayName: '',
5507
+ baseUrl: '',
5508
+ internalBaseUrl: '',
5509
+ icon: 'pi pi-th-large',
5510
+ order: this.getNextOrder(),
5511
+ enabled: true,
5512
+ serviceType: ServiceType.Service,
5513
+ isCurrent: false,
5514
+ _isNew: true,
5515
+ _isEditing: true,
5516
+ _editModel: this.createEditModel()
5517
+ };
5518
+ this.draftApplication._editModel.order = this.draftApplication.order ?? 0;
5519
+ this.syncVisibleApplications();
5520
+ }
5521
+ editApplication(application) {
5522
+ this.cancelAllEdits(application);
5523
+ application._isEditing = true;
5524
+ application._editModel = this.createEditModel(application);
5525
+ this.syncVisibleApplications();
5526
+ }
5527
+ cancelEdit(application) {
5528
+ if (application._isNew) {
5529
+ this.draftApplication = null;
5530
+ }
5531
+ else {
5532
+ application._isEditing = false;
5533
+ application._editModel = undefined;
5534
+ }
5535
+ this.syncVisibleApplications();
5536
+ }
5537
+ async saveApplication(application) {
5538
+ const editModel = application._editModel;
5539
+ if (!editModel) {
5540
+ return;
5541
+ }
5542
+ const request = this.normalizeEditModel(editModel);
5543
+ if (!request.code || !request.displayName || !request.baseUrl) {
5544
+ this.msgService.error(this.t('applications.messages.requiredFields'));
5545
+ return;
5546
+ }
5547
+ this.activeRowAction = true;
5548
+ try {
5549
+ if (application._isNew) {
5550
+ await this.applicationsApi.createApplicationRegistryItem(request);
5551
+ this.draftApplication = null;
5552
+ this.msgService.success(this.t('applications.messages.createSuccess'));
5553
+ }
5554
+ else {
5555
+ await this.applicationsApi.updateApplicationRegistryItem({ code: application.code }, request);
5556
+ application._isEditing = false;
5557
+ application._editModel = undefined;
5558
+ this.msgService.success(this.t('applications.messages.updateSuccess'));
5559
+ }
5560
+ await this.refreshAction();
5561
+ }
5562
+ catch (error) {
5563
+ this.msgService.error(error);
5564
+ }
5565
+ finally {
5566
+ this.activeRowAction = false;
5567
+ }
5568
+ }
5569
+ async deleteApplication(application) {
5570
+ await this.translationsReady;
5571
+ if (application._isNew) {
5572
+ this.cancelEdit(application);
5573
+ return;
5574
+ }
5575
+ if (!application.code) {
5576
+ return;
5577
+ }
5578
+ this.confirmationService.confirm({
5579
+ header: this.t('applications.confirm.header'),
5580
+ message: this.t('applications.confirm.message', { displayName: application.displayName || application.code }),
5581
+ icon: 'pi pi-trash',
5582
+ rejectButtonProps: {
5583
+ label: this.t('applications.confirm.cancel'),
5584
+ severity: 'secondary',
5585
+ outlined: true
5586
+ },
5587
+ acceptButtonProps: {
5588
+ label: this.t('applications.confirm.delete'),
5589
+ severity: 'danger'
5590
+ },
5591
+ accept: async () => {
5592
+ this.activeRowAction = true;
5593
+ try {
5594
+ await this.applicationsApi.deleteApplicationRegistryItem({ code: application.code });
5595
+ this.msgService.success(this.t('applications.messages.deleteSuccess'));
5596
+ await this.refreshAction();
5597
+ }
5598
+ catch (error) {
5599
+ this.msgService.error(error);
5600
+ }
5601
+ finally {
5602
+ this.activeRowAction = false;
5603
+ }
5604
+ }
5605
+ });
5606
+ }
5607
+ createEditModel(application) {
5608
+ return {
5609
+ code: application?.code ?? '',
5610
+ displayName: application?.displayName ?? '',
5611
+ baseUrl: application?.baseUrl ?? '',
5612
+ internalBaseUrl: application?.internalBaseUrl ?? '',
5613
+ icon: application?.icon ?? 'pi pi-th-large',
5614
+ order: application?.order ?? 0,
5615
+ enabled: application?.enabled ?? true,
5616
+ serviceType: application?.serviceType ?? ServiceType.Service
5617
+ };
5618
+ }
5619
+ normalizeEditModel(model) {
5620
+ return {
5621
+ code: model.code.trim(),
5622
+ displayName: model.displayName.trim(),
5623
+ baseUrl: model.baseUrl.trim(),
5624
+ internalBaseUrl: model.internalBaseUrl.trim(),
5625
+ icon: model.icon.trim(),
5626
+ order: Number(model.order) || 0,
5627
+ enabled: model.enabled,
5628
+ serviceType: model.serviceType
5629
+ };
5630
+ }
5631
+ serviceTypeLabel(serviceType) {
5632
+ return this.t(serviceType === ServiceType.Application
5633
+ ? 'applications.serviceTypes.application'
5634
+ : 'applications.serviceTypes.service');
5635
+ }
5636
+ cancelAllEdits(exceptApplication) {
5637
+ if (!exceptApplication?._isNew) {
5638
+ this.draftApplication = null;
5639
+ }
5640
+ for (const application of this.applications) {
5641
+ if (application === exceptApplication) {
5642
+ continue;
5643
+ }
5644
+ application._isEditing = false;
5645
+ application._editModel = undefined;
5646
+ }
5647
+ }
5648
+ syncVisibleApplications() {
5649
+ this.visibleApplications = this.filterApplications(this.globalFilter);
5650
+ }
5651
+ filterApplications(filter) {
5652
+ const source = this.draftApplication
5653
+ ? [this.draftApplication, ...this.applications]
5654
+ : [...this.applications];
5655
+ const normalizedFilter = filter.trim().toLocaleLowerCase();
5656
+ if (!normalizedFilter) {
5657
+ return source;
5658
+ }
5659
+ return source.filter((application) => this.globalFilterFields.some((field) => String(application[field] ?? '')
5660
+ .toLocaleLowerCase()
5661
+ .includes(normalizedFilter)));
5662
+ }
5663
+ getNextOrder() {
5664
+ return Math.max(0, ...this.applications.map((application) => application.order ?? 0)) + 1;
5665
+ }
5666
+ t(key, params) {
5667
+ return this.l10nService.instant(key, params);
5668
+ }
5669
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5670
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ApplicationsComponent, isStandalone: true, selector: "app-applications", providers: [ApplicationsApi, ConfirmationService], ngImport: i0, template: `
5671
+ <p-confirmDialog></p-confirmDialog>
5672
+ <div class="flex flex-col gap-4">
5673
+ <div class="card w-full">
5674
+ <div class="flex flex-col gap-3 md:flex-row md:items-center md:justify-between">
5675
+ <div>
5676
+ <div class="font-semibold text-xl mb-1">
5677
+ {{ 'applications.title' | translate }}
5678
+ </div>
5679
+ <p class="m-0 text-surface-500">{{ 'applications.subtitle' | translate }}</p>
5680
+ </div>
5681
+ <div class="flex flex-col gap-2 sm:flex-row">
5682
+ <input
5683
+ class="w-full sm:w-72"
5684
+ pInputText
5685
+ type="text"
5686
+ [placeholder]="'applications.searchPlaceholder' | translate"
5687
+ [(ngModel)]="globalFilter"
5688
+ (keydown.enter)="applyGlobalFilter()" />
5689
+ <p-button
5690
+ icon="pi pi-search"
5691
+ [label]="'applications.search' | translate"
5692
+ (onClick)="applyGlobalFilter()"></p-button>
5693
+ <p-button
5694
+ icon="pi pi-filter-slash"
5695
+ severity="secondary"
5696
+ [label]="'applications.clear' | translate"
5697
+ (onClick)="clearFilters()"></p-button>
5698
+ </div>
5699
+ </div>
5700
+
5701
+ <div class="my-4">
5702
+ <p-toolbar>
5703
+ <p-button
5704
+ icon="pi pi-plus"
5705
+ severity="success"
5706
+ [disabled]="loading || activeRowAction"
5707
+ [label]="'applications.add' | translate"
5708
+ (onClick)="beginCreateApplication()"></p-button>
5709
+ <p-button
5710
+ icon="pi pi-refresh"
5711
+ rounded="true"
5712
+ severity="secondary"
5713
+ text="true"
5714
+ tooltipPosition="bottom"
5715
+ [disabled]="loading || activeRowAction"
5716
+ [pTooltip]="'applications.refreshTooltip' | translate"
5717
+ (onClick)="refreshAction()"></p-button>
5718
+ </p-toolbar>
5719
+ </div>
5720
+
5721
+ <p-table
5722
+ #table
5723
+ dataKey="code"
5724
+ responsiveLayout="scroll"
5725
+ [globalFilterFields]="globalFilterFields"
5726
+ [loading]="loading"
5727
+ [paginator]="true"
5728
+ [rows]="25"
5729
+ [rowsPerPageOptions]="[10, 25, 50, 100]"
5730
+ [value]="visibleApplications">
5731
+ <ng-template pTemplate="header">
5732
+ <tr>
5733
+ <th pSortableColumn="code">
5734
+ {{ 'applications.table.code' | translate }}
5735
+ <p-sortIcon field="code"></p-sortIcon>
5736
+ </th>
5737
+ <th pSortableColumn="displayName">
5738
+ {{ 'applications.table.displayName' | translate }}
5739
+ <p-sortIcon field="displayName"></p-sortIcon>
5740
+ </th>
5741
+ <th pSortableColumn="baseUrl">
5742
+ {{ 'applications.table.baseUrl' | translate }}
5743
+ <p-sortIcon field="baseUrl"></p-sortIcon>
5744
+ </th>
5745
+ <th pSortableColumn="internalBaseUrl">
5746
+ {{ 'applications.table.internalBaseUrl' | translate }}
5747
+ <p-sortIcon field="internalBaseUrl"></p-sortIcon>
5748
+ </th>
5749
+ <th pSortableColumn="icon">
5750
+ {{ 'applications.table.icon' | translate }}
5751
+ <p-sortIcon field="icon"></p-sortIcon>
5752
+ </th>
5753
+ <th pSortableColumn="order" class="text-right">
5754
+ {{ 'applications.table.order' | translate }}
5755
+ <p-sortIcon field="order"></p-sortIcon>
5756
+ </th>
5757
+ <th class="text-center">{{ 'applications.table.enabled' | translate }}</th>
5758
+ <th pSortableColumn="serviceType">
5759
+ {{ 'applications.table.serviceType' | translate }}
5760
+ <p-sortIcon field="serviceType"></p-sortIcon>
5761
+ </th>
5762
+ <th class="text-center">{{ 'applications.table.current' | translate }}</th>
5763
+ <th class="text-center min-w-36">{{ 'applications.table.actions' | translate }}</th>
5764
+ </tr>
5765
+ </ng-template>
5766
+
5767
+ <ng-template let-application pTemplate="body">
5768
+ <tr>
5769
+ <td>
5770
+ @if (application._isEditing && application._editModel; as editModel) {
5771
+ <input
5772
+ class="w-full min-w-32"
5773
+ pInputText
5774
+ [disabled]="!application._isNew"
5775
+ [(ngModel)]="editModel.code" />
5776
+ } @else {
5777
+ <span class="font-medium">{{ application.code }}</span>
5778
+ }
5779
+ </td>
5780
+ <td>
5781
+ @if (application._isEditing && application._editModel; as editModel) {
5782
+ <input class="w-full min-w-40" pInputText [(ngModel)]="editModel.displayName" />
5783
+ } @else {
5784
+ {{ application.displayName }}
5785
+ }
5786
+ </td>
5787
+ <td>
5788
+ @if (application._isEditing && application._editModel; as editModel) {
5789
+ <input class="w-full min-w-56" pInputText [(ngModel)]="editModel.baseUrl" />
5790
+ } @else {
5791
+ <span class="break-all">{{ application.baseUrl }}</span>
5792
+ }
5793
+ </td>
5794
+ <td>
5795
+ @if (application._isEditing && application._editModel; as editModel) {
5796
+ <input class="w-full min-w-56" pInputText [(ngModel)]="editModel.internalBaseUrl" />
5797
+ } @else {
5798
+ <span class="break-all">{{ application.internalBaseUrl }}</span>
5799
+ }
5800
+ </td>
5801
+ <td>
5802
+ @if (application._isEditing && application._editModel; as editModel) {
5803
+ <input class="w-full min-w-32" pInputText [(ngModel)]="editModel.icon" />
5804
+ } @else {
5805
+ <div class="flex items-center gap-2">
5806
+ <i [class]="application.icon || 'pi pi-th-large'"></i>
5807
+ <span>{{ application.icon }}</span>
5808
+ </div>
5809
+ }
5810
+ </td>
5811
+ <td>
5812
+ @if (application._isEditing && application._editModel; as editModel) {
5813
+ <input class="w-full min-w-24 text-right" pInputText type="number" [(ngModel)]="editModel.order" />
5814
+ } @else {
5815
+ <span class="block text-right tabular-nums">{{ application.order }}</span>
5816
+ }
5817
+ </td>
5818
+ <td class="text-center">
5819
+ @if (application._isEditing && application._editModel; as editModel) {
5820
+ <p-toggle-switch [(ngModel)]="editModel.enabled"></p-toggle-switch>
5821
+ } @else {
5822
+ <p-tag
5823
+ [severity]="application.enabled ? 'success' : 'danger'"
5824
+ [value]="
5825
+ (application.enabled ? 'applications.table.yes' : 'applications.table.no') | translate
5826
+ "></p-tag>
5827
+ }
5828
+ </td>
5829
+ <td>
5830
+ @if (application._isEditing && application._editModel; as editModel) {
5831
+ <p-select
5832
+ class="w-full min-w-36"
5833
+ optionLabel="label"
5834
+ optionValue="value"
5835
+ appendTo="body"
5836
+ [options]="serviceTypeOptions"
5837
+ [(ngModel)]="editModel.serviceType"></p-select>
5838
+ } @else {
5839
+ {{ serviceTypeLabel(application.serviceType) }}
5840
+ }
5841
+ </td>
5842
+ <td class="text-center">
5843
+ <p-tag
5844
+ [severity]="application.isCurrent ? 'info' : 'secondary'"
5845
+ [value]="
5846
+ (application.isCurrent ? 'applications.table.yes' : 'applications.table.no') | translate
5847
+ "></p-tag>
5848
+ </td>
5849
+ <td>
5850
+ <div class="flex items-center justify-center gap-2">
5851
+ @if (application._isEditing) {
5852
+ <p-button
5853
+ icon="pi pi-check"
5854
+ severity="success"
5855
+ text="true"
5856
+ [disabled]="activeRowAction"
5857
+ [pTooltip]="'applications.table.saveTooltip' | translate"
5858
+ tooltipPosition="bottom"
5859
+ (onClick)="saveApplication(application)"></p-button>
5860
+ <p-button
5861
+ icon="pi pi-times"
5862
+ severity="secondary"
5863
+ text="true"
5864
+ [disabled]="activeRowAction"
5865
+ [pTooltip]="'applications.table.cancelTooltip' | translate"
5866
+ tooltipPosition="bottom"
5867
+ (onClick)="cancelEdit(application)"></p-button>
5868
+ } @else {
5869
+ <p-button
5870
+ icon="pi pi-pencil"
5871
+ text="true"
5872
+ [disabled]="activeRowAction"
5873
+ [pTooltip]="'applications.table.editTooltip' | translate"
5874
+ tooltipPosition="bottom"
5875
+ (onClick)="editApplication(application)"></p-button>
5876
+ <p-button
5877
+ icon="pi pi-trash"
5878
+ severity="danger"
5879
+ text="true"
5880
+ [disabled]="activeRowAction"
5881
+ [pTooltip]="'applications.table.deleteTooltip' | translate"
5882
+ tooltipPosition="bottom"
5883
+ (onClick)="deleteApplication(application)"></p-button>
5884
+ }
5885
+ </div>
5886
+ </td>
5887
+ </tr>
5888
+ </ng-template>
5889
+
5890
+ <ng-template pTemplate="emptymessage">
5891
+ <tr>
5892
+ <td colspan="10" class="py-8 text-center text-surface-500">
5893
+ {{ 'applications.empty' | translate }}
5894
+ </td>
5895
+ </tr>
5896
+ </ng-template>
5897
+ </p-table>
5898
+ </div>
5899
+ </div>
5900
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i1$8.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i1$8.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i1$8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ToolbarModule }, { kind: "component", type: i4$2.Toolbar, selector: "p-toolbar", inputs: ["styleClass", "ariaLabelledBy"] }, { kind: "directive", type: Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: ToggleSwitchModule }, { kind: "component", type: i2$4.ToggleSwitch, selector: "p-toggleswitch, p-toggleSwitch, p-toggle-switch", inputs: ["styleClass", "tabindex", "inputId", "readonly", "trueValue", "falseValue", "ariaLabel", "size", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
5901
+ }
5902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ApplicationsComponent, decorators: [{
5903
+ type: Component,
5904
+ args: [{
5905
+ imports: [
5906
+ FormsModule,
5907
+ TableModule,
5908
+ Tag,
5909
+ ButtonModule,
5910
+ ToolbarModule,
5911
+ Tooltip,
5912
+ ConfirmDialog,
5913
+ TranslatePipe,
5914
+ InputText,
5915
+ SelectModule,
5916
+ ToggleSwitchModule
5917
+ ],
5918
+ providers: [ApplicationsApi, ConfirmationService],
5919
+ selector: 'app-applications',
5920
+ template: `
5921
+ <p-confirmDialog></p-confirmDialog>
5922
+ <div class="flex flex-col gap-4">
5923
+ <div class="card w-full">
5924
+ <div class="flex flex-col gap-3 md:flex-row md:items-center md:justify-between">
5925
+ <div>
5926
+ <div class="font-semibold text-xl mb-1">
5927
+ {{ 'applications.title' | translate }}
5928
+ </div>
5929
+ <p class="m-0 text-surface-500">{{ 'applications.subtitle' | translate }}</p>
5930
+ </div>
5931
+ <div class="flex flex-col gap-2 sm:flex-row">
5932
+ <input
5933
+ class="w-full sm:w-72"
5934
+ pInputText
5935
+ type="text"
5936
+ [placeholder]="'applications.searchPlaceholder' | translate"
5937
+ [(ngModel)]="globalFilter"
5938
+ (keydown.enter)="applyGlobalFilter()" />
5939
+ <p-button
5940
+ icon="pi pi-search"
5941
+ [label]="'applications.search' | translate"
5942
+ (onClick)="applyGlobalFilter()"></p-button>
5943
+ <p-button
5944
+ icon="pi pi-filter-slash"
5945
+ severity="secondary"
5946
+ [label]="'applications.clear' | translate"
5947
+ (onClick)="clearFilters()"></p-button>
5948
+ </div>
5949
+ </div>
5950
+
5951
+ <div class="my-4">
5952
+ <p-toolbar>
5953
+ <p-button
5954
+ icon="pi pi-plus"
5955
+ severity="success"
5956
+ [disabled]="loading || activeRowAction"
5957
+ [label]="'applications.add' | translate"
5958
+ (onClick)="beginCreateApplication()"></p-button>
5959
+ <p-button
5960
+ icon="pi pi-refresh"
5961
+ rounded="true"
5962
+ severity="secondary"
5963
+ text="true"
5964
+ tooltipPosition="bottom"
5965
+ [disabled]="loading || activeRowAction"
5966
+ [pTooltip]="'applications.refreshTooltip' | translate"
5967
+ (onClick)="refreshAction()"></p-button>
5968
+ </p-toolbar>
5969
+ </div>
5970
+
5971
+ <p-table
5972
+ #table
5973
+ dataKey="code"
5974
+ responsiveLayout="scroll"
5975
+ [globalFilterFields]="globalFilterFields"
5976
+ [loading]="loading"
5977
+ [paginator]="true"
5978
+ [rows]="25"
5979
+ [rowsPerPageOptions]="[10, 25, 50, 100]"
5980
+ [value]="visibleApplications">
5981
+ <ng-template pTemplate="header">
5982
+ <tr>
5983
+ <th pSortableColumn="code">
5984
+ {{ 'applications.table.code' | translate }}
5985
+ <p-sortIcon field="code"></p-sortIcon>
5986
+ </th>
5987
+ <th pSortableColumn="displayName">
5988
+ {{ 'applications.table.displayName' | translate }}
5989
+ <p-sortIcon field="displayName"></p-sortIcon>
5990
+ </th>
5991
+ <th pSortableColumn="baseUrl">
5992
+ {{ 'applications.table.baseUrl' | translate }}
5993
+ <p-sortIcon field="baseUrl"></p-sortIcon>
5994
+ </th>
5995
+ <th pSortableColumn="internalBaseUrl">
5996
+ {{ 'applications.table.internalBaseUrl' | translate }}
5997
+ <p-sortIcon field="internalBaseUrl"></p-sortIcon>
5998
+ </th>
5999
+ <th pSortableColumn="icon">
6000
+ {{ 'applications.table.icon' | translate }}
6001
+ <p-sortIcon field="icon"></p-sortIcon>
6002
+ </th>
6003
+ <th pSortableColumn="order" class="text-right">
6004
+ {{ 'applications.table.order' | translate }}
6005
+ <p-sortIcon field="order"></p-sortIcon>
6006
+ </th>
6007
+ <th class="text-center">{{ 'applications.table.enabled' | translate }}</th>
6008
+ <th pSortableColumn="serviceType">
6009
+ {{ 'applications.table.serviceType' | translate }}
6010
+ <p-sortIcon field="serviceType"></p-sortIcon>
6011
+ </th>
6012
+ <th class="text-center">{{ 'applications.table.current' | translate }}</th>
6013
+ <th class="text-center min-w-36">{{ 'applications.table.actions' | translate }}</th>
6014
+ </tr>
6015
+ </ng-template>
6016
+
6017
+ <ng-template let-application pTemplate="body">
6018
+ <tr>
6019
+ <td>
6020
+ @if (application._isEditing && application._editModel; as editModel) {
6021
+ <input
6022
+ class="w-full min-w-32"
6023
+ pInputText
6024
+ [disabled]="!application._isNew"
6025
+ [(ngModel)]="editModel.code" />
6026
+ } @else {
6027
+ <span class="font-medium">{{ application.code }}</span>
6028
+ }
6029
+ </td>
6030
+ <td>
6031
+ @if (application._isEditing && application._editModel; as editModel) {
6032
+ <input class="w-full min-w-40" pInputText [(ngModel)]="editModel.displayName" />
6033
+ } @else {
6034
+ {{ application.displayName }}
6035
+ }
6036
+ </td>
6037
+ <td>
6038
+ @if (application._isEditing && application._editModel; as editModel) {
6039
+ <input class="w-full min-w-56" pInputText [(ngModel)]="editModel.baseUrl" />
6040
+ } @else {
6041
+ <span class="break-all">{{ application.baseUrl }}</span>
6042
+ }
6043
+ </td>
6044
+ <td>
6045
+ @if (application._isEditing && application._editModel; as editModel) {
6046
+ <input class="w-full min-w-56" pInputText [(ngModel)]="editModel.internalBaseUrl" />
6047
+ } @else {
6048
+ <span class="break-all">{{ application.internalBaseUrl }}</span>
6049
+ }
6050
+ </td>
6051
+ <td>
6052
+ @if (application._isEditing && application._editModel; as editModel) {
6053
+ <input class="w-full min-w-32" pInputText [(ngModel)]="editModel.icon" />
6054
+ } @else {
6055
+ <div class="flex items-center gap-2">
6056
+ <i [class]="application.icon || 'pi pi-th-large'"></i>
6057
+ <span>{{ application.icon }}</span>
6058
+ </div>
6059
+ }
6060
+ </td>
6061
+ <td>
6062
+ @if (application._isEditing && application._editModel; as editModel) {
6063
+ <input class="w-full min-w-24 text-right" pInputText type="number" [(ngModel)]="editModel.order" />
6064
+ } @else {
6065
+ <span class="block text-right tabular-nums">{{ application.order }}</span>
6066
+ }
6067
+ </td>
6068
+ <td class="text-center">
6069
+ @if (application._isEditing && application._editModel; as editModel) {
6070
+ <p-toggle-switch [(ngModel)]="editModel.enabled"></p-toggle-switch>
6071
+ } @else {
6072
+ <p-tag
6073
+ [severity]="application.enabled ? 'success' : 'danger'"
6074
+ [value]="
6075
+ (application.enabled ? 'applications.table.yes' : 'applications.table.no') | translate
6076
+ "></p-tag>
6077
+ }
6078
+ </td>
6079
+ <td>
6080
+ @if (application._isEditing && application._editModel; as editModel) {
6081
+ <p-select
6082
+ class="w-full min-w-36"
6083
+ optionLabel="label"
6084
+ optionValue="value"
6085
+ appendTo="body"
6086
+ [options]="serviceTypeOptions"
6087
+ [(ngModel)]="editModel.serviceType"></p-select>
6088
+ } @else {
6089
+ {{ serviceTypeLabel(application.serviceType) }}
6090
+ }
6091
+ </td>
6092
+ <td class="text-center">
6093
+ <p-tag
6094
+ [severity]="application.isCurrent ? 'info' : 'secondary'"
6095
+ [value]="
6096
+ (application.isCurrent ? 'applications.table.yes' : 'applications.table.no') | translate
6097
+ "></p-tag>
6098
+ </td>
6099
+ <td>
6100
+ <div class="flex items-center justify-center gap-2">
6101
+ @if (application._isEditing) {
6102
+ <p-button
6103
+ icon="pi pi-check"
6104
+ severity="success"
6105
+ text="true"
6106
+ [disabled]="activeRowAction"
6107
+ [pTooltip]="'applications.table.saveTooltip' | translate"
6108
+ tooltipPosition="bottom"
6109
+ (onClick)="saveApplication(application)"></p-button>
6110
+ <p-button
6111
+ icon="pi pi-times"
6112
+ severity="secondary"
6113
+ text="true"
6114
+ [disabled]="activeRowAction"
6115
+ [pTooltip]="'applications.table.cancelTooltip' | translate"
6116
+ tooltipPosition="bottom"
6117
+ (onClick)="cancelEdit(application)"></p-button>
6118
+ } @else {
6119
+ <p-button
6120
+ icon="pi pi-pencil"
6121
+ text="true"
6122
+ [disabled]="activeRowAction"
6123
+ [pTooltip]="'applications.table.editTooltip' | translate"
6124
+ tooltipPosition="bottom"
6125
+ (onClick)="editApplication(application)"></p-button>
6126
+ <p-button
6127
+ icon="pi pi-trash"
6128
+ severity="danger"
6129
+ text="true"
6130
+ [disabled]="activeRowAction"
6131
+ [pTooltip]="'applications.table.deleteTooltip' | translate"
6132
+ tooltipPosition="bottom"
6133
+ (onClick)="deleteApplication(application)"></p-button>
6134
+ }
6135
+ </div>
6136
+ </td>
6137
+ </tr>
6138
+ </ng-template>
6139
+
6140
+ <ng-template pTemplate="emptymessage">
6141
+ <tr>
6142
+ <td colspan="10" class="py-8 text-center text-surface-500">
6143
+ {{ 'applications.empty' | translate }}
6144
+ </td>
6145
+ </tr>
6146
+ </ng-template>
6147
+ </p-table>
6148
+ </div>
6149
+ </div>
6150
+ `
6151
+ }]
6152
+ }], ctorParameters: () => [] });
6153
+
5578
6154
  /* eslint-disable */
5579
6155
  /* tslint:disable */
5580
6156
  // @ts-nocheck
@@ -5675,10 +6251,10 @@ class DiscussionApi extends HttpClient {
5675
6251
  ...params,
5676
6252
  });
5677
6253
  }
5678
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DiscussionApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
5679
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DiscussionApi }); }
6254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DiscussionApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
6255
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DiscussionApi }); }
5680
6256
  }
5681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DiscussionApi, decorators: [{
6257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DiscussionApi, decorators: [{
5682
6258
  type: Injectable
5683
6259
  }] });
5684
6260
 
@@ -6093,8 +6669,8 @@ class DiscussionComponent {
6093
6669
  const match = value.match(/@([A-Za-z0-9._+\-@]*)$/);
6094
6670
  return match?.[1] ?? null;
6095
6671
  }
6096
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DiscussionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6097
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DiscussionComponent, isStandalone: true, selector: "discussion", inputs: { objectTypeId: "objectTypeId", objectId: "objectId" }, providers: [ConfirmationService, DiscussionApi], usesOnChanges: true, ngImport: i0, template: `
6672
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DiscussionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6673
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: DiscussionComponent, isStandalone: true, selector: "discussion", inputs: { objectTypeId: "objectTypeId", objectId: "objectId" }, providers: [ConfirmationService, DiscussionApi], usesOnChanges: true, ngImport: i0, template: `
6098
6674
  <p-confirmDialog/>
6099
6675
 
6100
6676
  <section class="flex flex-col gap-4">
@@ -6428,9 +7004,9 @@ class DiscussionComponent {
6428
7004
  </div>
6429
7005
  }
6430
7006
  </section>
6431
- `, isInline: true, styles: [":host{display:block}.file-trigger{position:relative;display:inline-flex}.file-trigger input{position:absolute;inset:0;opacity:0;cursor:pointer}.markdown-preview,.history-markdown{word-break:break-word}.markdown-preview :is(h1,h2,h3),.history-markdown :is(h1,h2,h3){margin:0 0 .75rem;font-weight:600}.markdown-preview a,.history-markdown a{color:#2563eb;text-decoration:underline;text-underline-offset:.18em}.emoji-popover{display:flex;flex-wrap:wrap;gap:.5rem;max-width:16rem}.emoji-option{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;font-size:1.25rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$2.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i5$1.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: PanelModule }, { kind: "component", type: i6.Panel, selector: "p-panel", inputs: ["id", "toggleable", "header", "collapsed", "styleClass", "iconPos", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i7.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i9.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: Textarea, selector: "[pTextarea], [pInputTextarea]", inputs: ["autoResize", "pSize", "variant", "fluid", "invalid"], outputs: ["onResize"] }, { kind: "pipe", type: i2$1.DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7007
+ `, isInline: true, styles: [":host{display:block}.file-trigger{position:relative;display:inline-flex}.file-trigger input{position:absolute;inset:0;opacity:0;cursor:pointer}.markdown-preview,.history-markdown{word-break:break-word}.markdown-preview :is(h1,h2,h3),.history-markdown :is(h1,h2,h3){margin:0 0 .75rem;font-weight:600}.markdown-preview a,.history-markdown a{color:#2563eb;text-decoration:underline;text-underline-offset:.18em}.emoji-popover{display:flex;flex-wrap:wrap;gap:.5rem;max-width:16rem}.emoji-option{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;font-size:1.25rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "directive", type: i2$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$2.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i5$1.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }, { kind: "ngmodule", type: DividerModule }, { kind: "ngmodule", type: PanelModule }, { kind: "component", type: i6.Panel, selector: "p-panel", inputs: ["id", "toggleable", "header", "collapsed", "styleClass", "iconPos", "showHeader", "toggler", "transitionOptions", "toggleButtonProps"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i7.Popover, selector: "p-popover", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ProgressSpinnerModule }, { kind: "component", type: i4.ProgressSpinner, selector: "p-progressSpinner, p-progress-spinner, p-progressspinner", inputs: ["styleClass", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i9.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: Textarea, selector: "[pTextarea], [pInputTextarea]", inputs: ["autoResize", "pSize", "variant", "fluid", "invalid"], outputs: ["onResize"] }, { kind: "pipe", type: i1$3.DatePipe, name: "date" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6432
7008
  }
6433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DiscussionComponent, decorators: [{
7009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DiscussionComponent, decorators: [{
6434
7010
  type: Component,
6435
7011
  args: [{ selector: 'discussion', standalone: true, providers: [ConfirmationService, DiscussionApi], imports: [
6436
7012
  CommonModule,
@@ -6847,8 +7423,8 @@ class IframeModuleComponent extends BaseModuleComponent {
6847
7423
  const errorMessage = this.translate.instant('iframe-module.iframeModule.siteLoadingMessage');
6848
7424
  this.msgService.error(errorMessage);
6849
7425
  }
6850
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IframeModuleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6851
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: IframeModuleComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "iframeElement", first: true, predicate: ["iframe"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
7426
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: IframeModuleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7427
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: IframeModuleComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "iframeElement", first: true, predicate: ["iframe"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
6852
7428
  @if (isContent) {
6853
7429
  <iframe
6854
7430
  #iframe
@@ -6887,7 +7463,7 @@ class IframeModuleComponent extends BaseModuleComponent {
6887
7463
  }
6888
7464
  `, isInline: true, dependencies: [{ kind: "component", type: SecurityComponent, selector: "security", inputs: ["id", "controller"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["hostName", "ptInputText", "pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
6889
7465
  }
6890
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IframeModuleComponent, decorators: [{
7466
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: IframeModuleComponent, decorators: [{
6891
7467
  type: Component,
6892
7468
  args: [{
6893
7469
  standalone: true,
@@ -6963,10 +7539,10 @@ class AuthGuardService {
6963
7539
  getReturnUrl(returnUrl) {
6964
7540
  return returnUrl.startsWith('/unauthorized') ? '/' : returnUrl;
6965
7541
  }
6966
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthGuardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6967
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthGuardService }); }
7542
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AuthGuardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7543
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AuthGuardService }); }
6968
7544
  }
6969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthGuardService, decorators: [{
7545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AuthGuardService, decorators: [{
6970
7546
  type: Injectable
6971
7547
  }] });
6972
7548
 
@@ -7021,10 +7597,10 @@ class TableFilterService {
7021
7597
  }
7022
7598
  this.updateFiltersState(filters);
7023
7599
  }
7024
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TableFilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7025
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TableFilterService }); }
7600
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TableFilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7601
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TableFilterService }); }
7026
7602
  }
7027
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TableFilterService, decorators: [{
7603
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TableFilterService, decorators: [{
7028
7604
  type: Injectable
7029
7605
  }] });
7030
7606
 
@@ -7106,10 +7682,10 @@ class FolderModuleApi extends HttpClient {
7106
7682
  ...params,
7107
7683
  });
7108
7684
  }
7109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FolderModuleApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7110
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FolderModuleApi }); }
7685
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: FolderModuleApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7686
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: FolderModuleApi }); }
7111
7687
  }
7112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FolderModuleApi, decorators: [{
7688
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: FolderModuleApi, decorators: [{
7113
7689
  type: Injectable
7114
7690
  }] });
7115
7691
 
@@ -7128,10 +7704,10 @@ class IframeModuleApi extends HttpClient {
7128
7704
  ...params,
7129
7705
  });
7130
7706
  }
7131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IframeModuleApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7132
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IframeModuleApi }); }
7707
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: IframeModuleApi, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7708
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: IframeModuleApi }); }
7133
7709
  }
7134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IframeModuleApi, decorators: [{
7710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: IframeModuleApi, decorators: [{
7135
7711
  type: Injectable
7136
7712
  }] });
7137
7713
 
@@ -7141,5 +7717,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
7141
7717
  * Generated bundle index. Do not edit.
7142
7718
  */
7143
7719
 
7144
- export { APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AuthGuardService, BaseModuleComponent, BffSecurityService, ConfigComponent, ContentType, DbMigrationComponent, DiscussionComponent, ErrorComponent, FolderModuleApi, FooterComponent, HttpClient, IframeModuleApi, IframeModuleComponent, KeycloakSecurityService, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, MsgService, NotfoundComponent, NotificationApi, NotificationService, ProfileComponent, SecurityApi, SecurityComponent, SecurityService, SidebarComponent, TableFilterService, TopBarService, UnauthorizedComponent, UserNotificationsComponent, UserProfileApi, UserService, convertToPrimeNgDateFormat, langIntercept, mergeWithDefaults, provideAppThemes, provideLogoComponent, provideOip, replaceDefaults };
7720
+ export { APP_THEME_PRESETS, APP_THEME_PRESETS_MERGE_MODE, AppConfiguratorComponent, AppFloatingConfiguratorComponent, AppLayoutComponent, AppModulesComponent, AppTopbar, AppTopbarApplicationSwitcherComponent, ApplicationRegistryService, ApplicationsApi, ApplicationsComponent, AuthGuardService, BaseModuleComponent, BffSecurityService, ConfigComponent, ContentType, DbMigrationComponent, DiscussionComponent, ErrorComponent, FolderModuleApi, FooterComponent, HttpClient, IframeModuleApi, IframeModuleComponent, L10nService, LOGO_COMPONENT_TOKEN, LayoutService, LogoComponent, LogoService, MenuComponent, MenuService, MsgService, NotfoundComponent, NotificationApi, NotificationService, ProfileComponent, SecurityApi, SecurityComponent, SecurityService, SidebarComponent, TableFilterService, TopBarService, UnauthorizedComponent, UserNotificationsComponent, UserProfileApi, UserService, convertToPrimeNgDateFormat, langIntercept, mergeWithDefaults, provideAppThemes, provideLogoComponent, provideOip, replaceDefaults };
7145
7721
  //# sourceMappingURL=oip-common.mjs.map