@keycloakify/angular 0.0.1-rc.23 → 0.0.1-rc.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/bin/338.index.js +14 -1
- package/bin/758.index.js +14 -1
- package/bin/925.index.js +13 -2
- package/esm2022/login/containers/template/template.component.mjs +11 -5
- package/esm2022/login/login.mjs +1 -1
- package/esm2022/login/pages/code/code.component.mjs +3 -3
- package/esm2022/login/pages/delete-credential/delete-credential.component.mjs +3 -3
- package/esm2022/login/pages/error/error.component.mjs +3 -3
- package/esm2022/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +7 -7
- package/esm2022/login/pages/info/info.component.mjs +3 -3
- package/esm2022/login/pages/login/login.component.mjs +3 -3
- package/esm2022/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +3 -3
- package/esm2022/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +3 -3
- package/esm2022/login/pages/login-page-expired/login-page-expired.component.mjs +3 -3
- package/esm2022/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +3 -3
- package/esm2022/login/pages/login-password/login-password.component.mjs +3 -3
- package/esm2022/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +3 -3
- package/esm2022/login/pages/login-reset-otp/login-reset-otp.component.mjs +3 -3
- package/esm2022/login/pages/login-reset-password/login-reset-password.component.mjs +3 -3
- package/esm2022/login/pages/login-update-profile/login-update-profile.component.mjs +7 -7
- package/esm2022/login/pages/login-username/login-username.component.mjs +3 -3
- package/esm2022/login/pages/login-verify-email/login-verify-email.component.mjs +3 -3
- package/esm2022/login/pages/register/register.component.mjs +7 -7
- package/esm2022/login/pages/select-authenticator/select-authenticator.component.mjs +3 -3
- package/esm2022/login/pages/update-email/update-email.component.mjs +7 -7
- package/esm2022/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +3 -3
- package/fesm2022/keycloakify-angular-login-containers-template.mjs +10 -4
- package/fesm2022/keycloakify-angular-login-containers-template.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-code.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-code.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-error.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-error.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs +6 -6
- package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-info.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-info.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-password.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-password.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs +6 -6
- package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-username.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-username.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-login.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-login.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-register.mjs +7 -7
- package/fesm2022/keycloakify-angular-login-pages-register.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-update-email.mjs +6 -6
- package/fesm2022/keycloakify-angular-login-pages-update-email.mjs.map +1 -1
- package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs +2 -2
- package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs.map +1 -1
- package/login/containers/template/template.component.d.ts +4 -2
- package/login/login.d.ts +1 -0
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +4 -2
- package/login/pages/login-update-profile/login-update-profile.component.d.ts +4 -2
- package/login/pages/register/register.component.d.ts +4 -2
- package/login/pages/update-email/update-email.component.d.ts +4 -2
- package/package.json +7 -7
- package/src/bin/eject-page.ts +21 -3
- package/src/bin/update-kc-gen.ts +14 -1
- package/src/login/containers/template/template.component.html +1 -0
- package/src/login/containers/template/template.component.ts +6 -0
- package/src/login/login.ts +1 -0
- package/src/login/pages/code/code.component.html +1 -0
- package/src/login/pages/delete-credential/delete-credential.component.html +26 -26
- package/src/login/pages/error/error.component.html +16 -17
- package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +1 -1
- package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +4 -3
- package/src/login/pages/info/info.component.html +2 -2
- package/src/login/pages/login/login.component.html +3 -1
- package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +2 -0
- package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +1 -0
- package/src/login/pages/login-page-expired/login-page-expired.component.html +23 -24
- package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +166 -165
- package/src/login/pages/login-password/login-password.component.html +68 -69
- package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +55 -57
- package/src/login/pages/login-reset-otp/login-reset-otp.component.html +48 -49
- package/src/login/pages/login-reset-password/login-reset-password.component.html +1 -0
- package/src/login/pages/login-update-profile/login-update-profile.component.html +1 -1
- package/src/login/pages/login-update-profile/login-update-profile.component.ts +3 -2
- package/src/login/pages/login-username/login-username.component.html +5 -3
- package/src/login/pages/login-verify-email/login-verify-email.component.html +1 -1
- package/src/login/pages/register/register.component.html +2 -2
- package/src/login/pages/register/register.component.ts +3 -2
- package/src/login/pages/select-authenticator/select-authenticator.component.html +32 -32
- package/src/login/pages/update-email/update-email.component.html +1 -1
- package/src/login/pages/update-email/update-email.component.ts +3 -2
- package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +1 -0
|
@@ -31,7 +31,7 @@ class LoginComponent extends ComponentReference {
|
|
|
31
31
|
provide: ComponentReference,
|
|
32
32
|
useExisting: forwardRef(() => LoginComponent)
|
|
33
33
|
}
|
|
34
|
-
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let realm = kcContext.realm;\n@let
|
|
34
|
+
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@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", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }, { kind: "component", type: PasswordWrapperComponent, selector: "kc-password-wrapper", inputs: ["passwordInputId"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35
35
|
}
|
|
36
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: LoginComponent, decorators: [{
|
|
37
37
|
type: Component,
|
|
@@ -40,7 +40,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
40
40
|
provide: ComponentReference,
|
|
41
41
|
useExisting: forwardRef(() => LoginComponent)
|
|
42
42
|
}
|
|
43
|
-
], template: "@let realm = kcContext.realm;\n@let
|
|
43
|
+
], template: "@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" }]
|
|
44
44
|
}] });
|
|
45
45
|
|
|
46
46
|
/**
|
|
@@ -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 social = kcContext.social;\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 <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 @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":";;;;;;;;;;;;AA2BM,MAAO,cAAe,SAAQ,kBAAkB,CAAA;AAbtD,IAAA,WAAA,GAAA;;AAcI,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA8C,gBAAgB,CAAC,CAAC;AAClF,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,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,mBAAmB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC;AACzI,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAExF,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;AAElF,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,KAAA;8GAnBY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAPZ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAChD,aAAA;SACJ,ECzBL,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,uiRA0MA,EDvLc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAAa,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,mDAAE,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAQ7F,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;+BACI,UAAU,EAAA,UAAA,EAER,IAAI,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,CAAC,EAC5F,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAChD,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,uiRAAA,EAAA,CAAA;;;AEzBL;;AAEG;;;;"}
|
|
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,11 +1,10 @@
|
|
|
1
|
-
import { AsyncPipe, NgClass
|
|
1
|
+
import { NgComponentOutlet, AsyncPipe, NgClass } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, viewChild, signal, forwardRef, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
import { inject, viewChild, signal, input, forwardRef, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';
|
|
6
6
|
import { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';
|
|
7
7
|
import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';
|
|
8
|
-
import { UserProfileFormFieldsComponent } from '@keycloakify/angular/login/components/user-profile-form-fields';
|
|
9
8
|
import { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';
|
|
10
9
|
import { SubmitService } from '@keycloakify/angular/login/services/submit';
|
|
11
10
|
import { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';
|
|
@@ -29,6 +28,7 @@ class RegisterComponent extends ComponentReference {
|
|
|
29
28
|
this.socialProvidersNode = viewChild('socialProvidersNode');
|
|
30
29
|
this.isFormSubmittable = signal(false);
|
|
31
30
|
this.areTermsAccepted = signal(false);
|
|
31
|
+
this.userProfileFormFields = input();
|
|
32
32
|
this.#submitService.isSubmittable.pipe(takeUntilDestroyed()).subscribe(submittable => {
|
|
33
33
|
this.isFormSubmittable.set(submittable);
|
|
34
34
|
});
|
|
@@ -37,21 +37,21 @@ class RegisterComponent extends ComponentReference {
|
|
|
37
37
|
document.getElementById('kc-register-form').submit();
|
|
38
38
|
}
|
|
39
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RegisterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: RegisterComponent, isStandalone: true, selector: "kc-register", providers: [
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: RegisterComponent, isStandalone: true, selector: "kc-register", inputs: { userProfileFormFields: { classPropertyName: "userProfileFormFields", publicName: "userProfileFormFields", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
41
41
|
{
|
|
42
42
|
provide: ComponentReference,
|
|
43
43
|
useExisting: forwardRef(() => RegisterComponent)
|
|
44
44
|
}
|
|
45
|
-
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let
|
|
45
|
+
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@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", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
46
46
|
}
|
|
47
47
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: RegisterComponent, decorators: [{
|
|
48
48
|
type: Component,
|
|
49
|
-
args: [{ selector: 'kc-register', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, NgClass, NgComponentOutlet
|
|
49
|
+
args: [{ selector: 'kc-register', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [KcClassDirective, AsyncPipe, KcSanitizePipe, NgClass, NgComponentOutlet], providers: [
|
|
50
50
|
{
|
|
51
51
|
provide: ComponentReference,
|
|
52
52
|
useExisting: forwardRef(() => RegisterComponent)
|
|
53
53
|
}
|
|
54
|
-
], template: "@let
|
|
54
|
+
], template: "@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" }]
|
|
55
55
|
}], ctorParameters: () => [] });
|
|
56
56
|
|
|
57
57
|
/**
|
|
@@ -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, signal, type TemplateRef, 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, UserProfileFormFieldsComponent],\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\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 messageHeader = kcContext.messageHeader;\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 {{ 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 <kc-user-profile-form-fields />\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":";;;;;;;;;;;;;;AA6BM,MAAO,iBAAkB,SAAQ,kBAAkB,CAAA;AACrD,IAAA,cAAc,CAAyB;AAqBvC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAtBZ,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAiD,gBAAgB,CAAC,CAAC;AACrF,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;AACpB,QAAA,IAAA,CAAA,cAAc,GAAY,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEnF,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;AAElF,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAI7B,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,IAAG;AACjF,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACN;IACD,UAAU,GAAA;QACL,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAqB,CAAC,MAAM,EAAE,CAAC;KAC7E;8GA9BQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAPf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AACnD,aAAA;AACJ,SAAA,EAAA,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,EC3BL,ugJAoHA,ED/Fc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAAa,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,cAAc,mDAA8B,8BAA8B,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAQxG,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;+BACI,aAAa,EAAA,UAAA,EAEX,IAAI,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,8BAA8B,CAAC,EACvG,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AACnD,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,ugJAAA,EAAA,CAAA;;;AE3BL;;AAEG;;;;"}
|
|
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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"}
|
|
@@ -28,7 +28,7 @@ class SelectAuthenticatorComponent extends ComponentReference {
|
|
|
28
28
|
provide: ComponentReference,
|
|
29
29
|
useExisting: forwardRef(() => SelectAuthenticatorComponent)
|
|
30
30
|
}
|
|
31
|
-
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let auth = kcContext.auth;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginChooseAuthenticator') }}\n</ng-template>\n
|
|
31
|
+
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let auth = kcContext.auth;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginChooseAuthenticator') }}\n</ng-template>\n\n<form\n id=\"kc-select-credential-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <div [kcClass]=\"'kcSelectAuthListClass'\">\n @for (authenticationSelection of auth.authenticationSelections; track authenticationSelection; let i = $index) {\n <button\n type=\"submit\"\n name=\"authenticationExecution\"\n [kcClass]=\"'kcSelectAuthListItemClass'\"\n [value]=\"authenticationSelection.authExecId\"\n >\n <div [kcClass]=\"'kcSelectAuthListItemIconClass'\">\n <i [kcClass]=\"['kcSelectAuthListItemIconPropertyClass', $any(authenticationSelection.iconCssClass)]\"></i>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemBodyClass'\">\n <div [kcClass]=\"'kcSelectAuthListItemHeadingClass'\">\n {{ i18n.advancedMsgStr(authenticationSelection.displayName) }}\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\">\n {{ i18n.advancedMsgStr(authenticationSelection.helpText) }}\n </div>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemFillClass'\"></div>\n <div [kcClass]=\"'kcSelectAuthListItemArrowClass'\">\n <i [kcClass]=\"'kcSelectAuthListItemArrowIconClass'\"></i>\n </div>\n </button>\n }\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32
32
|
}
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SelectAuthenticatorComponent, decorators: [{
|
|
34
34
|
type: Component,
|
|
@@ -37,7 +37,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
37
37
|
provide: ComponentReference,
|
|
38
38
|
useExisting: forwardRef(() => SelectAuthenticatorComponent)
|
|
39
39
|
}
|
|
40
|
-
], template: "@let url = kcContext.url;\n@let auth = kcContext.auth;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginChooseAuthenticator') }}\n</ng-template>\n
|
|
40
|
+
], template: "@let url = kcContext.url;\n@let auth = kcContext.auth;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginChooseAuthenticator') }}\n</ng-template>\n\n<form\n id=\"kc-select-credential-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <div [kcClass]=\"'kcSelectAuthListClass'\">\n @for (authenticationSelection of auth.authenticationSelections; track authenticationSelection; let i = $index) {\n <button\n type=\"submit\"\n name=\"authenticationExecution\"\n [kcClass]=\"'kcSelectAuthListItemClass'\"\n [value]=\"authenticationSelection.authExecId\"\n >\n <div [kcClass]=\"'kcSelectAuthListItemIconClass'\">\n <i [kcClass]=\"['kcSelectAuthListItemIconPropertyClass', $any(authenticationSelection.iconCssClass)]\"></i>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemBodyClass'\">\n <div [kcClass]=\"'kcSelectAuthListItemHeadingClass'\">\n {{ i18n.advancedMsgStr(authenticationSelection.displayName) }}\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\">\n {{ i18n.advancedMsgStr(authenticationSelection.helpText) }}\n </div>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemFillClass'\"></div>\n <div [kcClass]=\"'kcSelectAuthListItemArrowClass'\">\n <i [kcClass]=\"'kcSelectAuthListItemArrowIconClass'\"></i>\n </div>\n </button>\n }\n </div>\n</form>\n" }]
|
|
41
41
|
}] });
|
|
42
42
|
|
|
43
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloakify-angular-login-pages-select-authenticator.mjs","sources":["../../src/login/pages/select-authenticator/select-authenticator.component.ts","../../src/login/pages/select-authenticator/select-authenticator.component.html","../../src/login/pages/select-authenticator/keycloakify-angular-login-pages-select-authenticator.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { 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, NgClass],\n selector: 'kc-select-authenticator',\n templateUrl: 'select-authenticator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => SelectAuthenticatorComponent)\n }\n ]\n})\nexport class SelectAuthenticatorComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'select-authenticator.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 = true;\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 auth = kcContext.auth;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginChooseAuthenticator') }}\n</ng-template>\n
|
|
1
|
+
{"version":3,"file":"keycloakify-angular-login-pages-select-authenticator.mjs","sources":["../../src/login/pages/select-authenticator/select-authenticator.component.ts","../../src/login/pages/select-authenticator/select-authenticator.component.html","../../src/login/pages/select-authenticator/keycloakify-angular-login-pages-select-authenticator.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { 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, NgClass],\n selector: 'kc-select-authenticator',\n templateUrl: 'select-authenticator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => SelectAuthenticatorComponent)\n }\n ]\n})\nexport class SelectAuthenticatorComponent extends ComponentReference {\n kcContext = inject<Extract<KcContext, { pageId: 'select-authenticator.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 = true;\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 auth = kcContext.auth;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('loginChooseAuthenticator') }}\n</ng-template>\n\n<form\n id=\"kc-select-credential-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <div [kcClass]=\"'kcSelectAuthListClass'\">\n @for (authenticationSelection of auth.authenticationSelections; track authenticationSelection; let i = $index) {\n <button\n type=\"submit\"\n name=\"authenticationExecution\"\n [kcClass]=\"'kcSelectAuthListItemClass'\"\n [value]=\"authenticationSelection.authExecId\"\n >\n <div [kcClass]=\"'kcSelectAuthListItemIconClass'\">\n <i [kcClass]=\"['kcSelectAuthListItemIconPropertyClass', $any(authenticationSelection.iconCssClass)]\"></i>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemBodyClass'\">\n <div [kcClass]=\"'kcSelectAuthListItemHeadingClass'\">\n {{ i18n.advancedMsgStr(authenticationSelection.displayName) }}\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemDescriptionClass'\">\n {{ i18n.advancedMsgStr(authenticationSelection.helpText) }}\n </div>\n </div>\n <div [kcClass]=\"'kcSelectAuthListItemFillClass'\"></div>\n <div [kcClass]=\"'kcSelectAuthListItemArrowClass'\">\n <i [kcClass]=\"'kcSelectAuthListItemArrowIconClass'\"></i>\n </div>\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,4BAA6B,SAAQ,kBAAkB,CAAA;AAbpE,IAAA,WAAA,GAAA;;AAcI,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAA6D,gBAAgB,CAAC,CAAC;AACjG,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,IAAI,CAAC;AAEtB,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,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAP1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC9D,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,6qDAwCA,4CD1Bc,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,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAbxC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAC1B,QAAA,EAAA,yBAAyB,EAElB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,kCAAkC,CAAC;AAC9D,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,6qDAAA,EAAA,CAAA;;;AEvBL;;AAEG;;;;"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { NgComponentOutlet } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, viewChild, signal, forwardRef, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
import { inject, viewChild, input, signal, forwardRef, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';
|
|
6
6
|
import { LogoutOtherSessionsComponent } from '@keycloakify/angular/login/components/logout-other-sessions';
|
|
7
|
-
import { UserProfileFormFieldsComponent } from '@keycloakify/angular/login/components/user-profile-form-fields';
|
|
8
7
|
import { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';
|
|
9
8
|
import { SubmitService } from '@keycloakify/angular/login/services/submit';
|
|
10
9
|
import { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';
|
|
@@ -23,27 +22,28 @@ class UpdateEmailComponent extends ComponentReference {
|
|
|
23
22
|
this.headerNode = viewChild('headerNode');
|
|
24
23
|
this.infoNode = viewChild('infoNode');
|
|
25
24
|
this.socialProvidersNode = viewChild('socialProvidersNode');
|
|
25
|
+
this.userProfileFormFields = input();
|
|
26
26
|
this.isFormSubmittable = signal(false);
|
|
27
27
|
this.#submitService.isSubmittable.pipe(takeUntilDestroyed()).subscribe(submittable => {
|
|
28
28
|
this.isFormSubmittable.set(submittable);
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UpdateEmailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: UpdateEmailComponent, isStandalone: true, selector: "kc-update-email", providers: [
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: UpdateEmailComponent, isStandalone: true, selector: "kc-update-email", inputs: { userProfileFormFields: { classPropertyName: "userProfileFormFields", publicName: "userProfileFormFields", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
33
33
|
{
|
|
34
34
|
provide: ComponentReference,
|
|
35
35
|
useExisting: forwardRef(() => UpdateEmailComponent)
|
|
36
36
|
}
|
|
37
|
-
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('updateEmailTitle') }}\n</ng-template>\n<form\n id=\"kc-update-email-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <
|
|
37
|
+
], viewQueries: [{ propertyName: "headerNode", first: true, predicate: ["headerNode"], descendants: true, isSignal: true }, { propertyName: "infoNode", first: true, predicate: ["infoNode"], descendants: true, isSignal: true }, { propertyName: "socialProvidersNode", first: true, predicate: ["socialProvidersNode"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('updateEmailTitle') }}\n</ng-template>\n<form\n id=\"kc-update-email-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <ng-container [ngComponentOutlet]=\"userProfileFormFields() ?? null\" />\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <kc-logout-other-sessions />\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n type=\"submit\"\n [disabled]=\"!isFormSubmittable()\"\n [kcClass]=\"{\n kcButtonClass: true,\n kcButtonPrimaryClass: true,\n kcButtonBlockClass: isAppInitiatedAction,\n kcButtonLargeClass: true\n }\"\n [value]=\"i18n.msgStr('doSubmit')\"\n />\n @if (isAppInitiatedAction) {\n <button\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 </div>\n</form>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: LogoutOtherSessionsComponent, selector: "kc-logout-other-sessions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38
38
|
}
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: UpdateEmailComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
|
-
args: [{ standalone: true, imports: [KcClassDirective, NgComponentOutlet, LogoutOtherSessionsComponent
|
|
41
|
+
args: [{ standalone: true, imports: [KcClassDirective, NgComponentOutlet, LogoutOtherSessionsComponent], selector: 'kc-update-email', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
42
42
|
{
|
|
43
43
|
provide: ComponentReference,
|
|
44
44
|
useExisting: forwardRef(() => UpdateEmailComponent)
|
|
45
45
|
}
|
|
46
|
-
], template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('updateEmailTitle') }}\n</ng-template>\n<form\n id=\"kc-update-email-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <
|
|
46
|
+
], template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('updateEmailTitle') }}\n</ng-template>\n<form\n id=\"kc-update-email-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <ng-container [ngComponentOutlet]=\"userProfileFormFields() ?? null\" />\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <kc-logout-other-sessions />\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n type=\"submit\"\n [disabled]=\"!isFormSubmittable()\"\n [kcClass]=\"{\n kcButtonClass: true,\n kcButtonPrimaryClass: true,\n kcButtonBlockClass: isAppInitiatedAction,\n kcButtonLargeClass: true\n }\"\n [value]=\"i18n.msgStr('doSubmit')\"\n />\n @if (isAppInitiatedAction) {\n <button\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 </div>\n</form>\n" }]
|
|
47
47
|
}], ctorParameters: () => [] });
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloakify-angular-login-pages-update-email.mjs","sources":["../../src/login/pages/update-email/update-email.component.ts","../../src/login/pages/update-email/update-email.component.html","../../src/login/pages/update-email/keycloakify-angular-login-pages-update-email.ts"],"sourcesContent":["import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, signal, type TemplateRef, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { LogoutOtherSessionsComponent } from '@keycloakify/angular/login/components/logout-other-sessions';\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_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\n\n@Component({\n standalone: true,\n imports: [KcClassDirective, NgComponentOutlet, LogoutOtherSessionsComponent
|
|
1
|
+
{"version":3,"file":"keycloakify-angular-login-pages-update-email.mjs","sources":["../../src/login/pages/update-email/update-email.component.ts","../../src/login/pages/update-email/update-email.component.html","../../src/login/pages/update-email/keycloakify-angular-login-pages-update-email.ts"],"sourcesContent":["import { 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 { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { LogoutOtherSessionsComponent } from '@keycloakify/angular/login/components/logout-other-sessions';\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_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context';\n\n@Component({\n standalone: true,\n imports: [KcClassDirective, NgComponentOutlet, LogoutOtherSessionsComponent],\n selector: 'kc-update-email',\n templateUrl: 'update-email.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => UpdateEmailComponent)\n }\n ]\n})\nexport class UpdateEmailComponent extends ComponentReference {\n #submitService = inject(SubmitService);\n kcContext = inject<Extract<KcContext, { pageId: 'update-email.ftl' }>>(KC_LOGIN_CONTEXT);\n i18n = inject<I18n>(LOGIN_I18N);\n\n documentTitle: string | undefined;\n bodyClassName: string | undefined;\n\n displayRequiredFields = true;\n displayInfo = false;\n displayMessage = this.kcContext.messagesPerField.exists('global');\n\n headerNode? = viewChild<TemplateRef<HTMLElement>>('headerNode');\n infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');\n socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');\n\n userProfileFormFields = input<Type<UserProfileFormFieldsComponent>>();\n isFormSubmittable = signal(false);\n\n constructor() {\n super();\n this.#submitService.isSubmittable.pipe(takeUntilDestroyed()).subscribe(submittable => {\n this.isFormSubmittable.set(submittable);\n });\n }\n}\n","@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<ng-template #headerNode>\n {{ i18n.msgStr('updateEmailTitle') }}\n</ng-template>\n<form\n id=\"kc-update-email-form\"\n method=\"post\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n>\n <ng-container [ngComponentOutlet]=\"userProfileFormFields() ?? null\" />\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <kc-logout-other-sessions />\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n type=\"submit\"\n [disabled]=\"!isFormSubmittable()\"\n [kcClass]=\"{\n kcButtonClass: true,\n kcButtonPrimaryClass: true,\n kcButtonBlockClass: isAppInitiatedAction,\n kcButtonLargeClass: true\n }\"\n [value]=\"i18n.msgStr('doSubmit')\"\n />\n @if (isAppInitiatedAction) {\n <button\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 </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|