@keycloakify/angular 0.0.1-rc.24 → 0.0.1-rc.26

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 (42) hide show
  1. package/account/providers/keycloakify-angular/keycloakify-angular.providers.d.ts +2 -0
  2. package/bin/338.index.js +1 -0
  3. package/bin/758.index.js +1 -0
  4. package/bin/925.index.js +1 -1
  5. package/esm2022/account/containers/template/template.component.mjs +1 -1
  6. package/esm2022/account/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -4
  7. package/esm2022/login/components/logout-other-sessions/logout-other-sessions.component.mjs +1 -1
  8. package/esm2022/login/components/password-wrapper/password-wrapper.component.mjs +1 -1
  9. package/esm2022/login/containers/template/template.component.mjs +7 -7
  10. package/esm2022/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +2 -3
  11. package/esm2022/login/pages/login/login.component.mjs +1 -1
  12. package/esm2022/login/pages/login-username/login-username.component.mjs +1 -1
  13. package/esm2022/login/pages/register/register.component.mjs +1 -1
  14. package/esm2022/login/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -4
  15. package/fesm2022/keycloakify-angular-account-containers-template.mjs.map +1 -1
  16. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs +1 -3
  17. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs.map +1 -1
  18. package/fesm2022/keycloakify-angular-login-components-logout-other-sessions.mjs.map +1 -1
  19. package/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs.map +1 -1
  20. package/fesm2022/keycloakify-angular-login-containers-template.mjs +6 -6
  21. package/fesm2022/keycloakify-angular-login-containers-template.mjs.map +1 -1
  22. package/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs +1 -2
  23. package/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs.map +1 -1
  24. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs.map +1 -1
  25. package/fesm2022/keycloakify-angular-login-pages-login.mjs.map +1 -1
  26. package/fesm2022/keycloakify-angular-login-pages-register.mjs.map +1 -1
  27. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs +1 -3
  28. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs.map +1 -1
  29. package/login/providers/keycloakify-angular/keycloakify-angular.providers.d.ts +2 -0
  30. package/package.json +7 -7
  31. package/src/account/containers/template/template.component.ts +1 -1
  32. package/src/account/providers/keycloakify-angular/keycloakify-angular.providers.ts +2 -3
  33. package/src/bin/eject-page.ts +1 -1
  34. package/src/bin/update-kc-gen.ts +1 -0
  35. package/src/login/components/logout-other-sessions/logout-other-sessions.component.ts +1 -1
  36. package/src/login/components/password-wrapper/password-wrapper.component.ts +1 -1
  37. package/src/login/containers/template/template.component.ts +7 -7
  38. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +1 -2
  39. package/src/login/pages/login/login.component.ts +1 -1
  40. package/src/login/pages/login-username/login-username.component.ts +1 -1
  41. package/src/login/pages/register/register.component.ts +1 -1
  42. package/src/login/providers/keycloakify-angular/keycloakify-angular.providers.ts +2 -3
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-containers-template.mjs","sources":["../../src/login/containers/template/template.component.ts","../../src/login/containers/template/template.component.html","../../src/login/containers/template/keycloakify-angular-login-containers-template.ts"],"sourcesContent":["import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n OnInit,\n output,\n Renderer2,\n Signal,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LoginResourceInjectorService } from '@keycloakify/angular/login/services/login-resource-injector';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport { type ClassKey, getKcClsx } from 'keycloakify/login/lib/kcClsx';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'kc-dynamic-page-injector',\n standalone: true,\n template: ``\n})\nexport class DynamicPageInjectorComponent {\n page = input<Type<unknown>>();\n userProfileFormFields = input<Type<unknown>>();\n componentCreated = output<object>();\n #vcr = inject<ViewContainerRef>(ViewContainerRef);\n constructor() {\n effect(\n () => {\n const page = this.page();\n const userProfileFormFields = this.userProfileFormFields();\n if (!page) return;\n const compRef = this.#vcr.createComponent(page);\n if ('userProfileFormFields' in (compRef.instance as object) && userProfileFormFields) {\n compRef.setInput('userProfileFormFields', userProfileFormFields);\n }\n this.componentCreated.emit(compRef.instance as object);\n },\n { allowSignalWrites: true }\n );\n }\n}\n\n@Component({\n selector: 'kc-root',\n templateUrl: './template.component.html',\n standalone: true,\n imports: [AsyncPipe, KcSanitizePipe, NgTemplateOutlet, KcClassDirective, DynamicPageInjectorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => TemplateComponent)\n }\n ]\n})\nexport class TemplateComponent extends ComponentReference implements OnInit {\n i18n = inject<I18n>(LOGIN_I18N);\n renderer = inject(Renderer2);\n #cdr = inject(ChangeDetectorRef);\n meta = inject(Meta);\n title = inject(Title);\n kcContext = inject<KcContext>(KC_LOGIN_CONTEXT);\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n loginResourceInjectorService = inject(LoginResourceInjectorService);\n\n displayInfo = false;\n displayMessage = true;\n displayRequiredFields = false;\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n isReadyToRender$: Observable<boolean>;\n\n page = input<Type<unknown>>();\n userProfileFormFields = input<Type<unknown>>();\n headerNode: Signal<TemplateRef<HTMLElement>> | undefined;\n infoNode: Signal<TemplateRef<HTMLElement>> | undefined;\n socialProvidersNode: Signal<TemplateRef<HTMLElement>> | undefined;\n\n constructor() {\n super();\n\n this.title.setTitle(this.documentTitle ?? this.i18n.msgStr('loginTitle', this.kcContext.realm.displayName));\n this.isReadyToRender$ = this.loginResourceInjectorService.injectResource(this.doUseDefaultCss);\n }\n\n ngOnInit() {\n this.applyKcIndexClasses();\n }\n\n private applyKcIndexClasses() {\n const kcClsx = getKcClsx({\n doUseDefaultCss: this.doUseDefaultCss,\n classes: this.classes\n }).kcClsx;\n const kcBodyClass = this.bodyClassName ?? kcClsx('kcBodyClass');\n const kcHtmlClass = kcClsx('kcHtmlClass');\n const kcBodyClasses = kcBodyClass.split(/\\s+/);\n const kcHtmlClasses = kcHtmlClass.split(/\\s+/);\n kcBodyClasses.forEach(klass => {\n this.renderer.addClass(document.body, klass);\n });\n kcHtmlClasses.forEach(klass => {\n this.renderer.addClass(document.documentElement, klass);\n });\n }\n\n tryAnotherWay() {\n document.forms['kc-select-try-another-way-form' as never].submit();\n }\n\n onComponentCreated(compRef: object) {\n if ('displayInfo' in compRef && compRef.displayInfo) {\n this.displayInfo = compRef.displayInfo as boolean;\n }\n if ('displayMessage' in compRef && compRef.displayMessage) {\n this.displayMessage = compRef.displayMessage as boolean;\n }\n if ('displayRequiredFields' in compRef && compRef.displayRequiredFields) {\n this.displayRequiredFields = compRef.displayRequiredFields as boolean;\n }\n if ('documentTitle' in compRef && compRef.documentTitle) {\n this.documentTitle = compRef.documentTitle as string;\n }\n if ('bodyClassName' in compRef && compRef.bodyClassName) {\n this.bodyClassName = compRef.bodyClassName as string;\n }\n if ('headerNode' in compRef && compRef.headerNode) {\n this.headerNode = computed(() => {\n const headerNode = (compRef.headerNode as Signal<TemplateRef<HTMLElement>>)();\n return headerNode;\n });\n }\n if ('infoNode' in compRef && compRef.infoNode) {\n this.infoNode = computed(() => {\n const infoNode = (compRef.infoNode as Signal<TemplateRef<HTMLElement>>)();\n return infoNode;\n });\n }\n if ('socialProvidersNode' in compRef && compRef.socialProvidersNode) {\n this.socialProvidersNode = computed(() => {\n const socialProvidersNode = (compRef.socialProvidersNode as Signal<TemplateRef<HTMLElement>>)();\n return socialProvidersNode;\n });\n }\n this.#cdr.markForCheck();\n }\n}\n","@let realm = kcContext.realm;\n@let message = kcContext.message;\n@let auth = kcContext.auth;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n@let url = kcContext.url;\n@let isReadyToRender = isReadyToRender$ | async;\n\n@if (isReadyToRender) {\n <div [kcClass]=\"'kcLoginClass'\">\n <div\n id=\"kc-header\"\n [kcClass]=\"'kcHeaderClass'\"\n >\n <div\n id=\"kc-header-wrapper\"\n [kcClass]=\"'kcHeaderWrapperClass'\"\n >\n <div [innerHTML]=\"realm?.displayNameHtml ?? '' | kcSanitize: 'html'\"></div>\n </div>\n </div>\n\n <div [kcClass]=\"'kcFormCardClass'\">\n <header [kcClass]=\"'kcFormHeaderClass'\">\n <!-- Locale switcher -->\n @if (i18n.enabledLanguages.length > 1) {\n <div\n id=\"kc-locale\"\n [kcClass]=\"'kcLocaleMainClass'\"\n >\n <div\n id=\"kc-locale-wrapper\"\n [kcClass]=\"'kcLocaleWrapperClass'\"\n >\n <div\n id=\"kc-locale-dropdown\"\n class=\"menu-button-links\"\n [kcClass]=\"'kcLocaleDropDownClass'\"\n >\n <button\n tabindex=\"1\"\n id=\"kc-current-locale-link\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n aria-controls=\"language-switch1\"\n [attr.aria-label]=\"i18n.msgStr('languages')\"\n >\n {{ i18n.currentLanguage.label }}\n </button>\n <ul\n role=\"menu\"\n tabindex=\"-1\"\n aria-labelledby=\"kc-current-locale-link\"\n aria-activedescendant=\"\"\n id=\"language-switch1\"\n [kcClass]=\"'kcLocaleListClass'\"\n >\n @for (entry of i18n.enabledLanguages; track entry; let idx = $index) {\n <li\n role=\"none\"\n [kcClass]=\"'kcLocaleListItemClass'\"\n >\n <a\n role=\"menuitem\"\n tabindex=\"-1\"\n [href]=\"entry.href\"\n [kcClass]=\"'kcLocaleItemClass'\"\n [id]=\"'language-' + idx\"\n >\n {{ entry.label }}\n </a>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n }\n\n <!-- Header content -->\n <ng-template #node>\n @if (auth && !auth.showUsername && !auth.showResetCredentials) {\n <h1 id=\"kc-page-title\">\n @let header = headerNode && headerNode();\n @if (header) {\n <ng-container [ngTemplateOutlet]=\"header\" />\n }\n </h1>\n } @else {\n <div\n id=\"kc-username\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <label id=\"kc-attempted-username\">{{ auth?.attemptedUsername }}</label>\n <a\n id=\"reset-login\"\n [href]=\"url?.loginRestartFlowUrl\"\n [attr.aria-label]=\"i18n.msgStr('restartLoginTooltip')\"\n >\n <div class=\"kc-login-tooltip\">\n <i [kcClass]=\"'kcResetFlowIcon'\"></i>\n <span class=\"kc-tooltip-text\">\n {{ i18n.msgStr('restartLoginTooltip') }}\n </span>\n </div>\n </a>\n </div>\n }\n </ng-template>\n\n @if (displayRequiredFields) {\n <div [kcClass]=\"'kcContentWrapperClass'\">\n <div\n class=\"subtitle\"\n [kcClass]=\"'kcLabelWrapperClass'\"\n >\n <span class=\"subtitle\">\n <span class=\"required\">*</span>\n {{ i18n.msgStr('requiredFields') }}\n </span>\n </div>\n <div class=\"col-md-10\">\n <ng-container [ngTemplateOutlet]=\"node\" />\n </div>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"node\" />\n }\n </header>\n\n <div id=\"kc-content\">\n <div id=\"kc-content-wrapper\">\n <!-- Message display -->\n @if (displayMessage && message && (message.type !== 'warning' || !isAppInitiatedAction)) {\n <div\n [kcClass]=\"'kcAlertClass'\"\n [ngClass]=\"message.type === 'error' ? 'pf-m-danger' : 'pf-m-' + message.type\"\n [class]=\"'alert-' + message.type\"\n >\n <div class=\"pf-c-alert__icon\">\n @switch (message.type) {\n @case ('success') {\n <span [kcClass]=\"'kcFeedbackSuccessIcon'\"></span>\n }\n @case ('warning') {\n <span [kcClass]=\"'kcFeedbackWarningIcon'\"></span>\n }\n @case ('info') {\n <span [kcClass]=\"'kcFeedbackInfoIcon'\"></span>\n }\n @case ('error') {\n <span [kcClass]=\"'kcFeedbackErrorIcon'\"></span>\n }\n }\n </div>\n <span\n [kcClass]=\"'kcAlertTitleClass'\"\n [innerHTML]=\"message.summary | kcSanitize: 'html'\"\n ></span>\n </div>\n }\n <!-- Content -->\n @let pageRef = page();\n @if (!!pageRef) {\n <kc-dynamic-page-injector\n [page]=\"pageRef\"\n [userProfileFormFields]=\"userProfileFormFields()\"\n (componentCreated)=\"onComponentCreated($event)\"\n />\n }\n @if (!!auth && auth?.showTryAnotherWayLink) {\n <form\n id=\"kc-select-try-another-way-form\"\n method=\"post\"\n [action]=\"url?.loginAction\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n name=\"tryAnotherWay\"\n value=\"on\"\n />\n <a\n id=\"try-another-way\"\n (click)=\"tryAnotherWay()\"\n >\n {{ i18n.msgStr('doTryAnotherWay') }}\n </a>\n </div>\n </div>\n </form>\n }\n @let socialProviders = socialProvidersNode && socialProvidersNode();\n @if (socialProviders) {\n <ng-container [ngTemplateOutlet]=\"socialProviders\" />\n }\n <!-- Info display -->\n @if (displayInfo) {\n <div\n id=\"kc-info\"\n [kcClass]=\"'kcSignUpClass'\"\n >\n <div\n id=\"kc-info-wrapper\"\n [kcClass]=\"'kcInfoAreaWrapperClass'\"\n >\n @let info = infoNode && infoNode();\n @if (info) {\n <ng-container [ngTemplateOutlet]=\"info\" />\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloakify-angular-login-containers-template.mjs","sources":["../../src/login/containers/template/template.component.ts","../../src/login/containers/template/template.component.html","../../src/login/containers/template/keycloakify-angular-login-containers-template.ts"],"sourcesContent":["import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n OnInit,\n output,\n Renderer2,\n Signal,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LoginResourceInjectorService } from '@keycloakify/angular/login/services/login-resource-injector';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport { type ClassKey, getKcClsx } from 'keycloakify/login/lib/kcClsx';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'kc-dynamic-page-injector',\n standalone: true,\n template: ``\n})\nexport class DynamicPageInjectorComponent {\n page = input<Type<unknown>>();\n userProfileFormFields = input<Type<unknown>>();\n componentCreated = output<object>();\n #vcr = inject<ViewContainerRef>(ViewContainerRef);\n constructor() {\n effect(\n () => {\n const page = this.page();\n const userProfileFormFields = this.userProfileFormFields();\n if (!page) return;\n const compRef = this.#vcr.createComponent(page);\n if ('userProfileFormFields' in (compRef.instance as object) && userProfileFormFields) {\n compRef.setInput('userProfileFormFields', userProfileFormFields);\n }\n this.componentCreated.emit(compRef.instance as object);\n },\n { allowSignalWrites: true }\n );\n }\n}\n\n@Component({\n selector: 'kc-root',\n templateUrl: 'template.component.html',\n standalone: true,\n imports: [AsyncPipe, KcSanitizePipe, NgTemplateOutlet, KcClassDirective, DynamicPageInjectorComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => TemplateComponent)\n }\n ]\n})\nexport class TemplateComponent extends ComponentReference implements OnInit {\n i18n = inject<I18n>(LOGIN_I18N);\n renderer = inject(Renderer2);\n #cdr = inject(ChangeDetectorRef);\n meta = inject(Meta);\n title = inject(Title);\n kcContext = inject<KcContext>(KC_LOGIN_CONTEXT);\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n loginResourceInjectorService = inject(LoginResourceInjectorService);\n\n displayInfo = false;\n displayMessage = true;\n displayRequiredFields = false;\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n isReadyToRender$: Observable<boolean>;\n\n page = input<Type<unknown>>();\n userProfileFormFields = input<Type<unknown>>();\n headerNode: Signal<TemplateRef<HTMLElement>> | undefined;\n infoNode: Signal<TemplateRef<HTMLElement>> | undefined;\n socialProvidersNode: Signal<TemplateRef<HTMLElement>> | undefined;\n\n constructor() {\n super();\n\n this.title.setTitle(this.documentTitle ?? this.i18n.msgStr('loginTitle', this.kcContext.realm.displayName));\n this.isReadyToRender$ = this.loginResourceInjectorService.injectResource(this.doUseDefaultCss);\n }\n\n ngOnInit() {\n this.applyKcIndexClasses();\n }\n\n private applyKcIndexClasses() {\n const kcClsx = getKcClsx({\n doUseDefaultCss: this.doUseDefaultCss,\n classes: this.classes\n }).kcClsx;\n const kcBodyClass = this.bodyClassName ?? kcClsx('kcBodyClass');\n const kcHtmlClass = kcClsx('kcHtmlClass');\n const kcBodyClasses = kcBodyClass.split(/\\s+/);\n const kcHtmlClasses = kcHtmlClass.split(/\\s+/);\n kcBodyClasses.forEach(klass => {\n this.renderer.addClass(document.body, klass);\n });\n kcHtmlClasses.forEach(klass => {\n this.renderer.addClass(document.documentElement, klass);\n });\n }\n\n tryAnotherWay() {\n document.forms['kc-select-try-another-way-form' as never].submit();\n }\n\n onComponentCreated(compRef: object) {\n if ('displayInfo' in compRef) {\n this.displayInfo = !!compRef.displayInfo as boolean;\n }\n if ('displayMessage' in compRef) {\n this.displayMessage = !!compRef.displayMessage as boolean;\n }\n if ('displayRequiredFields' in compRef) {\n this.displayRequiredFields = !!compRef.displayRequiredFields as boolean;\n }\n if ('documentTitle' in compRef && compRef.documentTitle) {\n this.documentTitle = compRef.documentTitle as string;\n }\n if ('bodyClassName' in compRef && compRef.bodyClassName) {\n this.bodyClassName = compRef.bodyClassName as string;\n }\n if ('headerNode' in compRef && compRef.headerNode) {\n this.headerNode = computed(() => {\n const headerNode = (compRef.headerNode as Signal<TemplateRef<HTMLElement>>)();\n return headerNode;\n });\n }\n if ('infoNode' in compRef && compRef.infoNode) {\n this.infoNode = computed(() => {\n const infoNode = (compRef.infoNode as Signal<TemplateRef<HTMLElement>>)();\n return infoNode;\n });\n }\n if ('socialProvidersNode' in compRef && compRef.socialProvidersNode) {\n this.socialProvidersNode = computed(() => {\n const socialProvidersNode = (compRef.socialProvidersNode as Signal<TemplateRef<HTMLElement>>)();\n return socialProvidersNode;\n });\n }\n this.#cdr.markForCheck();\n }\n}\n","@let realm = kcContext.realm;\n@let message = kcContext.message;\n@let auth = kcContext.auth;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n@let url = kcContext.url;\n@let isReadyToRender = isReadyToRender$ | async;\n\n@if (isReadyToRender) {\n <div [kcClass]=\"'kcLoginClass'\">\n <div\n id=\"kc-header\"\n [kcClass]=\"'kcHeaderClass'\"\n >\n <div\n id=\"kc-header-wrapper\"\n [kcClass]=\"'kcHeaderWrapperClass'\"\n >\n <div [innerHTML]=\"realm?.displayNameHtml ?? '' | kcSanitize: 'html'\"></div>\n </div>\n </div>\n\n <div [kcClass]=\"'kcFormCardClass'\">\n <header [kcClass]=\"'kcFormHeaderClass'\">\n <!-- Locale switcher -->\n @if (i18n.enabledLanguages.length > 1) {\n <div\n id=\"kc-locale\"\n [kcClass]=\"'kcLocaleMainClass'\"\n >\n <div\n id=\"kc-locale-wrapper\"\n [kcClass]=\"'kcLocaleWrapperClass'\"\n >\n <div\n id=\"kc-locale-dropdown\"\n class=\"menu-button-links\"\n [kcClass]=\"'kcLocaleDropDownClass'\"\n >\n <button\n tabindex=\"1\"\n id=\"kc-current-locale-link\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n aria-controls=\"language-switch1\"\n [attr.aria-label]=\"i18n.msgStr('languages')\"\n >\n {{ i18n.currentLanguage.label }}\n </button>\n <ul\n role=\"menu\"\n tabindex=\"-1\"\n aria-labelledby=\"kc-current-locale-link\"\n aria-activedescendant=\"\"\n id=\"language-switch1\"\n [kcClass]=\"'kcLocaleListClass'\"\n >\n @for (entry of i18n.enabledLanguages; track entry; let idx = $index) {\n <li\n role=\"none\"\n [kcClass]=\"'kcLocaleListItemClass'\"\n >\n <a\n role=\"menuitem\"\n tabindex=\"-1\"\n [href]=\"entry.href\"\n [kcClass]=\"'kcLocaleItemClass'\"\n [id]=\"'language-' + idx\"\n >\n {{ entry.label }}\n </a>\n </li>\n }\n </ul>\n </div>\n </div>\n </div>\n }\n\n <!-- Header content -->\n <ng-template #node>\n @if (auth && !auth.showUsername && !auth.showResetCredentials) {\n <h1 id=\"kc-page-title\">\n @let header = headerNode && headerNode();\n @if (header) {\n <ng-container [ngTemplateOutlet]=\"header\" />\n }\n </h1>\n } @else {\n <div\n id=\"kc-username\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <label id=\"kc-attempted-username\">{{ auth?.attemptedUsername }}</label>\n <a\n id=\"reset-login\"\n [href]=\"url?.loginRestartFlowUrl\"\n [attr.aria-label]=\"i18n.msgStr('restartLoginTooltip')\"\n >\n <div class=\"kc-login-tooltip\">\n <i [kcClass]=\"'kcResetFlowIcon'\"></i>\n <span class=\"kc-tooltip-text\">\n {{ i18n.msgStr('restartLoginTooltip') }}\n </span>\n </div>\n </a>\n </div>\n }\n </ng-template>\n\n @if (displayRequiredFields) {\n <div [kcClass]=\"'kcContentWrapperClass'\">\n <div\n class=\"subtitle\"\n [kcClass]=\"'kcLabelWrapperClass'\"\n >\n <span class=\"subtitle\">\n <span class=\"required\">*</span>\n {{ i18n.msgStr('requiredFields') }}\n </span>\n </div>\n <div class=\"col-md-10\">\n <ng-container [ngTemplateOutlet]=\"node\" />\n </div>\n </div>\n } @else {\n <ng-container [ngTemplateOutlet]=\"node\" />\n }\n </header>\n\n <div id=\"kc-content\">\n <div id=\"kc-content-wrapper\">\n <!-- Message display -->\n @if (displayMessage && message && (message.type !== 'warning' || !isAppInitiatedAction)) {\n <div\n [kcClass]=\"'kcAlertClass'\"\n [ngClass]=\"message.type === 'error' ? 'pf-m-danger' : 'pf-m-' + message.type\"\n [class]=\"'alert-' + message.type\"\n >\n <div class=\"pf-c-alert__icon\">\n @switch (message.type) {\n @case ('success') {\n <span [kcClass]=\"'kcFeedbackSuccessIcon'\"></span>\n }\n @case ('warning') {\n <span [kcClass]=\"'kcFeedbackWarningIcon'\"></span>\n }\n @case ('info') {\n <span [kcClass]=\"'kcFeedbackInfoIcon'\"></span>\n }\n @case ('error') {\n <span [kcClass]=\"'kcFeedbackErrorIcon'\"></span>\n }\n }\n </div>\n <span\n [kcClass]=\"'kcAlertTitleClass'\"\n [innerHTML]=\"message.summary | kcSanitize: 'html'\"\n ></span>\n </div>\n }\n <!-- Content -->\n @let pageRef = page();\n @if (!!pageRef) {\n <kc-dynamic-page-injector\n [page]=\"pageRef\"\n [userProfileFormFields]=\"userProfileFormFields()\"\n (componentCreated)=\"onComponentCreated($event)\"\n />\n }\n @if (!!auth && auth?.showTryAnotherWayLink) {\n <form\n id=\"kc-select-try-another-way-form\"\n method=\"post\"\n [action]=\"url?.loginAction\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n name=\"tryAnotherWay\"\n value=\"on\"\n />\n <a\n id=\"try-another-way\"\n (click)=\"tryAnotherWay()\"\n >\n {{ i18n.msgStr('doTryAnotherWay') }}\n </a>\n </div>\n </div>\n </form>\n }\n @let socialProviders = socialProvidersNode && socialProvidersNode();\n @if (socialProviders) {\n <ng-container [ngTemplateOutlet]=\"socialProviders\" />\n }\n <!-- Info display -->\n @if (displayInfo) {\n <div\n id=\"kc-info\"\n [kcClass]=\"'kcSignUpClass'\"\n >\n <div\n id=\"kc-info-wrapper\"\n [kcClass]=\"'kcInfoAreaWrapperClass'\"\n >\n @let info = infoNode && infoNode();\n @if (info) {\n <ng-container [ngTemplateOutlet]=\"info\" />\n }\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import * as i0 from '@angular/core';
2
2
  import { inject, viewChild, forwardRef, Component, ChangeDetectionStrategy } from '@angular/core';
3
3
  import { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';
4
4
  import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';
5
- import { TemplateComponent } from '@keycloakify/angular/login/containers/template';
6
5
  import { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';
7
6
  import { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';
8
7
  import { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';
@@ -32,7 +31,7 @@ class DeleteAccountConfirmComponent extends ComponentReference {
32
31
  }
33
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DeleteAccountConfirmComponent, decorators: [{
34
33
  type: Component,
35
- args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective], selector: 'kc-delete-account-confirm', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
34
+ args: [{ standalone: true, imports: [KcClassDirective], selector: 'kc-delete-account-confirm', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
36
35
  {
37
36
  provide: ComponentReference,
38
37
  useExisting: forwardRef(() => DeleteAccountConfirmComponent)
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-pages-delete-account-confirm.mjs","sources":["../../src/login/pages/delete-account-confirm/delete-account-confirm.component.ts","../../src/login/pages/delete-account-confirm/delete-account-confirm.component.html","../../src/login/pages/delete-account-confirm/keycloakify-angular-login-pages-delete-account-confirm.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef, inject, type TemplateRef, viewChild } from '@angular/core';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { TemplateComponent } from '@keycloakify/angular/login/containers/template';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n standalone: true,\n imports: [TemplateComponent, KcClassDirective],\n selector: 'kc-delete-account-confirm',\n templateUrl: 'delete-account-confirm.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => DeleteAccountConfirmComponent)\n }\n ]\n})\nexport class DeleteAccountConfirmComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'delete-account-confirm.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo = false;\n displayMessage = false;\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n}\n","@let url = kcContext.url;\n@let triggered_from_aia = kcContext.triggered_from_aia;\n<ng-template #headerNode>\n {{ i18n.msgStr('deleteAccountConfirm') }}\n</ng-template>\n<form\n method=\"post\"\n class=\"form-actions\"\n [action]=\"url.loginAction\"\n>\n <div\n class=\"alert alert-warning\"\n style=\"margin-top: 0; margin-bottom: 30px\"\n >\n <span class=\"pficon pficon-warning-triangle-o\"></span>\n {{ i18n.msgStr('irreversibleAction') }}\n </div>\n <p>{{ i18n.msgStr('deletingImplies') }}</p>\n <ul style=\"color: #72767b; list-style: disc; list-style-position: inside\">\n <li>{{ i18n.msgStr('loggingOutImmediately') }}</li>\n <li>{{ i18n.msgStr('errasingData') }}</li>\n </ul>\n <p class=\"delete-account-text\">\n {{ i18n.msgStr('finalDeletionConfirmation') }}\n </p>\n <div id=\"kc-form-buttons\">\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doConfirmDelete')\"\n />\n @if (triggered_from_aia) {\n <button\n style=\"margin-left: calc(100% - 220px)\"\n type=\"submit\"\n name=\"cancel-aia\"\n value=\"true\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n }\n </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;AAyBM,MAAO,6BAA8B,SAAQ,kBAAkB,CAAA;AAbrE,IAAA,WAAA,GAAA;;AAcI,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA+D,gBAAgB,CAAC,CAAC;AACnG,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAO,UAAU,CAAC,CAAC;AAEvB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,eAAe,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAoC,aAAa,CAAC,CAAC;QAK5E,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,UAAU,GAAI,SAAS,CAA2B,YAAY,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,QAAQ,GAAI,SAAS,CAA2B,UAAU,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,mBAAmB,GAAI,SAAS,CAA2B,qBAAqB,CAAC,CAAC;AACrF,KAAA;8GAjBY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAP3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC/D,aAAA;SACJ,ECvBL,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8/CA4CA,4CD9BiC,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAWpC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EACpC,QAAA,EAAA,2BAA2B,EAEpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC/D,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,8/CAAA,EAAA,CAAA;;;AEvBL;;AAEG;;;;"}
1
+ {"version":3,"file":"keycloakify-angular-login-pages-delete-account-confirm.mjs","sources":["../../src/login/pages/delete-account-confirm/delete-account-confirm.component.ts","../../src/login/pages/delete-account-confirm/delete-account-confirm.component.html","../../src/login/pages/delete-account-confirm/keycloakify-angular-login-pages-delete-account-confirm.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef, inject, type TemplateRef, viewChild } from '@angular/core';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n standalone: true,\n imports: [KcClassDirective],\n selector: 'kc-delete-account-confirm',\n templateUrl: 'delete-account-confirm.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => DeleteAccountConfirmComponent)\n }\n ]\n})\nexport class DeleteAccountConfirmComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'delete-account-confirm.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo = false;\n displayMessage = false;\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n}\n","@let url = kcContext.url;\n@let triggered_from_aia = kcContext.triggered_from_aia;\n<ng-template #headerNode>\n {{ i18n.msgStr('deleteAccountConfirm') }}\n</ng-template>\n<form\n method=\"post\"\n class=\"form-actions\"\n [action]=\"url.loginAction\"\n>\n <div\n class=\"alert alert-warning\"\n style=\"margin-top: 0; margin-bottom: 30px\"\n >\n <span class=\"pficon pficon-warning-triangle-o\"></span>\n {{ i18n.msgStr('irreversibleAction') }}\n </div>\n <p>{{ i18n.msgStr('deletingImplies') }}</p>\n <ul style=\"color: #72767b; list-style: disc; list-style-position: inside\">\n <li>{{ i18n.msgStr('loggingOutImmediately') }}</li>\n <li>{{ i18n.msgStr('errasingData') }}</li>\n </ul>\n <p class=\"delete-account-text\">\n {{ i18n.msgStr('finalDeletionConfirmation') }}\n </p>\n <div id=\"kc-form-buttons\">\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doConfirmDelete')\"\n />\n @if (triggered_from_aia) {\n <button\n style=\"margin-left: calc(100% - 220px)\"\n type=\"submit\"\n name=\"cancel-aia\"\n value=\"true\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n }\n </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAwBM,MAAO,6BAA8B,SAAQ,kBAAkB,CAAA;AAbrE,IAAA,WAAA,GAAA;;AAcI,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA+D,gBAAgB,CAAC,CAAC;AACnG,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAO,UAAU,CAAC,CAAC;AAEvB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,eAAe,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAoC,aAAa,CAAC,CAAC;QAK5E,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,UAAU,GAAI,SAAS,CAA2B,YAAY,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,QAAQ,GAAI,SAAS,CAA2B,UAAU,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,mBAAmB,GAAI,SAAS,CAA2B,qBAAqB,CAAC,CAAC;AACrF,KAAA;8GAjBY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAP3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC/D,aAAA;SACJ,ECtBL,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8/CA4CA,4CD/Bc,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAWjB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;iCACM,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACjB,2BAA2B,EAEpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC/D,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,8/CAAA,EAAA,CAAA;;;AEtBL;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-pages-login-username.mjs","sources":["../../src/login/pages/login-username/login-username.component.ts","../../src/login/pages/login-username/login-username.component.html","../../src/login/pages/login-username/keycloakify-angular-login-pages-login-username.ts"],"sourcesContent":["import { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, signal, type TemplateRef, viewChild } from '@angular/core';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n selector: 'kc-login-username',\n templateUrl: './login-username.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, NgClass],\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => LoginUsernameComponent)\n }\n ]\n})\nexport class LoginUsernameComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'login-username.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo: boolean = !!this.kcContext?.realm?.password && !!this.kcContext?.realm?.registrationAllowed && !this.kcContext?.registrationDisabled;\n displayMessage: boolean = !this.kcContext?.messagesPerField?.existsError('username');\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n\n isLoginButtonDisabled = signal(false);\n}\n","@let realm = kcContext.realm;\n@let usernameHidden = kcContext.usernameHidden;\n@let messagesPerField = kcContext.messagesPerField;\n@let url = kcContext.url;\n@let login = kcContext.login;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('doLogIn') }}\n</ng-template>\n<ng-template #infoNode>\n @let url = kcContext.url;\n <div id=\"kc-registration\">\n <span>\n {{ i18n.msgStr('noAccount') }}\n <a\n tabindex=\"6\"\n [href]=\"url?.registrationUrl\"\n >\n {{ i18n.msgStr('doRegister') }}\n </a>\n </span>\n </div>\n</ng-template>\n<ng-template #socialProvidersNode>\n @let realm = kcContext.realm;\n @let social = kcContext.social;\n @if (!!realm?.password && !!social?.providers?.length) {\n <div\n id=\"kc-social-providers\"\n [kcClass]=\"'kcFormSocialAccountSectionClass'\"\n >\n <hr />\n <h2>{{ i18n.msgStr('identity-provider-login-label') }}</h2>\n <ul\n [kcClass]=\"{\n kcFormSocialAccountListClass: true,\n kcFormSocialAccountListGridClass: (social?.providers?.length ?? 0) > 3\n }\"\n >\n @for (provider of social?.providers; track provider.alias; let idx = $index) {\n <li>\n <a\n type=\"button\"\n [id]=\"provider.alias\"\n [kcClass]=\"{\n kcFormSocialAccountListButtonClass: true,\n kcFormSocialAccountGridItem: (social?.providers?.length ?? 0) > 3\n }\"\n [href]=\"provider.loginUrl\"\n >\n @if (provider.iconClasses) {\n <i\n aria-hidden=\"true\"\n [ngClass]=\"provider.iconClasses\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n ></i>\n }\n <span\n [ngClass]=\"{\n 'kc-social-icon-text': provider.iconClasses\n }\"\n [kcClass]=\"'kcFormSocialAccountNameClass'\"\n [innerHTML]=\"provider.displayName | kcSanitize: 'html'\"\n ></span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n</ng-template>\n<div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n @if (realm.password) {\n <form\n id=\"kc-form-login\"\n method=\"post\"\n [action]=\"url?.loginAction\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n @if (!realm?.loginWithEmailAllowed) {\n {{ i18n.msgStr('username') }}\n } @else if (!realm?.registrationEmailAsUsername) {\n {{ i18n.msgStr('usernameOrEmail') }}\n } @else {\n {{ i18n.msgStr('email') }}\n }\n </label>\n <input\n tabindex=\"2\"\n id=\"username\"\n name=\"username\"\n type=\"text\"\n autofocus\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [defaultValue]=\"login?.username || ''\"\n [attr.aria-invalid]=\"messagesPerField?.existsError('username')\"\n />\n @if (messagesPerField?.existsError('username')) {\n <span\n id=\"input-error\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHTML]=\"messagesPerField.getFirstError('username') | kcSanitize: 'html'\"\n >\n </span>\n }\n <!---->\n </div>\n }\n\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\">\n @if (realm.rememberMe && !usernameHidden) {\n <div class=\"checkbox\">\n <label>\n <input\n tabindex=\"5\"\n id=\"rememberMe\"\n name=\"rememberMe\"\n type=\"checkbox\"\n [defaultChecked]=\"!!login?.rememberMe\"\n />\n {{ i18n.msgStr('rememberMe') }}\n </label>\n </div>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n tabindex=\"4\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doLogIn')\"\n />\n </div>\n </form>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloakify-angular-login-pages-login-username.mjs","sources":["../../src/login/pages/login-username/login-username.component.ts","../../src/login/pages/login-username/login-username.component.html","../../src/login/pages/login-username/keycloakify-angular-login-pages-login-username.ts"],"sourcesContent":["import { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, signal, type TemplateRef, viewChild } from '@angular/core';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n selector: 'kc-login-username',\n templateUrl: 'login-username.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, NgClass],\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => LoginUsernameComponent)\n }\n ]\n})\nexport class LoginUsernameComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'login-username.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo: boolean = !!this.kcContext?.realm?.password && !!this.kcContext?.realm?.registrationAllowed && !this.kcContext?.registrationDisabled;\n displayMessage: boolean = !this.kcContext?.messagesPerField?.existsError('username');\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n\n isLoginButtonDisabled = signal(false);\n}\n","@let realm = kcContext.realm;\n@let usernameHidden = kcContext.usernameHidden;\n@let messagesPerField = kcContext.messagesPerField;\n@let url = kcContext.url;\n@let login = kcContext.login;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('doLogIn') }}\n</ng-template>\n<ng-template #infoNode>\n @let url = kcContext.url;\n <div id=\"kc-registration\">\n <span>\n {{ i18n.msgStr('noAccount') }}\n <a\n tabindex=\"6\"\n [href]=\"url?.registrationUrl\"\n >\n {{ i18n.msgStr('doRegister') }}\n </a>\n </span>\n </div>\n</ng-template>\n<ng-template #socialProvidersNode>\n @let realm = kcContext.realm;\n @let social = kcContext.social;\n @if (!!realm?.password && !!social?.providers?.length) {\n <div\n id=\"kc-social-providers\"\n [kcClass]=\"'kcFormSocialAccountSectionClass'\"\n >\n <hr />\n <h2>{{ i18n.msgStr('identity-provider-login-label') }}</h2>\n <ul\n [kcClass]=\"{\n kcFormSocialAccountListClass: true,\n kcFormSocialAccountListGridClass: (social?.providers?.length ?? 0) > 3\n }\"\n >\n @for (provider of social?.providers; track provider.alias; let idx = $index) {\n <li>\n <a\n type=\"button\"\n [id]=\"provider.alias\"\n [kcClass]=\"{\n kcFormSocialAccountListButtonClass: true,\n kcFormSocialAccountGridItem: (social?.providers?.length ?? 0) > 3\n }\"\n [href]=\"provider.loginUrl\"\n >\n @if (provider.iconClasses) {\n <i\n aria-hidden=\"true\"\n [ngClass]=\"provider.iconClasses\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n ></i>\n }\n <span\n [ngClass]=\"{\n 'kc-social-icon-text': provider.iconClasses\n }\"\n [kcClass]=\"'kcFormSocialAccountNameClass'\"\n [innerHTML]=\"provider.displayName | kcSanitize: 'html'\"\n ></span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n</ng-template>\n<div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n @if (realm.password) {\n <form\n id=\"kc-form-login\"\n method=\"post\"\n [action]=\"url?.loginAction\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n @if (!realm?.loginWithEmailAllowed) {\n {{ i18n.msgStr('username') }}\n } @else if (!realm?.registrationEmailAsUsername) {\n {{ i18n.msgStr('usernameOrEmail') }}\n } @else {\n {{ i18n.msgStr('email') }}\n }\n </label>\n <input\n tabindex=\"2\"\n id=\"username\"\n name=\"username\"\n type=\"text\"\n autofocus\n autoComplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [defaultValue]=\"login?.username || ''\"\n [attr.aria-invalid]=\"messagesPerField?.existsError('username')\"\n />\n @if (messagesPerField?.existsError('username')) {\n <span\n id=\"input-error\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHTML]=\"messagesPerField.getFirstError('username') | kcSanitize: 'html'\"\n >\n </span>\n }\n <!---->\n </div>\n }\n\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\">\n @if (realm.rememberMe && !usernameHidden) {\n <div class=\"checkbox\">\n <label>\n <input\n tabindex=\"5\"\n id=\"rememberMe\"\n name=\"rememberMe\"\n type=\"checkbox\"\n [defaultChecked]=\"!!login?.rememberMe\"\n />\n {{ i18n.msgStr('rememberMe') }}\n </label>\n </div>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n tabindex=\"4\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doLogIn')\"\n />\n </div>\n </form>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-pages-login.mjs","sources":["../../src/login/pages/login/login.component.ts","../../src/login/pages/login/login.component.html","../../src/login/pages/login/keycloakify-angular-login-pages-login.ts"],"sourcesContent":["import { AsyncPipe, CommonModule, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, signal, type TemplateRef, viewChild } from '@angular/core';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { PasswordWrapperComponent } from '@keycloakify/angular/login/components/password-wrapper';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n selector: 'kc-login',\n templateUrl: './login.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, PasswordWrapperComponent, NgClass, CommonModule],\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => LoginComponent)\n }\n ]\n})\nexport class LoginComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'login.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo = !!this.kcContext?.realm?.password && !!this.kcContext?.realm?.registrationAllowed && !this.kcContext?.registrationDisabled;\n displayMessage = !this.kcContext?.messagesPerField?.existsError('username', 'password');\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n\n isLoginButtonDisabled = signal(false);\n}\n","@let realm = kcContext.realm;\n@let usernameHidden = kcContext.usernameHidden;\n@let auth = kcContext.auth;\n@let messagesPerField = kcContext.messagesPerField;\n@let url = kcContext.url;\n@let login = kcContext.login;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginAccountTitle') }}\n</ng-template>\n<ng-template #infoNode>\n @let url = kcContext.url;\n <div id=\"kc-registration-container\">\n <div id=\"kc-registration\">\n <span>\n {{ i18n.msgStr('noAccount') }}\n <a\n tabindex=\"8\"\n [href]=\"url?.registrationUrl\"\n >\n {{ i18n.msgStr('doRegister') }}\n </a>\n </span>\n </div>\n </div>\n</ng-template>\n<ng-template #socialProvidersNode>\n @let realm = kcContext.realm;\n @let social = kcContext.social;\n @if (!!realm?.password && !!social?.providers?.length) {\n <div\n id=\"kc-social-providers\"\n [kcClass]=\"'kcFormSocialAccountSectionClass'\"\n >\n <hr />\n <h2>{{ i18n.msgStr('identity-provider-login-label') }}</h2>\n <ul\n [kcClass]=\"{\n kcFormSocialAccountListClass: true,\n kcFormSocialAccountListGridClass: (social?.providers?.length ?? 0) > 3\n }\"\n >\n @for (provider of social?.providers; track provider.alias; let idx = $index) {\n <li>\n <a\n type=\"button\"\n [id]=\"provider.alias\"\n [kcClass]=\"{\n kcFormSocialAccountListButtonClass: true,\n kcFormSocialAccountGridItem: (social?.providers?.length ?? 0) > 3\n }\"\n [href]=\"provider.loginUrl\"\n >\n @if (provider.iconClasses) {\n <i\n aria-hidden=\"true\"\n [ngClass]=\"provider.iconClasses\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n ></i>\n }\n <span\n [ngClass]=\"{\n 'kc-social-icon-text': provider.iconClasses\n }\"\n [kcClass]=\"'kcFormSocialAccountNameClass'\"\n [innerHTML]=\"provider.displayName | kcSanitize: 'html'\"\n ></span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n</ng-template>\n<div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n <!-- login.component.html -->\n @if (realm?.password) {\n <form\n id=\"kc-form-login\"\n method=\"post\"\n [action]=\"url?.loginAction\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n @if (!realm?.loginWithEmailAllowed) {\n {{ i18n.msgStr('username') }}\n } @else if (!realm?.registrationEmailAsUsername) {\n {{ i18n.msgStr('usernameOrEmail') }}\n } @else {\n {{ i18n.msgStr('email') }}\n }\n </label>\n <input\n tabindex=\"2\"\n id=\"username\"\n name=\"username\"\n type=\"text\"\n autofocus\n [kcClass]=\"'kcInputClass'\"\n [defaultValue]=\"login?.username || ''\"\n [attr.aria-invalid]=\"messagesPerField?.existsError('username', 'password')\"\n />\n @if (messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHTML]=\"messagesPerField.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n }\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"password\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n\n <kc-password-wrapper passwordInputId=\"password\">\n <input\n tabindex=\"3\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('username', 'password')\"\n />\n </kc-password-wrapper>\n @if (usernameHidden && messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHTML]=\"messagesPerField.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\">\n @if (realm?.rememberMe && !usernameHidden) {\n <div class=\"checkbox\">\n <label>\n <input\n tabindex=\"5\"\n id=\"rememberMe\"\n name=\"rememberMe\"\n type=\"checkbox\"\n [defaultChecked]=\"!!login?.rememberMe\"\n />\n {{ i18n.msgStr('rememberMe') }}\n </label>\n </div>\n }\n </div>\n\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n @if (realm?.resetPasswordAllowed) {\n <span>\n <a\n tabindex=\"6\"\n [href]=\"url?.loginResetCredentialsUrl\"\n >{{ i18n.msgStr('doForgotPassword') }}</a\n >\n </span>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n type=\"hidden\"\n id=\"id-hidden-input\"\n name=\"credentialId\"\n [value]=\"auth?.selectedCredential\"\n />\n <input\n tabindex=\"7\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doLogIn')\"\n [disabled]=\"isLoginButtonDisabled()\"\n />\n </div>\n </form>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloakify-angular-login-pages-login.mjs","sources":["../../src/login/pages/login/login.component.ts","../../src/login/pages/login/login.component.html","../../src/login/pages/login/keycloakify-angular-login-pages-login.ts"],"sourcesContent":["import { AsyncPipe, CommonModule, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, signal, type TemplateRef, viewChild } from '@angular/core';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { PasswordWrapperComponent } from '@keycloakify/angular/login/components/password-wrapper';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n selector: 'kc-login',\n templateUrl: 'login.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, PasswordWrapperComponent, NgClass, CommonModule],\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => LoginComponent)\n }\n ]\n})\nexport class LoginComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'login.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo = !!this.kcContext?.realm?.password && !!this.kcContext?.realm?.registrationAllowed && !this.kcContext?.registrationDisabled;\n displayMessage = !this.kcContext?.messagesPerField?.existsError('username', 'password');\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n\n isLoginButtonDisabled = signal(false);\n}\n","@let realm = kcContext.realm;\n@let usernameHidden = kcContext.usernameHidden;\n@let auth = kcContext.auth;\n@let messagesPerField = kcContext.messagesPerField;\n@let url = kcContext.url;\n@let login = kcContext.login;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginAccountTitle') }}\n</ng-template>\n<ng-template #infoNode>\n @let url = kcContext.url;\n <div id=\"kc-registration-container\">\n <div id=\"kc-registration\">\n <span>\n {{ i18n.msgStr('noAccount') }}\n <a\n tabindex=\"8\"\n [href]=\"url?.registrationUrl\"\n >\n {{ i18n.msgStr('doRegister') }}\n </a>\n </span>\n </div>\n </div>\n</ng-template>\n<ng-template #socialProvidersNode>\n @let realm = kcContext.realm;\n @let social = kcContext.social;\n @if (!!realm?.password && !!social?.providers?.length) {\n <div\n id=\"kc-social-providers\"\n [kcClass]=\"'kcFormSocialAccountSectionClass'\"\n >\n <hr />\n <h2>{{ i18n.msgStr('identity-provider-login-label') }}</h2>\n <ul\n [kcClass]=\"{\n kcFormSocialAccountListClass: true,\n kcFormSocialAccountListGridClass: (social?.providers?.length ?? 0) > 3\n }\"\n >\n @for (provider of social?.providers; track provider.alias; let idx = $index) {\n <li>\n <a\n type=\"button\"\n [id]=\"provider.alias\"\n [kcClass]=\"{\n kcFormSocialAccountListButtonClass: true,\n kcFormSocialAccountGridItem: (social?.providers?.length ?? 0) > 3\n }\"\n [href]=\"provider.loginUrl\"\n >\n @if (provider.iconClasses) {\n <i\n aria-hidden=\"true\"\n [ngClass]=\"provider.iconClasses\"\n [kcClass]=\"'kcCommonLogoIdP'\"\n ></i>\n }\n <span\n [ngClass]=\"{\n 'kc-social-icon-text': provider.iconClasses\n }\"\n [kcClass]=\"'kcFormSocialAccountNameClass'\"\n [innerHTML]=\"provider.displayName | kcSanitize: 'html'\"\n ></span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n</ng-template>\n<div id=\"kc-form\">\n <div id=\"kc-form-wrapper\">\n <!-- login.component.html -->\n @if (realm?.password) {\n <form\n id=\"kc-form-login\"\n method=\"post\"\n [action]=\"url?.loginAction\"\n (onSubmit)=\"isLoginButtonDisabled.set(true)\"\n >\n @if (!usernameHidden) {\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"username\"\n [kcClass]=\"'kcLabelClass'\"\n >\n @if (!realm?.loginWithEmailAllowed) {\n {{ i18n.msgStr('username') }}\n } @else if (!realm?.registrationEmailAsUsername) {\n {{ i18n.msgStr('usernameOrEmail') }}\n } @else {\n {{ i18n.msgStr('email') }}\n }\n </label>\n <input\n tabindex=\"2\"\n id=\"username\"\n name=\"username\"\n type=\"text\"\n autofocus\n [kcClass]=\"'kcInputClass'\"\n [defaultValue]=\"login?.username || ''\"\n [attr.aria-invalid]=\"messagesPerField?.existsError('username', 'password')\"\n />\n @if (messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHTML]=\"messagesPerField.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n }\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <label\n for=\"password\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('password') }}\n </label>\n\n <kc-password-wrapper passwordInputId=\"password\">\n <input\n tabindex=\"3\"\n id=\"password\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"off\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"messagesPerField.existsError('username', 'password')\"\n />\n </kc-password-wrapper>\n @if (usernameHidden && messagesPerField?.existsError('username', 'password')) {\n <span\n id=\"input-error\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHTML]=\"messagesPerField.getFirstError('username', 'password') | kcSanitize: 'html'\"\n >\n </span>\n }\n </div>\n\n <div [kcClass]=\"['kcFormGroupClass', 'kcFormSettingClass']\">\n <div id=\"kc-form-options\">\n @if (realm?.rememberMe && !usernameHidden) {\n <div class=\"checkbox\">\n <label>\n <input\n tabindex=\"5\"\n id=\"rememberMe\"\n name=\"rememberMe\"\n type=\"checkbox\"\n [defaultChecked]=\"!!login?.rememberMe\"\n />\n {{ i18n.msgStr('rememberMe') }}\n </label>\n </div>\n }\n </div>\n\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n @if (realm?.resetPasswordAllowed) {\n <span>\n <a\n tabindex=\"6\"\n [href]=\"url?.loginResetCredentialsUrl\"\n >{{ i18n.msgStr('doForgotPassword') }}</a\n >\n </span>\n }\n </div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormGroupClass'\"\n >\n <input\n type=\"hidden\"\n id=\"id-hidden-input\"\n name=\"credentialId\"\n [value]=\"auth?.selectedCredential\"\n />\n <input\n tabindex=\"7\"\n name=\"login\"\n id=\"kc-login\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doLogIn')\"\n [disabled]=\"isLoginButtonDisabled()\"\n />\n </div>\n </form>\n }\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-pages-register.mjs","sources":["../../src/login/pages/register/register.component.ts","../../src/login/pages/register/register.component.html","../../src/login/pages/register/keycloakify-angular-login-pages-register.ts"],"sourcesContent":["import { AsyncPipe, NgClass, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, signal, type TemplateRef, Type, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { UserProfileFormFieldsComponent } from '@keycloakify/angular/login/components/user-profile-form-fields';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { SubmitService } from '@keycloakify/angular/login/services/submit';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n selector: 'kc-register',\n templateUrl: './register.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, NgClass, NgComponentOutlet],\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => RegisterComponent)\n }\n ]\n})\nexport class RegisterComponent extends ComponentReference {\n #submitService = inject(SubmitService);\n kcContext = inject<Extract<KcContext, { pageId: 'register.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo = false;\n displayMessage: boolean = !this.kcContext?.messagesPerField?.existsError('global');\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n\n isFormSubmittable = signal(false);\n areTermsAccepted = signal(false);\n userProfileFormFields = input<Type<UserProfileFormFieldsComponent>>();\n\n constructor() {\n super();\n this.#submitService.isSubmittable.pipe(takeUntilDestroyed()).subscribe(submittable => {\n this.isFormSubmittable.set(submittable);\n });\n }\n onCallback() {\n (document.getElementById('kc-register-form') as HTMLFormElement).submit();\n }\n}\n","@let url = kcContext.url;\n@let messagesPerField = kcContext.messagesPerField;\n@let recaptchaRequired = kcContext.recaptchaRequired;\n@let recaptchaVisible = kcContext.recaptchaVisible;\n@let recaptchaSiteKey = kcContext.recaptchaSiteKey;\n@let recaptchaAction = kcContext.recaptchaAction;\n@let termsAcceptanceRequired = kcContext.termsAcceptanceRequired;\n\n<ng-template #headerNode>\n @let messageHeader = kcContext.messageHeader;\n {{ messageHeader ?? i18n.advancedMsgStr('registerTitle') }}\n</ng-template>\n<form\n id=\"kc-register-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.registrationAction\"\n>\n <ng-container [ngComponentOutlet]=\"userProfileFormFields() ?? null\" />\n @if (termsAcceptanceRequired) {\n <div className=\"form-group\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n {{ i18n.msgStr('termsTitle') }}\n <div id=\"kc-registration-terms-text\">\n {{ i18n.msgStr('termsText') }}\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div [kcClass]=\"'kcLabelWrapperClass'\">\n <input\n type=\"checkbox\"\n id=\"termsAccepted\"\n name=\"termsAccepted\"\n [kcClass]=\"'kcCheckboxInputClass'\"\n [checked]=\"areTermsAccepted()\"\n [attr.aria-invalid]=\"messagesPerField.existsError('termsAccepted')\"\n (change)=\"areTermsAccepted.set($any($event.target).checked)\"\n />\n <label\n for=\"termsAccepted\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('acceptTerms') }}\n </label>\n </div>\n @if (messagesPerField.existsError('termsAccepted')) {\n <div [kcClass]=\"'kcLabelWrapperClass'\">\n <span\n id=\"input-error-terms-accepted\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHtml]=\"messagesPerField.get('termsAccepted') | kcSanitize: 'html'\"\n ></span>\n </div>\n }\n </div>\n }\n @if (recaptchaRequired && (recaptchaVisible || recaptchaAction === undefined)) {\n <div className=\"form-group\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <div\n class=\"g-recaptcha\"\n data-size=\"compact\"\n [attr.data-sitekey]=\"recaptchaSiteKey\"\n [attr.data-action]=\"recaptchaAction\"\n ></div>\n </div>\n </div>\n }\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n <span>\n <a\n [href]=\"url.loginUrl\"\n [innerHTML]=\"i18n.msgStr('backToLogin') | kcSanitize: 'html'\"\n ></a>\n </span>\n </div>\n </div>\n @if (recaptchaRequired && !recaptchaVisible && recaptchaAction !== undefined) {\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <button\n class=\"g-recaptcha\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [attr.data-sitekey]=\"recaptchaSiteKey\"\n [attr.data-callback]=\"onCallback\"\n [attr.data-action]=\"recaptchaAction\"\n >\n {{ i18n.msgStr('doRegister') }}\n </button>\n </div>\n } @else {\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n type=\"submit\"\n [disabled]=\"!isFormSubmittable() || (termsAcceptanceRequired && !areTermsAccepted())\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doRegister')\"\n />\n </div>\n }\n </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloakify-angular-login-pages-register.mjs","sources":["../../src/login/pages/register/register.component.ts","../../src/login/pages/register/register.component.html","../../src/login/pages/register/keycloakify-angular-login-pages-register.ts"],"sourcesContent":["import { AsyncPipe, NgClass, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, signal, type TemplateRef, Type, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { UserProfileFormFieldsComponent } from '@keycloakify/angular/login/components/user-profile-form-fields';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { SubmitService } from '@keycloakify/angular/login/services/submit';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n selector: 'kc-register',\n templateUrl: 'register.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, NgClass, NgComponentOutlet],\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => RegisterComponent)\n }\n ]\n})\nexport class RegisterComponent extends ComponentReference {\n #submitService = inject(SubmitService);\n kcContext = inject<Extract<KcContext, { pageId: 'register.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = false;\n displayInfo = false;\n displayMessage: boolean = !this.kcContext?.messagesPerField?.existsError('global');\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n\n isFormSubmittable = signal(false);\n areTermsAccepted = signal(false);\n userProfileFormFields = input<Type<UserProfileFormFieldsComponent>>();\n\n constructor() {\n super();\n this.#submitService.isSubmittable.pipe(takeUntilDestroyed()).subscribe(submittable => {\n this.isFormSubmittable.set(submittable);\n });\n }\n onCallback() {\n (document.getElementById('kc-register-form') as HTMLFormElement).submit();\n }\n}\n","@let url = kcContext.url;\n@let messagesPerField = kcContext.messagesPerField;\n@let recaptchaRequired = kcContext.recaptchaRequired;\n@let recaptchaVisible = kcContext.recaptchaVisible;\n@let recaptchaSiteKey = kcContext.recaptchaSiteKey;\n@let recaptchaAction = kcContext.recaptchaAction;\n@let termsAcceptanceRequired = kcContext.termsAcceptanceRequired;\n\n<ng-template #headerNode>\n @let messageHeader = kcContext.messageHeader;\n {{ messageHeader ?? i18n.advancedMsgStr('registerTitle') }}\n</ng-template>\n<form\n id=\"kc-register-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.registrationAction\"\n>\n <ng-container [ngComponentOutlet]=\"userProfileFormFields() ?? null\" />\n @if (termsAcceptanceRequired) {\n <div className=\"form-group\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n {{ i18n.msgStr('termsTitle') }}\n <div id=\"kc-registration-terms-text\">\n {{ i18n.msgStr('termsText') }}\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div [kcClass]=\"'kcLabelWrapperClass'\">\n <input\n type=\"checkbox\"\n id=\"termsAccepted\"\n name=\"termsAccepted\"\n [kcClass]=\"'kcCheckboxInputClass'\"\n [checked]=\"areTermsAccepted()\"\n [attr.aria-invalid]=\"messagesPerField.existsError('termsAccepted')\"\n (change)=\"areTermsAccepted.set($any($event.target).checked)\"\n />\n <label\n for=\"termsAccepted\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.msgStr('acceptTerms') }}\n </label>\n </div>\n @if (messagesPerField.existsError('termsAccepted')) {\n <div [kcClass]=\"'kcLabelWrapperClass'\">\n <span\n id=\"input-error-terms-accepted\"\n aria-live=\"polite\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n [innerHtml]=\"messagesPerField.get('termsAccepted') | kcSanitize: 'html'\"\n ></span>\n </div>\n }\n </div>\n }\n @if (recaptchaRequired && (recaptchaVisible || recaptchaAction === undefined)) {\n <div className=\"form-group\">\n <div [kcClass]=\"'kcInputWrapperClass'\">\n <div\n class=\"g-recaptcha\"\n data-size=\"compact\"\n [attr.data-sitekey]=\"recaptchaSiteKey\"\n [attr.data-action]=\"recaptchaAction\"\n ></div>\n </div>\n </div>\n }\n\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\">\n <span>\n <a\n [href]=\"url.loginUrl\"\n [innerHTML]=\"i18n.msgStr('backToLogin') | kcSanitize: 'html'\"\n ></a>\n </span>\n </div>\n </div>\n @if (recaptchaRequired && !recaptchaVisible && recaptchaAction !== undefined) {\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <button\n class=\"g-recaptcha\"\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [attr.data-sitekey]=\"recaptchaSiteKey\"\n [attr.data-callback]=\"onCallback\"\n [attr.data-action]=\"recaptchaAction\"\n >\n {{ i18n.msgStr('doRegister') }}\n </button>\n </div>\n } @else {\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n type=\"submit\"\n [disabled]=\"!isFormSubmittable() || (termsAcceptanceRequired && !areTermsAccepted())\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [value]=\"i18n.msgStr('doRegister')\"\n />\n </div>\n }\n </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -10,9 +10,7 @@ import { DO_MAKE_USER_CONFIRM_PASSWORD } from '@keycloakify/angular/login/tokens
10
10
  const provideKeycloakifyAngular = (config) => makeEnvironmentProviders([
11
11
  {
12
12
  provide: KC_LOGIN_CONTEXT,
13
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
14
- // @ts-ignore
15
- useValue: window.kcContext
13
+ useValue: config.kcContext
16
14
  },
17
15
  {
18
16
  provide: DO_MAKE_USER_CONFIRM_PASSWORD,
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-providers-keycloakify-angular.mjs","sources":["../../src/login/providers/keycloakify-angular/keycloakify-angular.providers.ts","../../src/login/providers/keycloakify-angular/keycloakify-angular-login-providers-keycloakify-angular.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { APP_INITIALIZER, LOCALE_ID, makeEnvironmentProviders } from '@angular/core';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { I18nService } from '@keycloakify/angular/login/services/i18n';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport { DO_MAKE_USER_CONFIRM_PASSWORD } from '@keycloakify/angular/login/tokens/make-user-confirm-password';\nimport { type KcContextLike } from 'keycloakify/login/i18n/noJsx';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\nexport type KeycloakifyAngularLoginConfig = {\n doMakeUserConfirmPassword?: boolean;\n doUseDefaultCss?: boolean;\n classes?: { [key in ClassKey]?: string };\n getI18n: (params: { kcContext: KcContextLike }) => {\n i18n: unknown;\n prI18n_currentLanguage: Promise<unknown> | undefined;\n };\n};\n\nexport const provideKeycloakifyAngular = (config: KeycloakifyAngularLoginConfig) =>\n makeEnvironmentProviders([\n {\n provide: KC_LOGIN_CONTEXT,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n useValue: window.kcContext\n },\n {\n provide: DO_MAKE_USER_CONFIRM_PASSWORD,\n useValue: config?.doMakeUserConfirmPassword ?? true\n },\n {\n provide: LOCALE_ID,\n useFactory: (document: Document) => {\n return document.documentElement.lang ?? 'en';\n },\n deps: [DOCUMENT]\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: (i18nService: I18nService, kcContext: KcContext) => async () => {\n const getI18n = config.getI18n;\n\n const { i18n, prI18n_currentLanguage } = getI18n({\n kcContext\n });\n let i18nPromise = new Promise<typeof i18n>(resolve => resolve(i18n));\n if (prI18n_currentLanguage) {\n i18nPromise = prI18n_currentLanguage;\n }\n return i18nPromise.then(i18n => {\n i18nService.i18n = i18n;\n return true;\n });\n },\n deps: [I18nService, KC_LOGIN_CONTEXT]\n },\n {\n provide: LOGIN_I18N,\n useFactory: (i18nService: I18nService) => i18nService.i18n,\n deps: [I18nService]\n },\n { provide: USE_DEFAULT_CSS, useValue: config?.doUseDefaultCss ?? true },\n { provide: LOGIN_CLASSES, useValue: config?.classes ?? {} }\n ]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAsBa,MAAA,yBAAyB,GAAG,CAAC,MAAqC,KAC3E,wBAAwB,CAAC;AACrB,IAAA;AACI,QAAA,OAAO,EAAE,gBAAgB;;;QAGzB,QAAQ,EAAE,MAAM,CAAC,SAAS;AAC7B,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,6BAA6B;AACtC,QAAA,QAAQ,EAAE,MAAM,EAAE,yBAAyB,IAAI,IAAI;AACtD,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,CAAC,QAAkB,KAAI;AAC/B,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC;SAChD;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC;AACnB,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,WAAwB,EAAE,SAAoB,KAAK,YAAW;AACvE,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAE/B,YAAA,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC;gBAC7C,SAAS;AACZ,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,WAAW,GAAG,IAAI,OAAO,CAAc,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,sBAAsB,EAAE;gBACxB,WAAW,GAAG,sBAAsB,CAAC;aACxC;AACD,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAG;AAC3B,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAI,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;AACxC,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,CAAC,WAAwB,KAAK,WAAW,CAAC,IAAI;QAC1D,IAAI,EAAE,CAAC,WAAW,CAAC;AACtB,KAAA;IACD,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,IAAI,IAAI,EAAE;IACvE,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE;AAC9D,CAAA;;ACpEL;;AAEG;;;;"}
1
+ {"version":3,"file":"keycloakify-angular-login-providers-keycloakify-angular.mjs","sources":["../../src/login/providers/keycloakify-angular/keycloakify-angular.providers.ts","../../src/login/providers/keycloakify-angular/keycloakify-angular-login-providers-keycloakify-angular.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { APP_INITIALIZER, LOCALE_ID, makeEnvironmentProviders } from '@angular/core';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport type { KcContext } from '@keycloakify/angular/login/KcContext';\nimport { I18nService } from '@keycloakify/angular/login/services/i18n';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\nimport { DO_MAKE_USER_CONFIRM_PASSWORD } from '@keycloakify/angular/login/tokens/make-user-confirm-password';\nimport { type KcContextLike } from 'keycloakify/login/i18n/noJsx';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\nexport type KeycloakifyAngularLoginConfig = {\n doMakeUserConfirmPassword?: boolean;\n doUseDefaultCss?: boolean;\n classes?: { [key in ClassKey]?: string };\n kcContext: KcContext;\n getI18n: (params: { kcContext: KcContextLike }) => {\n i18n: unknown;\n prI18n_currentLanguage: Promise<unknown> | undefined;\n };\n};\n\nexport const provideKeycloakifyAngular = (config: KeycloakifyAngularLoginConfig) =>\n makeEnvironmentProviders([\n {\n provide: KC_LOGIN_CONTEXT,\n useValue: config.kcContext\n },\n {\n provide: DO_MAKE_USER_CONFIRM_PASSWORD,\n useValue: config?.doMakeUserConfirmPassword ?? true\n },\n {\n provide: LOCALE_ID,\n useFactory: (document: Document) => {\n return document.documentElement.lang ?? 'en';\n },\n deps: [DOCUMENT]\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: (i18nService: I18nService, kcContext: KcContext) => async () => {\n const getI18n = config.getI18n;\n\n const { i18n, prI18n_currentLanguage } = getI18n({\n kcContext\n });\n let i18nPromise = new Promise<typeof i18n>(resolve => resolve(i18n));\n if (prI18n_currentLanguage) {\n i18nPromise = prI18n_currentLanguage;\n }\n return i18nPromise.then(i18n => {\n i18nService.i18n = i18n;\n return true;\n });\n },\n deps: [I18nService, KC_LOGIN_CONTEXT]\n },\n {\n provide: LOGIN_I18N,\n useFactory: (i18nService: I18nService) => i18nService.i18n,\n deps: [I18nService]\n },\n { provide: USE_DEFAULT_CSS, useValue: config?.doUseDefaultCss ?? true },\n { provide: LOGIN_CLASSES, useValue: config?.classes ?? {} }\n ]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAuBa,MAAA,yBAAyB,GAAG,CAAC,MAAqC,KAC3E,wBAAwB,CAAC;AACrB,IAAA;AACI,QAAA,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,MAAM,CAAC,SAAS;AAC7B,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,6BAA6B;AACtC,QAAA,QAAQ,EAAE,MAAM,EAAE,yBAAyB,IAAI,IAAI;AACtD,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,CAAC,QAAkB,KAAI;AAC/B,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC;SAChD;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC;AACnB,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,WAAwB,EAAE,SAAoB,KAAK,YAAW;AACvE,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAE/B,YAAA,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC;gBAC7C,SAAS;AACZ,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,WAAW,GAAG,IAAI,OAAO,CAAc,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,sBAAsB,EAAE;gBACxB,WAAW,GAAG,sBAAsB,CAAC;aACxC;AACD,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAG;AAC3B,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAI,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;AACxC,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,CAAC,WAAwB,KAAK,WAAW,CAAC,IAAI;QAC1D,IAAI,EAAE,CAAC,WAAW,CAAC;AACtB,KAAA;IACD,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,IAAI,IAAI,EAAE;IACvE,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE;AAC9D,CAAA;;ACnEL;;AAEG;;;;"}
@@ -1,3 +1,4 @@
1
+ import type { KcContext } from '@keycloakify/angular/login/KcContext';
1
2
  import { type KcContextLike } from 'keycloakify/login/i18n/noJsx';
2
3
  import type { ClassKey } from 'keycloakify/login/lib/kcClsx';
3
4
  export type KeycloakifyAngularLoginConfig = {
@@ -6,6 +7,7 @@ export type KeycloakifyAngularLoginConfig = {
6
7
  classes?: {
7
8
  [key in ClassKey]?: string;
8
9
  };
10
+ kcContext: KcContext;
9
11
  getI18n: (params: {
10
12
  kcContext: KcContextLike;
11
13
  }) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keycloakify/angular",
3
- "version": "0.0.1-rc.24",
3
+ "version": "0.0.1-rc.26",
4
4
  "peerDependencies": {
5
5
  "keycloakify": "^11.3.2",
6
6
  "@angular/core": "^18.0.0",
@@ -309,6 +309,12 @@
309
309
  "esm": "./esm2022/login/directives/kc-class/keycloakify-angular-login-directives-kc-class.mjs",
310
310
  "default": "./fesm2022/keycloakify-angular-login-directives-kc-class.mjs"
311
311
  },
312
+ "./login/providers/keycloakify-angular": {
313
+ "types": "./login/providers/keycloakify-angular/index.d.ts",
314
+ "esm2022": "./esm2022/login/providers/keycloakify-angular/keycloakify-angular-login-providers-keycloakify-angular.mjs",
315
+ "esm": "./esm2022/login/providers/keycloakify-angular/keycloakify-angular-login-providers-keycloakify-angular.mjs",
316
+ "default": "./fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs"
317
+ },
312
318
  "./login/pages/code": {
313
319
  "types": "./login/pages/code/index.d.ts",
314
320
  "esm2022": "./esm2022/login/pages/code/keycloakify-angular-login-pages-code.mjs",
@@ -525,12 +531,6 @@
525
531
  "esm": "./esm2022/login/pages/webauthn-register/keycloakify-angular-login-pages-webauthn-register.mjs",
526
532
  "default": "./fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs"
527
533
  },
528
- "./login/providers/keycloakify-angular": {
529
- "types": "./login/providers/keycloakify-angular/index.d.ts",
530
- "esm2022": "./esm2022/login/providers/keycloakify-angular/keycloakify-angular-login-providers-keycloakify-angular.mjs",
531
- "esm": "./esm2022/login/providers/keycloakify-angular/keycloakify-angular-login-providers-keycloakify-angular.mjs",
532
- "default": "./fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs"
533
- },
534
534
  "./login/services/i18n": {
535
535
  "types": "./login/services/i18n/index.d.ts",
536
536
  "esm2022": "./esm2022/login/services/i18n/keycloakify-angular-login-services-i18n.mjs",
@@ -52,7 +52,7 @@ export class DynamicPageInjectorComponent {
52
52
 
53
53
  @Component({
54
54
  selector: 'kc-root',
55
- templateUrl: './template.component.html',
55
+ templateUrl: 'template.component.html',
56
56
  standalone: true,
57
57
  imports: [AsyncPipe, KcSanitizePipe, NgTemplateOutlet, KcClassDirective, NgClass, DynamicPageInjectorComponent],
58
58
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -12,6 +12,7 @@ import type { KcContext } from '@keycloakify/angular/account/KcContext';
12
12
  export type KeycloakifyAngularAccountConfig = {
13
13
  doUseDefaultCss?: boolean;
14
14
  classes?: { [key in ClassKey]?: string };
15
+ kcContext: KcContext;
15
16
  getI18n: (params: { kcContext: KcContextLike }) => {
16
17
  i18n: unknown;
17
18
  prI18n_currentLanguage: Promise<unknown> | undefined;
@@ -22,9 +23,7 @@ export const provideKeycloakifyAngular = (config: KeycloakifyAngularAccountConfi
22
23
  makeEnvironmentProviders([
23
24
  {
24
25
  provide: KC_ACCOUNT_CONTEXT,
25
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
26
- // @ts-ignore
27
- useValue: window.kcContext
26
+ useValue: config.kcContext
28
27
  },
29
28
  {
30
29
  provide: LOCALE_ID,
@@ -307,7 +307,7 @@ export async function command(params: { buildContext: BuildContext }) {
307
307
  ` return {`,
308
308
  ` PageComponent: await getDefaultPageComponent(pageId),`,
309
309
  ` TemplateComponent,`,
310
- ...(themeType === 'login' ? [`+ UserProfileFormFieldsComponent,`] : []),
310
+ ...(themeType === 'login' ? [` UserProfileFormFieldsComponent,`] : []),
311
311
  ...(themeType === 'login' ? [` doMakeUserConfirmPassword,`] : []),
312
312
  ` doUseDefaultCss,`,
313
313
  ` classes,`,
@@ -103,6 +103,7 @@ export function command(params: { buildContext: BuildContext }) {
103
103
  ` const appRef = await bootstrapApplication({`,
104
104
  ` KcRootComponent: TemplateComponent,`,
105
105
  ` kcProvider: provideKeycloakifyAngular({`,
106
+ ` kcContext,`,
106
107
  ` classes,`,
107
108
  ` getI18n,`,
108
109
  ` doUseDefaultCss,`,
@@ -19,7 +19,7 @@ import type { I18n } from '@keycloakify/angular/login/i18n';
19
19
  standalone: true,
20
20
  imports: [KcClassDirective],
21
21
  changeDetection: ChangeDetectionStrategy.OnPush,
22
- templateUrl: './logout-other-sessions.component.html',
22
+ templateUrl: 'logout-other-sessions.component.html',
23
23
  providers: [
24
24
  {
25
25
  provide: ComponentReference,
@@ -20,7 +20,7 @@ import type { I18n } from '@keycloakify/angular/login/i18n';
20
20
  standalone: true,
21
21
  changeDetection: ChangeDetectionStrategy.OnPush,
22
22
  imports: [KcClassDirective, AsyncPipe],
23
- templateUrl: './password-wrapper.component.html',
23
+ templateUrl: 'password-wrapper.component.html',
24
24
  providers: [
25
25
  {
26
26
  provide: ComponentReference,
@@ -59,7 +59,7 @@ export class DynamicPageInjectorComponent {
59
59
 
60
60
  @Component({
61
61
  selector: 'kc-root',
62
- templateUrl: './template.component.html',
62
+ templateUrl: 'template.component.html',
63
63
  standalone: true,
64
64
  imports: [AsyncPipe, KcSanitizePipe, NgTemplateOutlet, KcClassDirective, DynamicPageInjectorComponent],
65
65
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -128,14 +128,14 @@ export class TemplateComponent extends ComponentReference implements OnInit {
128
128
  }
129
129
 
130
130
  onComponentCreated(compRef: object) {
131
- if ('displayInfo' in compRef && compRef.displayInfo) {
132
- this.displayInfo = compRef.displayInfo as boolean;
131
+ if ('displayInfo' in compRef) {
132
+ this.displayInfo = !!compRef.displayInfo as boolean;
133
133
  }
134
- if ('displayMessage' in compRef && compRef.displayMessage) {
135
- this.displayMessage = compRef.displayMessage as boolean;
134
+ if ('displayMessage' in compRef) {
135
+ this.displayMessage = !!compRef.displayMessage as boolean;
136
136
  }
137
- if ('displayRequiredFields' in compRef && compRef.displayRequiredFields) {
138
- this.displayRequiredFields = compRef.displayRequiredFields as boolean;
137
+ if ('displayRequiredFields' in compRef) {
138
+ this.displayRequiredFields = !!compRef.displayRequiredFields as boolean;
139
139
  }
140
140
  if ('documentTitle' in compRef && compRef.documentTitle) {
141
141
  this.documentTitle = compRef.documentTitle as string;
@@ -1,7 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, forwardRef, inject, type TemplateRef, viewChild } from '@angular/core';
2
2
  import { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';
3
3
  import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';
4
- import { TemplateComponent } from '@keycloakify/angular/login/containers/template';
5
4
  import { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';
6
5
  import type { I18n } from '@keycloakify/angular/login/i18n';
7
6
  import type { KcContext } from '@keycloakify/angular/login/KcContext';
@@ -12,7 +11,7 @@ import type { ClassKey } from 'keycloakify/login/lib/kcClsx';
12
11
 
13
12
  @Component({
14
13
  standalone: true,
15
- imports: [TemplateComponent, KcClassDirective],
14
+ imports: [KcClassDirective],
16
15
  selector: 'kc-delete-account-confirm',
17
16
  templateUrl: 'delete-account-confirm.component.html',
18
17
  changeDetection: ChangeDetectionStrategy.OnPush,