@siemens/element-ng 48.5.0 → 48.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -399,11 +399,11 @@ class SiLoginSingleSignOnComponent {
399
399
  this.ssoEvent.emit();
400
400
  }
401
401
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiLoginSingleSignOnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
402
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.6", type: SiLoginSingleSignOnComponent, isStandalone: true, selector: "si-login-single-sign-on", inputs: { ssoButtonLabel: { classPropertyName: "ssoButtonLabel", publicName: "ssoButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, disableSso: { classPropertyName: "disableSso", publicName: "disableSso", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ssoEvent: "ssoEvent" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-primary mt-4 w-100\"\n [disabled]=\"disableSso()\"\n (click)=\"ssoClick()\"\n>\n {{ ssoButtonLabel() | translate }}\n</button>\n", dependencies: [{ kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
402
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.6", type: SiLoginSingleSignOnComponent, isStandalone: true, selector: "si-login-single-sign-on", inputs: { ssoButtonLabel: { classPropertyName: "ssoButtonLabel", publicName: "ssoButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, disableSso: { classPropertyName: "disableSso", publicName: "disableSso", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ssoEvent: "ssoEvent" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-primary mt-4 w-100\"\n [disabled]=\"disableSso()\"\n (click)=\"ssoClick()\"\n>\n {{ ssoButtonLabel() | translate }}\n</button>\n", dependencies: [{ kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
403
403
  }
404
404
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiLoginSingleSignOnComponent, decorators: [{
405
405
  type: Component,
406
- args: [{ selector: 'si-login-single-sign-on', imports: [SiTranslatePipe], template: "<button\n type=\"button\"\n class=\"btn btn-primary mt-4 w-100\"\n [disabled]=\"disableSso()\"\n (click)=\"ssoClick()\"\n>\n {{ ssoButtonLabel() | translate }}\n</button>\n" }]
406
+ args: [{ selector: 'si-login-single-sign-on', imports: [SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n type=\"button\"\n class=\"btn btn-primary mt-4 w-100\"\n [disabled]=\"disableSso()\"\n (click)=\"ssoClick()\"\n>\n {{ ssoButtonLabel() | translate }}\n</button>\n" }]
407
407
  }] });
408
408
 
409
409
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-landing-page.mjs","sources":["../../../../projects/element-ng/landing-page/si-landing-page.component.ts","../../../../projects/element-ng/landing-page/si-landing-page.component.html","../../../../projects/element-ng/landing-page/si-landing-page.module.ts","../../../../projects/element-ng/landing-page/login-basic/si-login-basic.component.ts","../../../../projects/element-ng/landing-page/login-basic/si-login-basic.component.html","../../../../projects/element-ng/landing-page/login-single-sign-on/si-login-single-sign-on.component.ts","../../../../projects/element-ng/landing-page/login-single-sign-on/si-login-single-sign-on.component.html","../../../../projects/element-ng/landing-page/explicit-legal-acknowledge/si-explicit-legal-acknowledge.component.ts","../../../../projects/element-ng/landing-page/explicit-legal-acknowledge/si-explicit-legal-acknowledge.component.html","../../../../projects/element-ng/landing-page/change-password/si-change-password.component.ts","../../../../projects/element-ng/landing-page/change-password/si-change-password.component.html","../../../../projects/element-ng/landing-page/index.ts","../../../../projects/element-ng/landing-page/siemens-element-ng-landing-page.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, TemplateRef, signal } from '@angular/core';\nimport { CopyrightDetails, SiCopyrightNoticeComponent } from '@siemens/element-ng/copyright-notice';\nimport { SiInlineNotificationComponent } from '@siemens/element-ng/inline-notification';\nimport {\n IsoLanguageValue,\n SiLanguageSwitcherComponent\n} from '@siemens/element-ng/language-switcher';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { AlertConfig } from './alert-config.model';\nimport { LandingPageWarning } from './si-landing-page.model';\n\n/**\n * A comprehensive landing page component that provides a standardized layout for authentication flows.\n * \n * This component serves as a container for various authentication-related components and provides\n * a consistent layout with support for branding, internationalization, legal acknowledgments,\n * and various notification types. It includes slots for custom content and handles responsive\n * layout adjustments.\n * \n * The component supports:\n * - Custom branding and background images\n * - Multi-language support with language switcher\n * - Legal acknowledgments and terms display\n * - Alert and notification systems\n * - Copyright information display\n * - Responsive layout with full-height section option\n * \n * @example\n * ```html\n * <si-landing-page\n * [heading]=\"appTitle\"\n * [subtitle]=\"appDescription\"\n * [availableLanguages]=\"languages\"\n * [copyrightDetails]=\"copyright\"\n * [announcement]=\"announcementConfig\"\n * [loginAlert]=\"loginErrorConfig\">\n * \n * <si-login-basic\n * (login)=\"handleLogin($event)\"\n * (usernameValidation)=\"validateUsername($event)\">\n * </si-login-basic>\n\n * </si-landing-page>\n * ```\n */\n@Component({\n selector: 'si-landing-page',\n imports: [\n SiCopyrightNoticeComponent,\n SiLanguageSwitcherComponent,\n SiLinkDirective,\n SiInlineNotificationComponent,\n SiTranslatePipe,\n NgTemplateOutlet\n ],\n templateUrl: './si-landing-page.component.html',\n styleUrl: './si-landing-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiLandingPageComponent {\n /**\n * Heading of the application.\n */\n readonly heading = input.required<TranslatableString>();\n /**\n * Secondary heading of the application.\n */\n readonly subheading = input<TranslatableString>();\n /**\n * Short description of the application.\n */\n readonly subtitle = input.required<TranslatableString>();\n /**\n * List of links (e.g. Corporate information)\n *\n * @defaultValue []\n */\n readonly links = input<Link[]>([]);\n\n /**\n * URL to custom background image\n *\n * @defaultValue './assets/images/landing-page-steel.webp'\n */\n readonly backgroundImageUrl = input('./assets/images/landing-page-steel.webp');\n\n /**\n * URL to custom brand image.\n *\n * @deprecated By default the logo provided in the theme will be used.\n * For a different logo use the respective CSS variables:\n * ```html\n * <si-landing-page style=\"--landing-page-logo: url('https://example.com'); --landing-page-logo-width: 100px; --landing-page-logo-height: 100px\" />\n * ```\n */\n readonly logoUrl = input<string>();\n\n /**\n * Input of si-language-switcher: Key for translation.\n * If your languages are already translated, you may display them without any\n * manipulation by passing in an empty string.\n *\n * @defaultValue 'LANGUAGE'\n */\n readonly translationKey = input('LANGUAGE');\n /**\n * Input of si-language-switcher: List of all available languages in this\n * application.\n *\n * @defaultValue []\n */\n readonly availableLanguages = input<string[] | IsoLanguageValue[]>([]);\n\n /**\n *\n * Config to enable/disable general alerts on landing page\n */\n readonly announcement = input<AlertConfig>();\n\n /**\n *\n * Config to enable/disable login related error/alerts\n */\n readonly loginAlert = input<AlertConfig>();\n\n /**\n * Warning text for Live Data. Can be shown, if there is no legal artifact which needs immediate user attention.\n */\n readonly liveDataWarning = input<LandingPageWarning>();\n /**\n * Text for some legal artifacts (e.g. Terms of Use) that needs more attention before the login.\n */\n readonly implicitLegalAcknowledge = input<string | TemplateRef<unknown>>();\n /**\n * Version of the application.\n */\n readonly version = input<string>();\n\n /**\n * Copyright information to be displayed. Alternatively, you can use the {@link SI_COPYRIGHT_DETAILS} global inject.\n */\n readonly copyrightDetails = input<CopyrightDetails>();\n /**\n * Option to display the landing page content in full height.\n *\n * @defaultValue false\n */\n readonly isFullHeightSection = signal(false);\n}\n","@let announcement = this.announcement();\n@let availableLanguages = this.availableLanguages();\n@let loginAlert = this.loginAlert();\n@let implicitLegalAcknowledge = this.implicitLegalAcknowledge();\n@let liveDataWarning = this.liveDataWarning();\n@let isFullHeightSection = this.isFullHeightSection();\n\n@if (announcement) {\n <si-inline-notification\n class=\"rounded-0\"\n [severity]=\"announcement.severity\"\n [heading]=\"announcement.heading\"\n [message]=\"announcement.message\"\n [action]=\"announcement.action\"\n [translationParams]=\"announcement.translationParams\"\n />\n}\n<div class=\"landing-page\">\n <div\n class=\"landing-page-background d-none d-md-block\"\n [style.background-image]=\"'url(' + backgroundImageUrl() + ')'\"\n >\n </div>\n <div class=\"landing-page-content\">\n <div class=\"landing-page-content-inner\">\n @if (!isFullHeightSection) {\n <div class=\"d-flex justify-content-between align-items-center pb-9\">\n @if (!logoUrl()) {\n <span role=\"img\" class=\"landing-page-logo\"></span>\n } @else {\n <img\n class=\"landing-page-logo landing-page-custom-logo\"\n [src]=\"logoUrl()\"\n [alt]=\"heading() + '\\'s Background'\"\n />\n }\n @if (availableLanguages.length > 1) {\n <div class=\"landing-page-language-switcher\">\n <si-language-switcher\n [translationKey]=\"translationKey()\"\n [availableLanguages]=\"availableLanguages\"\n />\n </div>\n }\n </div>\n }\n <div class=\"landing-page-main\">\n @if (!isFullHeightSection) {\n @if (subheading()) {\n <div class=\"si-h2\">{{ subheading() | translate }}</div>\n }\n <h1 class=\"si-h1-bold my-2\">{{ heading() | translate }}</h1>\n <div class=\"position-relative\">\n <h2 class=\"mt-10 si-h2\" [class.invisible]=\"loginAlert\">{{ subtitle() | translate }}</h2>\n @if (loginAlert) {\n <si-inline-notification\n class=\"landing-page-alert w-100\"\n [severity]=\"loginAlert.severity || 'danger'\"\n [heading]=\"loginAlert.heading\"\n [message]=\"loginAlert.message\"\n />\n }\n </div>\n }\n <div class=\"landing-page-custom-content\">\n <ng-content />\n @if (!isFullHeightSection) {\n @if (implicitLegalAcknowledge) {\n @if (typeof implicitLegalAcknowledge === 'string') {\n <div class=\"text-secondary mt-8\" [innerHTML]=\"implicitLegalAcknowledge\"></div>\n } @else {\n <div class=\"text-secondary mt-8\">\n <ng-container [ngTemplateOutlet]=\"implicitLegalAcknowledge\" />\n </div>\n }\n }\n @if (liveDataWarning) {\n <div class=\"text-secondary mt-8\">\n <div class=\"si-h5\">{{ liveDataWarning.title | translate }}</div>\n <div class=\"si-body my-4\">{{ liveDataWarning.content | translate }}</div>\n </div>\n }\n }\n </div>\n </div>\n @if (!isFullHeightSection) {\n <footer>\n <div>\n <div class=\"d-flex justify-content-start flex-row flex-wrap mt-6\">\n @for (link of links(); track $index) {\n <span>\n <a siLinkDefaultTarget=\"_blank\" class=\"si-body me-6\" [siLink]=\"link\">\n {{ link.title | translate }}\n </a>\n </span>\n }\n </div>\n <div class=\"si-caption mt-4 mb-6 text-secondary d-flex flex-wrap\">\n @if (version()) {\n <span class=\"me-6\">{{ version() }}</span>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n </div>\n </footer>\n }\n </div>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiLandingPageComponent } from './si-landing-page.component';\n\n@NgModule({\n imports: [SiLandingPageComponent],\n exports: [SiLandingPageComponent]\n})\nexport class SiLandingPageModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Component,\n input,\n OnInit,\n output,\n signal,\n DestroyRef,\n inject,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiLoadingButtonComponent } from '@siemens/element-ng/loading-spinner';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { UsernamePassword, UsernameValidationPayload } from '../si-landing-page.model';\n\n/**\n * A basic login component that supports both single-step and two-step authentication flows.\n *\n * This component provides a standard login form with username and password fields.\n * It can be configured to work in two-step mode where username validation happens first,\n * followed by password entry.\n *\n * @example\n * ```html\n * <si-login-basic\n * [forgotPasswordLink]=\"forgotPasswordLink\"\n * [registerNowLink]=\"registerNowLink\"\n * [twoStep]=\"true\"\n * [loading]=\"isLoading\"\n * (login)=\"handleLogin($event)\"\n * (usernameValidation)=\"handleUsernameValidation($event)\">\n * </si-login-basic>\n * ```\n */\n@Component({\n selector: 'si-login-basic',\n imports: [\n ReactiveFormsModule,\n SiTranslatePipe,\n SiLinkDirective,\n SiPasswordToggleComponent,\n SiLoadingButtonComponent\n ],\n templateUrl: './si-login-basic.component.html',\n styleUrl: './si-login-basic.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiLoginBasicComponent implements OnInit {\n private static idCounter = 0;\n /**\n * Label for username input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.USERNAME:Username`)\n * ```\n */\n readonly usernameLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.USERNAME:Username`));\n /**\n * Label for password input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.PASSWORD:Password`)\n * ```\n */\n readonly passwordLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.PASSWORD:Password`));\n /**\n * Config for Forgot Password link.\n */\n readonly forgotPasswordLink = input<Link>();\n /**\n * Text for register now.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.REGISTER_NOW_INTRO:Don't have an account?`)\n * ```\n */\n readonly registerNowIntroText = input(\n t(() => $localize`:@@SI_LOGIN_BASIC.REGISTER_NOW_INTRO:Don't have an account?`)\n );\n /**\n * Config for Register Now link.\n */\n readonly registerNowLink = input<Link>();\n /**\n * Label for login button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.LOGIN:Login`)\n * ```\n */\n readonly loginButtonLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.LOGIN:Login`));\n /**\n * Disables the login button.\n *\n * @defaultValue false\n */\n readonly disableLogin = input(false);\n /**\n * Enables the two-step login flow.\n *\n * @defaultValue false\n */\n readonly twoStep = input(false, { transform: booleanAttribute });\n\n /**\n * Indicates whether the login button should show a loading state.\n *\n * @defaultValue false\n */\n readonly loading = input(false);\n /**\n * Description of back button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.BACK:Back`)\n * ```\n */\n readonly backButtonLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.BACK:Back`));\n /**\n * Description of next button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.NEXT:Next`)\n * ```\n */\n readonly nextButtonLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.NEXT:Next`));\n /**\n * Emits username when user clicks on next button.\n */\n readonly usernameValidation = output<UsernameValidationPayload>();\n /**\n * Emits username and password on value change.\n */\n readonly valueChanged = output<UsernamePassword>();\n /**\n * Emits username and password on login event.\n */\n readonly login = output<UsernamePassword>();\n\n private destroyRef = inject(DestroyRef);\n protected readonly secondStepVisible = signal(false);\n protected readonly loadingNext = signal(false);\n\n private readonly index = SiLoginBasicComponent.idCounter++;\n protected usernameId = `__si-login-basic-username-${this.index}`;\n protected passwordId = `__si-login-basic-password-${this.index}`;\n\n protected loginCredentials = new FormGroup({\n username: new FormControl('', Validators.required),\n password: new FormControl('', Validators.required)\n });\n\n ngOnInit(): void {\n this.loginCredentials.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.handleValueChanges();\n });\n\n this.loginCredentials.controls.username.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.secondStepVisible() && this.goBack());\n }\n\n protected submit(): void {\n if (this.twoStep() && !this.secondStepVisible()) {\n this.validateUsername();\n return;\n }\n this.login.emit(this.getLoginFormValues());\n }\n\n protected handleValueChanges(): void {\n this.valueChanged.emit(this.getLoginFormValues());\n }\n\n protected validateUsername(): void {\n if (this.loginCredentials.controls.username.valid) {\n this.loadingNext.set(true);\n }\n const activateArgs = {\n ...this.getLoginFormValues(),\n validate: (isValid: boolean): void => {\n if (isValid) {\n this.nextStep();\n } else {\n this.loadingNext.set(false);\n this.loginCredentials.controls.username.setErrors({ invalid: true });\n }\n }\n };\n this.usernameValidation.emit(activateArgs);\n }\n\n private getLoginFormValues(): UsernamePassword {\n const { username: username, password } = this.loginCredentials.value;\n return { username: username, password };\n }\n\n protected goBack(): void {\n this.secondStepVisible.set(false);\n this.loginCredentials.controls.password.reset();\n }\n\n private nextStep(): void {\n if (this.twoStep() && !this.secondStepVisible()) {\n this.loadingNext.set(false);\n this.secondStepVisible.set(true);\n }\n }\n}\n","@let forgotPasswordLink = this.forgotPasswordLink();\n@let registerNowLink = this.registerNowLink();\n@let secondStepVisible = this.secondStepVisible();\n\n<form #loginForm [formGroup]=\"loginCredentials\" (ngSubmit)=\"submit()\">\n <div class=\"my-4\">\n <label class=\"form-label\" [for]=\"usernameId\">{{ usernameLabel() | translate }}</label>\n <input type=\"email\" class=\"form-control\" formControlName=\"username\" [id]=\"usernameId\" />\n </div>\n <div class=\"login-basic-second-step--container\" [class.active]=\"!twoStep() || secondStepVisible\">\n <div class=\"login-basic-second-step--content\">\n <div class=\"mb-4\">\n <label class=\"form-label\" [for]=\"passwordId\">{{ passwordLabel() | translate }}</label>\n <si-password-toggle #toggle>\n <input\n class=\"form-control\"\n formControlName=\"password\"\n [id]=\"passwordId\"\n [type]=\"toggle.inputType\"\n />\n </si-password-toggle>\n </div>\n @if (forgotPasswordLink) {\n <a class=\"si-h5 mb-4\" [siLink]=\"forgotPasswordLink\">{{\n forgotPasswordLink.title | translate\n }}</a>\n }\n <div class=\"d-flex align-items-center gap-6 mt-8\">\n @if (twoStep()) {\n <button type=\"button\" class=\"btn btn-secondary w-100\" (click)=\"goBack()\">\n {{ backButtonLabel() | translate }}\n </button>\n }\n <si-loading-button\n type=\"submit\"\n class=\"w-100\"\n buttonClass=\"btn btn-primary\"\n [disabled]=\"disableLogin()\"\n [loading]=\"loading()\"\n >\n {{ loginButtonLabel() | translate }}\n </si-loading-button>\n </div>\n </div>\n </div>\n @if (twoStep()) {\n <div\n class=\"login-basic-next-button--container\"\n [attr.aria-hidden]=\"secondStepVisible\"\n [class.active]=\"!secondStepVisible\"\n >\n <si-loading-button\n class=\"login-basic-next-button w-100\"\n buttonClass=\"btn btn-primary\"\n [loading]=\"loadingNext()\"\n (click)=\"validateUsername()\"\n >\n {{ nextButtonLabel() | translate }}\n </si-loading-button>\n </div>\n }\n</form>\n@if (registerNowLink) {\n <div class=\"si-body mt-8\">\n {{ registerNowIntroText() | translate }}\n <a class=\"si-h5 ms-6\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, output } from '@angular/core';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\n/**\n * A single sign-on (SSO) login component that provides a button for SSO authentication.\n *\n * This component renders a simple button that users can click to initiate\n * single sign-on authentication flow.\n *\n * @example\n * ```html\n * <si-login-single-sign-on\n * [ssoButtonLabel]=\"customLabel\"\n * [disableSso]=\"isLoading\"\n * (ssoEvent)=\"handleSsoLogin()\">\n * </si-login-single-sign-on>\n * ```\n */\n@Component({\n selector: 'si-login-single-sign-on',\n imports: [SiTranslatePipe],\n templateUrl: './si-login-single-sign-on.component.html'\n})\nexport class SiLoginSingleSignOnComponent {\n /**\n * Label for login button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP:Login / Sign un`)\n * ```\n */\n readonly ssoButtonLabel = input(\n t(() => $localize`:@@SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP:Login / Sign un`)\n );\n /**\n * Disables the sso button.\n *\n * @defaultValue false\n */\n readonly disableSso = input(false);\n /**\n * Emits username and password on login event.\n */\n readonly ssoEvent = output<void>();\n\n protected ssoClick(): void {\n this.ssoEvent.emit();\n }\n}\n","<button\n type=\"button\"\n class=\"btn btn-primary mt-4 w-100\"\n [disabled]=\"disableSso()\"\n (click)=\"ssoClick()\"\n>\n {{ ssoButtonLabel() | translate }}\n</button>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n inject,\n input,\n OnInit,\n output,\n OnDestroy,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiLandingPageComponent } from '../si-landing-page.component';\n\n/**\n * A component for displaying legal agreements that require explicit user acknowledgment.\n *\n * This component provides a standardized interface for presenting legal documents,\n * terms of service, privacy policies, or other agreements that users must\n * explicitly accept before proceeding.\n *\n * @example\n * ```html\n * <si-explicit-legal-acknowledge\n * [heading]=\"agreementTitle\"\n * [subheading]=\"agreementDescription\"\n * [disableAcceptance]=\"isProcessing\"\n * (accept)=\"handleAcceptance()\"\n * (back)=\"handleBack()\">\n * <div>\n * <h3>Terms of Service</h3>\n * <p>Please read and accept our terms before continuing.</p>\n * <ul>\n * <li>Term 1: You agree to ...</li>\n * <li>Term 2: You acknowledge ...</li>\n * </ul>\n * </div>\n * </si-explicit-legal-acknowledge>\n * ```\n */\n@Component({\n selector: 'si-explicit-legal-acknowledge',\n imports: [SiTranslatePipe],\n templateUrl: './si-explicit-legal-acknowledge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiExplicitLegalAcknowledgeComponent implements OnInit, OnDestroy {\n /**\n * Heading of the agreement.\n */\n readonly heading = input.required<TranslatableString>();\n /**\n * Short description of the agreement.\n */\n readonly subheading = input.required<TranslatableString>();\n /**\n * Label for accept button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.ACCEPT:Accept`)\n * ```\n */\n readonly acceptButtonLabel = input(\n t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.ACCEPT:Accept`)\n );\n /**\n * Description of back button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.BACK:Back`)\n * ```\n */\n readonly backButtonLabel = input(t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.BACK:Back`));\n /**\n * Disables the acceptance button.\n *\n * @defaultValue false\n */\n readonly disableAcceptance = input(false);\n /**\n * Emits end user license agreement on acceptance event.\n */\n readonly accept = output<void>();\n /**\n * Emits on back click.\n */\n readonly back = output<void>();\n /**\n * Reference to the landing page parent component.\n */\n protected landingPage = inject(SiLandingPageComponent, { skipSelf: true, optional: true });\n\n protected handleBack(): void {\n this.back.emit();\n }\n\n protected handleAccept(): void {\n this.accept.emit();\n }\n\n ngOnInit(): void {\n this.landingPage?.isFullHeightSection.set(true);\n }\n\n ngOnDestroy(): void {\n this.landingPage?.isFullHeightSection.set(false);\n }\n}\n","<div class=\"d-flex flex-column py-8 h-100\">\n <h2 class=\"si-h2 mb-4\">{{ heading() | translate }}</h2>\n <div class=\"si-body mb-6\">{{ subheading() | translate }}</div>\n\n <div tabindex=\"0\" class=\"form-control si-body text-secondary flex-grow-1 overflow-auto\">\n <ng-content />\n </div>\n <div class=\"d-flex align-items-center gap-6 mt-6\">\n <button type=\"button\" class=\"btn btn-secondary w-100\" (click)=\"handleBack()\">\n {{ backButtonLabel() | translate }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary w-100\"\n [disabled]=\"disableAcceptance()\"\n (click)=\"handleAccept()\"\n >\n {{ acceptButtonLabel() | translate }}\n </button>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n input,\n OnInit,\n output,\n TemplateRef,\n OnDestroy,\n inject,\n DestroyRef,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { SiInlineNotificationComponent } from '@siemens/element-ng/inline-notification';\nimport {\n PasswordPolicy,\n SiPasswordStrengthComponent,\n SiPasswordStrengthDirective\n} from '@siemens/element-ng/password-strength';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { AlertConfig } from '../alert-config.model';\nimport { SiLandingPageComponent } from '../si-landing-page.component';\nimport { ChangePassword } from '../si-landing-page.model';\n\n/**\n * A component for changing user passwords with strength validation and policy enforcement.\n *\n * This component provides a form for users to change their password, including\n * password strength indicators, policy validation, and confirmation fields.\n * It supports custom password policies and displays inline notifications for alerts.\n *\n * @example\n * ```html\n * <si-change-password\n * [passwordStrength]=\"passwordPolicy\"\n * [passwordPolicyContent]=\"policyTemplate\"\n * [changePasswordAlert]=\"alertConfig\"\n * (changePasswordRequested)=\"handlePasswordChange($event)\"\n * (back)=\"handleBack()\">\n * </si-change-password>\n * ```\n */\n@Component({\n selector: 'si-change-password',\n imports: [\n ReactiveFormsModule,\n SiTranslatePipe,\n SiPasswordToggleComponent,\n NgTemplateOutlet,\n SiInlineNotificationComponent,\n SiPasswordStrengthComponent,\n SiPasswordStrengthDirective\n ],\n templateUrl: './si-change-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiChangePasswordComponent implements OnInit, OnDestroy {\n private static idCounter = 0;\n /**\n * Change password heading.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE_PASSWORD:Change password`)\n * ```\n */\n readonly heading = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE_PASSWORD:Change password`)\n );\n /**\n * Short description of the action to perform.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE_FACTORY_PASSWORD:Factory set password must be changed`)\n * ```\n */\n readonly subheading = input(\n t(\n () =>\n $localize`:@@SI_CHANGE_PASSWORD.CHANGE_FACTORY_PASSWORD:Factory set password must be changed`\n )\n );\n /**\n * Label for new password input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.NEW_PASSWORD:New password`)\n * ```\n */\n readonly newPasswordLabel = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.NEW_PASSWORD:New password`)\n );\n /**\n * Label for confirm password input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CONFIRM_PASSWORD:Confirm password`)\n * ```\n */\n readonly confirmPasswordLabel = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.CONFIRM_PASSWORD:Confirm password`)\n );\n /**\n * Label for change password button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE:Change`)\n * ```\n */\n readonly changeButtonLabel = input(t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE:Change`));\n /**\n * Description of back button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.BACK:Back`)\n * ```\n */\n readonly backButtonLabel = input(t(() => $localize`:@@SI_CHANGE_PASSWORD.BACK:Back`));\n /**\n * Disables the change password button.\n *\n * @defaultValue false\n */\n readonly disableChange = input(false);\n /**\n * Title of the password policy.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.PASSWORD_POLICY:Password policy`)\n * ```\n */\n readonly passwordPolicyTitle = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.PASSWORD_POLICY:Password policy`)\n );\n /**\n * Description of the password policy requirements.\n */\n readonly passwordPolicyContent = input.required<string | TemplateRef<unknown>>();\n /**\n * Description of the password policy requirements.\n */\n readonly passwordStrength = input.required<PasswordPolicy>();\n /**\n * Config to enable/disable password related error/alerts.\n */\n readonly changePasswordAlert = input<AlertConfig>();\n /**\n * Emits password on value change.\n */\n readonly valueChanged = output<ChangePassword>();\n /**\n * Emits password on change event.\n */\n readonly changePasswordRequested = output<ChangePassword>();\n /**\n * The number indicating the number of rules which still can be met. (`-2` --\\> 2 rules are\n * still unmet, `0` --\\> all met)\n */\n readonly passwordStrengthChanged = output<number | void>();\n /**\n * Emits on back click.\n */\n readonly back = output<void>();\n /**\n * Reference to the landing page parent component.\n */\n protected landingPage = inject(SiLandingPageComponent, { skipSelf: true, optional: true });\n\n private readonly index = SiChangePasswordComponent.idCounter++;\n protected newPasswordId = `__si-change-password-new-password-${this.index}`;\n protected confirmPasswordId = `__si-change-password-confirm-password-${this.index}`;\n\n protected changePasswordForm = new FormGroup({\n newPassword: new FormControl(''),\n confirmPassword: new FormControl('')\n });\n protected passwordPolicyContentTemplate: TemplateRef<any> | null = null;\n\n private destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n this.landingPage?.isFullHeightSection.set(true);\n const passwordPolicy = this.passwordPolicyContent();\n if (passwordPolicy instanceof TemplateRef) {\n this.passwordPolicyContentTemplate = passwordPolicy;\n }\n this.changePasswordForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.handleValueChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.landingPage?.isFullHeightSection.set(false);\n }\n\n protected submit(): void {\n this.changePasswordRequested.emit(this.getPasswordFormValues());\n }\n\n protected handleValueChanges(): void {\n this.valueChanged.emit(this.getPasswordFormValues());\n }\n\n protected handlePasswordStrengthChanged(data: number | void): void {\n this.passwordStrengthChanged.emit(data);\n }\n\n private getPasswordFormValues(): ChangePassword {\n const { newPassword: newPassword, confirmPassword } = this.changePasswordForm.value;\n return { newPassword: newPassword, confirmPassword };\n }\n\n protected handleBackClick(): void {\n this.back.emit();\n this.changePasswordForm.reset();\n }\n}\n","@let changePasswordAlert = this.changePasswordAlert();\n@let passwordPolicyContent = this.passwordPolicyContent();\n\n<div class=\"d-flex flex-column justify-content-center py-8 h-100\">\n <div class=\"position-relative\">\n <h2 class=\"si-h2\" [class.invisible]=\"changePasswordAlert\">{{ heading() | translate }}</h2>\n <div class=\"si-body mb-4\" [class.invisible]=\"changePasswordAlert\">{{\n subheading() | translate\n }}</div>\n @if (changePasswordAlert) {\n <si-inline-notification\n class=\"position-absolute bottom-0 w-100\"\n [severity]=\"changePasswordAlert.severity || 'danger'\"\n [heading]=\"changePasswordAlert.heading\"\n [message]=\"changePasswordAlert.message\"\n />\n }\n </div>\n <form [formGroup]=\"changePasswordForm\" (ngSubmit)=\"submit()\">\n <div class=\"my-4\">\n <label class=\"form-label\" [for]=\"newPasswordId\">{{ newPasswordLabel() | translate }}</label>\n <si-password-strength>\n <input\n type=\"password\"\n class=\"form-control\"\n formControlName=\"newPassword\"\n [id]=\"newPasswordId\"\n [siPasswordStrength]=\"passwordStrength()\"\n (passwordStrengthChanged)=\"handlePasswordStrengthChanged($event)\"\n />\n </si-password-strength>\n </div>\n <div class=\"mb-4\">\n <label class=\"form-label\" [for]=\"confirmPasswordId\">{{\n confirmPasswordLabel() | translate\n }}</label>\n <si-password-toggle #toggleConfirmPassword>\n <input\n class=\"form-control\"\n formControlName=\"confirmPassword\"\n [id]=\"confirmPasswordId\"\n [type]=\"toggleConfirmPassword.inputType\"\n />\n </si-password-toggle>\n </div>\n <div class=\"d-flex align-items-center gap-6 mt-6\">\n <button type=\"button\" class=\"btn btn-secondary w-100 back-button\" (click)=\"handleBackClick()\">\n {{ backButtonLabel() | translate }}\n </button>\n <button type=\"submit\" class=\"btn btn-primary w-100\" [disabled]=\"disableChange()\">\n {{ changeButtonLabel() | translate }}\n </button>\n </div>\n </form>\n <div class=\"text-secondary mt-8\">\n <div class=\"si-h5\">{{ passwordPolicyTitle() | translate }}</div>\n @if (!passwordPolicyContentTemplate) {\n <div class=\"my-4\" [innerHTML]=\"passwordPolicyContent\"></div>\n } @else {\n <div class=\"my-4\">\n <ng-container [ngTemplateOutlet]=\"passwordPolicyContentTemplate\" />\n </div>\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-landing-page.module';\nexport * from './si-landing-page.component';\nexport * from './login-basic/si-login-basic.component';\nexport * from './login-single-sign-on/si-login-single-sign-on.component';\nexport * from './explicit-legal-acknowledge/si-explicit-legal-acknowledge.component';\nexport * from './change-password/si-change-password.component';\nexport * from './alert-config.model';\nexport * from './si-landing-page.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;AAGG;AAeH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;MAeU,sBAAsB,CAAA;AACjC;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAsB;AACvD;;AAEG;IACM,UAAU,GAAG,KAAK,EAAsB;AACjD;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAsB;AACxD;;;;AAIG;AACM,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAElC;;;;AAIG;AACM,IAAA,kBAAkB,GAAG,KAAK,CAAC,yCAAyC,CAAC;AAE9E;;;;;;;;AAQG;IACM,OAAO,GAAG,KAAK,EAAU;AAElC;;;;;;AAMG;AACM,IAAA,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;AAC3C;;;;;AAKG;AACM,IAAA,kBAAkB,GAAG,KAAK,CAAgC,EAAE,CAAC;AAEtE;;;AAGG;IACM,YAAY,GAAG,KAAK,EAAe;AAE5C;;;AAGG;IACM,UAAU,GAAG,KAAK,EAAe;AAE1C;;AAEG;IACM,eAAe,GAAG,KAAK,EAAsB;AACtD;;AAEG;IACM,wBAAwB,GAAG,KAAK,EAAiC;AAC1E;;AAEG;IACM,OAAO,GAAG,KAAK,EAAU;AAElC;;AAEG;IACM,gBAAgB,GAAG,KAAK,EAAoB;AACrD;;;;AAIG;AACM,IAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC;uGAxFjC,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClEnC,mjIA6GA,EAAA,MAAA,EAAA,CAAA,+9DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtDI,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,uBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,eAAe,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAC7B,eAAe,kDACf,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB;wBACP,0BAA0B;wBAC1B,2BAA2B;wBAC3B,eAAe;wBACf,6BAA6B;wBAC7B,eAAe;wBACf;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mjIAAA,EAAA,MAAA,EAAA,CAAA,+9DAAA,CAAA,EAAA;;;AEhEjD;;;AAGG;MASU,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAnB,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACtB,sBAAsB,CAAA,EAAA,CAAA;AAErB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,sBAAsB,CAAA,EAAA,CAAA;;2FAGrB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB;AACjC,iBAAA;;;ACXD;;;AAGG;AAqBH;;;;;;;;;;;;;;;;;;AAkBG;MAcU,qBAAqB,CAAA;AACxB,IAAA,OAAO,SAAS,GAAG,CAAC;AAC5B;;;;;;;AAOG;AACM,IAAA,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,CAAC;AACvF;;;;;;;AAOG;AACM,IAAA,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,CAAC;AACvF;;AAEG;IACM,kBAAkB,GAAG,KAAK,EAAQ;AAC3C;;;;;;;AAOG;AACM,IAAA,oBAAoB,GAAG,KAAK,CACnC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,2DAAA,CAA6D,CAAC,CAChF;AACD;;AAEG;IACM,eAAe,GAAG,KAAK,EAAQ;AACxC;;;;;;;AAOG;AACM,IAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,6BAAA,CAA+B,CAAC,CAAC;AACpF;;;;AAIG;AACM,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;AACpC;;;;AAIG;IACM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAEhE;;;;AAIG;AACM,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B;;;;;;;AAOG;AACM,IAAA,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,2BAAA,CAA6B,CAAC,CAAC;AACjF;;;;;;;AAOG;AACM,IAAA,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,2BAAA,CAA6B,CAAC,CAAC;AACjF;;AAEG;IACM,kBAAkB,GAAG,MAAM,EAA6B;AACjE;;AAEG;IACM,YAAY,GAAG,MAAM,EAAoB;AAClD;;AAEG;IACM,KAAK,GAAG,MAAM,EAAoB;AAEnC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACpB,IAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC;AACjC,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAE7B,IAAA,KAAK,GAAG,qBAAqB,CAAC,SAAS,EAAE;AAChD,IAAA,UAAU,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAC,KAAK,EAAE;AACtD,IAAA,UAAU,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAC,KAAK,EAAE;IAEtD,gBAAgB,GAAG,IAAI,SAAS,CAAC;QACzC,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;QAClD,QAAQ,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;AAClD,KAAA,CAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1F,IAAI,CAAC,kBAAkB,EAAE;AAC3B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;;IAGrD,MAAM,GAAA;QACd,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC/C,IAAI,CAAC,gBAAgB,EAAE;YACvB;;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;;IAGlC,kBAAkB,GAAA;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;;IAGzC,gBAAgB,GAAA;QACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;;AAE5B,QAAA,MAAM,YAAY,GAAG;YACnB,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,QAAQ,EAAE,CAAC,OAAgB,KAAU;gBACnC,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,QAAQ,EAAE;;qBACV;AACL,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;;SAGzE;AACD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;;IAGpC,kBAAkB,GAAA;AACxB,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;AACpE,QAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;;IAG/B,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE;;IAGzC,QAAQ,GAAA;QACd,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;;;uGApKzB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,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,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,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,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxDlC,k7EAoEA,EAAA,MAAA,EAAA,CAAA,81CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACnB,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB;wBACP,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,yBAAyB;wBACzB;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k7EAAA,EAAA,MAAA,EAAA,CAAA,81CAAA,CAAA,EAAA;;;AEtDjD;;;AAGG;AAIH;;;;;;;;;;;;;;AAcG;MAMU,4BAA4B,CAAA;AACvC;;;;;;;AAOG;AACM,IAAA,cAAc,GAAG,KAAK,CAC7B,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,wDAAA,CAA0D,CAAC,CAC7E;AACD;;;;AAIG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;AAClC;;AAEG;IACM,QAAQ,GAAG,MAAM,EAAQ;IAExB,QAAQ,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;uGAxBX,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BzC,mLAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDgBY,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAGd,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,yBAAyB,EAAA,OAAA,EAC1B,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,mLAAA,EAAA;;;AExB5B;;;AAGG;AAcH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAOU,mCAAmC,CAAA;AAC9C;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAsB;AACvD;;AAEG;AACM,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAsB;AAC1D;;;;;;;AAOG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAChC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,8CAAA,CAAgD,CAAC,CACnE;AACD;;;;;;;AAOG;AACM,IAAA,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,0CAAA,CAA4C,CAAC,CAAC;AAChG;;;;AAIG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;AACzC;;AAEG;IACM,MAAM,GAAG,MAAM,EAAQ;AAChC;;AAEG;IACM,IAAI,GAAG,MAAM,EAAQ;AAC9B;;AAEG;AACO,IAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEhF,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;;IAGR,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;;IAGpB,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGjD,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;;uGA7DvC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjDhD,yuBAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDwBY,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAId,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,WAChC,CAAC,eAAe,CAAC,EAAA,eAAA,EAET,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yuBAAA,EAAA;;;AE/CjD;;;AAGG;AA4BH;;;;;;;;;;;;;;;;;AAiBG;MAeU,yBAAyB,CAAA;AAC5B,IAAA,OAAO,SAAS,GAAG,CAAC;AAC5B;;;;;;;AAOG;AACM,IAAA,OAAO,GAAG,KAAK,CACtB,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,qDAAA,CAAuD,CAAC,CAC1E;AACD;;;;;;;AAOG;AACM,IAAA,UAAU,GAAG,KAAK,CACzB,CAAC,CACC,MACE,SAAS,CAAA,CAAA,kFAAA,CAAoF,CAChG,CACF;AACD;;;;;;;AAOG;AACM,IAAA,gBAAgB,GAAG,KAAK,CAC/B,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,+CAAA,CAAiD,CAAC,CACpE;AACD;;;;;;;AAOG;AACM,IAAA,oBAAoB,GAAG,KAAK,CACnC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,uDAAA,CAAyD,CAAC,CAC5E;AACD;;;;;;;AAOG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,mCAAA,CAAqC,CAAC,CAAC;AAC3F;;;;;;;AAOG;AACM,IAAA,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,+BAAA,CAAiC,CAAC,CAAC;AACrF;;;;AAIG;AACM,IAAA,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;AACrC;;;;;;;AAOG;AACM,IAAA,mBAAmB,GAAG,KAAK,CAClC,CAAC,CAAC,MAAM,SAAS,CAAA,CAAA,qDAAA,CAAuD,CAAC,CAC1E;AACD;;AAEG;AACM,IAAA,qBAAqB,GAAG,KAAK,CAAC,QAAQ,EAAiC;AAChF;;AAEG;AACM,IAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAAkB;AAC5D;;AAEG;IACM,mBAAmB,GAAG,KAAK,EAAe;AACnD;;AAEG;IACM,YAAY,GAAG,MAAM,EAAkB;AAChD;;AAEG;IACM,uBAAuB,GAAG,MAAM,EAAkB;AAC3D;;;AAGG;IACM,uBAAuB,GAAG,MAAM,EAAiB;AAC1D;;AAEG;IACM,IAAI,GAAG,MAAM,EAAQ;AAC9B;;AAEG;AACO,IAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEzE,IAAA,KAAK,GAAG,yBAAyB,CAAC,SAAS,EAAE;AACpD,IAAA,aAAa,GAAG,CAAA,kCAAA,EAAqC,IAAI,CAAC,KAAK,EAAE;AACjE,IAAA,iBAAiB,GAAG,CAAA,sCAAA,EAAyC,IAAI,CAAC,KAAK,EAAE;IAEzE,kBAAkB,GAAG,IAAI,SAAS,CAAC;AAC3C,QAAA,WAAW,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AAChC,QAAA,eAAe,EAAE,IAAI,WAAW,CAAC,EAAE;AACpC,KAAA,CAAC;IACQ,6BAA6B,GAA4B,IAAI;AAE/D,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACnD,QAAA,IAAI,cAAc,YAAY,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,6BAA6B,GAAG,cAAc;;AAErD,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC5F,IAAI,CAAC,kBAAkB,EAAE;AAC3B,SAAC,CAAC;;IAGJ,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;;IAGxC,MAAM,GAAA;QACd,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;;IAGvD,kBAAkB,GAAA;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;;AAG5C,IAAA,6BAA6B,CAAC,IAAmB,EAAA;AACzD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGjC,qBAAqB,GAAA;AAC3B,QAAA,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK;AACnF,QAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE;;IAG5C,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAChB,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;;uGApKtB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/DtC,ohFAiEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDbI,mBAAmB,w8BACnB,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,6BAA6B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,2BAA2B,iGAC3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKlB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,mBAAmB;wBACnB,eAAe;wBACf,yBAAyB;wBACzB,gBAAgB;wBAChB,6BAA6B;wBAC7B,2BAA2B;wBAC3B;qBACD,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ohFAAA,EAAA;;;AE7DjD;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-landing-page.mjs","sources":["../../../../projects/element-ng/landing-page/si-landing-page.component.ts","../../../../projects/element-ng/landing-page/si-landing-page.component.html","../../../../projects/element-ng/landing-page/si-landing-page.module.ts","../../../../projects/element-ng/landing-page/login-basic/si-login-basic.component.ts","../../../../projects/element-ng/landing-page/login-basic/si-login-basic.component.html","../../../../projects/element-ng/landing-page/login-single-sign-on/si-login-single-sign-on.component.ts","../../../../projects/element-ng/landing-page/login-single-sign-on/si-login-single-sign-on.component.html","../../../../projects/element-ng/landing-page/explicit-legal-acknowledge/si-explicit-legal-acknowledge.component.ts","../../../../projects/element-ng/landing-page/explicit-legal-acknowledge/si-explicit-legal-acknowledge.component.html","../../../../projects/element-ng/landing-page/change-password/si-change-password.component.ts","../../../../projects/element-ng/landing-page/change-password/si-change-password.component.html","../../../../projects/element-ng/landing-page/index.ts","../../../../projects/element-ng/landing-page/siemens-element-ng-landing-page.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, TemplateRef, signal } from '@angular/core';\nimport { CopyrightDetails, SiCopyrightNoticeComponent } from '@siemens/element-ng/copyright-notice';\nimport { SiInlineNotificationComponent } from '@siemens/element-ng/inline-notification';\nimport {\n IsoLanguageValue,\n SiLanguageSwitcherComponent\n} from '@siemens/element-ng/language-switcher';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { AlertConfig } from './alert-config.model';\nimport { LandingPageWarning } from './si-landing-page.model';\n\n/**\n * A comprehensive landing page component that provides a standardized layout for authentication flows.\n * \n * This component serves as a container for various authentication-related components and provides\n * a consistent layout with support for branding, internationalization, legal acknowledgments,\n * and various notification types. It includes slots for custom content and handles responsive\n * layout adjustments.\n * \n * The component supports:\n * - Custom branding and background images\n * - Multi-language support with language switcher\n * - Legal acknowledgments and terms display\n * - Alert and notification systems\n * - Copyright information display\n * - Responsive layout with full-height section option\n * \n * @example\n * ```html\n * <si-landing-page\n * [heading]=\"appTitle\"\n * [subtitle]=\"appDescription\"\n * [availableLanguages]=\"languages\"\n * [copyrightDetails]=\"copyright\"\n * [announcement]=\"announcementConfig\"\n * [loginAlert]=\"loginErrorConfig\">\n * \n * <si-login-basic\n * (login)=\"handleLogin($event)\"\n * (usernameValidation)=\"validateUsername($event)\">\n * </si-login-basic>\n\n * </si-landing-page>\n * ```\n */\n@Component({\n selector: 'si-landing-page',\n imports: [\n SiCopyrightNoticeComponent,\n SiLanguageSwitcherComponent,\n SiLinkDirective,\n SiInlineNotificationComponent,\n SiTranslatePipe,\n NgTemplateOutlet\n ],\n templateUrl: './si-landing-page.component.html',\n styleUrl: './si-landing-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiLandingPageComponent {\n /**\n * Heading of the application.\n */\n readonly heading = input.required<TranslatableString>();\n /**\n * Secondary heading of the application.\n */\n readonly subheading = input<TranslatableString>();\n /**\n * Short description of the application.\n */\n readonly subtitle = input.required<TranslatableString>();\n /**\n * List of links (e.g. Corporate information)\n *\n * @defaultValue []\n */\n readonly links = input<Link[]>([]);\n\n /**\n * URL to custom background image\n *\n * @defaultValue './assets/images/landing-page-steel.webp'\n */\n readonly backgroundImageUrl = input('./assets/images/landing-page-steel.webp');\n\n /**\n * URL to custom brand image.\n *\n * @deprecated By default the logo provided in the theme will be used.\n * For a different logo use the respective CSS variables:\n * ```html\n * <si-landing-page style=\"--landing-page-logo: url('https://example.com'); --landing-page-logo-width: 100px; --landing-page-logo-height: 100px\" />\n * ```\n */\n readonly logoUrl = input<string>();\n\n /**\n * Input of si-language-switcher: Key for translation.\n * If your languages are already translated, you may display them without any\n * manipulation by passing in an empty string.\n *\n * @defaultValue 'LANGUAGE'\n */\n readonly translationKey = input('LANGUAGE');\n /**\n * Input of si-language-switcher: List of all available languages in this\n * application.\n *\n * @defaultValue []\n */\n readonly availableLanguages = input<string[] | IsoLanguageValue[]>([]);\n\n /**\n *\n * Config to enable/disable general alerts on landing page\n */\n readonly announcement = input<AlertConfig>();\n\n /**\n *\n * Config to enable/disable login related error/alerts\n */\n readonly loginAlert = input<AlertConfig>();\n\n /**\n * Warning text for Live Data. Can be shown, if there is no legal artifact which needs immediate user attention.\n */\n readonly liveDataWarning = input<LandingPageWarning>();\n /**\n * Text for some legal artifacts (e.g. Terms of Use) that needs more attention before the login.\n */\n readonly implicitLegalAcknowledge = input<string | TemplateRef<unknown>>();\n /**\n * Version of the application.\n */\n readonly version = input<string>();\n\n /**\n * Copyright information to be displayed. Alternatively, you can use the {@link SI_COPYRIGHT_DETAILS} global inject.\n */\n readonly copyrightDetails = input<CopyrightDetails>();\n /**\n * Option to display the landing page content in full height.\n *\n * @defaultValue false\n */\n readonly isFullHeightSection = signal(false);\n}\n","@let announcement = this.announcement();\n@let availableLanguages = this.availableLanguages();\n@let loginAlert = this.loginAlert();\n@let implicitLegalAcknowledge = this.implicitLegalAcknowledge();\n@let liveDataWarning = this.liveDataWarning();\n@let isFullHeightSection = this.isFullHeightSection();\n\n@if (announcement) {\n <si-inline-notification\n class=\"rounded-0\"\n [severity]=\"announcement.severity\"\n [heading]=\"announcement.heading\"\n [message]=\"announcement.message\"\n [action]=\"announcement.action\"\n [translationParams]=\"announcement.translationParams\"\n />\n}\n<div class=\"landing-page\">\n <div\n class=\"landing-page-background d-none d-md-block\"\n [style.background-image]=\"'url(' + backgroundImageUrl() + ')'\"\n >\n </div>\n <div class=\"landing-page-content\">\n <div class=\"landing-page-content-inner\">\n @if (!isFullHeightSection) {\n <div class=\"d-flex justify-content-between align-items-center pb-9\">\n @if (!logoUrl()) {\n <span role=\"img\" class=\"landing-page-logo\"></span>\n } @else {\n <img\n class=\"landing-page-logo landing-page-custom-logo\"\n [src]=\"logoUrl()\"\n [alt]=\"heading() + '\\'s Background'\"\n />\n }\n @if (availableLanguages.length > 1) {\n <div class=\"landing-page-language-switcher\">\n <si-language-switcher\n [translationKey]=\"translationKey()\"\n [availableLanguages]=\"availableLanguages\"\n />\n </div>\n }\n </div>\n }\n <div class=\"landing-page-main\">\n @if (!isFullHeightSection) {\n @if (subheading()) {\n <div class=\"si-h2\">{{ subheading() | translate }}</div>\n }\n <h1 class=\"si-h1-bold my-2\">{{ heading() | translate }}</h1>\n <div class=\"position-relative\">\n <h2 class=\"mt-10 si-h2\" [class.invisible]=\"loginAlert\">{{ subtitle() | translate }}</h2>\n @if (loginAlert) {\n <si-inline-notification\n class=\"landing-page-alert w-100\"\n [severity]=\"loginAlert.severity || 'danger'\"\n [heading]=\"loginAlert.heading\"\n [message]=\"loginAlert.message\"\n />\n }\n </div>\n }\n <div class=\"landing-page-custom-content\">\n <ng-content />\n @if (!isFullHeightSection) {\n @if (implicitLegalAcknowledge) {\n @if (typeof implicitLegalAcknowledge === 'string') {\n <div class=\"text-secondary mt-8\" [innerHTML]=\"implicitLegalAcknowledge\"></div>\n } @else {\n <div class=\"text-secondary mt-8\">\n <ng-container [ngTemplateOutlet]=\"implicitLegalAcknowledge\" />\n </div>\n }\n }\n @if (liveDataWarning) {\n <div class=\"text-secondary mt-8\">\n <div class=\"si-h5\">{{ liveDataWarning.title | translate }}</div>\n <div class=\"si-body my-4\">{{ liveDataWarning.content | translate }}</div>\n </div>\n }\n }\n </div>\n </div>\n @if (!isFullHeightSection) {\n <footer>\n <div>\n <div class=\"d-flex justify-content-start flex-row flex-wrap mt-6\">\n @for (link of links(); track $index) {\n <span>\n <a siLinkDefaultTarget=\"_blank\" class=\"si-body me-6\" [siLink]=\"link\">\n {{ link.title | translate }}\n </a>\n </span>\n }\n </div>\n <div class=\"si-caption mt-4 mb-6 text-secondary d-flex flex-wrap\">\n @if (version()) {\n <span class=\"me-6\">{{ version() }}</span>\n }\n <si-copyright-notice [copyright]=\"copyrightDetails()\" />\n </div>\n </div>\n </footer>\n }\n </div>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiLandingPageComponent } from './si-landing-page.component';\n\n@NgModule({\n imports: [SiLandingPageComponent],\n exports: [SiLandingPageComponent]\n})\nexport class SiLandingPageModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n Component,\n input,\n OnInit,\n output,\n signal,\n DestroyRef,\n inject,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiLoadingButtonComponent } from '@siemens/element-ng/loading-spinner';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { UsernamePassword, UsernameValidationPayload } from '../si-landing-page.model';\n\n/**\n * A basic login component that supports both single-step and two-step authentication flows.\n *\n * This component provides a standard login form with username and password fields.\n * It can be configured to work in two-step mode where username validation happens first,\n * followed by password entry.\n *\n * @example\n * ```html\n * <si-login-basic\n * [forgotPasswordLink]=\"forgotPasswordLink\"\n * [registerNowLink]=\"registerNowLink\"\n * [twoStep]=\"true\"\n * [loading]=\"isLoading\"\n * (login)=\"handleLogin($event)\"\n * (usernameValidation)=\"handleUsernameValidation($event)\">\n * </si-login-basic>\n * ```\n */\n@Component({\n selector: 'si-login-basic',\n imports: [\n ReactiveFormsModule,\n SiTranslatePipe,\n SiLinkDirective,\n SiPasswordToggleComponent,\n SiLoadingButtonComponent\n ],\n templateUrl: './si-login-basic.component.html',\n styleUrl: './si-login-basic.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiLoginBasicComponent implements OnInit {\n private static idCounter = 0;\n /**\n * Label for username input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.USERNAME:Username`)\n * ```\n */\n readonly usernameLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.USERNAME:Username`));\n /**\n * Label for password input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.PASSWORD:Password`)\n * ```\n */\n readonly passwordLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.PASSWORD:Password`));\n /**\n * Config for Forgot Password link.\n */\n readonly forgotPasswordLink = input<Link>();\n /**\n * Text for register now.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.REGISTER_NOW_INTRO:Don't have an account?`)\n * ```\n */\n readonly registerNowIntroText = input(\n t(() => $localize`:@@SI_LOGIN_BASIC.REGISTER_NOW_INTRO:Don't have an account?`)\n );\n /**\n * Config for Register Now link.\n */\n readonly registerNowLink = input<Link>();\n /**\n * Label for login button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.LOGIN:Login`)\n * ```\n */\n readonly loginButtonLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.LOGIN:Login`));\n /**\n * Disables the login button.\n *\n * @defaultValue false\n */\n readonly disableLogin = input(false);\n /**\n * Enables the two-step login flow.\n *\n * @defaultValue false\n */\n readonly twoStep = input(false, { transform: booleanAttribute });\n\n /**\n * Indicates whether the login button should show a loading state.\n *\n * @defaultValue false\n */\n readonly loading = input(false);\n /**\n * Description of back button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.BACK:Back`)\n * ```\n */\n readonly backButtonLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.BACK:Back`));\n /**\n * Description of next button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_BASIC.NEXT:Next`)\n * ```\n */\n readonly nextButtonLabel = input(t(() => $localize`:@@SI_LOGIN_BASIC.NEXT:Next`));\n /**\n * Emits username when user clicks on next button.\n */\n readonly usernameValidation = output<UsernameValidationPayload>();\n /**\n * Emits username and password on value change.\n */\n readonly valueChanged = output<UsernamePassword>();\n /**\n * Emits username and password on login event.\n */\n readonly login = output<UsernamePassword>();\n\n private destroyRef = inject(DestroyRef);\n protected readonly secondStepVisible = signal(false);\n protected readonly loadingNext = signal(false);\n\n private readonly index = SiLoginBasicComponent.idCounter++;\n protected usernameId = `__si-login-basic-username-${this.index}`;\n protected passwordId = `__si-login-basic-password-${this.index}`;\n\n protected loginCredentials = new FormGroup({\n username: new FormControl('', Validators.required),\n password: new FormControl('', Validators.required)\n });\n\n ngOnInit(): void {\n this.loginCredentials.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.handleValueChanges();\n });\n\n this.loginCredentials.controls.username.valueChanges\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.secondStepVisible() && this.goBack());\n }\n\n protected submit(): void {\n if (this.twoStep() && !this.secondStepVisible()) {\n this.validateUsername();\n return;\n }\n this.login.emit(this.getLoginFormValues());\n }\n\n protected handleValueChanges(): void {\n this.valueChanged.emit(this.getLoginFormValues());\n }\n\n protected validateUsername(): void {\n if (this.loginCredentials.controls.username.valid) {\n this.loadingNext.set(true);\n }\n const activateArgs = {\n ...this.getLoginFormValues(),\n validate: (isValid: boolean): void => {\n if (isValid) {\n this.nextStep();\n } else {\n this.loadingNext.set(false);\n this.loginCredentials.controls.username.setErrors({ invalid: true });\n }\n }\n };\n this.usernameValidation.emit(activateArgs);\n }\n\n private getLoginFormValues(): UsernamePassword {\n const { username: username, password } = this.loginCredentials.value;\n return { username: username, password };\n }\n\n protected goBack(): void {\n this.secondStepVisible.set(false);\n this.loginCredentials.controls.password.reset();\n }\n\n private nextStep(): void {\n if (this.twoStep() && !this.secondStepVisible()) {\n this.loadingNext.set(false);\n this.secondStepVisible.set(true);\n }\n }\n}\n","@let forgotPasswordLink = this.forgotPasswordLink();\n@let registerNowLink = this.registerNowLink();\n@let secondStepVisible = this.secondStepVisible();\n\n<form #loginForm [formGroup]=\"loginCredentials\" (ngSubmit)=\"submit()\">\n <div class=\"my-4\">\n <label class=\"form-label\" [for]=\"usernameId\">{{ usernameLabel() | translate }}</label>\n <input type=\"email\" class=\"form-control\" formControlName=\"username\" [id]=\"usernameId\" />\n </div>\n <div class=\"login-basic-second-step--container\" [class.active]=\"!twoStep() || secondStepVisible\">\n <div class=\"login-basic-second-step--content\">\n <div class=\"mb-4\">\n <label class=\"form-label\" [for]=\"passwordId\">{{ passwordLabel() | translate }}</label>\n <si-password-toggle #toggle>\n <input\n class=\"form-control\"\n formControlName=\"password\"\n [id]=\"passwordId\"\n [type]=\"toggle.inputType\"\n />\n </si-password-toggle>\n </div>\n @if (forgotPasswordLink) {\n <a class=\"si-h5 mb-4\" [siLink]=\"forgotPasswordLink\">{{\n forgotPasswordLink.title | translate\n }}</a>\n }\n <div class=\"d-flex align-items-center gap-6 mt-8\">\n @if (twoStep()) {\n <button type=\"button\" class=\"btn btn-secondary w-100\" (click)=\"goBack()\">\n {{ backButtonLabel() | translate }}\n </button>\n }\n <si-loading-button\n type=\"submit\"\n class=\"w-100\"\n buttonClass=\"btn btn-primary\"\n [disabled]=\"disableLogin()\"\n [loading]=\"loading()\"\n >\n {{ loginButtonLabel() | translate }}\n </si-loading-button>\n </div>\n </div>\n </div>\n @if (twoStep()) {\n <div\n class=\"login-basic-next-button--container\"\n [attr.aria-hidden]=\"secondStepVisible\"\n [class.active]=\"!secondStepVisible\"\n >\n <si-loading-button\n class=\"login-basic-next-button w-100\"\n buttonClass=\"btn btn-primary\"\n [loading]=\"loadingNext()\"\n (click)=\"validateUsername()\"\n >\n {{ nextButtonLabel() | translate }}\n </si-loading-button>\n </div>\n }\n</form>\n@if (registerNowLink) {\n <div class=\"si-body mt-8\">\n {{ registerNowIntroText() | translate }}\n <a class=\"si-h5 ms-6\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\n/**\n * A single sign-on (SSO) login component that provides a button for SSO authentication.\n *\n * This component renders a simple button that users can click to initiate\n * single sign-on authentication flow.\n *\n * @example\n * ```html\n * <si-login-single-sign-on\n * [ssoButtonLabel]=\"customLabel\"\n * [disableSso]=\"isLoading\"\n * (ssoEvent)=\"handleSsoLogin()\">\n * </si-login-single-sign-on>\n * ```\n */\n@Component({\n selector: 'si-login-single-sign-on',\n imports: [SiTranslatePipe],\n templateUrl: './si-login-single-sign-on.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiLoginSingleSignOnComponent {\n /**\n * Label for login button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP:Login / Sign un`)\n * ```\n */\n readonly ssoButtonLabel = input(\n t(() => $localize`:@@SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP:Login / Sign un`)\n );\n /**\n * Disables the sso button.\n *\n * @defaultValue false\n */\n readonly disableSso = input(false);\n /**\n * Emits username and password on login event.\n */\n readonly ssoEvent = output<void>();\n\n protected ssoClick(): void {\n this.ssoEvent.emit();\n }\n}\n","<button\n type=\"button\"\n class=\"btn btn-primary mt-4 w-100\"\n [disabled]=\"disableSso()\"\n (click)=\"ssoClick()\"\n>\n {{ ssoButtonLabel() | translate }}\n</button>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n Component,\n inject,\n input,\n OnInit,\n output,\n OnDestroy,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { SiTranslatePipe, t, TranslatableString } from '@siemens/element-translate-ng/translate';\n\nimport { SiLandingPageComponent } from '../si-landing-page.component';\n\n/**\n * A component for displaying legal agreements that require explicit user acknowledgment.\n *\n * This component provides a standardized interface for presenting legal documents,\n * terms of service, privacy policies, or other agreements that users must\n * explicitly accept before proceeding.\n *\n * @example\n * ```html\n * <si-explicit-legal-acknowledge\n * [heading]=\"agreementTitle\"\n * [subheading]=\"agreementDescription\"\n * [disableAcceptance]=\"isProcessing\"\n * (accept)=\"handleAcceptance()\"\n * (back)=\"handleBack()\">\n * <div>\n * <h3>Terms of Service</h3>\n * <p>Please read and accept our terms before continuing.</p>\n * <ul>\n * <li>Term 1: You agree to ...</li>\n * <li>Term 2: You acknowledge ...</li>\n * </ul>\n * </div>\n * </si-explicit-legal-acknowledge>\n * ```\n */\n@Component({\n selector: 'si-explicit-legal-acknowledge',\n imports: [SiTranslatePipe],\n templateUrl: './si-explicit-legal-acknowledge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiExplicitLegalAcknowledgeComponent implements OnInit, OnDestroy {\n /**\n * Heading of the agreement.\n */\n readonly heading = input.required<TranslatableString>();\n /**\n * Short description of the agreement.\n */\n readonly subheading = input.required<TranslatableString>();\n /**\n * Label for accept button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.ACCEPT:Accept`)\n * ```\n */\n readonly acceptButtonLabel = input(\n t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.ACCEPT:Accept`)\n );\n /**\n * Description of back button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.BACK:Back`)\n * ```\n */\n readonly backButtonLabel = input(t(() => $localize`:@@SI_EXPLICIT_LEGAL_ACKNOWLEDGE.BACK:Back`));\n /**\n * Disables the acceptance button.\n *\n * @defaultValue false\n */\n readonly disableAcceptance = input(false);\n /**\n * Emits end user license agreement on acceptance event.\n */\n readonly accept = output<void>();\n /**\n * Emits on back click.\n */\n readonly back = output<void>();\n /**\n * Reference to the landing page parent component.\n */\n protected landingPage = inject(SiLandingPageComponent, { skipSelf: true, optional: true });\n\n protected handleBack(): void {\n this.back.emit();\n }\n\n protected handleAccept(): void {\n this.accept.emit();\n }\n\n ngOnInit(): void {\n this.landingPage?.isFullHeightSection.set(true);\n }\n\n ngOnDestroy(): void {\n this.landingPage?.isFullHeightSection.set(false);\n }\n}\n","<div class=\"d-flex flex-column py-8 h-100\">\n <h2 class=\"si-h2 mb-4\">{{ heading() | translate }}</h2>\n <div class=\"si-body mb-6\">{{ subheading() | translate }}</div>\n\n <div tabindex=\"0\" class=\"form-control si-body text-secondary flex-grow-1 overflow-auto\">\n <ng-content />\n </div>\n <div class=\"d-flex align-items-center gap-6 mt-6\">\n <button type=\"button\" class=\"btn btn-secondary w-100\" (click)=\"handleBack()\">\n {{ backButtonLabel() | translate }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary w-100\"\n [disabled]=\"disableAcceptance()\"\n (click)=\"handleAccept()\"\n >\n {{ acceptButtonLabel() | translate }}\n </button>\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n input,\n OnInit,\n output,\n TemplateRef,\n OnDestroy,\n inject,\n DestroyRef,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { SiInlineNotificationComponent } from '@siemens/element-ng/inline-notification';\nimport {\n PasswordPolicy,\n SiPasswordStrengthComponent,\n SiPasswordStrengthDirective\n} from '@siemens/element-ng/password-strength';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\nimport { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';\n\nimport { AlertConfig } from '../alert-config.model';\nimport { SiLandingPageComponent } from '../si-landing-page.component';\nimport { ChangePassword } from '../si-landing-page.model';\n\n/**\n * A component for changing user passwords with strength validation and policy enforcement.\n *\n * This component provides a form for users to change their password, including\n * password strength indicators, policy validation, and confirmation fields.\n * It supports custom password policies and displays inline notifications for alerts.\n *\n * @example\n * ```html\n * <si-change-password\n * [passwordStrength]=\"passwordPolicy\"\n * [passwordPolicyContent]=\"policyTemplate\"\n * [changePasswordAlert]=\"alertConfig\"\n * (changePasswordRequested)=\"handlePasswordChange($event)\"\n * (back)=\"handleBack()\">\n * </si-change-password>\n * ```\n */\n@Component({\n selector: 'si-change-password',\n imports: [\n ReactiveFormsModule,\n SiTranslatePipe,\n SiPasswordToggleComponent,\n NgTemplateOutlet,\n SiInlineNotificationComponent,\n SiPasswordStrengthComponent,\n SiPasswordStrengthDirective\n ],\n templateUrl: './si-change-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiChangePasswordComponent implements OnInit, OnDestroy {\n private static idCounter = 0;\n /**\n * Change password heading.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE_PASSWORD:Change password`)\n * ```\n */\n readonly heading = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE_PASSWORD:Change password`)\n );\n /**\n * Short description of the action to perform.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE_FACTORY_PASSWORD:Factory set password must be changed`)\n * ```\n */\n readonly subheading = input(\n t(\n () =>\n $localize`:@@SI_CHANGE_PASSWORD.CHANGE_FACTORY_PASSWORD:Factory set password must be changed`\n )\n );\n /**\n * Label for new password input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.NEW_PASSWORD:New password`)\n * ```\n */\n readonly newPasswordLabel = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.NEW_PASSWORD:New password`)\n );\n /**\n * Label for confirm password input field.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CONFIRM_PASSWORD:Confirm password`)\n * ```\n */\n readonly confirmPasswordLabel = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.CONFIRM_PASSWORD:Confirm password`)\n );\n /**\n * Label for change password button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE:Change`)\n * ```\n */\n readonly changeButtonLabel = input(t(() => $localize`:@@SI_CHANGE_PASSWORD.CHANGE:Change`));\n /**\n * Description of back button.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.BACK:Back`)\n * ```\n */\n readonly backButtonLabel = input(t(() => $localize`:@@SI_CHANGE_PASSWORD.BACK:Back`));\n /**\n * Disables the change password button.\n *\n * @defaultValue false\n */\n readonly disableChange = input(false);\n /**\n * Title of the password policy.\n *\n * @defaultValue\n * ```\n * t(() => $localize`:@@SI_CHANGE_PASSWORD.PASSWORD_POLICY:Password policy`)\n * ```\n */\n readonly passwordPolicyTitle = input(\n t(() => $localize`:@@SI_CHANGE_PASSWORD.PASSWORD_POLICY:Password policy`)\n );\n /**\n * Description of the password policy requirements.\n */\n readonly passwordPolicyContent = input.required<string | TemplateRef<unknown>>();\n /**\n * Description of the password policy requirements.\n */\n readonly passwordStrength = input.required<PasswordPolicy>();\n /**\n * Config to enable/disable password related error/alerts.\n */\n readonly changePasswordAlert = input<AlertConfig>();\n /**\n * Emits password on value change.\n */\n readonly valueChanged = output<ChangePassword>();\n /**\n * Emits password on change event.\n */\n readonly changePasswordRequested = output<ChangePassword>();\n /**\n * The number indicating the number of rules which still can be met. (`-2` --\\> 2 rules are\n * still unmet, `0` --\\> all met)\n */\n readonly passwordStrengthChanged = output<number | void>();\n /**\n * Emits on back click.\n */\n readonly back = output<void>();\n /**\n * Reference to the landing page parent component.\n */\n protected landingPage = inject(SiLandingPageComponent, { skipSelf: true, optional: true });\n\n private readonly index = SiChangePasswordComponent.idCounter++;\n protected newPasswordId = `__si-change-password-new-password-${this.index}`;\n protected confirmPasswordId = `__si-change-password-confirm-password-${this.index}`;\n\n protected changePasswordForm = new FormGroup({\n newPassword: new FormControl(''),\n confirmPassword: new FormControl('')\n });\n protected passwordPolicyContentTemplate: TemplateRef<any> | null = null;\n\n private destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n this.landingPage?.isFullHeightSection.set(true);\n const passwordPolicy = this.passwordPolicyContent();\n if (passwordPolicy instanceof TemplateRef) {\n this.passwordPolicyContentTemplate = passwordPolicy;\n }\n this.changePasswordForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.handleValueChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.landingPage?.isFullHeightSection.set(false);\n }\n\n protected submit(): void {\n this.changePasswordRequested.emit(this.getPasswordFormValues());\n }\n\n protected handleValueChanges(): void {\n this.valueChanged.emit(this.getPasswordFormValues());\n }\n\n protected handlePasswordStrengthChanged(data: number | void): void {\n this.passwordStrengthChanged.emit(data);\n }\n\n private getPasswordFormValues(): ChangePassword {\n const { newPassword: newPassword, confirmPassword } = this.changePasswordForm.value;\n return { newPassword: newPassword, confirmPassword };\n }\n\n protected handleBackClick(): void {\n this.back.emit();\n this.changePasswordForm.reset();\n }\n}\n","@let changePasswordAlert = this.changePasswordAlert();\n@let passwordPolicyContent = this.passwordPolicyContent();\n\n<div class=\"d-flex flex-column justify-content-center py-8 h-100\">\n <div class=\"position-relative\">\n <h2 class=\"si-h2\" [class.invisible]=\"changePasswordAlert\">{{ heading() | translate }}</h2>\n <div class=\"si-body mb-4\" [class.invisible]=\"changePasswordAlert\">{{\n subheading() | translate\n }}</div>\n @if (changePasswordAlert) {\n <si-inline-notification\n class=\"position-absolute bottom-0 w-100\"\n [severity]=\"changePasswordAlert.severity || 'danger'\"\n [heading]=\"changePasswordAlert.heading\"\n [message]=\"changePasswordAlert.message\"\n />\n }\n </div>\n <form [formGroup]=\"changePasswordForm\" (ngSubmit)=\"submit()\">\n <div class=\"my-4\">\n <label class=\"form-label\" [for]=\"newPasswordId\">{{ newPasswordLabel() | translate }}</label>\n <si-password-strength>\n <input\n type=\"password\"\n class=\"form-control\"\n formControlName=\"newPassword\"\n [id]=\"newPasswordId\"\n [siPasswordStrength]=\"passwordStrength()\"\n (passwordStrengthChanged)=\"handlePasswordStrengthChanged($event)\"\n />\n </si-password-strength>\n </div>\n <div class=\"mb-4\">\n <label class=\"form-label\" [for]=\"confirmPasswordId\">{{\n confirmPasswordLabel() | translate\n }}</label>\n <si-password-toggle #toggleConfirmPassword>\n <input\n class=\"form-control\"\n formControlName=\"confirmPassword\"\n [id]=\"confirmPasswordId\"\n [type]=\"toggleConfirmPassword.inputType\"\n />\n </si-password-toggle>\n </div>\n <div class=\"d-flex align-items-center gap-6 mt-6\">\n <button type=\"button\" class=\"btn btn-secondary w-100 back-button\" (click)=\"handleBackClick()\">\n {{ backButtonLabel() | translate }}\n </button>\n <button type=\"submit\" class=\"btn btn-primary w-100\" [disabled]=\"disableChange()\">\n {{ changeButtonLabel() | translate }}\n </button>\n </div>\n </form>\n <div class=\"text-secondary mt-8\">\n <div class=\"si-h5\">{{ passwordPolicyTitle() | translate }}</div>\n @if (!passwordPolicyContentTemplate) {\n <div class=\"my-4\" [innerHTML]=\"passwordPolicyContent\"></div>\n } @else {\n <div class=\"my-4\">\n <ng-container [ngTemplateOutlet]=\"passwordPolicyContentTemplate\" />\n </div>\n }\n </div>\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-landing-page.module';\nexport * from './si-landing-page.component';\nexport * from './login-basic/si-login-basic.component';\nexport * from './login-single-sign-on/si-login-single-sign-on.component';\nexport * from './explicit-legal-acknowledge/si-explicit-legal-acknowledge.component';\nexport * from './change-password/si-change-password.component';\nexport * from './alert-config.model';\nexport * from './si-landing-page.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { computed, input, output, Directive, contentChildren, contentChild, ElementRef, signal, Component, NgModule } from '@angular/core';
2
+ import { computed, input, output, Directive, contentChildren, contentChild, ElementRef, signal, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
3
  import { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';
4
4
  import { NG_VALIDATORS } from '@angular/forms';
5
5
 
@@ -133,7 +133,7 @@ class SiPasswordStrengthComponent {
133
133
  <si-password-toggle [showVisibilityIcon]="showVisibilityIcon()" (typeChange)="toggle($event)">
134
134
  <ng-content />
135
135
  </si-password-toggle>
136
- `, isInline: true, styles: [":host{--strength-border-radius: 0 var(--element-radius-1) var(--element-radius-1) 1px;display:block;position:relative}:host:before{background:var(--strength-background);inset-block-end:1px;content:\"\";block-size:3px;inset-inline-start:1px;position:absolute;transition:inline-size calc(.15s * var(--element-animations-enabled, 1)),background calc(.15s * var(--element-animations-enabled, 1)) ease-in-out;inline-size:calc(var(--strength-width) - 2px);border-radius:var(--strength-border-radius);z-index:1}:host.bad{--strength-background: var(--element-color-bad);--strength-width: 20%}:host.weak{--strength-background: var(--element-color-poor);--strength-width: 40%}:host.medium{--strength-background: var(--element-color-average);--strength-width: 60%}:host.good{--strength-background: var(--element-color-good);--strength-width: 80%}:host.strong{--strength-background: var(--element-color-excellent);--strength-width: 100%;--strength-border-radius: 0 0 1px 1px}\n"], dependencies: [{ kind: "component", type: SiPasswordToggleComponent, selector: "si-password-toggle", inputs: ["showVisibilityIcon", "showLabel", "hideLabel"], outputs: ["typeChange"] }] });
136
+ `, isInline: true, styles: [":host{--strength-border-radius: 0 var(--element-radius-1) var(--element-radius-1) 1px;display:block;position:relative}:host:before{background:var(--strength-background);inset-block-end:1px;content:\"\";block-size:3px;inset-inline-start:1px;position:absolute;transition:inline-size calc(.15s * var(--element-animations-enabled, 1)),background calc(.15s * var(--element-animations-enabled, 1)) ease-in-out;inline-size:calc(var(--strength-width) - 2px);border-radius:var(--strength-border-radius);z-index:1}:host.bad{--strength-background: var(--element-color-bad);--strength-width: 20%}:host.weak{--strength-background: var(--element-color-poor);--strength-width: 40%}:host.medium{--strength-background: var(--element-color-average);--strength-width: 60%}:host.good{--strength-background: var(--element-color-good);--strength-width: 80%}:host.strong{--strength-background: var(--element-color-excellent);--strength-width: 100%;--strength-border-radius: 0 0 1px 1px}\n"], dependencies: [{ kind: "component", type: SiPasswordToggleComponent, selector: "si-password-toggle", inputs: ["showVisibilityIcon", "showLabel", "hideLabel"], outputs: ["typeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
137
  }
138
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiPasswordStrengthComponent, decorators: [{
139
139
  type: Component,
@@ -141,7 +141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
141
141
  <si-password-toggle [showVisibilityIcon]="showVisibilityIcon()" (typeChange)="toggle($event)">
142
142
  <ng-content />
143
143
  </si-password-toggle>
144
- `, host: {
144
+ `, changeDetection: ChangeDetectionStrategy.OnPush, host: {
145
145
  '[class.bad]': 'bad()',
146
146
  '[class.weak]': 'weak()',
147
147
  '[class.medium]': 'medium()',
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-password-strength.mjs","sources":["../../../../projects/element-ng/password-strength/si-password-strength.directive.ts","../../../../projects/element-ng/password-strength/si-password-strength.component.ts","../../../../projects/element-ng/password-strength/si-password-strength.module.ts","../../../../projects/element-ng/password-strength/index.ts","../../../../projects/element-ng/password-strength/siemens-element-ng-password-strength.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { computed, Directive, input, output } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nconst RE_UPPER_CASE = /[A-Z]/;\nconst RE_LOWER_CASE = /[a-z]/;\nconst RE_DIGITS = /[0-9]/;\nconst RE_SPECIAL_CHARS = /[\\x21-\\x2F|\\x3A-\\x40|\\x5B-\\x60]/;\nconst RE_WHITESPACES = /\\s/;\n\nexport interface PasswordPolicy {\n /**\n * Define minimal number of characters.\n */\n minLength: number;\n /**\n * Define if uppercase characters are required in password.\n */\n uppercase: boolean;\n /**\n * Define if lowercase characters are required in password.\n */\n lowercase: boolean;\n /**\n * Define if digits are required in password.\n */\n digits: boolean;\n /**\n * Define if special characters are required in password.\n */\n special: boolean;\n /**\n * Whether to allow whitespaces. By default whitespaces are not allowed.\n */\n allowWhitespace?: boolean;\n /**\n * Minimum required policies for valid password. When set to a number greater than 0,\n * defines the number of policies that must be met for the password to be valid.\n * E.g. when set to 3 and the policies uppercase/lowercase/digits/special are all set\n * and the password contains 3 out of these four, the password will be valid.\n */\n minRequiredPolicies?: number;\n}\n\ninterface StrengthCheck {\n length: boolean;\n strength: number;\n}\n\n@Directive({\n selector: '[siPasswordStrength]',\n providers: [{ provide: NG_VALIDATORS, useExisting: SiPasswordStrengthDirective, multi: true }],\n host: {\n '[class.no-validation]': 'noValidation'\n }\n})\nexport class SiPasswordStrengthDirective implements Validator {\n private readonly maxStrength = computed(() => {\n const strength = this.siPasswordStrength();\n return (\n 1 +\n (strength.uppercase ? 1 : 0) +\n (strength.lowercase ? 1 : 0) +\n (strength.digits ? 1 : 0) +\n (strength.special ? 1 : 0)\n );\n });\n\n protected noValidation = false;\n\n /**\n * Define Siemens password strength.\n *\n * @defaultValue\n * ```\n * {\n * minLength: 8,\n * uppercase: true,\n * lowercase: true,\n * digits: true,\n * special: true\n * }\n * ```\n */\n readonly siPasswordStrength = input<PasswordPolicy>({\n minLength: 8,\n uppercase: true,\n lowercase: true,\n digits: true,\n special: true\n });\n\n /**\n * Output callback event called when the password changes. The number\n * indicated the number of rules which still can be met. (`-2` --\\> 2 rules are\n * still unmet, `0` --\\> all met)\n */\n readonly passwordStrengthChanged = output<number | void>();\n\n /** @internal */\n validate(control: AbstractControl): ValidationErrors {\n const strength = this.getStrength(control.value);\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const requiredStrength = this.siPasswordStrength().minRequiredPolicies || this.maxStrength();\n if (strength.length && strength.strength >= requiredStrength) {\n return {};\n }\n return { siPasswordStrength: true };\n }\n\n private getStrength(password: string): StrengthCheck {\n const policy = this.siPasswordStrength();\n if (!password) {\n this.noValidation = false;\n this.passwordStrengthChanged.emit();\n return { length: false, strength: 0 };\n }\n\n let strength = 0;\n // Strength check\n const length = password.length >= policy.minLength;\n strength += length ? 1 : 0;\n strength += policy.uppercase && password.match(RE_UPPER_CASE) ? 1 : 0;\n strength += policy.lowercase && password.match(RE_LOWER_CASE) ? 1 : 0;\n strength += policy.digits && password.match(RE_DIGITS) ? 1 : 0;\n strength += policy.special && password.match(RE_SPECIAL_CHARS) ? 1 : 0;\n if (policy.allowWhitespace !== true) {\n strength = password.match(RE_WHITESPACES) ? 0 : strength;\n }\n this.noValidation = true;\n // Notify listeners\n this.passwordStrengthChanged.emit(strength - this.maxStrength());\n return { length, strength };\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n AfterViewInit,\n Component,\n contentChild,\n contentChildren,\n ElementRef,\n input,\n signal\n} from '@angular/core';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\n\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@Component({\n selector: 'si-password-strength',\n imports: [SiPasswordToggleComponent],\n template: `\n <si-password-toggle [showVisibilityIcon]=\"showVisibilityIcon()\" (typeChange)=\"toggle($event)\">\n <ng-content />\n </si-password-toggle>\n `,\n styleUrl: './si-password-strength.component.scss',\n host: {\n '[class.bad]': 'bad()',\n '[class.weak]': 'weak()',\n '[class.medium]': 'medium()',\n '[class.good]': 'good()',\n '[class.strong]': 'strong()'\n }\n})\nexport class SiPasswordStrengthComponent implements AfterViewInit {\n /**\n * Whether to show the visibility toggle icon.\n *\n * @defaultValue true\n */\n readonly showVisibilityIcon = input(true);\n\n private readonly passwordStrengthDirective = contentChildren(SiPasswordStrengthDirective);\n private readonly passwordInput = contentChild.required<\n SiPasswordStrengthDirective,\n ElementRef<HTMLInputElement>\n >(SiPasswordStrengthDirective, { read: ElementRef<HTMLInputElement> });\n\n protected readonly bad = signal(false);\n protected readonly weak = signal(false);\n protected readonly medium = signal(false);\n protected readonly good = signal(false);\n protected readonly strong = signal(false);\n\n protected toggle(type: string): void {\n this.passwordInput().nativeElement.type = type;\n }\n\n ngAfterViewInit(): void {\n this.passwordStrengthDirective().forEach(directive => {\n directive.passwordStrengthChanged.subscribe((strength: number | void) => {\n this.strong.set(strength === 0);\n this.good.set(strength === -1);\n this.medium.set(strength === -2);\n this.weak.set(strength === -3);\n this.bad.set(strength === -4);\n });\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPasswordStrengthComponent } from './si-password-strength.component';\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@NgModule({\n imports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective],\n exports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective]\n})\nexport class SiPasswordStrengthModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-password-strength.component';\nexport * from './si-password-strength.directive';\nexport * from './si-password-strength.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-password-strength.mjs","sources":["../../../../projects/element-ng/password-strength/si-password-strength.directive.ts","../../../../projects/element-ng/password-strength/si-password-strength.component.ts","../../../../projects/element-ng/password-strength/si-password-strength.module.ts","../../../../projects/element-ng/password-strength/index.ts","../../../../projects/element-ng/password-strength/siemens-element-ng-password-strength.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { computed, Directive, input, output } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nconst RE_UPPER_CASE = /[A-Z]/;\nconst RE_LOWER_CASE = /[a-z]/;\nconst RE_DIGITS = /[0-9]/;\nconst RE_SPECIAL_CHARS = /[\\x21-\\x2F|\\x3A-\\x40|\\x5B-\\x60]/;\nconst RE_WHITESPACES = /\\s/;\n\nexport interface PasswordPolicy {\n /**\n * Define minimal number of characters.\n */\n minLength: number;\n /**\n * Define if uppercase characters are required in password.\n */\n uppercase: boolean;\n /**\n * Define if lowercase characters are required in password.\n */\n lowercase: boolean;\n /**\n * Define if digits are required in password.\n */\n digits: boolean;\n /**\n * Define if special characters are required in password.\n */\n special: boolean;\n /**\n * Whether to allow whitespaces. By default whitespaces are not allowed.\n */\n allowWhitespace?: boolean;\n /**\n * Minimum required policies for valid password. When set to a number greater than 0,\n * defines the number of policies that must be met for the password to be valid.\n * E.g. when set to 3 and the policies uppercase/lowercase/digits/special are all set\n * and the password contains 3 out of these four, the password will be valid.\n */\n minRequiredPolicies?: number;\n}\n\ninterface StrengthCheck {\n length: boolean;\n strength: number;\n}\n\n@Directive({\n selector: '[siPasswordStrength]',\n providers: [{ provide: NG_VALIDATORS, useExisting: SiPasswordStrengthDirective, multi: true }],\n host: {\n '[class.no-validation]': 'noValidation'\n }\n})\nexport class SiPasswordStrengthDirective implements Validator {\n private readonly maxStrength = computed(() => {\n const strength = this.siPasswordStrength();\n return (\n 1 +\n (strength.uppercase ? 1 : 0) +\n (strength.lowercase ? 1 : 0) +\n (strength.digits ? 1 : 0) +\n (strength.special ? 1 : 0)\n );\n });\n\n protected noValidation = false;\n\n /**\n * Define Siemens password strength.\n *\n * @defaultValue\n * ```\n * {\n * minLength: 8,\n * uppercase: true,\n * lowercase: true,\n * digits: true,\n * special: true\n * }\n * ```\n */\n readonly siPasswordStrength = input<PasswordPolicy>({\n minLength: 8,\n uppercase: true,\n lowercase: true,\n digits: true,\n special: true\n });\n\n /**\n * Output callback event called when the password changes. The number\n * indicated the number of rules which still can be met. (`-2` --\\> 2 rules are\n * still unmet, `0` --\\> all met)\n */\n readonly passwordStrengthChanged = output<number | void>();\n\n /** @internal */\n validate(control: AbstractControl): ValidationErrors {\n const strength = this.getStrength(control.value);\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const requiredStrength = this.siPasswordStrength().minRequiredPolicies || this.maxStrength();\n if (strength.length && strength.strength >= requiredStrength) {\n return {};\n }\n return { siPasswordStrength: true };\n }\n\n private getStrength(password: string): StrengthCheck {\n const policy = this.siPasswordStrength();\n if (!password) {\n this.noValidation = false;\n this.passwordStrengthChanged.emit();\n return { length: false, strength: 0 };\n }\n\n let strength = 0;\n // Strength check\n const length = password.length >= policy.minLength;\n strength += length ? 1 : 0;\n strength += policy.uppercase && password.match(RE_UPPER_CASE) ? 1 : 0;\n strength += policy.lowercase && password.match(RE_LOWER_CASE) ? 1 : 0;\n strength += policy.digits && password.match(RE_DIGITS) ? 1 : 0;\n strength += policy.special && password.match(RE_SPECIAL_CHARS) ? 1 : 0;\n if (policy.allowWhitespace !== true) {\n strength = password.match(RE_WHITESPACES) ? 0 : strength;\n }\n this.noValidation = true;\n // Notify listeners\n this.passwordStrengthChanged.emit(strength - this.maxStrength());\n return { length, strength };\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n contentChildren,\n ElementRef,\n input,\n signal\n} from '@angular/core';\nimport { SiPasswordToggleComponent } from '@siemens/element-ng/password-toggle';\n\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@Component({\n selector: 'si-password-strength',\n imports: [SiPasswordToggleComponent],\n template: `\n <si-password-toggle [showVisibilityIcon]=\"showVisibilityIcon()\" (typeChange)=\"toggle($event)\">\n <ng-content />\n </si-password-toggle>\n `,\n styleUrl: './si-password-strength.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bad]': 'bad()',\n '[class.weak]': 'weak()',\n '[class.medium]': 'medium()',\n '[class.good]': 'good()',\n '[class.strong]': 'strong()'\n }\n})\nexport class SiPasswordStrengthComponent implements AfterViewInit {\n /**\n * Whether to show the visibility toggle icon.\n *\n * @defaultValue true\n */\n readonly showVisibilityIcon = input(true);\n\n private readonly passwordStrengthDirective = contentChildren(SiPasswordStrengthDirective);\n private readonly passwordInput = contentChild.required<\n SiPasswordStrengthDirective,\n ElementRef<HTMLInputElement>\n >(SiPasswordStrengthDirective, { read: ElementRef<HTMLInputElement> });\n\n protected readonly bad = signal(false);\n protected readonly weak = signal(false);\n protected readonly medium = signal(false);\n protected readonly good = signal(false);\n protected readonly strong = signal(false);\n\n protected toggle(type: string): void {\n this.passwordInput().nativeElement.type = type;\n }\n\n ngAfterViewInit(): void {\n this.passwordStrengthDirective().forEach(directive => {\n directive.passwordStrengthChanged.subscribe((strength: number | void) => {\n this.strong.set(strength === 0);\n this.good.set(strength === -1);\n this.medium.set(strength === -2);\n this.weak.set(strength === -3);\n this.bad.set(strength === -4);\n });\n });\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiPasswordStrengthComponent } from './si-password-strength.component';\nimport { SiPasswordStrengthDirective } from './si-password-strength.directive';\n\n@NgModule({\n imports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective],\n exports: [SiPasswordStrengthComponent, SiPasswordStrengthDirective]\n})\nexport class SiPasswordStrengthModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-password-strength.component';\nexport * from './si-password-strength.directive';\nexport * from './si-password-strength.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { NgClass } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { input, numberAttribute, booleanAttribute, computed, Component } from '@angular/core';
3
+ import { input, numberAttribute, booleanAttribute, computed, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { SiIconComponent } from '@siemens/element-ng/icon';
5
5
 
6
6
  /**
@@ -28,11 +28,11 @@ class SiStatusCounterComponent {
28
28
  disabled = input(false, { transform: booleanAttribute });
29
29
  isDisabledOrCountZero = computed(() => !!this.disabled() || this.count() === 0);
30
30
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiStatusCounterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiStatusCounterComponent, isStandalone: true, selector: "si-status-counter, si-icon-status", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, stackedIcon: { classPropertyName: "stackedIcon", publicName: "stackedIcon", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let iconValue = icon();\n<span class=\"icon icon-stack\">\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? undefined : color()\"\n [class.inactive]=\"isDisabledOrCountZero()\"\n [icon]=\"iconValue\"\n />\n @let stackedValue = stackedIcon();\n @if (stackedValue) {\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? 'inactive-contrast' : color() + '-contrast'\"\n [icon]=\"stackedValue\"\n />\n }\n</span>\n@if (!disabled()) {\n <span>{{ count() }}</span>\n}\n", styles: [":host{display:flex;align-items:center;flex-direction:column;text-align:center;gap:4px}.inactive{color:var(--element-ui-3)}.inactive-contrast{color:var(--element-ui-5)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: SiStatusCounterComponent, isStandalone: true, selector: "si-status-counter, si-icon-status", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, stackedIcon: { classPropertyName: "stackedIcon", publicName: "stackedIcon", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let iconValue = icon();\n<span class=\"icon icon-stack\">\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? undefined : color()\"\n [class.inactive]=\"isDisabledOrCountZero()\"\n [icon]=\"iconValue\"\n />\n @let stackedValue = stackedIcon();\n @if (stackedValue) {\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? 'inactive-contrast' : color() + '-contrast'\"\n [icon]=\"stackedValue\"\n />\n }\n</span>\n@if (!disabled()) {\n <span>{{ count() }}</span>\n}\n", styles: [":host{display:flex;align-items:center;flex-direction:column;text-align:center;gap:4px}.inactive{color:var(--element-ui-3)}.inactive-contrast{color:var(--element-ui-5)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SiStatusCounterComponent, decorators: [{
34
34
  type: Component,
35
- args: [{ selector: 'si-status-counter, si-icon-status', imports: [NgClass, SiIconComponent], template: "@let iconValue = icon();\n<span class=\"icon icon-stack\">\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? undefined : color()\"\n [class.inactive]=\"isDisabledOrCountZero()\"\n [icon]=\"iconValue\"\n />\n @let stackedValue = stackedIcon();\n @if (stackedValue) {\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? 'inactive-contrast' : color() + '-contrast'\"\n [icon]=\"stackedValue\"\n />\n }\n</span>\n@if (!disabled()) {\n <span>{{ count() }}</span>\n}\n", styles: [":host{display:flex;align-items:center;flex-direction:column;text-align:center;gap:4px}.inactive{color:var(--element-ui-3)}.inactive-contrast{color:var(--element-ui-5)}\n"] }]
35
+ args: [{ selector: 'si-status-counter, si-icon-status', imports: [NgClass, SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let iconValue = icon();\n<span class=\"icon icon-stack\">\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? undefined : color()\"\n [class.inactive]=\"isDisabledOrCountZero()\"\n [icon]=\"iconValue\"\n />\n @let stackedValue = stackedIcon();\n @if (stackedValue) {\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? 'inactive-contrast' : color() + '-contrast'\"\n [icon]=\"stackedValue\"\n />\n }\n</span>\n@if (!disabled()) {\n <span>{{ count() }}</span>\n}\n", styles: [":host{display:flex;align-items:center;flex-direction:column;text-align:center;gap:4px}.inactive{color:var(--element-ui-3)}.inactive-contrast{color:var(--element-ui-5)}\n"] }]
36
36
  }] });
37
37
 
38
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-status-counter.mjs","sources":["../../../../projects/element-ng/status-counter/si-status-counter.component.ts","../../../../projects/element-ng/status-counter/si-status-counter.component.html","../../../../projects/element-ng/status-counter/index.ts","../../../../projects/element-ng/status-counter/siemens-element-ng-status-counter.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport { booleanAttribute, Component, computed, input, numberAttribute } from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\n\n@Component({\n selector: 'si-status-counter, si-icon-status',\n imports: [NgClass, SiIconComponent],\n templateUrl: './si-status-counter.component.html',\n styleUrl: './si-status-counter.component.scss'\n})\nexport class SiStatusCounterComponent {\n /** Icon to display. */\n readonly icon = input.required<string>();\n /** Stacked icon to display. */\n readonly stackedIcon = input<string>();\n /**\n * Counter below the icon\n *\n * @defaultValue 0\n */\n readonly count = input(0, { transform: numberAttribute });\n /** Color of the icon */\n readonly color = input<string>();\n /**\n * Whether the icon is disabled.\n *\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly isDisabledOrCountZero = computed(() => !!this.disabled() || this.count() === 0);\n}\n","@let iconValue = icon();\n<span class=\"icon icon-stack\">\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? undefined : color()\"\n [class.inactive]=\"isDisabledOrCountZero()\"\n [icon]=\"iconValue\"\n />\n @let stackedValue = stackedIcon();\n @if (stackedValue) {\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? 'inactive-contrast' : color() + '-contrast'\"\n [icon]=\"stackedValue\"\n />\n }\n</span>\n@if (!disabled()) {\n <span>{{ count() }}</span>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-status-counter.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MAWU,wBAAwB,CAAA;;AAE1B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAU;;IAE/B,WAAW,GAAG,KAAK,EAAU;AACtC;;;;AAIG;IACM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;;IAEhD,KAAK,GAAG,KAAK,EAAU;AAChC;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAExD,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;uGApB7E,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECdrC,+eAkBA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRY,OAAO,oFAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIvB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,EAAA,OAAA,EACpC,CAAC,OAAO,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,+eAAA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA;;;AEVrC;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-status-counter.mjs","sources":["../../../../projects/element-ng/status-counter/si-status-counter.component.ts","../../../../projects/element-ng/status-counter/si-status-counter.component.html","../../../../projects/element-ng/status-counter/index.ts","../../../../projects/element-ng/status-counter/siemens-element-ng-status-counter.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nimport { NgClass } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\nimport { SiIconComponent } from '@siemens/element-ng/icon';\n\n@Component({\n selector: 'si-status-counter, si-icon-status',\n imports: [NgClass, SiIconComponent],\n templateUrl: './si-status-counter.component.html',\n styleUrl: './si-status-counter.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SiStatusCounterComponent {\n /** Icon to display. */\n readonly icon = input.required<string>();\n /** Stacked icon to display. */\n readonly stackedIcon = input<string>();\n /**\n * Counter below the icon\n *\n * @defaultValue 0\n */\n readonly count = input(0, { transform: numberAttribute });\n /** Color of the icon */\n readonly color = input<string>();\n /**\n * Whether the icon is disabled.\n *\n * @defaultValue false\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly isDisabledOrCountZero = computed(() => !!this.disabled() || this.count() === 0);\n}\n","@let iconValue = icon();\n<span class=\"icon icon-stack\">\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? undefined : color()\"\n [class.inactive]=\"isDisabledOrCountZero()\"\n [icon]=\"iconValue\"\n />\n @let stackedValue = stackedIcon();\n @if (stackedValue) {\n <si-icon\n [ngClass]=\"isDisabledOrCountZero() ? 'inactive-contrast' : color() + '-contrast'\"\n [icon]=\"stackedValue\"\n />\n }\n</span>\n@if (!disabled()) {\n <span>{{ count() }}</span>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2025\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-status-counter.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;;;AAGG;MAmBU,wBAAwB,CAAA;;AAE1B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAU;;IAE/B,WAAW,GAAG,KAAK,EAAU;AACtC;;;;AAIG;IACM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;;IAEhD,KAAK,GAAG,KAAK,EAAU;AAChC;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAExD,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;uGApB7E,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBrC,+eAkBA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,OAAO,oFAAE,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKvB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,mCAAmC,EAAA,OAAA,EACpC,CAAC,OAAO,EAAE,eAAe,CAAC,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+eAAA,EAAA,MAAA,EAAA,CAAA,2KAAA,CAAA,EAAA;;;AEpBjD;;;AAGG;;ACHH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@siemens/element-ng",
3
3
  "description": "Element Angular component library, implementing the Siemens Design Language",
4
- "version": "48.5.0",
4
+ "version": "48.5.2",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -30,8 +30,8 @@
30
30
  "@angular/router": "20",
31
31
  "@ngx-formly/bootstrap": "^6.2.2",
32
32
  "@ngx-formly/core": "^6.2.2",
33
- "@siemens/element-translate-ng": "48.5.0",
34
- "@siemens/element-theme": "48.5.0",
33
+ "@siemens/element-translate-ng": "48.5.2",
34
+ "@siemens/element-theme": "48.5.2",
35
35
  "@siemens/ngx-datatable": "22 - 24",
36
36
  "flag-icons": "^7.3.2",
37
37
  "google-libphonenumber": "^3.2.40",
@@ -71,14 +71,14 @@
71
71
  "types": "./accordion/index.d.ts",
72
72
  "default": "./fesm2022/siemens-element-ng-accordion.mjs"
73
73
  },
74
- "./action-modal": {
75
- "types": "./action-modal/index.d.ts",
76
- "default": "./fesm2022/siemens-element-ng-action-modal.mjs"
77
- },
78
74
  "./about": {
79
75
  "types": "./about/index.d.ts",
80
76
  "default": "./fesm2022/siemens-element-ng-about.mjs"
81
77
  },
78
+ "./action-modal": {
79
+ "types": "./action-modal/index.d.ts",
80
+ "default": "./fesm2022/siemens-element-ng-action-modal.mjs"
81
+ },
82
82
  "./application-header": {
83
83
  "types": "./application-header/index.d.ts",
84
84
  "default": "./fesm2022/siemens-element-ng-application-header.mjs"
@@ -111,14 +111,14 @@
111
111
  "types": "./card/index.d.ts",
112
112
  "default": "./fesm2022/siemens-element-ng-card.mjs"
113
113
  },
114
- "./circle-status": {
115
- "types": "./circle-status/index.d.ts",
116
- "default": "./fesm2022/siemens-element-ng-circle-status.mjs"
117
- },
118
114
  "./chat-messages": {
119
115
  "types": "./chat-messages/index.d.ts",
120
116
  "default": "./fesm2022/siemens-element-ng-chat-messages.mjs"
121
117
  },
118
+ "./circle-status": {
119
+ "types": "./circle-status/index.d.ts",
120
+ "default": "./fesm2022/siemens-element-ng-circle-status.mjs"
121
+ },
122
122
  "./color-picker": {
123
123
  "types": "./color-picker/index.d.ts",
124
124
  "default": "./fesm2022/siemens-element-ng-color-picker.mjs"
@@ -175,14 +175,14 @@
175
175
  "types": "./filter-bar/index.d.ts",
176
176
  "default": "./fesm2022/siemens-element-ng-filter-bar.mjs"
177
177
  },
178
- "./filtered-search": {
179
- "types": "./filtered-search/index.d.ts",
180
- "default": "./fesm2022/siemens-element-ng-filtered-search.mjs"
181
- },
182
178
  "./footer": {
183
179
  "types": "./footer/index.d.ts",
184
180
  "default": "./fesm2022/siemens-element-ng-footer.mjs"
185
181
  },
182
+ "./filtered-search": {
183
+ "types": "./filtered-search/index.d.ts",
184
+ "default": "./fesm2022/siemens-element-ng-filtered-search.mjs"
185
+ },
186
186
  "./form": {
187
187
  "types": "./form/index.d.ts",
188
188
  "default": "./fesm2022/siemens-element-ng-form.mjs"
@@ -251,14 +251,14 @@
251
251
  "types": "./markdown-renderer/index.d.ts",
252
252
  "default": "./fesm2022/siemens-element-ng-markdown-renderer.mjs"
253
253
  },
254
- "./modal": {
255
- "types": "./modal/index.d.ts",
256
- "default": "./fesm2022/siemens-element-ng-modal.mjs"
257
- },
258
254
  "./menu": {
259
255
  "types": "./menu/index.d.ts",
260
256
  "default": "./fesm2022/siemens-element-ng-menu.mjs"
261
257
  },
258
+ "./modal": {
259
+ "types": "./modal/index.d.ts",
260
+ "default": "./fesm2022/siemens-element-ng-modal.mjs"
261
+ },
262
262
  "./navbar": {
263
263
  "types": "./navbar/index.d.ts",
264
264
  "default": "./fesm2022/siemens-element-ng-navbar.mjs"
@@ -53,6 +53,9 @@ export const scssMigrationRule = (_options) => {
53
53
  }
54
54
  const scssFiles = await discoverSourceFiles(tree, context, _options.path, '.scss');
55
55
  for (const filePath of scssFiles) {
56
+ if (filePath.match(/node_modules/)) {
57
+ continue;
58
+ }
56
59
  const content = tree.readText(filePath);
57
60
  if (content.includes(STYLE_REPLACEMENTS[0].replace) ||
58
61
  content.includes(STYLE_REPLACEMENTS[1].replace)) {