@keycloakify/angular 0.0.1-rc.6 → 0.0.1-rc.8
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/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +11 -3
- package/login/pages/idp-review-user-profile/idp-review-user-profile.component.js +21 -9
- package/login/providers/keycloakify-angular.providers.d.ts +1 -0
- package/login/providers/keycloakify-angular.providers.js +7 -2
- package/login/tokens/user-profile-form-fields-ejected-path.token.d.ts +2 -0
- package/login/tokens/user-profile-form-fields-ejected-path.token.js +3 -0
- package/package.json +4 -1
- 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 +26 -5
- package/src/login/providers/keycloakify-angular.providers.ts +7 -1
- package/src/login/tokens/user-profile-form-fields-ejected-path.token.ts +3 -0
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { AfterContentInit, Type } from '@angular/core';
|
|
1
2
|
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
2
|
-
import {
|
|
3
|
+
import { UserProfileFormFieldsComponent } from '../../../login/components/user-profile-form-fields/user-profile-form-fields.component';
|
|
3
4
|
import { type ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
import { type I18n } from '../../i18n';
|
|
4
7
|
import { type KcContext } from '../../KcContext';
|
|
5
8
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class IdpReviewUserProfileComponent extends ComponentReference {
|
|
9
|
+
export declare class IdpReviewUserProfileComponent extends ComponentReference implements AfterContentInit {
|
|
10
|
+
userProfileFormFields: UserProfileFormFieldsComponent | undefined;
|
|
7
11
|
kcContext: KcContext.IdpReviewUserProfile;
|
|
8
12
|
displayRequiredFields: import("@angular/core").InputSignal<boolean>;
|
|
9
13
|
documentTitle: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -14,7 +18,11 @@ export declare class IdpReviewUserProfileComponent extends ComponentReference {
|
|
|
14
18
|
isFormSubmittable: import("@angular/core").WritableSignal<boolean>;
|
|
15
19
|
displayInfo: boolean;
|
|
16
20
|
displayMessage: boolean;
|
|
21
|
+
userProfileFormFieldsComponent: Observable<Type<UserProfileFormFieldsComponent> | null>;
|
|
22
|
+
userProfileFormFieldsEjectedPath: string | undefined;
|
|
23
|
+
constructor();
|
|
24
|
+
ngAfterContentInit(): void;
|
|
17
25
|
onCallback(): void;
|
|
18
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<IdpReviewUserProfileComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<IdpReviewUserProfileComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {},
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IdpReviewUserProfileComponent, "kc-root", never, { "displayRequiredFields": { "alias": "displayRequiredFields"; "required": false; "isSignal": true; }; "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "bodyClassName": { "alias": "bodyClassName"; "required": false; "isSignal": true; }; }, {}, ["userProfileFormFields"], never, true, never>;
|
|
20
28
|
}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AsyncPipe, NgComponentOutlet } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChild, forwardRef, inject, input, signal } from '@angular/core';
|
|
2
3
|
import { USE_DEFAULT_CSS } from '../../../lib/tokens/use-default-css.token';
|
|
3
4
|
import { ComponentReference } from '../../../login/classes/component-reference.class';
|
|
4
5
|
import { UserProfileFormFieldsComponent } from '../../../login/components/user-profile-form-fields/user-profile-form-fields.component';
|
|
5
6
|
import { TemplateComponent } from '../../../login/containers/template.component';
|
|
6
7
|
import { KcClassDirective } from '../../../login/directives/kc-class.directive';
|
|
7
|
-
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
8
8
|
import { LOGIN_CLASSES } from '../../../login/tokens/classes.token';
|
|
9
|
+
import { LOGIN_I18N } from '../../../login/tokens/i18n.token';
|
|
9
10
|
import { KC_LOGIN_CONTEXT } from '../../../login/tokens/kc-context.token';
|
|
11
|
+
import { USER_PROFILE_FORM_FIELDS_EJECTED_PATH } from '../../../login/tokens/user-profile-form-fields-ejected-path.token';
|
|
12
|
+
import { from } from 'rxjs';
|
|
10
13
|
import * as i0 from "@angular/core";
|
|
11
14
|
export class IdpReviewUserProfileComponent extends ComponentReference {
|
|
12
15
|
constructor() {
|
|
13
|
-
super(
|
|
16
|
+
super();
|
|
14
17
|
this.kcContext = inject(KC_LOGIN_CONTEXT);
|
|
15
18
|
this.displayRequiredFields = input(true);
|
|
16
19
|
this.documentTitle = input();
|
|
@@ -21,25 +24,34 @@ export class IdpReviewUserProfileComponent extends ComponentReference {
|
|
|
21
24
|
this.isFormSubmittable = signal(false);
|
|
22
25
|
this.displayInfo = false;
|
|
23
26
|
this.displayMessage = !this.kcContext?.messagesPerField?.existsError('global');
|
|
27
|
+
this.userProfileFormFieldsEjectedPath = inject(USER_PROFILE_FORM_FIELDS_EJECTED_PATH);
|
|
28
|
+
this.userProfileFormFieldsComponent = from(import(/* @vite-ignore */ this.userProfileFormFieldsEjectedPath ??
|
|
29
|
+
'@keycloakify/angular/login/components/user-profile-form-fields/user-profile-form-fields.component').then(c => c.UserProfileFormFieldsComponent));
|
|
30
|
+
}
|
|
31
|
+
ngAfterContentInit() {
|
|
32
|
+
this.userProfileFormFields?.onIsFormSubmittable?.subscribe(submittable => this.isFormSubmittable.set(submittable));
|
|
24
33
|
}
|
|
25
34
|
onCallback() {
|
|
26
35
|
document.getElementById('kc-register-form').submit();
|
|
27
36
|
}
|
|
28
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: IdpReviewUserProfileComponent, deps:
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: IdpReviewUserProfileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
38
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.6", type: IdpReviewUserProfileComponent, isStandalone: true, selector: "kc-root", inputs: { displayRequiredFields: { classPropertyName: "displayRequiredFields", publicName: "displayRequiredFields", isSignal: true, isRequired: false, transformFunction: null }, documentTitle: { classPropertyName: "documentTitle", publicName: "documentTitle", isSignal: true, isRequired: false, transformFunction: null }, bodyClassName: { classPropertyName: "bodyClassName", publicName: "bodyClassName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
30
39
|
{
|
|
31
40
|
provide: ComponentReference,
|
|
32
41
|
useExisting: forwardRef(() => IdpReviewUserProfileComponent)
|
|
33
42
|
}
|
|
34
|
-
], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('loginIdpReviewProfileTitle') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-idp-review-profile-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <
|
|
43
|
+
], queries: [{ propertyName: "userProfileFormFields", first: true, predicate: UserProfileFormFieldsComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('loginIdpReviewProfileTitle') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-idp-review-profile-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <ng-container *ngComponentOutlet=\"userProfileFormFieldsComponent | async\"></ng-container>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doSubmit')\"\n [disabled]=\"!isFormSubmittable\"\n />\n </div>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35
44
|
}
|
|
36
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: IdpReviewUserProfileComponent, decorators: [{
|
|
37
46
|
type: Component,
|
|
38
|
-
args: [{ standalone: true, imports: [TemplateComponent,
|
|
47
|
+
args: [{ standalone: true, imports: [TemplateComponent, KcClassDirective, NgComponentOutlet, AsyncPipe], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
39
48
|
{
|
|
40
49
|
provide: ComponentReference,
|
|
41
50
|
useExisting: forwardRef(() => IdpReviewUserProfileComponent)
|
|
42
51
|
}
|
|
43
|
-
], template: "@let url = kcContext.url;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('loginIdpReviewProfileTitle') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-idp-review-profile-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <
|
|
44
|
-
}]
|
|
45
|
-
|
|
52
|
+
], template: "@let url = kcContext.url;\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ i18n.msgStr('loginIdpReviewProfileTitle') }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-idp-review-profile-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <ng-container *ngComponentOutlet=\"userProfileFormFieldsComponent | async\"></ng-container>\n <div [kcClass]=\"'kcFormGroupClass'\">\n <div\n id=\"kc-form-options\"\n [kcClass]=\"'kcFormOptionsClass'\"\n >\n <div [kcClass]=\"'kcFormOptionsWrapperClass'\"></div>\n </div>\n <div\n id=\"kc-form-buttons\"\n [kcClass]=\"'kcFormButtonsClass'\"\n >\n <input\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n type=\"submit\"\n [value]=\"i18n.msgStr('doSubmit')\"\n [disabled]=\"!isFormSubmittable\"\n />\n </div>\n </div>\n </form>\n </ng-container>\n</kc-login-template>\n" }]
|
|
53
|
+
}], ctorParameters: () => [], propDecorators: { userProfileFormFields: [{
|
|
54
|
+
type: ContentChild,
|
|
55
|
+
args: [UserProfileFormFieldsComponent, { descendants: true }]
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLXJldmlldy11c2VyLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvaWRwLXJldmlldy11c2VyLXByb2ZpbGUvaWRwLXJldmlldy11c2VyLXByb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvaWRwLXJldmlldy11c2VyLXByb2ZpbGUvaWRwLXJldmlldy11c2VyLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG1HQUFtRyxDQUFDO0FBQ25KLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDdEYsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sK0VBQStFLENBQUM7QUFFdEksT0FBTyxFQUFFLElBQUksRUFBbUIsTUFBTSxNQUFNLENBQUM7O0FBaUI3QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsa0JBQWtCO0lBZ0JqRTtRQUNJLEtBQUssRUFBRSxDQUFDO1FBZFosY0FBUyxHQUFHLE1BQU0sQ0FBZ0UsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRywwQkFBcUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLFNBQUksR0FBRyxNQUFNLENBQU8sVUFBVSxDQUFDLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsYUFBYSxDQUFDLENBQUM7UUFDNUUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUduRixxQ0FBZ0MsR0FBRyxNQUFNLENBQXFCLHFDQUFxQyxDQUFDLENBQUM7UUFHakcsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FDdEMsTUFBTSxDQUFDLGtCQUFrQixDQUNyQixJQUFJLENBQUMsZ0NBQWdDO1lBQ2pDLG1HQUFtRyxDQUMxRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUNoRCxDQUFDO0lBQ04sQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkgsQ0FBQztJQUVELFVBQVU7UUFDTCxRQUFRLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzlFLENBQUM7OEdBaENRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDBnQkFQM0I7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2FBQy9EO1NBQ0osNkVBR2EsOEJBQThCLHVFQzlCaEQsaWlEQXlDQSw0Q0R2QmMsaUJBQWlCLG9LQUFFLGdCQUFnQiwrRkFBRSxpQkFBaUIsK09BQUUsU0FBUzs7MkZBV2xFLDZCQUE2QjtrQkFiekMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUMsWUFDbEUsU0FBUyxtQkFFRix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDhCQUE4QixDQUFDO3lCQUMvRDtxQkFDSjt3REFHb0UscUJBQXFCO3NCQUF6RixZQUFZO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0LCBzaWduYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi90b2tlbnMvdXNlLWRlZmF1bHQtY3NzLnRva2VuJztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBVc2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb21wb25lbnRzL3VzZXItcHJvZmlsZS1mb3JtLWZpZWxkcy91c2VyLXByb2ZpbGUtZm9ybS1maWVsZHMuY29tcG9uZW50JztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29udGFpbmVycy90ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2NDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2RpcmVjdGl2ZXMva2MtY2xhc3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IExPR0lOX0NMQVNTRVMgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvY2xhc3Nlcy50b2tlbic7XG5pbXBvcnQgeyBMT0dJTl9JMThOIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2kxOG4udG9rZW4nO1xuaW1wb3J0IHsgS0NfTE9HSU5fQ09OVEVYVCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9rYy1jb250ZXh0LnRva2VuJztcbmltcG9ydCB7IFVTRVJfUFJPRklMRV9GT1JNX0ZJRUxEU19FSkVDVEVEX1BBVEggfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvdXNlci1wcm9maWxlLWZvcm0tZmllbGRzLWVqZWN0ZWQtcGF0aC50b2tlbic7XG5pbXBvcnQgeyB0eXBlIENsYXNzS2V5IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vbGliL2tjQ2xzeCc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHR5cGUgSTE4biB9IGZyb20gJy4uLy4uL2kxOG4nO1xuaW1wb3J0IHsgdHlwZSBLY0NvbnRleHQgfSBmcm9tICcuLi8uLi9LY0NvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUZW1wbGF0ZUNvbXBvbmVudCwgS2NDbGFzc0RpcmVjdGl2ZSwgTmdDb21wb25lbnRPdXRsZXQsIEFzeW5jUGlwZV0sXG4gICAgc2VsZWN0b3I6ICdrYy1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJ2lkcC1yZXZpZXctdXNlci1wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ29tcG9uZW50UmVmZXJlbmNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSWRwUmV2aWV3VXNlclByb2ZpbGVDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElkcFJldmlld1VzZXJQcm9maWxlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZChVc2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgdXNlclByb2ZpbGVGb3JtRmllbGRzOiBVc2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnaWRwLXJldmlldy11c2VyLXByb2ZpbGUuZnRsJyB9Pj4oS0NfTE9HSU5fQ09OVEVYVCk7XG4gICAgZGlzcGxheVJlcXVpcmVkRmllbGRzID0gaW5wdXQodHJ1ZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGkxOG4gPSBpbmplY3Q8STE4bj4oTE9HSU5fSTE4Tik7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KExPR0lOX0NMQVNTRVMpO1xuICAgIGlzRm9ybVN1Ym1pdHRhYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gIXRoaXMua2NDb250ZXh0Py5tZXNzYWdlc1BlckZpZWxkPy5leGlzdHNFcnJvcignZ2xvYmFsJyk7XG5cbiAgICB1c2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQ6IE9ic2VydmFibGU8VHlwZTxVc2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQ+IHwgbnVsbD47XG4gICAgdXNlclByb2ZpbGVGb3JtRmllbGRzRWplY3RlZFBhdGggPSBpbmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPihVU0VSX1BST0ZJTEVfRk9STV9GSUVMRFNfRUpFQ1RFRF9QQVRIKTtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy51c2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQgPSBmcm9tKFxuICAgICAgICAgICAgaW1wb3J0KC8qIEB2aXRlLWlnbm9yZSAqL1xuICAgICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVGb3JtRmllbGRzRWplY3RlZFBhdGggPz9cbiAgICAgICAgICAgICAgICAgICAgJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvdXNlci1wcm9maWxlLWZvcm0tZmllbGRzL3VzZXItcHJvZmlsZS1mb3JtLWZpZWxkcy5jb21wb25lbnQnXG4gICAgICAgICAgICApLnRoZW4oYyA9PiBjLlVzZXJQcm9maWxlRm9ybUZpZWxkc0NvbXBvbmVudClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVGb3JtRmllbGRzPy5vbklzRm9ybVN1Ym1pdHRhYmxlPy5zdWJzY3JpYmUoc3VibWl0dGFibGUgPT4gdGhpcy5pc0Zvcm1TdWJtaXR0YWJsZS5zZXQoc3VibWl0dGFibGUpKTtcbiAgICB9XG5cbiAgICBvbkNhbGxiYWNrKCkge1xuICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2tjLXJlZ2lzdGVyLWZvcm0nKSBhcyBIVE1MRm9ybUVsZW1lbnQpLnN1Ym1pdCgpO1xuICAgIH1cbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICAgIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gICAgW2JvZHlDbGFzc05hbWVdPVwiYm9keUNsYXNzTmFtZSgpXCJcbiAgICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICAgIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICAgIFtkb2N1bWVudFRpdGxlXT1cImRvY3VtZW50VGl0bGUoKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgICAgICB7eyBpMThuLm1zZ1N0cignbG9naW5JZHBSZXZpZXdQcm9maWxlVGl0bGUnKSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgY29udGVudD5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIGlkPVwia2MtaWRwLXJldmlldy1wcm9maWxlLWZvcm1cIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICAgICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJ1c2VyUHJvZmlsZUZvcm1GaWVsZHNDb21wb25lbnQgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybU9wdGlvbnNDbGFzcydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtT3B0aW9uc1dyYXBwZXJDbGFzcydcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGlkPVwia2MtZm9ybS1idXR0b25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUJ1dHRvbnNDbGFzcydcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25QcmltYXJ5Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImkxOG4ubXNnU3RyKCdkb1N1Ym1pdCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNGb3JtU3VibWl0dGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
|
|
@@ -5,6 +5,7 @@ import { LOGIN_CLASSES } from '../../login/tokens/classes.token';
|
|
|
5
5
|
import { LOGIN_I18N } from '../../login/tokens/i18n.token';
|
|
6
6
|
import { KC_LOGIN_CONTEXT } from '../../login/tokens/kc-context.token';
|
|
7
7
|
import { DO_MAKE_USER_CONFIRM_PASSWORD } from '../../login/tokens/make-user-confirm-password.token';
|
|
8
|
+
import { USER_PROFILE_FORM_FIELDS_EJECTED_PATH } from '../../login/tokens/user-profile-form-fields-ejected-path.token';
|
|
8
9
|
import { I18nService } from '../../login/services/i18n.service';
|
|
9
10
|
export const provideKeycloakifyAngularLogin = (config) => makeEnvironmentProviders([
|
|
10
11
|
{
|
|
@@ -48,6 +49,10 @@ export const provideKeycloakifyAngularLogin = (config) => makeEnvironmentProvide
|
|
|
48
49
|
deps: [I18nService]
|
|
49
50
|
},
|
|
50
51
|
{ provide: USE_DEFAULT_CSS, useValue: config?.doUseDefaultCss ?? true },
|
|
51
|
-
{ provide: LOGIN_CLASSES, useValue: config?.classes ?? {} }
|
|
52
|
+
{ provide: LOGIN_CLASSES, useValue: config?.classes ?? {} },
|
|
53
|
+
{
|
|
54
|
+
provide: USER_PROFILE_FORM_FIELDS_EJECTED_PATH,
|
|
55
|
+
useValue: config.userProfileFormFieldsEjectedPath
|
|
56
|
+
}
|
|
52
57
|
]);
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWtpZnktYW5ndWxhci5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXljbG9ha2lmeS1hbmd1bGFyL3NyYy9sb2dpbi9wcm92aWRlcnMva2V5Y2xvYWtpZnktYW5ndWxhci5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLCtFQUErRSxDQUFDO0FBSXRJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQWEvRSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLE1BQXFDLEVBQUUsRUFBRSxDQUNwRix3QkFBd0IsQ0FBQztJQUNyQjtRQUNJLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsYUFBYTtRQUNiLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztLQUM3QjtJQUNEO1FBQ0ksT0FBTyxFQUFFLDZCQUE2QjtRQUN0QyxRQUFRLEVBQUUsTUFBTSxFQUFFLHlCQUF5QixJQUFJLElBQUk7S0FDdEQ7SUFDRDtRQUNJLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLFVBQVUsRUFBRSxDQUFDLFFBQWtCLEVBQUUsRUFBRTtZQUMvQixPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNqRCxDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDO0tBQ25CO0lBQ0Q7UUFDSSxPQUFPLEVBQUUsZUFBZTtRQUN4QixLQUFLLEVBQUUsSUFBSTtRQUNYLFVBQVUsRUFBRSxDQUFDLFdBQXdCLEVBQUUsU0FBb0IsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUUvQixNQUFNLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUM3QyxTQUFTO2FBQ1osQ0FBQyxDQUFDO1lBQ0gsSUFBSSxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQWMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3pCLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMzQixXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDeEIsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO0tBQ3hDO0lBQ0Q7UUFDSSxPQUFPLEVBQUUsVUFBVTtRQUNuQixVQUFVLEVBQUUsQ0FBQyxXQUF3QixFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSTtRQUMxRCxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUM7S0FDdEI7SUFDRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxlQUFlLElBQUksSUFBSSxFQUFFO0lBQ3ZFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sSUFBSSxFQUFFLEVBQUU7SUFDM0Q7UUFDSSxPQUFPLEVBQUUscUNBQXFDO1FBQzlDLFFBQVEsRUFBRSxNQUFNLENBQUMsZ0NBQWdDO0tBQ3BEO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBMT0NBTEVfSUQsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVVNFX0RFRkFVTFRfQ1NTIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbGliL3Rva2Vucy91c2UtZGVmYXVsdC1jc3MudG9rZW4nO1xuaW1wb3J0IHsgTE9HSU5fQ0xBU1NFUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy9jbGFzc2VzLnRva2VuJztcbmltcG9ydCB7IExPR0lOX0kxOE4gfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvaTE4bi50b2tlbic7XG5pbXBvcnQgeyBLQ19MT0dJTl9DT05URVhUIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vdG9rZW5zL2tjLWNvbnRleHQudG9rZW4nO1xuaW1wb3J0IHsgRE9fTUFLRV9VU0VSX0NPTkZJUk1fUEFTU1dPUkQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi90b2tlbnMvbWFrZS11c2VyLWNvbmZpcm0tcGFzc3dvcmQudG9rZW4nO1xuaW1wb3J0IHsgVVNFUl9QUk9GSUxFX0ZPUk1fRklFTERTX0VKRUNURURfUEFUSCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3Rva2Vucy91c2VyLXByb2ZpbGUtZm9ybS1maWVsZHMtZWplY3RlZC1wYXRoLnRva2VuJztcbmltcG9ydCB7IHR5cGUgS2NDb250ZXh0TGlrZSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2kxOG4vbm9Kc3gnO1xuaW1wb3J0IHsgdHlwZSBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgdHlwZSBLY0NvbnRleHQgfSBmcm9tICcuLi9LY0NvbnRleHQnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9zZXJ2aWNlcy9pMThuLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBLZXljbG9ha2lmeUFuZ3VsYXJMb2dpbkNvbmZpZyA9IHtcbiAgICBkb01ha2VVc2VyQ29uZmlybVBhc3N3b3JkPzogYm9vbGVhbjtcbiAgICBkb1VzZURlZmF1bHRDc3M/OiBib29sZWFuO1xuICAgIGNsYXNzZXM/OiB7IFtrZXkgaW4gQ2xhc3NLZXldPzogc3RyaW5nIH07XG4gICAgdXNlclByb2ZpbGVGb3JtRmllbGRzRWplY3RlZFBhdGg/OiBzdHJpbmc7XG4gICAgZ2V0STE4bjogKHBhcmFtczogeyBrY0NvbnRleHQ6IEtjQ29udGV4dExpa2UgfSkgPT4ge1xuICAgICAgICBpMThuOiB1bmtub3duO1xuICAgICAgICBwckkxOG5fY3VycmVudExhbmd1YWdlOiBQcm9taXNlPHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZUtleWNsb2FraWZ5QW5ndWxhckxvZ2luID0gKGNvbmZpZzogS2V5Y2xvYWtpZnlBbmd1bGFyTG9naW5Db25maWcpID0+XG4gICAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogS0NfTE9HSU5fQ09OVEVYVCxcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHVzZVZhbHVlOiB3aW5kb3cua2NDb250ZXh0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERPX01BS0VfVVNFUl9DT05GSVJNX1BBU1NXT1JELFxuICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZz8uZG9NYWtlVXNlckNvbmZpcm1QYXNzd29yZCA/PyB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IExPQ0FMRV9JRCxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IChkb2N1bWVudDogRG9jdW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPz8gJ2VuJztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXBzOiBbRE9DVU1FTlRdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSwga2NDb250ZXh0OiBLY0NvbnRleHQpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnZXRJMThuID0gY29uZmlnLmdldEkxOG47XG5cbiAgICAgICAgICAgICAgICBjb25zdCB7IGkxOG4sIHBySTE4bl9jdXJyZW50TGFuZ3VhZ2UgfSA9IGdldEkxOG4oe1xuICAgICAgICAgICAgICAgICAgICBrY0NvbnRleHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBsZXQgaTE4blByb21pc2UgPSBuZXcgUHJvbWlzZTx0eXBlb2YgaTE4bj4ocmVzb2x2ZSA9PiByZXNvbHZlKGkxOG4pKTtcbiAgICAgICAgICAgICAgICBpZiAocHJJMThuX2N1cnJlbnRMYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgICAgICBpMThuUHJvbWlzZSA9IHBySTE4bl9jdXJyZW50TGFuZ3VhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpMThuUHJvbWlzZS50aGVuKGkxOG4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpMThuU2VydmljZS5pMThuID0gaTE4bjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVwczogW0kxOG5TZXJ2aWNlLCBLQ19MT0dJTl9DT05URVhUXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBMT0dJTl9JMThOLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSkgPT4gaTE4blNlcnZpY2UuaTE4bixcbiAgICAgICAgICAgIGRlcHM6IFtJMThuU2VydmljZV1cbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBVU0VfREVGQVVMVF9DU1MsIHVzZVZhbHVlOiBjb25maWc/LmRvVXNlRGVmYXVsdENzcyA/PyB0cnVlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTE9HSU5fQ0xBU1NFUywgdXNlVmFsdWU6IGNvbmZpZz8uY2xhc3NlcyA/PyB7fSB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBVU0VSX1BST0ZJTEVfRk9STV9GSUVMRFNfRUpFQ1RFRF9QQVRILFxuICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZy51c2VyUHJvZmlsZUZvcm1GaWVsZHNFamVjdGVkUGF0aFxuICAgICAgICB9XG4gICAgXSk7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const USER_PROFILE_FORM_FIELDS_EJECTED_PATH = new InjectionToken('profile form fields ejected path');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLWZvcm0tZmllbGRzLWVqZWN0ZWQtcGF0aC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tleWNsb2FraWZ5LWFuZ3VsYXIvc3JjL2xvZ2luL3Rva2Vucy91c2VyLXByb2ZpbGUtZm9ybS1maWVsZHMtZWplY3RlZC1wYXRoLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsSUFBSSxjQUFjLENBQVMsa0NBQWtDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IFVTRVJfUFJPRklMRV9GT1JNX0ZJRUxEU19FSkVDVEVEX1BBVEggPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPigncHJvZmlsZSBmb3JtIGZpZWxkcyBlamVjdGVkIHBhdGgnKSJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keycloakify/angular",
|
|
3
|
-
"version": "0.0.1-rc.
|
|
3
|
+
"version": "0.0.1-rc.8",
|
|
4
4
|
"description": "Angular components for Keycloakify",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -157,6 +157,8 @@
|
|
|
157
157
|
"login/tokens/kc-context.token.js",
|
|
158
158
|
"login/tokens/make-user-confirm-password.token.d.ts",
|
|
159
159
|
"login/tokens/make-user-confirm-password.token.js",
|
|
160
|
+
"login/tokens/user-profile-form-fields-ejected-path.token.d.ts",
|
|
161
|
+
"login/tokens/user-profile-form-fields-ejected-path.token.js",
|
|
160
162
|
"src/lib/models/script.model.ts",
|
|
161
163
|
"src/lib/services/resource-injector.service.ts",
|
|
162
164
|
"src/lib/tokens/use-default-css.token.ts",
|
|
@@ -274,6 +276,7 @@
|
|
|
274
276
|
"src/login/tokens/i18n.token.ts",
|
|
275
277
|
"src/login/tokens/kc-context.token.ts",
|
|
276
278
|
"src/login/tokens/make-user-confirm-password.token.ts",
|
|
279
|
+
"src/login/tokens/user-profile-form-fields-ejected-path.token.ts",
|
|
277
280
|
"src/tsconfig.json",
|
|
278
281
|
"stories/login/pages/login/login.stories.ts"
|
|
279
282
|
],
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
[action]="url.loginAction"
|
|
17
17
|
method="post"
|
|
18
18
|
>
|
|
19
|
-
<
|
|
19
|
+
<ng-container *ngComponentOutlet="userProfileFormFieldsComponent | async"></ng-container>
|
|
20
20
|
<div [kcClass]="'kcFormGroupClass'">
|
|
21
21
|
<div
|
|
22
22
|
id="kc-form-options"
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AsyncPipe, NgComponentOutlet } from '@angular/common';
|
|
2
|
+
import { AfterContentInit, ChangeDetectionStrategy, Component, ContentChild, forwardRef, inject, input, signal, Type } from '@angular/core';
|
|
2
3
|
import { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css.token';
|
|
3
4
|
import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference.class';
|
|
4
5
|
import { UserProfileFormFieldsComponent } from '@keycloakify/angular/login/components/user-profile-form-fields/user-profile-form-fields.component';
|
|
5
6
|
import { TemplateComponent } from '@keycloakify/angular/login/containers/template.component';
|
|
6
7
|
import { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class.directive';
|
|
7
|
-
import { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n.token';
|
|
8
|
-
import { type I18n } from '../../i18n';
|
|
9
8
|
import { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes.token';
|
|
9
|
+
import { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n.token';
|
|
10
10
|
import { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context.token';
|
|
11
|
+
import { USER_PROFILE_FORM_FIELDS_EJECTED_PATH } from '@keycloakify/angular/login/tokens/user-profile-form-fields-ejected-path.token';
|
|
11
12
|
import { type ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
13
|
+
import { from, Observable, tap } from 'rxjs';
|
|
14
|
+
import { type I18n } from '../../i18n';
|
|
12
15
|
import { type KcContext } from '../../KcContext';
|
|
13
16
|
|
|
14
17
|
@Component({
|
|
15
18
|
standalone: true,
|
|
16
|
-
imports: [TemplateComponent,
|
|
19
|
+
imports: [TemplateComponent, KcClassDirective, NgComponentOutlet, AsyncPipe],
|
|
17
20
|
selector: 'kc-root',
|
|
18
21
|
templateUrl: 'idp-review-user-profile.component.html',
|
|
19
22
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -24,7 +27,9 @@ import { type KcContext } from '../../KcContext';
|
|
|
24
27
|
}
|
|
25
28
|
]
|
|
26
29
|
})
|
|
27
|
-
export class IdpReviewUserProfileComponent extends ComponentReference {
|
|
30
|
+
export class IdpReviewUserProfileComponent extends ComponentReference implements AfterContentInit {
|
|
31
|
+
@ContentChild(UserProfileFormFieldsComponent, { descendants: true }) userProfileFormFields: UserProfileFormFieldsComponent | undefined;
|
|
32
|
+
|
|
28
33
|
kcContext = inject<Extract<KcContext, { pageId: 'idp-review-user-profile.ftl' }>>(KC_LOGIN_CONTEXT);
|
|
29
34
|
displayRequiredFields = input(true);
|
|
30
35
|
documentTitle = input<string>();
|
|
@@ -36,6 +41,22 @@ export class IdpReviewUserProfileComponent extends ComponentReference {
|
|
|
36
41
|
displayInfo: boolean = false;
|
|
37
42
|
displayMessage: boolean = !this.kcContext?.messagesPerField?.existsError('global');
|
|
38
43
|
|
|
44
|
+
userProfileFormFieldsComponent: Observable<Type<UserProfileFormFieldsComponent> | null>;
|
|
45
|
+
userProfileFormFieldsEjectedPath = inject<string | undefined>(USER_PROFILE_FORM_FIELDS_EJECTED_PATH);
|
|
46
|
+
constructor() {
|
|
47
|
+
super();
|
|
48
|
+
this.userProfileFormFieldsComponent = from(
|
|
49
|
+
import(/* @vite-ignore */
|
|
50
|
+
this.userProfileFormFieldsEjectedPath ??
|
|
51
|
+
'@keycloakify/angular/login/components/user-profile-form-fields/user-profile-form-fields.component'
|
|
52
|
+
).then(c => c.UserProfileFormFieldsComponent)
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
ngAfterContentInit(): void {
|
|
57
|
+
this.userProfileFormFields?.onIsFormSubmittable?.subscribe(submittable => this.isFormSubmittable.set(submittable));
|
|
58
|
+
}
|
|
59
|
+
|
|
39
60
|
onCallback() {
|
|
40
61
|
(document.getElementById('kc-register-form') as HTMLFormElement).submit();
|
|
41
62
|
}
|
|
@@ -5,6 +5,7 @@ import { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes.token';
|
|
|
5
5
|
import { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n.token';
|
|
6
6
|
import { KC_LOGIN_CONTEXT } from '@keycloakify/angular/login/tokens/kc-context.token';
|
|
7
7
|
import { DO_MAKE_USER_CONFIRM_PASSWORD } from '@keycloakify/angular/login/tokens/make-user-confirm-password.token';
|
|
8
|
+
import { USER_PROFILE_FORM_FIELDS_EJECTED_PATH } from '@keycloakify/angular/login/tokens/user-profile-form-fields-ejected-path.token';
|
|
8
9
|
import { type KcContextLike } from 'keycloakify/login/i18n/noJsx';
|
|
9
10
|
import { type ClassKey } from 'keycloakify/login/lib/kcClsx';
|
|
10
11
|
import { type KcContext } from '../KcContext';
|
|
@@ -14,6 +15,7 @@ export type KeycloakifyAngularLoginConfig = {
|
|
|
14
15
|
doMakeUserConfirmPassword?: boolean;
|
|
15
16
|
doUseDefaultCss?: boolean;
|
|
16
17
|
classes?: { [key in ClassKey]?: string };
|
|
18
|
+
userProfileFormFieldsEjectedPath?: string;
|
|
17
19
|
getI18n: (params: { kcContext: KcContextLike }) => {
|
|
18
20
|
i18n: unknown;
|
|
19
21
|
prI18n_currentLanguage: Promise<unknown> | undefined;
|
|
@@ -64,5 +66,9 @@ export const provideKeycloakifyAngularLogin = (config: KeycloakifyAngularLoginCo
|
|
|
64
66
|
deps: [I18nService]
|
|
65
67
|
},
|
|
66
68
|
{ provide: USE_DEFAULT_CSS, useValue: config?.doUseDefaultCss ?? true },
|
|
67
|
-
{ provide: LOGIN_CLASSES, useValue: config?.classes ?? {} }
|
|
69
|
+
{ provide: LOGIN_CLASSES, useValue: config?.classes ?? {} },
|
|
70
|
+
{
|
|
71
|
+
provide: USER_PROFILE_FORM_FIELDS_EJECTED_PATH,
|
|
72
|
+
useValue: config.userProfileFormFieldsEjectedPath
|
|
73
|
+
}
|
|
68
74
|
]);
|