@siemens/element-ng 49.0.0 → 49.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/fesm2022/siemens-element-ng-accordion.mjs +2 -2
  2. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-application-header.mjs +12 -4
  4. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-chat-messages.mjs +5 -5
  6. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-common.mjs +2 -2
  8. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-dashboard.mjs +16 -20
  10. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-datatable.mjs +2 -1
  12. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-datepicker.mjs +1 -1
  14. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-file-uploader.mjs +0 -1
  16. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-filtered-search.mjs +94 -103
  18. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-formly.mjs +2 -2
  20. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-landing-page.mjs +19 -5
  22. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +2 -2
  24. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-select.mjs +2 -2
  26. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-side-panel.mjs +2 -2
  28. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-tabs.mjs +67 -5
  30. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-typeahead.mjs +83 -23
  33. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  34. package/package.json +4 -4
  35. package/schematics/utils/ts-compiler-host.js +3 -0
  36. package/template-i18n.json +2 -0
  37. package/types/siemens-element-ng-application-header.d.ts +1 -0
  38. package/types/siemens-element-ng-common.d.ts +1 -1
  39. package/types/siemens-element-ng-dashboard.d.ts +13 -14
  40. package/types/siemens-element-ng-datatable.d.ts +1 -0
  41. package/types/siemens-element-ng-file-uploader.d.ts +2 -2
  42. package/types/siemens-element-ng-filtered-search.d.ts +3 -9
  43. package/types/siemens-element-ng-form.d.ts +1 -1
  44. package/types/siemens-element-ng-landing-page.d.ts +6 -0
  45. package/types/siemens-element-ng-tabs.d.ts +51 -2
  46. package/types/siemens-element-ng-translate.d.ts +2 -0
  47. package/types/siemens-element-ng-typeahead.d.ts +36 -4
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, signal, ChangeDetectionStrategy, Component, NgModule, booleanAttribute, output, inject, DestroyRef, TemplateRef } from '@angular/core';
2
+ import { input, signal, ChangeDetectionStrategy, Component, NgModule, booleanAttribute, output, inject, DestroyRef, computed, TemplateRef } from '@angular/core';
3
3
  import { NgTemplateOutlet } from '@angular/common';
4
4
  import { SiCopyrightNoticeComponent } from '@siemens/element-ng/copyright-notice';
5
5
  import { SiInlineNotificationComponent } from '@siemens/element-ng/inline-notification';
@@ -134,7 +134,7 @@ class SiLandingPageComponent {
134
134
  */
135
135
  isFullHeightSection = signal(false, ...(ngDevMode ? [{ debugName: "isFullHeightSection" }] : []));
136
136
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiLandingPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
137
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiLandingPageComponent, isStandalone: true, selector: "si-landing-page", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, subheading: { classPropertyName: "subheading", publicName: "subheading", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: true, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, backgroundImageUrl: { classPropertyName: "backgroundImageUrl", publicName: "backgroundImageUrl", isSignal: true, isRequired: false, transformFunction: null }, logoUrl: { classPropertyName: "logoUrl", publicName: "logoUrl", isSignal: true, isRequired: false, transformFunction: null }, translationKey: { classPropertyName: "translationKey", publicName: "translationKey", isSignal: true, isRequired: false, transformFunction: null }, availableLanguages: { classPropertyName: "availableLanguages", publicName: "availableLanguages", isSignal: true, isRequired: false, transformFunction: null }, announcement: { classPropertyName: "announcement", publicName: "announcement", isSignal: true, isRequired: false, transformFunction: null }, loginAlert: { classPropertyName: "loginAlert", publicName: "loginAlert", isSignal: true, isRequired: false, transformFunction: null }, liveDataWarning: { classPropertyName: "liveDataWarning", publicName: "liveDataWarning", isSignal: true, isRequired: false, transformFunction: null }, implicitLegalAcknowledge: { classPropertyName: "implicitLegalAcknowledge", publicName: "implicitLegalAcknowledge", isSignal: true, isRequired: false, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: false, transformFunction: null }, copyrightDetails: { classPropertyName: "copyrightDetails", publicName: "copyrightDetails", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@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", styles: [":host{display:flex;flex-direction:column;block-size:100%;padding-block-start:calc(var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px))}.landing-page{display:flex;flex-direction:row-reverse;flex-grow:1}.landing-page-background{background-size:cover;background-position:center;inline-size:60%}.landing-page-content{block-size:100vh;overflow-y:auto;inline-size:40%;background-color:var(--element-base-0);padding-block:32px 32px;padding-inline:96px}.landing-page-content:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-content-inner{block-size:100%;min-block-size:min-content;display:flex;flex-direction:column;justify-content:space-between}.landing-page-main:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-logo{block-size:var(--landing-page-logo-height, var(--element-brand-logo-height));inline-size:var(--landing-page-logo-width, var(--element-brand-logo-width));content:var(--landing-page-logo, var(--element-brand-logo))/var(--element-brand-logo-text);box-sizing:content-box}.landing-page-custom-logo{block-size:var(--landing-page-logo-height);inline-size:var(--landing-page-logo-width, 180px);content:none}.landing-page-alert{position:absolute;inset-block-end:-20px}.landing-page-custom-content{margin-block:28px;margin-inline:0}.landing-page-custom-content:has(si-explicit-legal-acknowledge,si-change-password){margin-block:0;block-size:100%}.landing-page-links a{font-size:12px}footer{color:var(--element-text-secondary);overflow:auto}@media(max-width:1199.98px){.landing-page-background{padding:64px}.landing-page-content{padding-block:32px 32px;padding-inline:64px}}@media(max-width:991.98px){.landing-page-background{padding:32px}.landing-page-content{padding-block:32px 32px;padding-inline:32px}}@media(max-width:767.98px){.landing-page{flex-direction:column}.landing-page-custom-logo{transform:scale(.6);transform-origin:top left}.landing-page-content{inline-size:100%;flex-grow:1;padding:32px}}\n"], dependencies: [{ kind: "component", type: SiCopyrightNoticeComponent, selector: "si-copyright-notice", inputs: ["copyright"] }, { kind: "component", type: SiLanguageSwitcherComponent, selector: "si-language-switcher", inputs: ["translationKey", "languageSwitcherLabel", "availableLanguages"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiInlineNotificationComponent, selector: "si-inline-notification", inputs: ["severity", "heading", "message", "action", "translationParams", "embedded"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiLandingPageComponent, isStandalone: true, selector: "si-landing-page", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, subheading: { classPropertyName: "subheading", publicName: "subheading", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: true, transformFunction: null }, links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, backgroundImageUrl: { classPropertyName: "backgroundImageUrl", publicName: "backgroundImageUrl", isSignal: true, isRequired: false, transformFunction: null }, logoUrl: { classPropertyName: "logoUrl", publicName: "logoUrl", isSignal: true, isRequired: false, transformFunction: null }, translationKey: { classPropertyName: "translationKey", publicName: "translationKey", isSignal: true, isRequired: false, transformFunction: null }, availableLanguages: { classPropertyName: "availableLanguages", publicName: "availableLanguages", isSignal: true, isRequired: false, transformFunction: null }, announcement: { classPropertyName: "announcement", publicName: "announcement", isSignal: true, isRequired: false, transformFunction: null }, loginAlert: { classPropertyName: "loginAlert", publicName: "loginAlert", isSignal: true, isRequired: false, transformFunction: null }, liveDataWarning: { classPropertyName: "liveDataWarning", publicName: "liveDataWarning", isSignal: true, isRequired: false, transformFunction: null }, implicitLegalAcknowledge: { classPropertyName: "implicitLegalAcknowledge", publicName: "implicitLegalAcknowledge", isSignal: true, isRequired: false, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: false, transformFunction: null }, copyrightDetails: { classPropertyName: "copyrightDetails", publicName: "copyrightDetails", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@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 [action]=\"loginAlert.action\"\n [translationParams]=\"loginAlert.translationParams\"\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", styles: [":host{display:flex;flex-direction:column;block-size:100%;padding-block-start:calc(var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px))}.landing-page{display:flex;flex-direction:row-reverse;flex-grow:1}.landing-page-background{background-size:cover;background-position:center;inline-size:60%}.landing-page-content{block-size:100vh;overflow-y:auto;inline-size:40%;background-color:var(--element-base-0);padding-block:32px 32px;padding-inline:96px}.landing-page-content:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-content-inner{block-size:100%;min-block-size:min-content;display:flex;flex-direction:column;justify-content:space-between}.landing-page-main:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-logo{block-size:var(--landing-page-logo-height, var(--element-brand-logo-height));inline-size:var(--landing-page-logo-width, var(--element-brand-logo-width));content:var(--landing-page-logo, var(--element-brand-logo))/var(--element-brand-logo-text);box-sizing:content-box}.landing-page-custom-logo{block-size:var(--landing-page-logo-height);inline-size:var(--landing-page-logo-width, 180px);content:none}.landing-page-alert{position:absolute;inset-block-end:-20px}.landing-page-custom-content{margin-block:28px;margin-inline:0}.landing-page-custom-content:has(si-explicit-legal-acknowledge,si-change-password){margin-block:0;block-size:100%}.landing-page-links a{font-size:12px}footer{color:var(--element-text-secondary);overflow:auto}@media(max-width:1199.98px){.landing-page-background{padding:64px}.landing-page-content{padding-block:32px 32px;padding-inline:64px}}@media(max-width:991.98px){.landing-page-background{padding:32px}.landing-page-content{padding-block:32px 32px;padding-inline:32px}}@media(max-width:767.98px){.landing-page{flex-direction:column}.landing-page-custom-logo{transform:scale(.6);transform-origin:top left}.landing-page-content{inline-size:100%;flex-grow:1;padding:32px}}\n"], dependencies: [{ kind: "component", type: SiCopyrightNoticeComponent, selector: "si-copyright-notice", inputs: ["copyright"] }, { kind: "component", type: SiLanguageSwitcherComponent, selector: "si-language-switcher", inputs: ["translationKey", "languageSwitcherLabel", "availableLanguages"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiInlineNotificationComponent, selector: "si-inline-notification", inputs: ["severity", "heading", "message", "action", "translationParams", "embedded"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
138
138
  }
139
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiLandingPageComponent, decorators: [{
140
140
  type: Component,
@@ -145,7 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
145
145
  SiInlineNotificationComponent,
146
146
  SiTranslatePipe,
147
147
  NgTemplateOutlet
148
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@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", styles: [":host{display:flex;flex-direction:column;block-size:100%;padding-block-start:calc(var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px))}.landing-page{display:flex;flex-direction:row-reverse;flex-grow:1}.landing-page-background{background-size:cover;background-position:center;inline-size:60%}.landing-page-content{block-size:100vh;overflow-y:auto;inline-size:40%;background-color:var(--element-base-0);padding-block:32px 32px;padding-inline:96px}.landing-page-content:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-content-inner{block-size:100%;min-block-size:min-content;display:flex;flex-direction:column;justify-content:space-between}.landing-page-main:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-logo{block-size:var(--landing-page-logo-height, var(--element-brand-logo-height));inline-size:var(--landing-page-logo-width, var(--element-brand-logo-width));content:var(--landing-page-logo, var(--element-brand-logo))/var(--element-brand-logo-text);box-sizing:content-box}.landing-page-custom-logo{block-size:var(--landing-page-logo-height);inline-size:var(--landing-page-logo-width, 180px);content:none}.landing-page-alert{position:absolute;inset-block-end:-20px}.landing-page-custom-content{margin-block:28px;margin-inline:0}.landing-page-custom-content:has(si-explicit-legal-acknowledge,si-change-password){margin-block:0;block-size:100%}.landing-page-links a{font-size:12px}footer{color:var(--element-text-secondary);overflow:auto}@media(max-width:1199.98px){.landing-page-background{padding:64px}.landing-page-content{padding-block:32px 32px;padding-inline:64px}}@media(max-width:991.98px){.landing-page-background{padding:32px}.landing-page-content{padding-block:32px 32px;padding-inline:32px}}@media(max-width:767.98px){.landing-page{flex-direction:column}.landing-page-custom-logo{transform:scale(.6);transform-origin:top left}.landing-page-content{inline-size:100%;flex-grow:1;padding:32px}}\n"] }]
148
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@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 [action]=\"loginAlert.action\"\n [translationParams]=\"loginAlert.translationParams\"\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", styles: [":host{display:flex;flex-direction:column;block-size:100%;padding-block-start:calc(var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px))}.landing-page{display:flex;flex-direction:row-reverse;flex-grow:1}.landing-page-background{background-size:cover;background-position:center;inline-size:60%}.landing-page-content{block-size:100vh;overflow-y:auto;inline-size:40%;background-color:var(--element-base-0);padding-block:32px 32px;padding-inline:96px}.landing-page-content:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-content-inner{block-size:100%;min-block-size:min-content;display:flex;flex-direction:column;justify-content:space-between}.landing-page-main:has(si-explicit-legal-acknowledge,si-change-password){block-size:100%}.landing-page-logo{block-size:var(--landing-page-logo-height, var(--element-brand-logo-height));inline-size:var(--landing-page-logo-width, var(--element-brand-logo-width));content:var(--landing-page-logo, var(--element-brand-logo))/var(--element-brand-logo-text);box-sizing:content-box}.landing-page-custom-logo{block-size:var(--landing-page-logo-height);inline-size:var(--landing-page-logo-width, 180px);content:none}.landing-page-alert{position:absolute;inset-block-end:-20px}.landing-page-custom-content{margin-block:28px;margin-inline:0}.landing-page-custom-content:has(si-explicit-legal-acknowledge,si-change-password){margin-block:0;block-size:100%}.landing-page-links a{font-size:12px}footer{color:var(--element-text-secondary);overflow:auto}@media(max-width:1199.98px){.landing-page-background{padding:64px}.landing-page-content{padding-block:32px 32px;padding-inline:64px}}@media(max-width:991.98px){.landing-page-background{padding:32px}.landing-page-content{padding-block:32px 32px;padding-inline:32px}}@media(max-width:767.98px){.landing-page{flex-direction:column}.landing-page-custom-logo{transform:scale(.6);transform-origin:top left}.landing-page-content{inline-size:100%;flex-grow:1;padding:32px}}\n"] }]
149
149
  }], propDecorators: { heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: true }] }], subheading: [{ type: i0.Input, args: [{ isSignal: true, alias: "subheading", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: true }] }], links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: false }] }], backgroundImageUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundImageUrl", required: false }] }], logoUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoUrl", required: false }] }], translationKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "translationKey", required: false }] }], availableLanguages: [{ type: i0.Input, args: [{ isSignal: true, alias: "availableLanguages", required: false }] }], announcement: [{ type: i0.Input, args: [{ isSignal: true, alias: "announcement", required: false }] }], loginAlert: [{ type: i0.Input, args: [{ isSignal: true, alias: "loginAlert", required: false }] }], liveDataWarning: [{ type: i0.Input, args: [{ isSignal: true, alias: "liveDataWarning", required: false }] }], implicitLegalAcknowledge: [{ type: i0.Input, args: [{ isSignal: true, alias: "implicitLegalAcknowledge", required: false }] }], version: [{ type: i0.Input, args: [{ isSignal: true, alias: "version", required: false }] }], copyrightDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyrightDetails", required: false }] }] } });
150
150
 
151
151
  /**
@@ -210,10 +210,12 @@ class SiLoginBasicComponent {
210
210
  passwordLabel = input(t(() => $localize `:@@SI_LOGIN_BASIC.PASSWORD:Password`), ...(ngDevMode ? [{ debugName: "passwordLabel" }] : []));
211
211
  /**
212
212
  * Config for Forgot Password link.
213
+ * If `title` is omitted, a default translated label is used.
213
214
  */
214
215
  forgotPasswordLink = input(...(ngDevMode ? [undefined, { debugName: "forgotPasswordLink" }] : []));
215
216
  /**
216
217
  * Config for Register Now link.
218
+ * If `title` is omitted, a default translated label is used.
217
219
  */
218
220
  registerNowLink = input(...(ngDevMode ? [undefined, { debugName: "registerNowLink" }] : []));
219
221
  /**
@@ -276,6 +278,16 @@ class SiLoginBasicComponent {
276
278
  destroyRef = inject(DestroyRef);
277
279
  secondStepVisible = signal(false, ...(ngDevMode ? [{ debugName: "secondStepVisible" }] : []));
278
280
  loadingNext = signal(false, ...(ngDevMode ? [{ debugName: "loadingNext" }] : []));
281
+ defaultForgotPasswordTitle = t(() => $localize `:@@SI_LOGIN_BASIC.FORGOT_PASSWORD:Forgot password`);
282
+ defaultRegisterNowTitle = t(() => $localize `:@@SI_LOGIN_BASIC.REGISTER_NOW:Register now`);
283
+ effectiveForgotPasswordLink = computed(() => {
284
+ const link = this.forgotPasswordLink();
285
+ return !!link && link.title ? link : { ...link, title: this.defaultForgotPasswordTitle };
286
+ }, ...(ngDevMode ? [{ debugName: "effectiveForgotPasswordLink" }] : []));
287
+ effectiveRegisterNowLink = computed(() => {
288
+ const link = this.registerNowLink();
289
+ return !!link && link.title ? link : { ...link, title: this.defaultRegisterNowTitle };
290
+ }, ...(ngDevMode ? [{ debugName: "effectiveRegisterNowLink" }] : []));
279
291
  index = SiLoginBasicComponent.idCounter++;
280
292
  usernameId = `__si-login-basic-username-${this.index}`;
281
293
  passwordId = `__si-login-basic-password-${this.index}`;
@@ -334,7 +346,7 @@ class SiLoginBasicComponent {
334
346
  }
335
347
  }
336
348
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiLoginBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
337
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiLoginBasicComponent, isStandalone: true, selector: "si-login-basic", inputs: { usernameLabel: { classPropertyName: "usernameLabel", publicName: "usernameLabel", isSignal: true, isRequired: false, transformFunction: null }, passwordLabel: { classPropertyName: "passwordLabel", publicName: "passwordLabel", isSignal: true, isRequired: false, transformFunction: null }, forgotPasswordLink: { classPropertyName: "forgotPasswordLink", publicName: "forgotPasswordLink", isSignal: true, isRequired: false, transformFunction: null }, registerNowLink: { classPropertyName: "registerNowLink", publicName: "registerNowLink", isSignal: true, isRequired: false, transformFunction: null }, loginButtonLabel: { classPropertyName: "loginButtonLabel", publicName: "loginButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, disableLogin: { classPropertyName: "disableLogin", publicName: "disableLogin", isSignal: true, isRequired: false, transformFunction: null }, twoStep: { classPropertyName: "twoStep", publicName: "twoStep", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, backButtonLabel: { classPropertyName: "backButtonLabel", publicName: "backButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, nextButtonLabel: { classPropertyName: "nextButtonLabel", publicName: "nextButtonLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { usernameValidation: "usernameValidation", valueChanged: "valueChanged", login: "login" }, ngImport: i0, template: "@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 <a class=\"si-h5\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n", styles: [":host{--animation-duration: calc(.25s * var(--element-animations-enabled, 1));--animation-delay: calc(var(--animation-duration) / 2)}.login-basic-second-step--container,.login-basic-next-button--container{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--animation-duration) ease}.login-basic-second-step--container.active,.login-basic-next-button--container.active{grid-template-rows:1fr}.login-basic-second-step--container.active .login-basic-second-step--content,.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-second-step--content,.login-basic-next-button--container.active .login-basic-next-button{visibility:visible;opacity:1;transform:translateY(0)}.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-next-button{margin-block-start:8px}.toggle-content-transition,.login-basic-next-button,.login-basic-second-step--content{min-block-size:0;transition:opacity var(--animation-duration) var(--animation-delay) ease-in,transform var(--animation-duration) var(--animation-delay) ease-out;visibility:hidden;opacity:0}.login-basic-second-step--content{transform:translateY(-6px)}.login-basic-next-button{margin-block-start:0;transform:translateY(6px);transition:margin var(--animation-duration) ease}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiPasswordToggleComponent, selector: "si-password-toggle", inputs: ["showVisibilityIcon", "showLabel", "hideLabel"], outputs: ["typeChange"] }, { kind: "component", type: SiLoadingButtonComponent, selector: "si-loading-button", inputs: ["disabled", "loading", "type", "ariaLabel", "ariaLabelledBy", "buttonClass"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
349
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiLoginBasicComponent, isStandalone: true, selector: "si-login-basic", inputs: { usernameLabel: { classPropertyName: "usernameLabel", publicName: "usernameLabel", isSignal: true, isRequired: false, transformFunction: null }, passwordLabel: { classPropertyName: "passwordLabel", publicName: "passwordLabel", isSignal: true, isRequired: false, transformFunction: null }, forgotPasswordLink: { classPropertyName: "forgotPasswordLink", publicName: "forgotPasswordLink", isSignal: true, isRequired: false, transformFunction: null }, registerNowLink: { classPropertyName: "registerNowLink", publicName: "registerNowLink", isSignal: true, isRequired: false, transformFunction: null }, loginButtonLabel: { classPropertyName: "loginButtonLabel", publicName: "loginButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, disableLogin: { classPropertyName: "disableLogin", publicName: "disableLogin", isSignal: true, isRequired: false, transformFunction: null }, twoStep: { classPropertyName: "twoStep", publicName: "twoStep", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, backButtonLabel: { classPropertyName: "backButtonLabel", publicName: "backButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, nextButtonLabel: { classPropertyName: "nextButtonLabel", publicName: "nextButtonLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { usernameValidation: "usernameValidation", valueChanged: "valueChanged", login: "login" }, host: { attributes: { "animate.enter": "component-enter" } }, ngImport: i0, template: "@let forgotPasswordLink = this.effectiveForgotPasswordLink();\n@let registerNowLink = this.effectiveRegisterNowLink();\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 <a class=\"si-h5\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n", styles: [":host{--animation-duration: calc(.25s * var(--element-animations-enabled, 1));--animation-delay: calc(var(--animation-duration) / 2)}:host.component-enter{--animation-duration: 0s}.login-basic-second-step--container,.login-basic-next-button--container{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--animation-duration) ease}.login-basic-second-step--container.active,.login-basic-next-button--container.active{grid-template-rows:1fr}.login-basic-second-step--container.active .login-basic-second-step--content,.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-second-step--content,.login-basic-next-button--container.active .login-basic-next-button{visibility:visible;opacity:1;transform:translateY(0)}.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-next-button{margin-block-start:8px}.toggle-content-transition,.login-basic-next-button,.login-basic-second-step--content{min-block-size:0;transition:opacity var(--animation-duration) var(--animation-delay) ease-in,transform var(--animation-duration) var(--animation-delay) ease-out;visibility:hidden;opacity:0}.login-basic-second-step--content{transform:translateY(-6px)}.login-basic-next-button{margin-block-start:0;transform:translateY(6px);transition:margin var(--animation-duration) ease}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiPasswordToggleComponent, selector: "si-password-toggle", inputs: ["showVisibilityIcon", "showLabel", "hideLabel"], outputs: ["typeChange"] }, { kind: "component", type: SiLoadingButtonComponent, selector: "si-loading-button", inputs: ["disabled", "loading", "type", "ariaLabel", "ariaLabelledBy", "buttonClass"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
338
350
  }
339
351
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiLoginBasicComponent, decorators: [{
340
352
  type: Component,
@@ -344,7 +356,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
344
356
  SiLinkDirective,
345
357
  SiPasswordToggleComponent,
346
358
  SiLoadingButtonComponent
347
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@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 <a class=\"si-h5\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n", styles: [":host{--animation-duration: calc(.25s * var(--element-animations-enabled, 1));--animation-delay: calc(var(--animation-duration) / 2)}.login-basic-second-step--container,.login-basic-next-button--container{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--animation-duration) ease}.login-basic-second-step--container.active,.login-basic-next-button--container.active{grid-template-rows:1fr}.login-basic-second-step--container.active .login-basic-second-step--content,.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-second-step--content,.login-basic-next-button--container.active .login-basic-next-button{visibility:visible;opacity:1;transform:translateY(0)}.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-next-button{margin-block-start:8px}.toggle-content-transition,.login-basic-next-button,.login-basic-second-step--content{min-block-size:0;transition:opacity var(--animation-duration) var(--animation-delay) ease-in,transform var(--animation-duration) var(--animation-delay) ease-out;visibility:hidden;opacity:0}.login-basic-second-step--content{transform:translateY(-6px)}.login-basic-next-button{margin-block-start:0;transform:translateY(6px);transition:margin var(--animation-duration) ease}\n"] }]
359
+ ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
360
+ 'animate.enter': 'component-enter'
361
+ }, template: "@let forgotPasswordLink = this.effectiveForgotPasswordLink();\n@let registerNowLink = this.effectiveRegisterNowLink();\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 <a class=\"si-h5\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n", styles: [":host{--animation-duration: calc(.25s * var(--element-animations-enabled, 1));--animation-delay: calc(var(--animation-duration) / 2)}:host.component-enter{--animation-duration: 0s}.login-basic-second-step--container,.login-basic-next-button--container{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--animation-duration) ease}.login-basic-second-step--container.active,.login-basic-next-button--container.active{grid-template-rows:1fr}.login-basic-second-step--container.active .login-basic-second-step--content,.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-second-step--content,.login-basic-next-button--container.active .login-basic-next-button{visibility:visible;opacity:1;transform:translateY(0)}.login-basic-second-step--container.active .login-basic-next-button,.login-basic-next-button--container.active .login-basic-next-button{margin-block-start:8px}.toggle-content-transition,.login-basic-next-button,.login-basic-second-step--content{min-block-size:0;transition:opacity var(--animation-duration) var(--animation-delay) ease-in,transform var(--animation-duration) var(--animation-delay) ease-out;visibility:hidden;opacity:0}.login-basic-second-step--content{transform:translateY(-6px)}.login-basic-next-button{margin-block-start:0;transform:translateY(6px);transition:margin var(--animation-duration) ease}\n"] }]
348
362
  }], propDecorators: { usernameLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "usernameLabel", required: false }] }], passwordLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "passwordLabel", required: false }] }], forgotPasswordLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "forgotPasswordLink", required: false }] }], registerNowLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "registerNowLink", required: false }] }], loginButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "loginButtonLabel", required: false }] }], disableLogin: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableLogin", required: false }] }], twoStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "twoStep", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], backButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "backButtonLabel", required: false }] }], nextButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextButtonLabel", required: false }] }], usernameValidation: [{ type: i0.Output, args: ["usernameValidation"] }], valueChanged: [{ type: i0.Output, args: ["valueChanged"] }], login: [{ type: i0.Output, args: ["login"] }] } });
349
363
 
350
364
  /**
@@ -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 - 2026\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 - 2026\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 - 2026\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 * 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 <a class=\"si-h5\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\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 - 2026\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 - 2026\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 - 2026\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
+ {"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 - 2026\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 [action]=\"loginAlert.action\"\n [translationParams]=\"loginAlert.translationParams\"\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 - 2026\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 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n OnInit,\n output,\n signal\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 host: {\n 'animate.enter': 'component-enter'\n }\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 * If `title` is omitted, a default translated label is used.\n */\n readonly forgotPasswordLink = input<Link>();\n /**\n * Config for Register Now link.\n * If `title` is omitted, a default translated label is used.\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 defaultForgotPasswordTitle = t(\n () => $localize`:@@SI_LOGIN_BASIC.FORGOT_PASSWORD:Forgot password`\n );\n private readonly defaultRegisterNowTitle = t(\n () => $localize`:@@SI_LOGIN_BASIC.REGISTER_NOW:Register now`\n );\n\n protected readonly effectiveForgotPasswordLink = computed(() => {\n const link = this.forgotPasswordLink();\n return !!link && link.title ? link : { ...link, title: this.defaultForgotPasswordTitle };\n });\n\n protected readonly effectiveRegisterNowLink = computed(() => {\n const link = this.registerNowLink();\n return !!link && link.title ? link : { ...link, title: this.defaultRegisterNowTitle };\n });\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.effectiveForgotPasswordLink();\n@let registerNowLink = this.effectiveRegisterNowLink();\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 <a class=\"si-h5\" [siLink]=\"registerNowLink\">{{ registerNowLink.title | translate }}</a>\n </div>\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\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 - 2026\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 - 2026\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 - 2026\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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"}
@@ -234,7 +234,7 @@ class SiNavbarVerticalHeaderComponent {
234
234
  } @else {
235
235
  <si-navbar-vertical-divider class="divider" animate.leave="divider-leave" />
236
236
  }
237
- `, isInline: true, styles: [".divider,.title{opacity:1;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) calc(.25s * var(--element-animations-enabled, 1)) ease-out}@starting-style{.divider,.title{opacity:0}}:host{display:flex;align-items:center;block-size:40px;transition:block-size calc(.5s * var(--element-animations-enabled, 1)) ease-out}:host.collapsed{block-size:13px}:host.component-enter{transition:none}:host.component-enter .title,:host.component-enter .divider{transition:none}.title{position:absolute}.title.title-leave{opacity:0;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) ease-in}.divider{flex:1;margin-block:0}.divider.divider-leave{opacity:0;transition-delay:0s}\n"], dependencies: [{ kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }] });
237
+ `, isInline: true, styles: [".divider,.title{opacity:1;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) calc(.25s * var(--element-animations-enabled, 1)) ease-out}@starting-style{.divider,.title{opacity:0}}:host{display:flex;align-items:center;block-size:40px;transition:block-size calc(.5s * var(--element-animations-enabled, 1)) ease-out}:host.collapsed{block-size:13px}:host.component-enter{transition:none}:host.component-enter .title,:host.component-enter .divider{transition:none}.title.title-leave{opacity:0;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) ease-in}.divider{flex:1;margin-block:0}.divider.divider-leave{opacity:0;transition-delay:0s}\n"], dependencies: [{ kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }] });
238
238
  }
239
239
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalHeaderComponent, decorators: [{
240
240
  type: Component,
@@ -249,7 +249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
249
249
  `, host: {
250
250
  '[class.collapsed]': 'navbar.collapsed()',
251
251
  'animate.enter': 'component-enter'
252
- }, styles: [".divider,.title{opacity:1;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) calc(.25s * var(--element-animations-enabled, 1)) ease-out}@starting-style{.divider,.title{opacity:0}}:host{display:flex;align-items:center;block-size:40px;transition:block-size calc(.5s * var(--element-animations-enabled, 1)) ease-out}:host.collapsed{block-size:13px}:host.component-enter{transition:none}:host.component-enter .title,:host.component-enter .divider{transition:none}.title{position:absolute}.title.title-leave{opacity:0;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) ease-in}.divider{flex:1;margin-block:0}.divider.divider-leave{opacity:0;transition-delay:0s}\n"] }]
252
+ }, styles: [".divider,.title{opacity:1;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) calc(.25s * var(--element-animations-enabled, 1)) ease-out}@starting-style{.divider,.title{opacity:0}}:host{display:flex;align-items:center;block-size:40px;transition:block-size calc(.5s * var(--element-animations-enabled, 1)) ease-out}:host.collapsed{block-size:13px}:host.component-enter{transition:none}:host.component-enter .title,:host.component-enter .divider{transition:none}.title.title-leave{opacity:0;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) ease-in}.divider{flex:1;margin-block:0}.divider.divider-leave{opacity:0;transition-delay:0s}\n"] }]
253
253
  }] });
254
254
 
255
255
  /**