@acorex-platform/module-auth-client 0.0.51 → 0.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs} +74 -315
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-BpCPkKC9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs → acorex-platform-module-auth-client-app-chooser.component-EKZpp1BW.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs.map → acorex-platform-module-auth-client-app-chooser.component-EKZpp1BW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs → acorex-platform-module-auth-client-change-password.command-CKeSpikK.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs.map → acorex-platform-module-auth-client-change-password.command-CKeSpikK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs → acorex-platform-module-auth-client-change-photo.command-Bv9ttDAn.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs.map → acorex-platform-module-auth-client-change-photo.command-Bv9ttDAn.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs → acorex-platform-module-auth-client-get-user-activity.query-C0tOES_Q.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-C0tOES_Q.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs → acorex-platform-module-auth-client-lock-screen.command-TKTC-1hk.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs.map → acorex-platform-module-auth-client-lock-screen.command-TKTC-1hk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs → acorex-platform-module-auth-client-login.module-ewiwr6VL.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs.map → acorex-platform-module-auth-client-login.module-ewiwr6VL.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs → acorex-platform-module-auth-client-manage-two-factor.command-DR8NUf_4.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs.map → acorex-platform-module-auth-client-manage-two-factor.command-DR8NUf_4.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs → acorex-platform-module-auth-client-open-sessions.command-ZMYyVU1K.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs.map → acorex-platform-module-auth-client-open-sessions.command-ZMYyVU1K.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs → acorex-platform-module-auth-client-password.component-C1Ic8qul.mjs} +8 -8
- package/fesm2022/{acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs.map → acorex-platform-module-auth-client-password.component-C1Ic8qul.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-D4q4Cnl9.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-D4q4Cnl9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs.map → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DTujROAP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs → acorex-platform-module-auth-client-profile-page-component.provider-D364KW58.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-D364KW58.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs → acorex-platform-module-auth-client-profile-page.component-DtI-_Kng.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs.map → acorex-platform-module-auth-client-profile-page.component-DtI-_Kng.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs → acorex-platform-module-auth-client-register-password.component-BZj1bmwP.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs.map → acorex-platform-module-auth-client-register-password.component-BZj1bmwP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs → acorex-platform-module-auth-client-register.module-jbBjiAHz.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs.map → acorex-platform-module-auth-client-register.module-jbBjiAHz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs → acorex-platform-module-auth-client-remove-pin-code.command-BDN-ehow.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-BDN-ehow.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs → acorex-platform-module-auth-client-result.component-Bo1QkwMu.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs.map → acorex-platform-module-auth-client-result.component-Bo1QkwMu.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-DlLih00S.mjs} +6 -6
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-DlLih00S.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs → acorex-platform-module-auth-client-set-pin-code.command-ZzialSjs.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-ZzialSjs.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs → acorex-platform-module-auth-client-set-pin-code.component-DTmtx45j.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-DTmtx45j.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs → acorex-platform-module-auth-client-tenant-chooser.component-BdOXSMVU.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-BdOXSMVU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs → acorex-platform-module-auth-client-two-factor-code.component-CxBUushO.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs.map → acorex-platform-module-auth-client-two-factor-code.component-CxBUushO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs → acorex-platform-module-auth-client-two-factor.module-DIq7MnHw.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs.map → acorex-platform-module-auth-client-two-factor.module-DIq7MnHw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs → acorex-platform-module-auth-client-view-login-history.command-Bx61ZM1U.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs.map → acorex-platform-module-auth-client-view-login-history.command-Bx61ZM1U.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs → acorex-platform-module-auth-client-welcome-onboarding-page.component-zGdD8pkX.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs.map → acorex-platform-module-auth-client-welcome-onboarding-page.component-zGdD8pkX.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs → acorex-platform-module-auth-client-welcome-onboarding.command-B5NBzcTY.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs.map → acorex-platform-module-auth-client-welcome-onboarding.command-B5NBzcTY.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
- package/package.json +2 -2
- package/types/acorex-platform-module-auth-client.d.ts +29 -2
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-master.layout-B3krDskY.mjs +0 -39
- package/fesm2022/acorex-platform-module-auth-client-master.layout-B3krDskY.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs +0 -84
- package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs.map +0 -1
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import * as i5 from '@acorex/core/translation';
|
|
2
|
-
import { AXTranslationModule } from '@acorex/core/translation';
|
|
3
|
-
import { AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';
|
|
4
|
-
import * as i1 from '@acorex-platform/framework-client/core';
|
|
5
|
-
import { AXPLogoComponent, AXPComponentSlotModule, AXPContextStore } from '@acorex-platform/framework-client/core';
|
|
6
|
-
import { AsyncPipe } from '@angular/common';
|
|
7
|
-
import * as i0 from '@angular/core';
|
|
8
|
-
import { inject, signal, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
9
|
-
import * as i6 from '@angular/router';
|
|
10
|
-
import { RouterModule } from '@angular/router';
|
|
11
|
-
import { w as AXMAuthPlatformSettingsService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
|
|
12
|
-
|
|
13
|
-
//#region ----- Auth master layout -----
|
|
14
|
-
class AXPAuthMasterLayoutComponent {
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region ----- Lifecycle -----
|
|
17
|
-
constructor() {
|
|
18
|
-
//#region ----- Services & Dependencies -----
|
|
19
|
-
this.authPlatformSettings = inject(AXMAuthPlatformSettingsService);
|
|
20
|
-
this.platformBranding = inject(AXPPlatformBrandingService);
|
|
21
|
-
this.platformTitle = signal('', /* @ts-ignore */
|
|
22
|
-
...(ngDevMode ? [{ debugName: "platformTitle" }] : /* istanbul ignore next */ []));
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region ----- Computed Properties -----
|
|
25
|
-
/** Plain string or MLS map — rendered via translate pipe. */
|
|
26
|
-
this.slogan = this.authPlatformSettings.slogan();
|
|
27
|
-
this.description = this.authPlatformSettings.description();
|
|
28
|
-
void this.platformBranding.resolvePlatformTitle().then((title) => this.platformTitle.set(title));
|
|
29
|
-
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAuthMasterLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXPAuthMasterLayoutComponent, isStandalone: true, selector: "ng-component", providers: [AXPContextStore], ngImport: i0, template: "<div class=\"w-full h-full flex overflow-hidden\">\n <div\n class=\"axp-auth-master__form-pane flex-1 min-h-0 lightest-surface dark:darker-surface overflow-y-auto px-6 sm:px-8 md:px-10 lg:px-0\"\n >\n <!-- ----- Stack: logo + form vertically centered; footer pinned below ----- -->\n <div\n class=\"axp-auth-master__stack w-full min-h-full flex flex-col items-center\"\n >\n <div\n class=\"axp-auth-master__main w-full grow flex flex-col items-center justify-center gap-5 pt-6 pb-4 sm:pt-8 lg:pt-0 lg:gap-0\"\n >\n <!-- ----- Platform branding on viewports without the side panel ----- -->\n <div class=\"axp-auth-master__brand lg:hidden shrink-0 w-full flex justify-center\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"240\"\n [attr.alt]=\"platformTitle()\"\n class=\"axp-auth-master__logo\"\n ></axp-logo>\n </div>\n <div class=\"axp-auth-master__form-body w-full flex flex-col items-center\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <div class=\"flex justify-between shrink-0 pt-2 pb-1\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"hidden lg:flex bg-primary-500 flex-1 axp-auth-bk text-white\">\n <div class=\"flex w-full flex-col justify-between px-48 py-20 text-center \">\n <div>\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n format=\"full\"\n [size]=\"280\"\n [attr.alt]=\"platformTitle()\"\n class=\"w-[280px] max-w-full mx-auto\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"font-black text-4xl mb-4\">{{ slogan | translate | async }}</p>\n <p>{{ description | translate | async }}</p>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;.axp-auth-master__form-pane{-webkit-overflow-scrolling:touch;padding-top:max(1.75rem,calc(env(safe-area-inset-top,0px) + 1.25rem));padding-bottom:max(1.5rem,env(safe-area-inset-bottom,0px))}@media(min-width:1024px){.axp-auth-master__form-pane{padding-top:3rem;padding-bottom:3rem}}.axp-auth-master__brand{padding-top:.5rem;margin-bottom:.25rem}.axp-auth-master__logo{width:min(15rem,85vw);max-width:100%}@media(min-width:640px){.axp-auth-master__logo{width:min(16.25rem,90vw)}}.axp-auth-master__form-body>*:not(router-outlet){display:block;width:100%}.auth-footer-links{gap:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.auth-footer-links a{background-color:transparent;color:var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)))}.auth-footer-links a.ax-state-selected{color:var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i1.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAuthMasterLayoutComponent, decorators: [{
|
|
34
|
-
type: Component,
|
|
35
|
-
args: [{ imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule, AXTranslationModule, AsyncPipe], providers: [AXPContextStore], changeDetection: ChangeDetectionStrategy.Eager, encapsulation: ViewEncapsulation.None, template: "<div class=\"w-full h-full flex overflow-hidden\">\n <div\n class=\"axp-auth-master__form-pane flex-1 min-h-0 lightest-surface dark:darker-surface overflow-y-auto px-6 sm:px-8 md:px-10 lg:px-0\"\n >\n <!-- ----- Stack: logo + form vertically centered; footer pinned below ----- -->\n <div\n class=\"axp-auth-master__stack w-full min-h-full flex flex-col items-center\"\n >\n <div\n class=\"axp-auth-master__main w-full grow flex flex-col items-center justify-center gap-5 pt-6 pb-4 sm:pt-8 lg:pt-0 lg:gap-0\"\n >\n <!-- ----- Platform branding on viewports without the side panel ----- -->\n <div class=\"axp-auth-master__brand lg:hidden shrink-0 w-full flex justify-center\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"240\"\n [attr.alt]=\"platformTitle()\"\n class=\"axp-auth-master__logo\"\n ></axp-logo>\n </div>\n <div class=\"axp-auth-master__form-body w-full flex flex-col items-center\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <div class=\"flex justify-between shrink-0 pt-2 pb-1\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"hidden lg:flex bg-primary-500 flex-1 axp-auth-bk text-white\">\n <div class=\"flex w-full flex-col justify-between px-48 py-20 text-center \">\n <div>\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n format=\"full\"\n [size]=\"280\"\n [attr.alt]=\"platformTitle()\"\n class=\"w-[280px] max-w-full mx-auto\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"font-black text-4xl mb-4\">{{ slogan | translate | async }}</p>\n <p>{{ description | translate | async }}</p>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;.axp-auth-master__form-pane{-webkit-overflow-scrolling:touch;padding-top:max(1.75rem,calc(env(safe-area-inset-top,0px) + 1.25rem));padding-bottom:max(1.5rem,env(safe-area-inset-bottom,0px))}@media(min-width:1024px){.axp-auth-master__form-pane{padding-top:3rem;padding-bottom:3rem}}.axp-auth-master__brand{padding-top:.5rem;margin-bottom:.25rem}.axp-auth-master__logo{width:min(15rem,85vw);max-width:100%}@media(min-width:640px){.axp-auth-master__logo{width:min(16.25rem,90vw)}}.axp-auth-master__form-body>*:not(router-outlet){display:block;width:100%}.auth-footer-links{gap:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.auth-footer-links a{background-color:transparent;color:var(--ax-comp-ink, var(--ax-comp-bg, var(--color-on-surface)))}.auth-footer-links a.ax-state-selected{color:var(--ax-comp-ink-darker, var(--ax-comp-bg-darker, var(--color-on-surface)))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
36
|
-
}], ctorParameters: () => [] });
|
|
37
|
-
|
|
38
|
-
export { AXPAuthMasterLayoutComponent };
|
|
39
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-master.layout-B3krDskY.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-auth-client-master.layout-B3krDskY.mjs","sources":["../../../../libs/modules/auth/client/src/lib/shared/layouts/master/master.layout.ts","../../../../libs/modules/auth/client/src/lib/shared/layouts/master/master.layout.html"],"sourcesContent":["import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPlatformBrandingService } from '@acorex-platform/framework-client/common';\nimport { AXPComponentSlotModule, AXPContextStore, AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, signal } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AXMAuthPlatformSettingsService } from '../../../auth-platform-settings.service';\n\n//#region ----- Auth master layout -----\n\n@Component({\n templateUrl: 'master.layout.html',\n styleUrls: ['master.layout.css'],\n imports: [RouterModule, AXPLogoComponent, AXPComponentSlotModule, AXTranslationModule, AsyncPipe],\n providers: [AXPContextStore],\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAuthMasterLayoutComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly authPlatformSettings = inject(AXMAuthPlatformSettingsService);\n private readonly platformBranding = inject(AXPPlatformBrandingService);\n\n protected readonly platformTitle = signal('');\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n void this.platformBranding.resolvePlatformTitle().then((title) => this.platformTitle.set(title));\n }\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n /** Plain string or MLS map — rendered via translate pipe. */\n protected readonly slogan = this.authPlatformSettings.slogan();\n protected readonly description = this.authPlatformSettings.description();\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"w-full h-full flex overflow-hidden\">\n <div\n class=\"axp-auth-master__form-pane flex-1 min-h-0 lightest-surface dark:darker-surface overflow-y-auto px-6 sm:px-8 md:px-10 lg:px-0\"\n >\n <!-- ----- Stack: logo + form vertically centered; footer pinned below ----- -->\n <div\n class=\"axp-auth-master__stack w-full min-h-full flex flex-col items-center\"\n >\n <div\n class=\"axp-auth-master__main w-full grow flex flex-col items-center justify-center gap-5 pt-6 pb-4 sm:pt-8 lg:pt-0 lg:gap-0\"\n >\n <!-- ----- Platform branding on viewports without the side panel ----- -->\n <div class=\"axp-auth-master__brand lg:hidden shrink-0 w-full flex justify-center\">\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onLight\"\n format=\"full\"\n [size]=\"240\"\n [attr.alt]=\"platformTitle()\"\n class=\"axp-auth-master__logo\"\n ></axp-logo>\n </div>\n <div class=\"axp-auth-master__form-body w-full flex flex-col items-center\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <div class=\"flex justify-between shrink-0 pt-2 pb-1\">\n <div class=\"auth-footer-links\">\n <axp-component-slot name=\"auth-footer-links\"></axp-component-slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"hidden lg:flex bg-primary-500 flex-1 axp-auth-bk text-white\">\n <div class=\"flex w-full flex-col justify-between px-48 py-20 text-center \">\n <div>\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n format=\"full\"\n [size]=\"280\"\n [attr.alt]=\"platformTitle()\"\n class=\"w-[280px] max-w-full mx-auto\"\n ></axp-logo>\n </div>\n <div>\n <p class=\"font-black text-4xl mb-4\">{{ slogan | translate | async }}</p>\n <p>{{ description | translate | async }}</p>\n </div>\n </div>\n </div>\n</div>\n"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;AAQA;MAUa,4BAA4B,CAAA;;;AAYvC,IAAA,WAAA,GAAA;;AATiB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,8BAA8B,CAAC;AAC7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,0BAA0B,CAAC;QAEnD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,EAAE;0FAAC;;;;AAe1B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;QATtE,KAAK,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClG;8GAdW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAJ5B,CAAC,eAAe,CAAC,0BCd9B,u/DAoDA,EAAA,MAAA,EAAA,CAAA,m4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,0FAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKrF,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;8BAGC,CAAC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,SAAS,CAAC,aACtF,CAAC,eAAe,CAAC,EAAA,eAAA,EACX,uBAAuB,CAAC,KAAK,EAAA,aAAA,EAC/B,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,u/DAAA,EAAA,MAAA,EAAA,CAAA,m4CAAA,CAAA,EAAA;;;"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import * as i1 from '@acorex/components/button';
|
|
2
|
-
import { AXButtonModule } from '@acorex/components/button';
|
|
3
|
-
import * as i5 from '@acorex/core/translation';
|
|
4
|
-
import { AXTranslationModule } from '@acorex/core/translation';
|
|
5
|
-
import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
6
|
-
import { AXPHomePageService } from '@acorex-platform/framework-client/common';
|
|
7
|
-
import { AsyncPipe } from '@angular/common';
|
|
8
|
-
import * as i0 from '@angular/core';
|
|
9
|
-
import { inject, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
10
|
-
import { Router } from '@angular/router';
|
|
11
|
-
import { firstValueFrom, filter } from 'rxjs';
|
|
12
|
-
import { x as AXPPwaInstallService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
|
|
13
|
-
|
|
14
|
-
//#region ----- Imports -----
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region ----- Component -----
|
|
17
|
-
class AXMPwaInstallComponent {
|
|
18
|
-
//#endregion
|
|
19
|
-
//#region ----- Lifecycle -----
|
|
20
|
-
constructor() {
|
|
21
|
-
//#region ----- Services & Dependencies -----
|
|
22
|
-
this.router = inject(Router);
|
|
23
|
-
this.sessionService = inject(AXPSessionService);
|
|
24
|
-
this.homePageService = inject(AXPHomePageService);
|
|
25
|
-
this.pwaInstall = inject(AXPPwaInstallService);
|
|
26
|
-
this.leavingInstalledSession = false;
|
|
27
|
-
//#endregion
|
|
28
|
-
//#region ----- Computed Properties -----
|
|
29
|
-
this.isAuthorized = this.sessionService.isAuthorized;
|
|
30
|
-
effect(() => {
|
|
31
|
-
if (this.pwaInstall.installed()) {
|
|
32
|
-
void this.leaveInstalledSession();
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
//#endregion
|
|
37
|
-
//#region ----- Event Handlers -----
|
|
38
|
-
async handleInstallClick() {
|
|
39
|
-
try {
|
|
40
|
-
await this.pwaInstall.promptInstall();
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
// Prompt can reject if the browser dismisses it; the page stays usable.
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
handleOpenAppClick() {
|
|
47
|
-
void this.leaveInstalledSession();
|
|
48
|
-
}
|
|
49
|
-
handleContinueInBrowserClick() {
|
|
50
|
-
this.pwaInstall.dismissPrompt();
|
|
51
|
-
void this.router.navigateByUrl('/auth/login');
|
|
52
|
-
}
|
|
53
|
-
//#endregion
|
|
54
|
-
//#region ----- Navigation -----
|
|
55
|
-
async leaveInstalledSession() {
|
|
56
|
-
if (this.leavingInstalledSession) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
this.leavingInstalledSession = true;
|
|
60
|
-
try {
|
|
61
|
-
await firstValueFrom(this.sessionService.isLoading$.pipe(filter((loading) => !loading)));
|
|
62
|
-
if (this.sessionService.isAuthorized && this.sessionService.application?.name) {
|
|
63
|
-
await this.homePageService.navigateTo();
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
await this.router.navigateByUrl('/auth/login');
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
await this.router.navigateByUrl('/auth/login');
|
|
70
|
-
}
|
|
71
|
-
finally {
|
|
72
|
-
this.leavingInstalledSession = false;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPwaInstallComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
76
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMPwaInstallComponent, isStandalone: true, selector: "axm-pwa-install", ngImport: i0, template: "<div class=\"axp-auth-form axp-pwa-install\">\n <div class=\"axp-pwa-install__hero\" aria-hidden=\"true\">\n <img src=\"/assets/images/ui/pwa-install.svg\" alt=\"\" width=\"200\" height=\"132\" />\n </div>\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:pwa-install.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:pwa-install.hint' | translate | async }}\n </p>\n </div>\n\n @if (pwaInstall.installed()) {\n <!-- ----- Already running as an installed app ----- -->\n <p class=\"text-sm text-neutral-600 text-center mb-4\">\n {{ '@auth:pwa-install.installed-hint' | translate | async }}\n </p>\n <ax-button\n color=\"primary\"\n class=\"w-full\"\n [text]=\"'@auth:pwa-install.open-app' | translate | async\"\n (onClick)=\"handleOpenAppClick()\"\n ></ax-button>\n }\n <!-- ----- Offer native install or platform-specific steps ----- -->\n @else {\n <ul class=\"axp-pwa-install__benefits\" [attr.aria-label]=\"'@auth:pwa-install.benefits-label' | translate | async\">\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-house text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.home-screen.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.home-screen.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-download text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.no-store.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.no-store.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-cloud-arrow-down text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.offline-shell.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.offline-shell.description' | translate | async }}\n </p>\n </div>\n </li>\n </ul>\n\n <!--------------------------------------------------------------->\n <!-- ----- Chromium native install prompt ----- -->\n @if (pwaInstall.canPrompt()) {\n <ax-button\n color=\"primary\"\n class=\"w-full mt-4 lg:mt-6\"\n [text]=\"'@auth:pwa-install.install' | translate | async\"\n (onClick)=\"handleInstallClick()\"\n ></ax-button>\n }\n <!-- ----- Safari iOS cannot use beforeinstallprompt ----- -->\n @else if (pwaInstall.ios()) {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.ios.title' | translate | async }}</p>\n <ol class=\"axp-pwa-install__ol\">\n <li>{{ '@auth:pwa-install.ios.step-share' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-add' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-confirm' | translate | async }}</li>\n </ol>\n </div>\n }\n <!-- ----- Browser has no deferred prompt (dev HMR or unsupported) ----- -->\n @else {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.manual.title' | translate | async }}</p>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.manual.description' | translate | async }}\n </p>\n </div>\n }\n\n <!--------------------------------------------------------------->\n <!-- ----- Guest-only leave path; signed-in users already have the app chrome ----- -->\n @if (!isAuthorized) {\n <ax-button\n class=\"w-full mt-2\"\n color=\"default\"\n [text]=\"'@auth:pwa-install.continue-browser' | translate | async\"\n (onClick)=\"handleContinueInBrowserClick()\"\n ></ax-button>\n }\n }\n</div>\n", styles: [":host{display:block;width:100%}.axp-auth-form{width:100%;margin-inline:auto}@media(min-width:768px){.axp-auth-form{width:24rem;max-width:100%}}.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 4);display:flex;justify-content:center}@media(width>=64rem){.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 5)}}.axp-pwa-install__hero img{width:200px;height:auto;display:block}.axp-pwa-install__benefits{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);text-align:start}.axp-pwa-install__benefit{display:flex;align-items:flex-start;gap:calc(var(--spacing, .25rem) * 3)}.axp-pwa-install__benefit>i{margin-top:calc(var(--spacing, .25rem) * .5);flex-shrink:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}.axp-pwa-install__ol{display:flex;list-style-type:decimal;flex-direction:column;gap:var(--spacing, .25rem);padding-inline-start:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-pwa-install__steps{text-align:start}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
77
|
-
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPwaInstallComponent, decorators: [{
|
|
79
|
-
type: Component,
|
|
80
|
-
args: [{ selector: 'axm-pwa-install', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXButtonModule, AXTranslationModule, AsyncPipe], template: "<div class=\"axp-auth-form axp-pwa-install\">\n <div class=\"axp-pwa-install__hero\" aria-hidden=\"true\">\n <img src=\"/assets/images/ui/pwa-install.svg\" alt=\"\" width=\"200\" height=\"132\" />\n </div>\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:pwa-install.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:pwa-install.hint' | translate | async }}\n </p>\n </div>\n\n @if (pwaInstall.installed()) {\n <!-- ----- Already running as an installed app ----- -->\n <p class=\"text-sm text-neutral-600 text-center mb-4\">\n {{ '@auth:pwa-install.installed-hint' | translate | async }}\n </p>\n <ax-button\n color=\"primary\"\n class=\"w-full\"\n [text]=\"'@auth:pwa-install.open-app' | translate | async\"\n (onClick)=\"handleOpenAppClick()\"\n ></ax-button>\n }\n <!-- ----- Offer native install or platform-specific steps ----- -->\n @else {\n <ul class=\"axp-pwa-install__benefits\" [attr.aria-label]=\"'@auth:pwa-install.benefits-label' | translate | async\">\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-house text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.home-screen.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.home-screen.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-download text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.no-store.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.no-store.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-cloud-arrow-down text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.offline-shell.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.offline-shell.description' | translate | async }}\n </p>\n </div>\n </li>\n </ul>\n\n <!--------------------------------------------------------------->\n <!-- ----- Chromium native install prompt ----- -->\n @if (pwaInstall.canPrompt()) {\n <ax-button\n color=\"primary\"\n class=\"w-full mt-4 lg:mt-6\"\n [text]=\"'@auth:pwa-install.install' | translate | async\"\n (onClick)=\"handleInstallClick()\"\n ></ax-button>\n }\n <!-- ----- Safari iOS cannot use beforeinstallprompt ----- -->\n @else if (pwaInstall.ios()) {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.ios.title' | translate | async }}</p>\n <ol class=\"axp-pwa-install__ol\">\n <li>{{ '@auth:pwa-install.ios.step-share' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-add' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-confirm' | translate | async }}</li>\n </ol>\n </div>\n }\n <!-- ----- Browser has no deferred prompt (dev HMR or unsupported) ----- -->\n @else {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.manual.title' | translate | async }}</p>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.manual.description' | translate | async }}\n </p>\n </div>\n }\n\n <!--------------------------------------------------------------->\n <!-- ----- Guest-only leave path; signed-in users already have the app chrome ----- -->\n @if (!isAuthorized) {\n <ax-button\n class=\"w-full mt-2\"\n color=\"default\"\n [text]=\"'@auth:pwa-install.continue-browser' | translate | async\"\n (onClick)=\"handleContinueInBrowserClick()\"\n ></ax-button>\n }\n }\n</div>\n", styles: [":host{display:block;width:100%}.axp-auth-form{width:100%;margin-inline:auto}@media(min-width:768px){.axp-auth-form{width:24rem;max-width:100%}}.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 4);display:flex;justify-content:center}@media(width>=64rem){.axp-pwa-install__hero{margin-bottom:calc(var(--spacing, .25rem) * 5)}}.axp-pwa-install__hero img{width:200px;height:auto;display:block}.axp-pwa-install__benefits{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);text-align:start}.axp-pwa-install__benefit{display:flex;align-items:flex-start;gap:calc(var(--spacing, .25rem) * 3)}.axp-pwa-install__benefit>i{margin-top:calc(var(--spacing, .25rem) * .5);flex-shrink:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)))}.axp-pwa-install__ol{display:flex;list-style-type:decimal;flex-direction:column;gap:var(--spacing, .25rem);padding-inline-start:calc(var(--spacing, .25rem) * 5);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-pwa-install__steps{text-align:start}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
81
|
-
}], ctorParameters: () => [] });
|
|
82
|
-
|
|
83
|
-
export { AXMPwaInstallComponent };
|
|
84
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/install/pwa-install.component.ts","../../../../libs/modules/auth/client/src/lib/pages/install/pwa-install.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPHomePageService } from '@acorex-platform/framework-client/common';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { filter, firstValueFrom } from 'rxjs';\nimport { AXPPwaInstallService } from './pwa-install.service';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-pwa-install',\n templateUrl: './pwa-install.component.html',\n styleUrls: ['./pwa-install.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXTranslationModule, AsyncPipe],\n})\nexport class AXMPwaInstallComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly router = inject(Router);\n private readonly sessionService = inject(AXPSessionService);\n private readonly homePageService = inject(AXPHomePageService);\n protected readonly pwaInstall = inject(AXPPwaInstallService);\n private leavingInstalledSession = false;\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly isAuthorized = this.sessionService.isAuthorized;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n effect(() => {\n if (this.pwaInstall.installed()) {\n void this.leaveInstalledSession();\n }\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected async handleInstallClick(): Promise<void> {\n try {\n await this.pwaInstall.promptInstall();\n } catch {\n // Prompt can reject if the browser dismisses it; the page stays usable.\n }\n }\n\n protected handleOpenAppClick(): void {\n void this.leaveInstalledSession();\n }\n\n protected handleContinueInBrowserClick(): void {\n this.pwaInstall.dismissPrompt();\n void this.router.navigateByUrl('/auth/login');\n }\n\n //#endregion\n\n //#region ----- Navigation -----\n\n private async leaveInstalledSession(): Promise<void> {\n if (this.leavingInstalledSession) {\n return;\n }\n this.leavingInstalledSession = true;\n try {\n await firstValueFrom(this.sessionService.isLoading$.pipe(filter((loading) => !loading)));\n if (this.sessionService.isAuthorized && this.sessionService.application?.name) {\n await this.homePageService.navigateTo();\n return;\n }\n await this.router.navigateByUrl('/auth/login');\n } catch {\n await this.router.navigateByUrl('/auth/login');\n } finally {\n this.leavingInstalledSession = false;\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axp-auth-form axp-pwa-install\">\n <div class=\"axp-pwa-install__hero\" aria-hidden=\"true\">\n <img src=\"/assets/images/ui/pwa-install.svg\" alt=\"\" width=\"200\" height=\"132\" />\n </div>\n <div class=\"text-center mb-3 lg:mb-5\">\n <h1 class=\"font-bold text-xl mb-1 lg:mb-2\">\n {{ '@auth:pwa-install.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600\">\n {{ '@auth:pwa-install.hint' | translate | async }}\n </p>\n </div>\n\n @if (pwaInstall.installed()) {\n <!-- ----- Already running as an installed app ----- -->\n <p class=\"text-sm text-neutral-600 text-center mb-4\">\n {{ '@auth:pwa-install.installed-hint' | translate | async }}\n </p>\n <ax-button\n color=\"primary\"\n class=\"w-full\"\n [text]=\"'@auth:pwa-install.open-app' | translate | async\"\n (onClick)=\"handleOpenAppClick()\"\n ></ax-button>\n }\n <!-- ----- Offer native install or platform-specific steps ----- -->\n @else {\n <ul class=\"axp-pwa-install__benefits\" [attr.aria-label]=\"'@auth:pwa-install.benefits-label' | translate | async\">\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-house text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.home-screen.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.home-screen.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-download text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.no-store.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.no-store.description' | translate | async }}\n </p>\n </div>\n </li>\n <li class=\"axp-pwa-install__benefit\">\n <i class=\"fa-light fa-cloud-arrow-down text-primary-500\" aria-hidden=\"true\"></i>\n <div>\n <div class=\"font-semibold\">{{ '@auth:pwa-install.benefits.offline-shell.title' | translate | async }}</div>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.benefits.offline-shell.description' | translate | async }}\n </p>\n </div>\n </li>\n </ul>\n\n <!--------------------------------------------------------------->\n <!-- ----- Chromium native install prompt ----- -->\n @if (pwaInstall.canPrompt()) {\n <ax-button\n color=\"primary\"\n class=\"w-full mt-4 lg:mt-6\"\n [text]=\"'@auth:pwa-install.install' | translate | async\"\n (onClick)=\"handleInstallClick()\"\n ></ax-button>\n }\n <!-- ----- Safari iOS cannot use beforeinstallprompt ----- -->\n @else if (pwaInstall.ios()) {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.ios.title' | translate | async }}</p>\n <ol class=\"axp-pwa-install__ol\">\n <li>{{ '@auth:pwa-install.ios.step-share' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-add' | translate | async }}</li>\n <li>{{ '@auth:pwa-install.ios.step-confirm' | translate | async }}</li>\n </ol>\n </div>\n }\n <!-- ----- Browser has no deferred prompt (dev HMR or unsupported) ----- -->\n @else {\n <div class=\"axp-pwa-install__steps mt-4 lg:mt-6\">\n <p class=\"font-semibold mb-2\">{{ '@auth:pwa-install.manual.title' | translate | async }}</p>\n <p class=\"text-sm text-neutral-600\">\n {{ '@auth:pwa-install.manual.description' | translate | async }}\n </p>\n </div>\n }\n\n <!--------------------------------------------------------------->\n <!-- ----- Guest-only leave path; signed-in users already have the app chrome ----- -->\n @if (!isAuthorized) {\n <ax-button\n class=\"w-full mt-2\"\n color=\"default\"\n [text]=\"'@auth:pwa-install.continue-browser' | translate | async\"\n (onClick)=\"handleContinueInBrowserClick()\"\n ></ax-button>\n }\n }\n</div>\n"],"names":[],"mappings":"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"}
|