@arsedizioni/ars-utils 22.0.7 → 22.0.10

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 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-ui.oauth.mjs","sources":["../../../projects/ars-utils/ui.oauth/ui/definitions.ts","../../../projects/ars-utils/ui.oauth/ui/ui.module.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.html","../../../projects/ars-utils/ui.oauth/ui/components/login-ok/ms/login-oauth-ok-ms.component.ts","../../../projects/ars-utils/ui.oauth/ui/components/login-ok/ms/login-oauth-ok-ms.component.html","../../../projects/ars-utils/ui.oauth/public_api.ts","../../../projects/ars-utils/ui.oauth/arsedizioni-ars-utils-ui.oauth.ts"],"sourcesContent":["export enum LoginOAuthType {\r\n None = 0,\r\n Microsoft = 1,\r\n Google = 2\r\n}\r\n\r\nexport interface LoginOAuthResult {\r\n type: number,\r\n token: string\r\n}","import { NgModule } from \"@angular/core\";\r\n\r\n\r\n@NgModule()\r\nexport class ArsUIOAuthModule { }\r\n\r\nexport * from \"./definitions\";\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, NgZone, afterNextRender, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { EnvironmentService } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalGuardConfiguration, MsalInterceptorConfiguration, MsalService } from '@azure/msal-angular';\r\nimport { AuthenticationResult, BrowserCacheLocation, EventMessage, EventType, IPublicClientApplication, InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\nimport { filter } from 'rxjs';\r\nimport { LoginOAuthResult } from '../../definitions';\r\n\r\nexport function MSALInstanceFactory(environment: EnvironmentService): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: {\r\n clientId: \"6b2c080f-6ab0-4511-a9df-0bce69db5833\",\r\n authority: \"https://login.microsoftonline.com/common\",\r\n redirectUri: environment.appLoginRedirectUri,\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage\r\n }\r\n });\r\n}\r\n\r\nexport function MSALInterceptorConfigFactory(environment: EnvironmentService): MsalInterceptorConfiguration {\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n protectedResourceMap: new Map([\r\n [environment.appServiceLoginUri, [\"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"]],\r\n [\"https://graph.microsoft.com/v2.0/me\", [\"user.read\"]],\r\n ])\r\n };\r\n}\r\n\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: [\"user.read\"]\r\n }\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'login-oauth',\r\n templateUrl: './login-oauth.component.html',\r\n styleUrls: ['./login-oauth.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: MSAL_INSTANCE,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInterceptorConfigFactory\r\n },\r\n MsalService,\r\n MsalBroadcastService],\r\n imports: [\r\n MatButtonModule\r\n ]\r\n})\r\nexport class LoginOAuthComponent {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly msalBroadcastService = inject(MsalBroadcastService);\r\n private readonly msaLService = inject(MsalService);\r\n private readonly dialogService = inject(DialogService);\r\n private readonly ngZone = inject(NgZone);\r\n /** Emitted when OAuth authentication succeeds. */\r\n readonly success = output<LoginOAuthResult>();\r\n /** Whether to show the introductory info panel. */\r\n readonly showInfo = input<boolean>(true);\r\n /** Application name displayed in the info panel. */\r\n readonly applicationName = input<string>();\r\n /** Whether to trigger `initialize()` automatically on mount. */\r\n readonly autoInitialize = input<boolean>(false);\r\n /** Whether the Microsoft login button is shown. */\r\n readonly allowMicrosoft = input<boolean>(true);\r\n /** Whether the Google login button is shown. */\r\n readonly allowGoogle = input<boolean>(true);\r\n protected readonly oauthReady = signal<boolean>(false);\r\n protected readonly oauthMicrosoftReady = signal<boolean>(false);\r\n protected readonly oauthGoogleReady = signal<boolean>(false);\r\n\r\n constructor() {\r\n\r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) =>\r\n msg.eventType === EventType.LOGOUT_FAILURE ||\r\n msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe((r: EventMessage) => {\r\n if (r?.payload) {\r\n const error = r.payload as any;\r\n this.dialogService.error(error?.message ?? 'Errore di autenticazione Microsoft');\r\n }\r\n });\r\n\r\n afterNextRender(() => {\r\n if (this.autoInitialize()) {\r\n this.initialize();\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Initialize OAuth providers (Microsoft MSAL and Google GSI).\r\n * Safe to call multiple times — already-initialized providers are skipped.\r\n * Must be public so the host component can trigger it manually when `autoInitialize` is false.\r\n */\r\n initialize() {\r\n if (this.oauthMicrosoftReady() && this.oauthGoogleReady()) {\r\n return; // Both already loaded\r\n }\r\n this.oauthReady.set(true);\r\n\r\n // Load MS stack only if not already initialized\r\n if (!this.oauthMicrosoftReady()) {\r\n this.msaLService.initialize()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.oauthMicrosoftReady.set(true);\r\n });\r\n }\r\n\r\n // Load Google script only if not already initialized\r\n if (!this.oauthGoogleReady()) {\r\n const DSLScript = document.createElement('script');\r\n DSLScript.src = 'https://accounts.google.com/gsi/client';\r\n DSLScript.type = 'text/javascript';\r\n document.body.appendChild(DSLScript);\r\n document.body.removeChild(DSLScript);\r\n\r\n // @ts-ignore\r\n window.onGoogleLibraryLoad = () => {\r\n // initialize google account\r\n // @ts-ignore\r\n google.accounts.id.initialize({\r\n client_id: '71204983077-ag31h3bgt2udcbfr9nn84r9rni2k3snp.apps.googleusercontent.com',\r\n cancel_on_tap_outside: true,\r\n auto_select: false,\r\n callback: (r: any) => {\r\n this.ngZone.run(() => {\r\n this.success.emit({ type: 2, token: r.credential });\r\n });\r\n }\r\n });\r\n\r\n googleButtonWrapper = createFakeGoogleWrapper();\r\n\r\n this.oauthGoogleReady.set(true);\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Trigger a Microsoft (MSAL) login popup and acquire an access token on success.\r\n */\r\n protected loginMSAL() {\r\n // Clear any in-progress interaction flag that may have been left by a previous incomplete popup\r\n sessionStorage.removeItem('msal.interaction.status');\r\n\r\n this.msaLService.loginPopup()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (r: AuthenticationResult) => {\r\n try {\r\n this.msaLService.instance.setActiveAccount(r.account);\r\n this.msaLService.acquireTokenSilent({\r\n scopes: [\r\n \"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"\r\n ],\r\n account: r.account\r\n }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\r\n next: (tokenResult: AuthenticationResult) => {\r\n console.log(\"Token acquired!\");\r\n this.success.emit({ type: 1, token: tokenResult.accessToken });\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n } catch (error: any) {\r\n this.dialogService.error(error.message);\r\n }\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Trigger the hidden Google GSI button to open the Google sign-in flow.\r\n */\r\n protected loginGoogle() {\r\n // Use wrapper click to prevent Illegal invocation exception\r\n googleButtonWrapper.click();\r\n }\r\n}\r\n\r\nconst createFakeGoogleWrapper = () => {\r\n const googleLoginWrapper = document.createElement(\"div\");\r\n // Or you can simple hide it in CSS rule for custom-google-button\r\n googleLoginWrapper.style.display = \"none\";\r\n googleLoginWrapper.classList.add(\"custom-google-button\");\r\n\r\n // Add the wrapper to body\r\n document.body.appendChild(googleLoginWrapper);\r\n\r\n // Use GSI javascript api to render the button inside our wrapper\r\n // You can ignore the properties because this button will not appear\r\n // @ts-ignore\r\n window.google.accounts.id.renderButton(googleLoginWrapper, {\r\n type: \"icon\",\r\n width: \"200\",\r\n });\r\n\r\n const googleLoginWrapperButton =\r\n googleLoginWrapper.querySelector(\"div[role=button]\");\r\n\r\n return {\r\n click: () => {\r\n // @ts-ignore\r\n googleLoginWrapperButton.click();\r\n },\r\n };\r\n};\r\nvar googleButtonWrapper: any;\r\n\r\n","<div class=\"login-oauth\">\r\n @if(showInfo()) {\r\n <div class=\"message\">\r\n <p>Questa sezione consente di accedere al servizio utilizzando un provider OAuth2.</p>\r\n @if(applicationName()) {\r\n <p>La email utilizzata deve essere collegata ad un utente valido di {{applicationName()}} e dei servizi ad esso\r\n connessi.</p>\r\n }\r\n </div>\r\n }\r\n @if (allowMicrosoft()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginMSAL()\" aria-label=\"Effettua accesso\"\r\n [disabled]=\"!oauthMicrosoftReady()\" style=\"width: 100%;\">\r\n Accedi con Microsoft</button>\r\n </div>\r\n }\r\n @if (allowGoogle()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginGoogle()\" style=\"width: 100%;\"\r\n aria-label=\"Effettua accesso\" [disabled]=\"!oauthGoogleReady()\">\r\n Accedi con Google</button>\r\n </div>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { broadcastResponseToMainFrame } from '@azure/msal-browser/redirect-bridge';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\n\r\n\r\n@Component({\r\n selector: 'app-login-oauth-ok-ms',\r\n styleUrls: ['./login-oauth-ok-ms.component.scss'],\r\n templateUrl: './login-oauth-ok-ms.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatProgressBarModule]\r\n})\r\nexport class LoginOAuthOkMSComponent {\r\n\r\n /** Message displayed while the popup is completing authentication. */\r\n readonly message = input<string>('Accesso in corso...');\r\n\r\n constructor() {\r\n // MSAL v5 popup flow: parse the auth response from the URL and send\r\n // it back to the opener window via BroadcastChannel, then close the popup.\r\n broadcastResponseToMainFrame();\r\n }\r\n}\r\n","<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div class=\"login-auto fade-in\">\r\n <div class=\"message\">\r\n Autenticazione in corso...\r\n </div>\r\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/components/index';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-ui.oauth.mjs","sources":["../../../projects/ars-utils/ui.oauth/ui/definitions.ts","../../../projects/ars-utils/ui.oauth/ui/ui.module.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.ts","../../../projects/ars-utils/ui.oauth/ui/components/login/login-oauth.component.html","../../../projects/ars-utils/ui.oauth/ui/components/login-ok/ms/login-oauth-ok-ms.component.ts","../../../projects/ars-utils/ui.oauth/ui/components/login-ok/ms/login-oauth-ok-ms.component.html","../../../projects/ars-utils/ui.oauth/public_api.ts","../../../projects/ars-utils/ui.oauth/arsedizioni-ars-utils-ui.oauth.ts"],"sourcesContent":["export enum LoginOAuthType {\r\n None = 0,\r\n Microsoft = 1,\r\n Google = 2\r\n}\r\n\r\nexport interface LoginOAuthResult {\r\n type: LoginOAuthType,\r\n token: string\r\n}","import { NgModule } from \"@angular/core\";\r\n\r\n\r\n@NgModule()\r\nexport class ArsUIOAuthModule { }\r\n\r\nexport * from \"./definitions\";\r\n\r\n\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, NgZone, afterNextRender, inject, input, output, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { EnvironmentService } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalBroadcastService, MsalGuardConfiguration, MsalInterceptorConfiguration, MsalService } from '@azure/msal-angular';\r\nimport { AuthenticationResult, BrowserCacheLocation, EventMessage, EventType, IPublicClientApplication, InteractionType, PublicClientApplication } from '@azure/msal-browser';\r\nimport { filter } from 'rxjs';\r\nimport { LoginOAuthResult } from '../../definitions';\r\n\r\nexport function MSALInstanceFactory(environment: EnvironmentService): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: {\r\n clientId: \"6b2c080f-6ab0-4511-a9df-0bce69db5833\",\r\n authority: \"https://login.microsoftonline.com/common\",\r\n redirectUri: environment.appLoginRedirectUri,\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage\r\n }\r\n });\r\n}\r\n\r\nexport function MSALInterceptorConfigFactory(environment: EnvironmentService): MsalInterceptorConfiguration {\r\n\r\n return {\r\n interactionType: InteractionType.Popup,\r\n protectedResourceMap: new Map([\r\n [environment.appServiceLoginUri, [\"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"]],\r\n [\"https://graph.microsoft.com/v2.0/me\", [\"user.read\"]],\r\n ])\r\n };\r\n}\r\n\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return {\r\n interactionType: InteractionType.Popup,\r\n authRequest: {\r\n scopes: [\"user.read\"]\r\n }\r\n };\r\n}\r\n\r\n@Component({\r\n selector: 'login-oauth',\r\n templateUrl: './login-oauth.component.html',\r\n styleUrls: ['./login-oauth.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: MSAL_INSTANCE,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n deps: [EnvironmentService],\r\n useFactory: MSALInterceptorConfigFactory\r\n },\r\n MsalService,\r\n MsalBroadcastService],\r\n imports: [\r\n MatButtonModule\r\n ]\r\n})\r\nexport class LoginOAuthComponent {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly msalBroadcastService = inject(MsalBroadcastService);\r\n private readonly msaLService = inject(MsalService);\r\n private readonly dialogService = inject(DialogService);\r\n private readonly ngZone = inject(NgZone);\r\n /** Emitted when OAuth authentication succeeds. */\r\n readonly success = output<LoginOAuthResult>();\r\n /** Whether to show the introductory info panel. */\r\n readonly showInfo = input<boolean>(true);\r\n /** Application name displayed in the info panel. */\r\n readonly applicationName = input<string>();\r\n /** Whether to trigger `initialize()` automatically on mount. */\r\n readonly autoInitialize = input<boolean>(false);\r\n /** Whether the Microsoft login button is shown. */\r\n readonly allowMicrosoft = input<boolean>(true);\r\n /** Whether the Google login button is shown. */\r\n readonly allowGoogle = input<boolean>(true);\r\n protected readonly oauthReady = signal<boolean>(false);\r\n protected readonly oauthMicrosoftReady = signal<boolean>(false);\r\n protected readonly oauthGoogleReady = signal<boolean>(false);\r\n\r\n constructor() {\r\n\r\n this.msalBroadcastService.msalSubject$\r\n .pipe(\r\n filter((msg: EventMessage) =>\r\n msg.eventType === EventType.LOGOUT_FAILURE ||\r\n msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe((r: EventMessage) => {\r\n if (r?.payload) {\r\n const error = r.payload as any;\r\n this.dialogService.error(error?.message ?? 'Errore di autenticazione Microsoft');\r\n }\r\n });\r\n\r\n afterNextRender(() => {\r\n if (this.autoInitialize()) {\r\n this.initialize();\r\n }\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Initialize OAuth providers (Microsoft MSAL and Google GSI).\r\n * Safe to call multiple times — already-initialized providers are skipped.\r\n * Must be public so the host component can trigger it manually when `autoInitialize` is false.\r\n */\r\n initialize() {\r\n if (this.oauthMicrosoftReady() && this.oauthGoogleReady()) {\r\n return; // Both already loaded\r\n }\r\n this.oauthReady.set(true);\r\n\r\n // Load MS stack only if not already initialized\r\n if (!this.oauthMicrosoftReady()) {\r\n this.msaLService.initialize()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => {\r\n this.oauthMicrosoftReady.set(true);\r\n });\r\n }\r\n\r\n // Load Google script only if not already initialized\r\n if (!this.oauthGoogleReady()) {\r\n const DSLScript = document.createElement('script');\r\n DSLScript.src = 'https://accounts.google.com/gsi/client';\r\n DSLScript.type = 'text/javascript';\r\n document.body.appendChild(DSLScript);\r\n document.body.removeChild(DSLScript);\r\n\r\n // @ts-ignore\r\n window.onGoogleLibraryLoad = () => {\r\n // initialize google account\r\n // @ts-ignore\r\n google.accounts.id.initialize({\r\n client_id: '71204983077-ag31h3bgt2udcbfr9nn84r9rni2k3snp.apps.googleusercontent.com',\r\n cancel_on_tap_outside: true,\r\n auto_select: false,\r\n callback: (r: any) => {\r\n this.ngZone.run(() => {\r\n this.success.emit({ type: 2, token: r.credential });\r\n });\r\n }\r\n });\r\n\r\n googleButtonWrapper = createFakeGoogleWrapper();\r\n\r\n this.oauthGoogleReady.set(true);\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Trigger a Microsoft (MSAL) login popup and acquire an access token on success.\r\n */\r\n protected loginMSAL() {\r\n // Clear any in-progress interaction flag that may have been left by a previous incomplete popup\r\n sessionStorage.removeItem('msal.interaction.status');\r\n\r\n this.msaLService.loginPopup()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (r: AuthenticationResult) => {\r\n try {\r\n this.msaLService.instance.setActiveAccount(r.account);\r\n this.msaLService.acquireTokenSilent({\r\n scopes: [\r\n \"api://6b2c080f-6ab0-4511-a9df-0bce69db5833/AngularSPAAuthScope\"\r\n ],\r\n account: r.account\r\n }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\r\n next: (tokenResult: AuthenticationResult) => {\r\n console.log(\"Token acquired!\");\r\n this.success.emit({ type: 1, token: tokenResult.accessToken });\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n } catch (error: any) {\r\n this.dialogService.error(error.message);\r\n }\r\n },\r\n error: (error: any) => {\r\n this.dialogService.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Trigger the hidden Google GSI button to open the Google sign-in flow.\r\n */\r\n protected loginGoogle() {\r\n // Use wrapper click to prevent Illegal invocation exception\r\n googleButtonWrapper.click();\r\n }\r\n}\r\n\r\nconst createFakeGoogleWrapper = () => {\r\n const googleLoginWrapper = document.createElement(\"div\");\r\n // Or you can simple hide it in CSS rule for custom-google-button\r\n googleLoginWrapper.style.display = \"none\";\r\n googleLoginWrapper.classList.add(\"custom-google-button\");\r\n\r\n // Add the wrapper to body\r\n document.body.appendChild(googleLoginWrapper);\r\n\r\n // Use GSI javascript api to render the button inside our wrapper\r\n // You can ignore the properties because this button will not appear\r\n // @ts-ignore\r\n window.google.accounts.id.renderButton(googleLoginWrapper, {\r\n type: \"icon\",\r\n width: \"200\",\r\n });\r\n\r\n const googleLoginWrapperButton =\r\n googleLoginWrapper.querySelector(\"div[role=button]\");\r\n\r\n return {\r\n click: () => {\r\n // @ts-ignore\r\n googleLoginWrapperButton.click();\r\n },\r\n };\r\n};\r\nvar googleButtonWrapper: any;\r\n\r\n","<div class=\"login-oauth\">\r\n @if(showInfo()) {\r\n <div class=\"message\">\r\n <p>Questa sezione consente di accedere al servizio utilizzando un provider OAuth2.</p>\r\n @if(applicationName()) {\r\n <p>La email utilizzata deve essere collegata ad un utente valido di {{applicationName()}} e dei servizi ad esso\r\n connessi.</p>\r\n }\r\n </div>\r\n }\r\n @if (allowMicrosoft()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginMSAL()\" aria-label=\"Effettua accesso\"\r\n [disabled]=\"!oauthMicrosoftReady()\" style=\"width: 100%;\">\r\n Accedi con Microsoft</button>\r\n </div>\r\n }\r\n @if (allowGoogle()) {\r\n <div class=\"button\">\r\n <button mat-flat-button (click)=\"loginGoogle()\" style=\"width: 100%;\"\r\n aria-label=\"Effettua accesso\" [disabled]=\"!oauthGoogleReady()\">\r\n Accedi con Google</button>\r\n </div>\r\n }\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { broadcastResponseToMainFrame } from '@azure/msal-browser/redirect-bridge';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\n\r\n\r\n@Component({\r\n selector: 'app-login-oauth-ok-ms',\r\n styleUrls: ['./login-oauth-ok-ms.component.scss'],\r\n templateUrl: './login-oauth-ok-ms.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatProgressBarModule]\r\n})\r\nexport class LoginOAuthOkMSComponent {\r\n\r\n /** Message displayed while the popup is completing authentication. */\r\n readonly message = input<string>('Accesso in corso...');\r\n\r\n constructor() {\r\n // MSAL v5 popup flow: parse the auth response from the URL and send\r\n // it back to the opener window via BroadcastChannel, then close the popup.\r\n broadcastResponseToMainFrame();\r\n }\r\n}\r\n","<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div class=\"login-auto fade-in\">\r\n <div class=\"message\">\r\n Autenticazione in corso...\r\n </div>\r\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/ui.module';\r\nexport * from './ui/components/index';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;IAAY;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACZ,CAAC,EAJW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;MCIb,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACOK,SAAU,mBAAmB,CAAC,WAA+B,EAAA;IACjE,OAAO,IAAI,uBAAuB,CAAC;AACjC,QAAA,IAAI,EAAE;AACJ,YAAA,QAAQ,EAAE,sCAAsC;AAChD,YAAA,SAAS,EAAE,0CAA0C;YACrD,WAAW,EAAE,WAAW,CAAC,mBAAmB;AAC7C,SAAA;AACD,QAAA,KAAK,EAAE;YACL,aAAa,EAAE,oBAAoB,CAAC;AACrC;AACF,KAAA,CAAC;AACJ;AAEM,SAAU,4BAA4B,CAAC,WAA+B,EAAA;IAE1E,OAAO;QACL,eAAe,EAAE,eAAe,CAAC,KAAK;QACtC,oBAAoB,EAAE,IAAI,GAAG,CAAC;AAC5B,YAAA,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,gEAAgE,CAAC,CAAC;AACpG,YAAA,CAAC,qCAAqC,EAAE,CAAC,WAAW,CAAC,CAAC;SACvD;KACF;AACH;SAEgB,sBAAsB,GAAA;IACpC,OAAO;QACL,eAAe,EAAE,eAAe,CAAC,KAAK;AACtC,QAAA,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,WAAW;AACrB;KACF;AACH;MA6Ba,mBAAmB,CAAA;AAsB9B,IAAA,WAAA,GAAA;AArBiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;QAE/B,IAAA,CAAA,OAAO,GAAG,MAAM,EAAoB;;QAEpC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,IAAI;qFAAC;;AAE/B,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK;uGAAU;;QAEjC,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,KAAK;2FAAC;;QAEtC,IAAA,CAAA,cAAc,GAAG,KAAK,CAAU,IAAI;2FAAC;;QAErC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI;wFAAC;QACxB,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK;uFAAC;QACnC,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAU,KAAK;gGAAC;QAC5C,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK;6FAAC;QAI1D,IAAI,CAAC,oBAAoB,CAAC;AACvB,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,GAAiB,KACvB,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,cAAc;AAC1C,YAAA,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,qBAAqB,CAAC,EACpD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,CAAC,CAAC,CAAe,KAAI;AAC7B,YAAA,IAAI,CAAC,EAAE,OAAO,EAAE;AACd,gBAAA,MAAM,KAAK,GAAG,CAAC,CAAC,OAAc;gBAC9B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,oCAAoC,CAAC;YAClF;AACF,QAAA,CAAC,CAAC;QAEJ,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACzB,IAAI,CAAC,UAAU,EAAE;YACnB;AACF,QAAA,CAAC,CAAC;IAEJ;AAEA;;;;AAIG;IACH,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACzD,YAAA,OAAO;QACT;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;AAGzB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU;AACxB,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;iBACxC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,YAAA,CAAC,CAAC;QACN;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAClD,YAAA,SAAS,CAAC,GAAG,GAAG,wCAAwC;AACxD,YAAA,SAAS,CAAC,IAAI,GAAG,iBAAiB;AAClC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AACpC,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;;AAGpC,YAAA,MAAM,CAAC,mBAAmB,GAAG,MAAK;;;AAGhC,gBAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC;AAC5B,oBAAA,SAAS,EAAE,yEAAyE;AACpF,oBAAA,qBAAqB,EAAE,IAAI;AAC3B,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,QAAQ,EAAE,CAAC,CAAM,KAAI;AACnB,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AACrD,wBAAA,CAAC,CAAC;oBACJ;AACD,iBAAA,CAAC;gBAEF,mBAAmB,GAAG,uBAAuB,EAAE;AAE/C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,CAAC;QACH;IACF;AAEA;;AAEG;IACO,SAAS,GAAA;;AAEjB,QAAA,cAAc,CAAC,UAAU,CAAC,yBAAyB,CAAC;AAEpD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,CAAuB,KAAI;AAChC,gBAAA,IAAI;oBACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC;AACrD,oBAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;AAClC,wBAAA,MAAM,EAAE;4BACN;AACD,yBAAA;wBACD,OAAO,EAAE,CAAC,CAAC;AACZ,qBAAA,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,wBAAA,IAAI,EAAE,CAAC,WAAiC,KAAI;AAC1C,4BAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC9B,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC;wBAChE,CAAC;AACD,wBAAA,KAAK,EAAE,CAAC,KAAU,KAAI;4BACpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;wBACzC;AACD,qBAAA,CAAC;gBACJ;gBAAE,OAAO,KAAU,EAAE;oBACnB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;gBACzC;YACF,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;gBACpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YACzC;AACD,SAAA,CAAC;IACN;AAEA;;AAEG;IACO,WAAW,GAAA;;QAEnB,mBAAmB,CAAC,KAAK,EAAE;IAC7B;8GA3IW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EArBnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;gBACtB,IAAI,EAAE,CAAC,kBAAkB,CAAC;AAC1B,gBAAA,UAAU,EAAE;AACb,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,UAAU,EAAE;AACb,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;gBAChC,IAAI,EAAE,CAAC,kBAAkB,CAAC;AAC1B,gBAAA,UAAU,EAAE;AACb,aAAA;YACD,WAAW;YACX;SAAqB,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjEzB,s6BAyBA,0MD0CI,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA3B/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;4BACtB,IAAI,EAAE,CAAC,kBAAkB,CAAC;AAC1B,4BAAA,UAAU,EAAE;AACb,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,UAAU,EAAE;AACb,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;4BAChC,IAAI,EAAE,CAAC,kBAAkB,CAAC;AAC1B,4BAAA,UAAU,EAAE;AACb,yBAAA;wBACD,WAAW;wBACX;qBAAqB,EAAA,OAAA,EACd;wBACP;AACD,qBAAA,EAAA,QAAA,EAAA,s6BAAA,EAAA,MAAA,EAAA,CAAA,mJAAA,CAAA,EAAA;;AAgJH,MAAM,uBAAuB,GAAG,MAAK;IACnC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;;AAExD,IAAA,kBAAkB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACzC,IAAA,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;;AAGxD,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;;;;IAK7C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE;AACzD,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,KAAK;AACb,KAAA,CAAC;IAEF,MAAM,wBAAwB,GAC5B,kBAAkB,CAAC,aAAa,CAAC,kBAAkB,CAAC;IAEtD,OAAO;QACL,KAAK,EAAE,MAAK;;YAEV,wBAAwB,CAAC,KAAK,EAAE;QAClC,CAAC;KACF;AACH,CAAC;AACD,IAAI,mBAAwB;;MElOf,uBAAuB,CAAA;AAKhC,IAAA,WAAA,GAAA;;QAFS,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,qBAAqB;oFAAC;;;AAKnD,QAAA,4BAA4B,EAAE;IAClC;8GATS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbpC,2SAQA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGc,UAAU,80CAAE,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEjC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;+BACI,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,WACtC,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,2SAAA,EAAA,MAAA,EAAA,CAAA,+KAAA,CAAA,EAAA;;;AEX/C;;AAEG;;ACFH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arsedizioni/ars-utils",
3
- "version": "22.0.7",
3
+ "version": "22.0.10",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -71,6 +71,10 @@
71
71
  "./ui.application": {
72
72
  "types": "./types/arsedizioni-ars-utils-ui.application.d.ts",
73
73
  "default": "./fesm2022/arsedizioni-ars-utils-ui.application.mjs"
74
+ },
75
+ "./ui.oauth": {
76
+ "types": "./types/arsedizioni-ars-utils-ui.oauth.d.ts",
77
+ "default": "./fesm2022/arsedizioni-ars-utils-ui.oauth.mjs"
74
78
  }
75
79
  },
76
80
  "sideEffects": false,
@@ -1,7 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { Signal } from '@angular/core';
3
3
  import { NameValueItem, Folder, QueryModel, LoginResult, QueryResultModel, ApiResult, UpdateResultModel, FolderTree } from '@arsedizioni/ars-utils/core';
4
- import { LoginOAuthType, SendToDialogResult } from '@arsedizioni/ars-utils/ui.application';
4
+ import { SendToDialogResult } from '@arsedizioni/ars-utils/ui.application';
5
+ import { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';
5
6
  import * as _angular_common_http from '@angular/common/http';
6
7
  import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
7
8
  import * as rxjs from 'rxjs';
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { OnDestroy, Signal } from '@angular/core';
3
3
  import { SendToModel, LoginResult, QueryModel, ApiResult, INode, FolderTree } from '@arsedizioni/ars-utils/core';
4
- import { LoginOAuthType } from '@arsedizioni/ars-utils/ui.application';
4
+ import { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';
5
5
  import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
6
6
  import * as rxjs from 'rxjs';
7
7
  import { Observable } from 'rxjs';
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { OnDestroy } from '@angular/core';
3
3
  import { LoginResult, ApiResult } from '@arsedizioni/ars-utils/core';
4
- import { LoginOAuthType } from '@arsedizioni/ars-utils/ui.application';
4
+ import { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';
5
5
  import * as rxjs from 'rxjs';
6
6
 
7
7
  declare const SupportMessages: {
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnDestroy, AfterViewInit, EnvironmentProviders, DoCheck, ElementRef } from '@angular/core';
3
- import { INode, Searchable, SearchBag, NameValueItem, DateInterval, SearchFilterMetadata, FileInfo, EnvironmentService } from '@arsedizioni/ars-utils/core';
3
+ import { INode, Searchable, SearchBag, NameValueItem, DateInterval, SearchFilterMetadata, FileInfo } from '@arsedizioni/ars-utils/core';
4
4
  import { MatFormFieldAppearance, MatFormFieldControl } from '@angular/material/form-field';
5
5
  import { MatDialogRef } from '@angular/material/dialog';
6
6
  import { DialogService } from '@arsedizioni/ars-utils/ui';
@@ -11,8 +11,6 @@ import { NgForm, ControlValueAccessor, NgControl } from '@angular/forms';
11
11
  import { MatCheckboxChange } from '@angular/material/checkbox';
12
12
  import { MatSelectionList, MatSelectionListChange } from '@angular/material/list';
13
13
  import { MatPaginator, PageEvent } from '@angular/material/paginator';
14
- import { MsalGuardConfiguration, MsalInterceptorConfiguration } from '@azure/msal-angular';
15
- import { IPublicClientApplication } from '@azure/msal-browser';
16
14
 
17
15
  declare class ResizeTableColumnDirective {
18
16
  /** Whether this column is resizable. Bound via the `resizeColumn` attribute. */
@@ -265,15 +263,6 @@ interface PromptDialogData {
265
263
  interface PromptTimeDialogData extends PromptDialogData {
266
264
  slots?: string;
267
265
  }
268
- declare enum LoginOAuthType {
269
- None = 0,
270
- Microsoft = 1,
271
- Google = 2
272
- }
273
- interface LoginOAuthResult {
274
- type: LoginOAuthType;
275
- token: string;
276
- }
277
266
 
278
267
  /** Constants identifying each filter group slot and text filter channels. */
279
268
  declare const Filters: {
@@ -1521,56 +1510,5 @@ declare class TreePickerComponent {
1521
1510
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreePickerComponent, "tree-picker", never, { "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "descriptionEmpty": { "alias": "descriptionEmpty"; "required": false; "isSignal": true; }; "maxDepth": { "alias": "maxDepth"; "required": false; "isSignal": true; }; "maxDepthOverrides": { "alias": "maxDepthOverrides"; "required": false; "isSignal": true; }; "minDepth": { "alias": "minDepth"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "selectionCount": "selectionCount"; "changed": "changed"; }, never, never, true, never>;
1522
1511
  }
1523
1512
 
1524
- declare function MSALInstanceFactory(environment: EnvironmentService): IPublicClientApplication;
1525
- declare function MSALInterceptorConfigFactory(environment: EnvironmentService): MsalInterceptorConfiguration;
1526
- declare function MSALGuardConfigFactory(): MsalGuardConfiguration;
1527
- declare class LoginOAuthComponent {
1528
- private readonly destroyRef;
1529
- private readonly msalBroadcastService;
1530
- private readonly msaLService;
1531
- private readonly dialogService;
1532
- private readonly ngZone;
1533
- /** Emitted when OAuth authentication succeeds. */
1534
- readonly success: _angular_core.OutputEmitterRef<LoginOAuthResult>;
1535
- /** Whether to show the introductory info panel. */
1536
- readonly showInfo: _angular_core.InputSignal<boolean>;
1537
- /** Application name displayed in the info panel. */
1538
- readonly applicationName: _angular_core.InputSignal<string>;
1539
- /** Whether to trigger `initialize()` automatically on mount. */
1540
- readonly autoInitialize: _angular_core.InputSignal<boolean>;
1541
- /** Whether the Microsoft login button is shown. */
1542
- readonly allowMicrosoft: _angular_core.InputSignal<boolean>;
1543
- /** Whether the Google login button is shown. */
1544
- readonly allowGoogle: _angular_core.InputSignal<boolean>;
1545
- protected readonly oauthReady: _angular_core.WritableSignal<boolean>;
1546
- protected readonly oauthMicrosoftReady: _angular_core.WritableSignal<boolean>;
1547
- protected readonly oauthGoogleReady: _angular_core.WritableSignal<boolean>;
1548
- constructor();
1549
- /**
1550
- * Initialize OAuth providers (Microsoft MSAL and Google GSI).
1551
- * Safe to call multiple times — already-initialized providers are skipped.
1552
- * Must be public so the host component can trigger it manually when `autoInitialize` is false.
1553
- */
1554
- initialize(): void;
1555
- /**
1556
- * Trigger a Microsoft (MSAL) login popup and acquire an access token on success.
1557
- */
1558
- protected loginMSAL(): void;
1559
- /**
1560
- * Trigger the hidden Google GSI button to open the Google sign-in flow.
1561
- */
1562
- protected loginGoogle(): void;
1563
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoginOAuthComponent, never>;
1564
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoginOAuthComponent, "login-oauth", never, { "showInfo": { "alias": "showInfo"; "required": false; "isSignal": true; }; "applicationName": { "alias": "applicationName"; "required": false; "isSignal": true; }; "autoInitialize": { "alias": "autoInitialize"; "required": false; "isSignal": true; }; "allowMicrosoft": { "alias": "allowMicrosoft"; "required": false; "isSignal": true; }; "allowGoogle": { "alias": "allowGoogle"; "required": false; "isSignal": true; }; }, { "success": "success"; }, never, never, true, never>;
1565
- }
1566
-
1567
- declare class LoginOAuthOkMSComponent {
1568
- /** Message displayed while the popup is completing authentication. */
1569
- readonly message: _angular_core.InputSignal<string>;
1570
- constructor();
1571
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoginOAuthOkMSComponent, never>;
1572
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoginOAuthOkMSComponent, "app-login-oauth-ok-ms", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1573
- }
1574
-
1575
- export { ApplicationDialogService, ArsUIApplicationModule, ButtonSelectorComponent, ButtonToggleComponent, CalendarEmptyHeader, ChipsSelectorComponent, CurrentFilter, CurrentFilterChanged, CurrentFilterItem, FileInputComponent, FilePreviewComponent, FilterBarComponent, Filters, ItemNode, LoginOAuthComponent, LoginOAuthOkMSComponent, LoginOAuthType, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory, PromptDateDialogComponent, PromptDialogComponent, PromptDialogType, PromptOtpDialogComponent, PromptTimeDialogComponent, ResizeTableColumnDirective, SelectDialogComponent, SelectFileDialogComponent, SelectPictureDialogComponent, SelectTreeDialogComponent, SelectableItem, SelectableNode, SendToDialogComponent, TreeDataSource, TreePickerComponent, provideArsUIApplication };
1576
- export type { ButtonToggleInfo, FilePreviewDialogData, FilterGroup, FilterItem, ISelectableItem, LoginOAuthResult, PromptDateDialogResult, PromptDialogData, PromptDialogResult, PromptOtpDialogResult, PromptTimeDialogData, SelectDialogAppend, SelectDialogData, SelectDialogDelete, SelectDialogEdit, SelectDialogFilter, SelectDialogLookup, SelectDialogResult, SelectFile, SelectFileDialogData, SelectFileOption, SelectPictureFileDialogData, SelectTreeDialogAppend, SelectTreeDialogData, SelectTreeDialogResult, SelectableFilter, SendToDialogData, SendToDialogResult, SendToPopulateData };
1513
+ export { ApplicationDialogService, ArsUIApplicationModule, ButtonSelectorComponent, ButtonToggleComponent, CalendarEmptyHeader, ChipsSelectorComponent, CurrentFilter, CurrentFilterChanged, CurrentFilterItem, FileInputComponent, FilePreviewComponent, FilterBarComponent, Filters, ItemNode, PromptDateDialogComponent, PromptDialogComponent, PromptDialogType, PromptOtpDialogComponent, PromptTimeDialogComponent, ResizeTableColumnDirective, SelectDialogComponent, SelectFileDialogComponent, SelectPictureDialogComponent, SelectTreeDialogComponent, SelectableItem, SelectableNode, SendToDialogComponent, TreeDataSource, TreePickerComponent, provideArsUIApplication };
1514
+ export type { ButtonToggleInfo, FilePreviewDialogData, FilterGroup, FilterItem, ISelectableItem, PromptDateDialogResult, PromptDialogData, PromptDialogResult, PromptOtpDialogResult, PromptTimeDialogData, SelectDialogAppend, SelectDialogData, SelectDialogDelete, SelectDialogEdit, SelectDialogFilter, SelectDialogLookup, SelectDialogResult, SelectFile, SelectFileDialogData, SelectFileOption, SelectPictureFileDialogData, SelectTreeDialogAppend, SelectTreeDialogData, SelectTreeDialogResult, SelectableFilter, SendToDialogData, SendToDialogResult, SendToPopulateData };
@@ -9,7 +9,7 @@ declare enum LoginOAuthType {
9
9
  Google = 2
10
10
  }
11
11
  interface LoginOAuthResult {
12
- type: number;
12
+ type: LoginOAuthType;
13
13
  token: string;
14
14
  }
15
15