@valtimo/account 12.14.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@ import * as i1 from '@angular/forms';
4
4
  import { FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import moment from 'moment';
6
6
  import * as i2 from '@valtimo/components';
7
- import { WidgetModule, ListModule, FieldAutoFocusModule, UploaderModule, AlertModule } from '@valtimo/components';
7
+ import { WidgetModule, FieldAutoFocusModule, UploaderModule, AlertModule } from '@valtimo/components';
8
8
  import * as i3 from '@ngx-translate/core';
9
9
  import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
10
10
  import * as i4 from '@angular/common';
@@ -12,11 +12,11 @@ import { CommonModule } from '@angular/common';
12
12
  import * as i1$1 from '@angular/router';
13
13
  import { RouterModule } from '@angular/router';
14
14
  import { AuthGuardService } from '@valtimo/security';
15
- import { ROLE_USER, HttpLoaderFactory, Language } from '@valtimo/config';
15
+ import { ROLE_USER, HttpLoaderFactory, Language } from '@valtimo/shared';
16
16
  import { HttpClient } from '@angular/common/http';
17
17
 
18
18
  /*
19
- * Copyright 2015-2024 Ritense BV, the Netherlands.
19
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
20
20
  *
21
21
  * Licensed under EUPL, Version 1.2 (the "License");
22
22
  * you may not use this file except in compliance with the License.
@@ -88,16 +88,16 @@ class ProfileComponent {
88
88
  this.form = this.createFormGroup();
89
89
  this.initData();
90
90
  }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlertService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProfileComponent, selector: "valtimo-profile", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i2.FieldAutoFocusDirective, selector: "[valtimoFieldAutoFocus]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProfileComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlertService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ProfileComponent, isStandalone: false, selector: "valtimo-profile", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i2.FieldAutoFocusDirective, selector: "[valtimoFieldAutoFocus]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
93
93
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileComponent, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProfileComponent, decorators: [{
95
95
  type: Component,
96
- args: [{ selector: 'valtimo-profile', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n" }]
96
+ args: [{ standalone: false, selector: 'valtimo-profile', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n" }]
97
97
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AlertService }, { type: i3.TranslateService }] });
98
98
 
99
99
  /*
100
- * Copyright 2015-2024 Ritense BV, the Netherlands.
100
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
101
101
  *
102
102
  * Licensed under EUPL, Version 1.2 (the "License");
103
103
  * you may not use this file except in compliance with the License.
@@ -185,16 +185,16 @@ class PasswordComponent {
185
185
  this.form = this.createFormGroup();
186
186
  this.initData();
187
187
  }
188
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
189
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PasswordComponent, selector: "valtimo-password", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i2.FieldAutoFocusDirective, selector: "[valtimoFieldAutoFocus]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
188
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PasswordComponent, isStandalone: false, selector: "valtimo-password", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i2.FieldAutoFocusDirective, selector: "[valtimoFieldAutoFocus]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
190
190
  }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordComponent, decorators: [{
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordComponent, decorators: [{
192
192
  type: Component,
193
- args: [{ selector: 'valtimo-password', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n" }]
193
+ args: [{ standalone: false, selector: 'valtimo-password', template: "<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n" }]
194
194
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AlertService }] });
195
195
 
196
196
  /*
197
- * Copyright 2015-2024 Ritense BV, the Netherlands.
197
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
198
198
  *
199
199
  * Licensed under EUPL, Version 1.2 (the "License");
200
200
  * you may not use this file except in compliance with the License.
@@ -223,11 +223,11 @@ const routes = [
223
223
  },
224
224
  ];
225
225
  class AccountRoutingModule {
226
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
227
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, imports: [CommonModule, i1$1.RouterModule], exports: [RouterModule] }); }
228
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
226
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AccountRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
227
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: AccountRoutingModule, imports: [CommonModule, i1$1.RouterModule], exports: [RouterModule] }); }
228
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AccountRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
229
229
  }
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, decorators: [{
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AccountRoutingModule, decorators: [{
231
231
  type: NgModule,
232
232
  args: [{
233
233
  declarations: [],
@@ -237,7 +237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
237
237
  }] });
238
238
 
239
239
  /*
240
- * Copyright 2015-2024 Ritense BV, the Netherlands.
240
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
241
241
  *
242
242
  * Licensed under EUPL, Version 1.2 (the "License");
243
243
  * you may not use this file except in compliance with the License.
@@ -252,19 +252,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
252
252
  * limitations under the License.
253
253
  */
254
254
  class AccountModule {
255
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
256
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, declarations: [ProfileComponent, PasswordComponent], imports: [CommonModule,
255
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
256
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: AccountModule, declarations: [ProfileComponent, PasswordComponent], imports: [CommonModule,
257
257
  AccountRoutingModule,
258
258
  WidgetModule,
259
- ListModule,
260
259
  FieldAutoFocusModule,
261
260
  FormsModule, i3.TranslateModule, ReactiveFormsModule,
262
261
  UploaderModule,
263
262
  AlertModule], exports: [ProfileComponent, PasswordComponent] }); }
264
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, imports: [CommonModule,
263
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AccountModule, imports: [CommonModule,
265
264
  AccountRoutingModule,
266
265
  WidgetModule,
267
- ListModule,
268
266
  FieldAutoFocusModule,
269
267
  FormsModule,
270
268
  TranslateModule.forRoot({
@@ -278,7 +276,7 @@ class AccountModule {
278
276
  UploaderModule,
279
277
  AlertModule] }); }
280
278
  }
281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, decorators: [{
279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AccountModule, decorators: [{
282
280
  type: NgModule,
283
281
  args: [{
284
282
  declarations: [ProfileComponent, PasswordComponent],
@@ -286,7 +284,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
286
284
  CommonModule,
287
285
  AccountRoutingModule,
288
286
  WidgetModule,
289
- ListModule,
290
287
  FieldAutoFocusModule,
291
288
  FormsModule,
292
289
  TranslateModule.forRoot({
@@ -306,7 +303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
306
303
  }] });
307
304
 
308
305
  /*
309
- * Copyright 2015-2024 Ritense BV, the Netherlands.
306
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
310
307
  *
311
308
  * Licensed under EUPL, Version 1.2 (the "License");
312
309
  * you may not use this file except in compliance with the License.
@@ -342,7 +339,7 @@ function accountInitializer(translate, logger, configService) {
342
339
  }
343
340
 
344
341
  /*
345
- * Copyright 2015-2024 Ritense BV, the Netherlands.
342
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
346
343
  *
347
344
  * Licensed under EUPL, Version 1.2 (the "License");
348
345
  * you may not use this file except in compliance with the License.
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-account.mjs","sources":["../../../../projects/valtimo/account/src/lib/profile/profile.component.ts","../../../../projects/valtimo/account/src/lib/profile/profile.component.html","../../../../projects/valtimo/account/src/lib/password/password.component.ts","../../../../projects/valtimo/account/src/lib/password/password.component.html","../../../../projects/valtimo/account/src/lib/account-routing.module.ts","../../../../projects/valtimo/account/src/lib/account.module.ts","../../../../projects/valtimo/account/src/lib/account.init.ts","../../../../projects/valtimo/account/src/public_api.ts","../../../../projects/valtimo/account/src/valtimo-account.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {AlertService} from '@valtimo/components';\nimport moment from 'moment';\nimport {TranslateService} from '@ngx-translate/core';\n\nmoment.locale(localStorage.getItem('langKey'));\n\n@Component({\n selector: 'valtimo-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.css'],\n})\nexport class ProfileComponent implements OnInit, OnDestroy {\n public profile: any;\n public form: FormGroup;\n public resourceIds: Array<any> = [];\n\n constructor(\n private formBuilder: FormBuilder,\n private alertService: AlertService,\n public translate: TranslateService\n ) {}\n\n ngOnInit() {\n this.reset();\n }\n\n ngOnDestroy() {\n location.reload();\n }\n\n get formControls() {\n return this.form.controls;\n }\n\n private initData() {\n /* this.userProviderService.getUserIdentity().subscribe(value => {\n this.profile = value;\n this.setValues();\n });*/\n }\n\n private setValues() {\n if (this.profile) {\n // set humanize dates\n this.profile.humanize_dates = {\n created_at: moment(this.profile.created_at).fromNow(),\n updated_at: moment(this.profile.updated_at).fromNow(),\n last_password_reset: moment(this.profile.last_password_reset).fromNow(),\n };\n // set form values\n this.form.controls.firstName.setValue(this.profile.user_metadata.firstname);\n this.form.controls.lastName.setValue(this.profile.user_metadata.lastname);\n this.form.controls.langKey.setValue(this.profile.user_metadata.langKey);\n }\n }\n\n private createFormGroup() {\n return this.formBuilder.group({\n firstName: new FormControl('', Validators.required),\n lastName: new FormControl('', Validators.required),\n langKey: new FormControl('', Validators.required),\n });\n }\n\n public onFileUpload(resources) {\n this.resourceIds = resources.map(resource => resource.id);\n }\n\n public onSubmit() {\n this.form.value.email = this.profile.email;\n // TODO Updating profile ?? allowed when using keycloak\n /* this.userService.updateProfile(this.form.value).subscribe(() => {\n this.alertService.success('Profile has been updated');\n });*/\n }\n\n public reset() {\n this.form = this.createFormGroup();\n this.initData();\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {AlertService} from '@valtimo/components';\nimport moment from 'moment';\n\nmoment.locale(localStorage.getItem('langKey'));\n\n@Component({\n selector: 'valtimo-password',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.css'],\n})\nexport class PasswordComponent implements OnInit, OnDestroy {\n public profile: any;\n public errorMsg: string;\n public form: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private alertService: AlertService\n ) {}\n\n ngOnInit() {\n this.reset();\n }\n\n ngOnDestroy() {\n location.reload();\n }\n\n get formControls() {\n return this.form.controls;\n }\n\n private initData() {\n /* this.userService.getUserIdentity().subscribe(value => {\n this.profile = value;\n this.setValues();\n });*/\n }\n\n private setValues() {\n if (this.profile) {\n // humanize dates\n this.profile.humanize_dates = {\n created_at: moment(this.profile.created_at).fromNow(),\n updated_at: moment(this.profile.updated_at).fromNow(),\n last_password_reset: moment(this.profile.last_password_reset).fromNow(),\n };\n }\n }\n\n private createFormGroup() {\n return this.formBuilder.group(\n {\n password: new FormControl('', [\n Validators.required,\n Validators.pattern('(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]).{4,}'),\n Validators.maxLength(50),\n ]),\n confirmPassword: new FormControl('', [\n Validators.required,\n Validators.minLength(4),\n Validators.maxLength(50),\n ]),\n },\n {\n validator: this.mustMatch('password', 'confirmPassword'),\n }\n );\n }\n\n public mustMatch(controlName: string, matchingControlName: string) {\n return (formGroup: FormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n if (matchingControl.errors && !matchingControl.errors.mustMatch) {\n return;\n }\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({mustMatch: true});\n } else {\n matchingControl.setErrors(null);\n }\n };\n }\n\n public onSubmit() {\n /* this.userService.changePassword(this.form.value.password).subscribe(() => {\n this.alertService.success('Password has been changed');\n }, result => {\n this.errorMsg = result.error.detail.split(': ', 2)[1];\n this.reset();\n });*/\n }\n\n public reset() {\n this.form = this.createFormGroup();\n this.initData();\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ProfileComponent} from './profile/profile.component';\nimport {PasswordComponent} from './password/password.component';\nimport {ROLE_USER} from '@valtimo/config';\n\nconst routes: Routes = [\n {\n path: 'profile',\n component: ProfileComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Profile', roles: [ROLE_USER]},\n },\n {\n path: 'password',\n component: PasswordComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Password', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccountRoutingModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {AccountRoutingModule} from './account-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n AlertModule,\n FieldAutoFocusModule,\n ListModule,\n UploaderModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ProfileComponent} from './profile/profile.component';\nimport {PasswordComponent} from './password/password.component';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {HttpLoaderFactory} from '@valtimo/config';\nimport {HttpClient} from '@angular/common/http';\n\n@NgModule({\n declarations: [ProfileComponent, PasswordComponent],\n imports: [\n CommonModule,\n AccountRoutingModule,\n WidgetModule,\n ListModule,\n FieldAutoFocusModule,\n FormsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ReactiveFormsModule,\n UploaderModule,\n AlertModule,\n ],\n exports: [ProfileComponent, PasswordComponent],\n providers: [],\n})\nexport class AccountModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NGXLogger} from 'ngx-logger';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService, Language} from '@valtimo/config';\n\nexport function accountInitializer(\n translate: TranslateService,\n logger: NGXLogger,\n configService: ConfigService\n): () => Promise<any> {\n return (): Promise<any> =>\n new Promise<void>((resolve, reject) => {\n try {\n logger.debug('Account initializer');\n translate.addLangs([Language.EN, Language.NL, Language.DE]);\n let langKey = localStorage.getItem('langKey');\n if (langKey === null) {\n langKey = configService?.config?.langKey || Language.NL;\n localStorage.setItem('langKey', langKey);\n }\n logger.debug('Using langKey', langKey);\n translate.use(langKey);\n resolve();\n } catch (error) {\n logger.debug('Account initializer error', error);\n reject(error);\n }\n });\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of account\n */\n\nexport * from './lib/profile/profile.component';\nexport * from './lib/password/password.component';\nexport * from './lib/account.module';\nexport * from './lib/account.init';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i1"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-account.mjs","sources":["../../../../projects/valtimo/account/src/lib/profile/profile.component.ts","../../../../projects/valtimo/account/src/lib/profile/profile.component.html","../../../../projects/valtimo/account/src/lib/password/password.component.ts","../../../../projects/valtimo/account/src/lib/password/password.component.html","../../../../projects/valtimo/account/src/lib/account-routing.module.ts","../../../../projects/valtimo/account/src/lib/account.module.ts","../../../../projects/valtimo/account/src/lib/account.init.ts","../../../../projects/valtimo/account/src/public_api.ts","../../../../projects/valtimo/account/src/valtimo-account.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {AlertService} from '@valtimo/components';\nimport moment from 'moment';\nimport {TranslateService} from '@ngx-translate/core';\n\nmoment.locale(localStorage.getItem('langKey'));\n\n@Component({\n standalone: false,\n selector: 'valtimo-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.css'],\n})\nexport class ProfileComponent implements OnInit, OnDestroy {\n public profile: any;\n public form: FormGroup;\n public resourceIds: Array<any> = [];\n\n constructor(\n private formBuilder: FormBuilder,\n private alertService: AlertService,\n public translate: TranslateService\n ) {}\n\n ngOnInit() {\n this.reset();\n }\n\n ngOnDestroy() {\n location.reload();\n }\n\n get formControls() {\n return this.form.controls;\n }\n\n private initData() {\n /* this.userProviderService.getUserIdentity().subscribe(value => {\n this.profile = value;\n this.setValues();\n });*/\n }\n\n private setValues() {\n if (this.profile) {\n // set humanize dates\n this.profile.humanize_dates = {\n created_at: moment(this.profile.created_at).fromNow(),\n updated_at: moment(this.profile.updated_at).fromNow(),\n last_password_reset: moment(this.profile.last_password_reset).fromNow(),\n };\n // set form values\n this.form.controls.firstName.setValue(this.profile.user_metadata.firstname);\n this.form.controls.lastName.setValue(this.profile.user_metadata.lastname);\n this.form.controls.langKey.setValue(this.profile.user_metadata.langKey);\n }\n }\n\n private createFormGroup() {\n return this.formBuilder.group({\n firstName: new FormControl('', Validators.required),\n lastName: new FormControl('', Validators.required),\n langKey: new FormControl('', Validators.required),\n });\n }\n\n public onFileUpload(resources) {\n this.resourceIds = resources.map(resource => resource.id);\n }\n\n public onSubmit() {\n this.form.value.email = this.profile.email;\n // TODO Updating profile ?? allowed when using keycloak\n /* this.userService.updateProfile(this.form.value).subscribe(() => {\n this.alertService.success('Profile has been updated');\n });*/\n }\n\n public reset() {\n this.form = this.createFormGroup();\n this.initData();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit} from '@angular/core';\nimport {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {AlertService} from '@valtimo/components';\nimport moment from 'moment';\n\nmoment.locale(localStorage.getItem('langKey'));\n\n@Component({\n standalone: false,\n selector: 'valtimo-password',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.css'],\n})\nexport class PasswordComponent implements OnInit, OnDestroy {\n public profile: any;\n public errorMsg: string;\n public form: FormGroup;\n\n constructor(\n private formBuilder: FormBuilder,\n private alertService: AlertService\n ) {}\n\n ngOnInit() {\n this.reset();\n }\n\n ngOnDestroy() {\n location.reload();\n }\n\n get formControls() {\n return this.form.controls;\n }\n\n private initData() {\n /* this.userService.getUserIdentity().subscribe(value => {\n this.profile = value;\n this.setValues();\n });*/\n }\n\n private setValues() {\n if (this.profile) {\n // humanize dates\n this.profile.humanize_dates = {\n created_at: moment(this.profile.created_at).fromNow(),\n updated_at: moment(this.profile.updated_at).fromNow(),\n last_password_reset: moment(this.profile.last_password_reset).fromNow(),\n };\n }\n }\n\n private createFormGroup() {\n return this.formBuilder.group(\n {\n password: new FormControl('', [\n Validators.required,\n Validators.pattern('(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]).{4,}'),\n Validators.maxLength(50),\n ]),\n confirmPassword: new FormControl('', [\n Validators.required,\n Validators.minLength(4),\n Validators.maxLength(50),\n ]),\n },\n {\n validator: this.mustMatch('password', 'confirmPassword'),\n }\n );\n }\n\n public mustMatch(controlName: string, matchingControlName: string) {\n return (formGroup: FormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n if (matchingControl.errors && !matchingControl.errors.mustMatch) {\n return;\n }\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({mustMatch: true});\n } else {\n matchingControl.setErrors(null);\n }\n };\n }\n\n public onSubmit() {\n /* this.userService.changePassword(this.form.value.password).subscribe(() => {\n this.alertService.success('Password has been changed');\n }, result => {\n this.errorMsg = result.error.detail.split(': ', 2)[1];\n this.reset();\n });*/\n }\n\n public reset() {\n this.form = this.createFormGroup();\n this.initData();\n }\n}\n","<!--\n ~ Copyright 2015-2025 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ProfileComponent} from './profile/profile.component';\nimport {PasswordComponent} from './password/password.component';\nimport {ROLE_USER} from '@valtimo/shared';\n\nconst routes: Routes = [\n {\n path: 'profile',\n component: ProfileComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Profile', roles: [ROLE_USER]},\n },\n {\n path: 'password',\n component: PasswordComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Password', roles: [ROLE_USER]},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AccountRoutingModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {AccountRoutingModule} from './account-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {AlertModule, FieldAutoFocusModule, UploaderModule, WidgetModule} from '@valtimo/components';\nimport {ProfileComponent} from './profile/profile.component';\nimport {PasswordComponent} from './password/password.component';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {HttpLoaderFactory} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\n\n@NgModule({\n declarations: [ProfileComponent, PasswordComponent],\n imports: [\n CommonModule,\n AccountRoutingModule,\n WidgetModule,\n FieldAutoFocusModule,\n FormsModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n ReactiveFormsModule,\n UploaderModule,\n AlertModule,\n ],\n exports: [ProfileComponent, PasswordComponent],\n providers: [],\n})\nexport class AccountModule {}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NGXLogger} from 'ngx-logger';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigService, Language} from '@valtimo/shared';\n\nexport function accountInitializer(\n translate: TranslateService,\n logger: NGXLogger,\n configService: ConfigService\n): () => Promise<any> {\n return (): Promise<any> =>\n new Promise<void>((resolve, reject) => {\n try {\n logger.debug('Account initializer');\n translate.addLangs([Language.EN, Language.NL, Language.DE]);\n let langKey = localStorage.getItem('langKey');\n if (langKey === null) {\n langKey = configService?.config?.langKey || Language.NL;\n localStorage.setItem('langKey', langKey);\n }\n logger.debug('Using langKey', langKey);\n translate.use(langKey);\n resolve();\n } catch (error) {\n logger.debug('Account initializer error', error);\n reject(error);\n }\n });\n}\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of account\n */\n\nexport * from './lib/profile/profile.component';\nexport * from './lib/password/password.component';\nexport * from './lib/account.module';\nexport * from './lib/account.init';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i1"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { NGXLogger } from 'ngx-logger';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
- import { ConfigService } from '@valtimo/config';
3
+ import { ConfigService } from '@valtimo/shared';
4
4
  export declare function accountInitializer(translate: TranslateService, logger: NGXLogger, configService: ConfigService): () => Promise<any>;
5
5
  //# sourceMappingURL=account.init.d.ts.map
@@ -8,7 +8,7 @@ import * as i6 from "@angular/forms";
8
8
  import * as i7 from "@ngx-translate/core";
9
9
  export declare class AccountModule {
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AccountModule, never>;
11
- static ɵmod: i0.ɵɵNgModuleDeclaration<AccountModule, [typeof i1.ProfileComponent, typeof i2.PasswordComponent], [typeof i3.CommonModule, typeof i4.AccountRoutingModule, typeof i5.WidgetModule, typeof i5.ListModule, typeof i5.FieldAutoFocusModule, typeof i6.FormsModule, typeof i7.TranslateModule, typeof i6.ReactiveFormsModule, typeof i5.UploaderModule, typeof i5.AlertModule], [typeof i1.ProfileComponent, typeof i2.PasswordComponent]>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AccountModule, [typeof i1.ProfileComponent, typeof i2.PasswordComponent], [typeof i3.CommonModule, typeof i4.AccountRoutingModule, typeof i5.WidgetModule, typeof i5.FieldAutoFocusModule, typeof i6.FormsModule, typeof i7.TranslateModule, typeof i6.ReactiveFormsModule, typeof i5.UploaderModule, typeof i5.AlertModule], [typeof i1.ProfileComponent, typeof i2.PasswordComponent]>;
12
12
  static ɵinj: i0.ɵɵInjectorDeclaration<AccountModule>;
13
13
  }
14
14
  //# sourceMappingURL=account.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"account.module.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/account/src/lib/account.module.ts"],"names":[],"mappings":";;;;;;;;AAiCA,qBAuBa,aAAa;yCAAb,aAAa;0CAAb,aAAa;0CAAb,aAAa;CAAG"}
1
+ {"version":3,"file":"account.module.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/account/src/lib/account.module.ts"],"names":[],"mappings":";;;;;;;;AA2BA,qBAsBa,aAAa;yCAAb,aAAa;0CAAb,aAAa;0CAAb,aAAa;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"password.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/account/src/lib/password/password.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAY,SAAS,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAe,SAAS,EAAa,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;;AAKjD,qBAKa,iBAAkB,YAAW,MAAM,EAAE,SAAS;IAMvD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IANf,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;gBAGb,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY;IAGpC,QAAQ;IAIR,WAAW;IAIX,IAAI,YAAY;;MAEf;IAED,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,eAAe;IAoBhB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,eAC5C,SAAS;IAcvB,QAAQ;IASR,KAAK;yCApFD,iBAAiB;2CAAjB,iBAAiB;CAwF7B"}
1
+ {"version":3,"file":"password.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/account/src/lib/password/password.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAY,SAAS,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAe,SAAS,EAAa,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;;AAKjD,qBAMa,iBAAkB,YAAW,MAAM,EAAE,SAAS;IAMvD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IANf,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;gBAGb,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY;IAGpC,QAAQ;IAIR,WAAW;IAIX,IAAI,YAAY;;MAEf;IAED,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,eAAe;IAoBhB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,IACvD,WAAW,SAAS;IAcvB,QAAQ;IASR,KAAK;yCApFD,iBAAiB;2CAAjB,iBAAiB;CAwF7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"profile.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/account/src/lib/profile/profile.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAY,SAAS,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAe,SAAS,EAAa,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;;AAIrD,qBAKa,gBAAiB,YAAW,MAAM,EAAE,SAAS;IAMtD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IACb,SAAS,EAAE,gBAAgB;IAP7B,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAM;gBAG1B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC3B,SAAS,EAAE,gBAAgB;IAGpC,QAAQ;IAIR,WAAW;IAIX,IAAI,YAAY;;MAEf;IAED,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,eAAe;IAQhB,YAAY,CAAC,SAAS,KAAA;IAItB,QAAQ;IAQR,KAAK;yCAjED,gBAAgB;2CAAhB,gBAAgB;CAqE5B"}
1
+ {"version":3,"file":"profile.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/account/src/lib/profile/profile.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAY,SAAS,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAe,SAAS,EAAa,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;;AAIrD,qBAMa,gBAAiB,YAAW,MAAM,EAAE,SAAS;IAMtD,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,YAAY;IACb,SAAS,EAAE,gBAAgB;IAP7B,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAM;gBAG1B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC3B,SAAS,EAAE,gBAAgB;IAGpC,QAAQ;IAIR,WAAW;IAIX,IAAI,YAAY;;MAEf;IAED,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,eAAe;IAQhB,YAAY,CAAC,SAAS,KAAA;IAItB,QAAQ;IAQR,KAAK;yCAjED,gBAAgB;2CAAhB,gBAAgB;CAqE5B"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@valtimo/account",
3
3
  "license": "EUPL-1.2",
4
- "version": "12.14.0",
4
+ "version": "13.0.0",
5
5
  "peerDependencies": {
6
- "@angular/common": "^17.2.2",
7
- "@angular/core": "^17.2.2"
6
+ "@angular/common": "^19.2.8",
7
+ "@angular/core": "^19.2.8"
8
8
  },
9
9
  "dependencies": {
10
- "tslib": "2.6.3",
10
+ "tslib": "2.8.1",
11
11
  "moment": "2.30.1"
12
12
  },
13
13
  "module": "fesm2022/valtimo-account.mjs",
@@ -18,8 +18,6 @@
18
18
  },
19
19
  ".": {
20
20
  "types": "./index.d.ts",
21
- "esm2022": "./esm2022/valtimo-account.mjs",
22
- "esm": "./esm2022/valtimo-account.mjs",
23
21
  "default": "./fesm2022/valtimo-account.mjs"
24
22
  }
25
23
  },
@@ -1,52 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NgModule } from '@angular/core';
17
- import { RouterModule } from '@angular/router';
18
- import { CommonModule } from '@angular/common';
19
- import { AuthGuardService } from '@valtimo/security';
20
- import { ProfileComponent } from './profile/profile.component';
21
- import { PasswordComponent } from './password/password.component';
22
- import { ROLE_USER } from '@valtimo/config';
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "@angular/router";
25
- const routes = [
26
- {
27
- path: 'profile',
28
- component: ProfileComponent,
29
- canActivate: [AuthGuardService],
30
- data: { title: 'Profile', roles: [ROLE_USER] },
31
- },
32
- {
33
- path: 'password',
34
- component: PasswordComponent,
35
- canActivate: [AuthGuardService],
36
- data: { title: 'Password', roles: [ROLE_USER] },
37
- },
38
- ];
39
- export class AccountRoutingModule {
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
41
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, imports: [CommonModule, i1.RouterModule], exports: [RouterModule] }); }
42
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountRoutingModule, decorators: [{
45
- type: NgModule,
46
- args: [{
47
- declarations: [],
48
- imports: [CommonModule, RouterModule.forChild(routes)],
49
- exports: [RouterModule],
50
- }]
51
- }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vYWNjb3VudC9zcmMvbGliL2FjY291bnQtcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUFFMUMsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBQztLQUM3QztJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsU0FBUyxFQUFFLGlCQUFpQjtRQUM1QixXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFDO0tBQzlDO0NBQ0YsQ0FBQztBQU9GLE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CLFlBSHJCLFlBQVksOEJBQ1osWUFBWTtnSEFFWCxvQkFBb0IsWUFIckIsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzNDLFlBQVk7OzRGQUVYLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3RELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyTW9kdWxlLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QXV0aEd1YXJkU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtQcm9maWxlQ29tcG9uZW50fSBmcm9tICcuL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHtQYXNzd29yZENvbXBvbmVudH0gZnJvbSAnLi9wYXNzd29yZC9wYXNzd29yZC5jb21wb25lbnQnO1xuaW1wb3J0IHtST0xFX1VTRVJ9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJ3Byb2ZpbGUnLFxuICAgIGNvbXBvbmVudDogUHJvZmlsZUNvbXBvbmVudCxcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZFNlcnZpY2VdLFxuICAgIGRhdGE6IHt0aXRsZTogJ1Byb2ZpbGUnLCByb2xlczogW1JPTEVfVVNFUl19LFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3Bhc3N3b3JkJyxcbiAgICBjb21wb25lbnQ6IFBhc3N3b3JkQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkU2VydmljZV0sXG4gICAgZGF0YToge3RpdGxlOiAnUGFzc3dvcmQnLCByb2xlczogW1JPTEVfVVNFUl19LFxuICB9LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudFJvdXRpbmdNb2R1bGUge31cbiJdfQ==
@@ -1,37 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Language } from '@valtimo/config';
17
- export function accountInitializer(translate, logger, configService) {
18
- return () => new Promise((resolve, reject) => {
19
- try {
20
- logger.debug('Account initializer');
21
- translate.addLangs([Language.EN, Language.NL, Language.DE]);
22
- let langKey = localStorage.getItem('langKey');
23
- if (langKey === null) {
24
- langKey = configService?.config?.langKey || Language.NL;
25
- localStorage.setItem('langKey', langKey);
26
- }
27
- logger.debug('Using langKey', langKey);
28
- translate.use(langKey);
29
- resolve();
30
- }
31
- catch (error) {
32
- logger.debug('Account initializer error', error);
33
- reject(error);
34
- }
35
- });
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5pbml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9hY2NvdW50L3NyYy9saWIvYWNjb3VudC5pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBSUgsT0FBTyxFQUFnQixRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFNBQTJCLEVBQzNCLE1BQWlCLEVBQ2pCLGFBQTRCO0lBRTVCLE9BQU8sR0FBaUIsRUFBRSxDQUN4QixJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNwQyxJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDcEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RCxJQUFJLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNyQixPQUFPLEdBQUcsYUFBYSxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBMYW5ndWFnZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFjY291bnRJbml0aWFsaXplcihcbiAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICBsb2dnZXI6IE5HWExvZ2dlcixcbiAgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuKTogKCkgPT4gUHJvbWlzZTxhbnk+IHtcbiAgcmV0dXJuICgpOiBQcm9taXNlPGFueT4gPT5cbiAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ0FjY291bnQgaW5pdGlhbGl6ZXInKTtcbiAgICAgICAgdHJhbnNsYXRlLmFkZExhbmdzKFtMYW5ndWFnZS5FTiwgTGFuZ3VhZ2UuTkwsIExhbmd1YWdlLkRFXSk7XG4gICAgICAgIGxldCBsYW5nS2V5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmdLZXknKTtcbiAgICAgICAgaWYgKGxhbmdLZXkgPT09IG51bGwpIHtcbiAgICAgICAgICBsYW5nS2V5ID0gY29uZmlnU2VydmljZT8uY29uZmlnPy5sYW5nS2V5IHx8IExhbmd1YWdlLk5MO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5nS2V5JywgbGFuZ0tleSk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdVc2luZyBsYW5nS2V5JywgbGFuZ0tleSk7XG4gICAgICAgIHRyYW5zbGF0ZS51c2UobGFuZ0tleSk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnQWNjb3VudCBpbml0aWFsaXplciBlcnJvcicsIGVycm9yKTtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
@@ -1,81 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { NgModule } from '@angular/core';
17
- import { AccountRoutingModule } from './account-routing.module';
18
- import { CommonModule } from '@angular/common';
19
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
20
- import { AlertModule, FieldAutoFocusModule, ListModule, UploaderModule, WidgetModule, } from '@valtimo/components';
21
- import { ProfileComponent } from './profile/profile.component';
22
- import { PasswordComponent } from './password/password.component';
23
- import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
24
- import { HttpLoaderFactory } from '@valtimo/config';
25
- import { HttpClient } from '@angular/common/http';
26
- import * as i0 from "@angular/core";
27
- import * as i1 from "@ngx-translate/core";
28
- export class AccountModule {
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
30
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, declarations: [ProfileComponent, PasswordComponent], imports: [CommonModule,
31
- AccountRoutingModule,
32
- WidgetModule,
33
- ListModule,
34
- FieldAutoFocusModule,
35
- FormsModule, i1.TranslateModule, ReactiveFormsModule,
36
- UploaderModule,
37
- AlertModule], exports: [ProfileComponent, PasswordComponent] }); }
38
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, imports: [CommonModule,
39
- AccountRoutingModule,
40
- WidgetModule,
41
- ListModule,
42
- FieldAutoFocusModule,
43
- FormsModule,
44
- TranslateModule.forRoot({
45
- loader: {
46
- provide: TranslateLoader,
47
- useFactory: HttpLoaderFactory,
48
- deps: [HttpClient],
49
- },
50
- }),
51
- ReactiveFormsModule,
52
- UploaderModule,
53
- AlertModule] }); }
54
- }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AccountModule, decorators: [{
56
- type: NgModule,
57
- args: [{
58
- declarations: [ProfileComponent, PasswordComponent],
59
- imports: [
60
- CommonModule,
61
- AccountRoutingModule,
62
- WidgetModule,
63
- ListModule,
64
- FieldAutoFocusModule,
65
- FormsModule,
66
- TranslateModule.forRoot({
67
- loader: {
68
- provide: TranslateLoader,
69
- useFactory: HttpLoaderFactory,
70
- deps: [HttpClient],
71
- },
72
- }),
73
- ReactiveFormsModule,
74
- UploaderModule,
75
- AlertModule,
76
- ],
77
- exports: [ProfileComponent, PasswordComponent],
78
- providers: [],
79
- }]
80
- }] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY291bnQvc3JjL2xpYi9hY2NvdW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsY0FBYyxFQUNkLFlBQVksR0FDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7QUF5QmhELE1BQU0sT0FBTyxhQUFhOytHQUFiLGFBQWE7Z0hBQWIsYUFBYSxpQkF0QlQsZ0JBQWdCLEVBQUUsaUJBQWlCLGFBRWhELFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsWUFBWTtZQUNaLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsV0FBVyxzQkFRWCxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLFdBQVcsYUFFSCxnQkFBZ0IsRUFBRSxpQkFBaUI7Z0hBR2xDLGFBQWEsWUFwQnRCLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsWUFBWTtZQUNaLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsV0FBVztZQUNYLGVBQWUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRTtvQkFDTixPQUFPLEVBQUUsZUFBZTtvQkFDeEIsVUFBVSxFQUFFLGlCQUFpQjtvQkFDN0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUNuQjthQUNGLENBQUM7WUFDRixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLFdBQVc7OzRGQUtGLGFBQWE7a0JBdkJ6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDO29CQUNuRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsZUFBZSxDQUFDLE9BQU8sQ0FBQzs0QkFDdEIsTUFBTSxFQUFFO2dDQUNOLE9BQU8sRUFBRSxlQUFlO2dDQUN4QixVQUFVLEVBQUUsaUJBQWlCO2dDQUM3QixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7NkJBQ25CO3lCQUNGLENBQUM7d0JBQ0YsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLFdBQVc7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUM7b0JBQzlDLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjY291bnRSb3V0aW5nTW9kdWxlfSBmcm9tICcuL2FjY291bnQtcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBbGVydE1vZHVsZSxcbiAgRmllbGRBdXRvRm9jdXNNb2R1bGUsXG4gIExpc3RNb2R1bGUsXG4gIFVwbG9hZGVyTW9kdWxlLFxuICBXaWRnZXRNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtQcm9maWxlQ29tcG9uZW50fSBmcm9tICcuL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHtQYXNzd29yZENvbXBvbmVudH0gZnJvbSAnLi9wYXNzd29yZC9wYXNzd29yZC5jb21wb25lbnQnO1xuaW1wb3J0IHtUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0h0dHBMb2FkZXJGYWN0b3J5fSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1Byb2ZpbGVDb21wb25lbnQsIFBhc3N3b3JkQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBY2NvdW50Um91dGluZ01vZHVsZSxcbiAgICBXaWRnZXRNb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBGaWVsZEF1dG9Gb2N1c01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yUm9vdCh7XG4gICAgICBsb2FkZXI6IHtcbiAgICAgICAgcHJvdmlkZTogVHJhbnNsYXRlTG9hZGVyLFxuICAgICAgICB1c2VGYWN0b3J5OiBIdHRwTG9hZGVyRmFjdG9yeSxcbiAgICAgICAgZGVwczogW0h0dHBDbGllbnRdLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFVwbG9hZGVyTW9kdWxlLFxuICAgIEFsZXJ0TW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbUHJvZmlsZUNvbXBvbmVudCwgUGFzc3dvcmRDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50TW9kdWxlIHt9XG4iXX0=
@@ -1,104 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component } from '@angular/core';
17
- import { FormControl, Validators } from '@angular/forms';
18
- import moment from 'moment';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/forms";
21
- import * as i2 from "@valtimo/components";
22
- import * as i3 from "@angular/common";
23
- moment.locale(localStorage.getItem('langKey'));
24
- export class PasswordComponent {
25
- constructor(formBuilder, alertService) {
26
- this.formBuilder = formBuilder;
27
- this.alertService = alertService;
28
- }
29
- ngOnInit() {
30
- this.reset();
31
- }
32
- ngOnDestroy() {
33
- location.reload();
34
- }
35
- get formControls() {
36
- return this.form.controls;
37
- }
38
- initData() {
39
- /* this.userService.getUserIdentity().subscribe(value => {
40
- this.profile = value;
41
- this.setValues();
42
- });*/
43
- }
44
- setValues() {
45
- if (this.profile) {
46
- // humanize dates
47
- this.profile.humanize_dates = {
48
- created_at: moment(this.profile.created_at).fromNow(),
49
- updated_at: moment(this.profile.updated_at).fromNow(),
50
- last_password_reset: moment(this.profile.last_password_reset).fromNow(),
51
- };
52
- }
53
- }
54
- createFormGroup() {
55
- return this.formBuilder.group({
56
- password: new FormControl('', [
57
- Validators.required,
58
- Validators.pattern('(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]).{4,}'),
59
- Validators.maxLength(50),
60
- ]),
61
- confirmPassword: new FormControl('', [
62
- Validators.required,
63
- Validators.minLength(4),
64
- Validators.maxLength(50),
65
- ]),
66
- }, {
67
- validator: this.mustMatch('password', 'confirmPassword'),
68
- });
69
- }
70
- mustMatch(controlName, matchingControlName) {
71
- return (formGroup) => {
72
- const control = formGroup.controls[controlName];
73
- const matchingControl = formGroup.controls[matchingControlName];
74
- if (matchingControl.errors && !matchingControl.errors.mustMatch) {
75
- return;
76
- }
77
- if (control.value !== matchingControl.value) {
78
- matchingControl.setErrors({ mustMatch: true });
79
- }
80
- else {
81
- matchingControl.setErrors(null);
82
- }
83
- };
84
- }
85
- onSubmit() {
86
- /* this.userService.changePassword(this.form.value.password).subscribe(() => {
87
- this.alertService.success('Password has been changed');
88
- }, result => {
89
- this.errorMsg = result.error.detail.split(': ', 2)[1];
90
- this.reset();
91
- });*/
92
- }
93
- reset() {
94
- this.form = this.createFormGroup();
95
- this.initData();
96
- }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
98
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PasswordComponent, selector: "valtimo-password", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i2.FieldAutoFocusDirective, selector: "[valtimoFieldAutoFocus]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
99
- }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PasswordComponent, decorators: [{
101
- type: Component,
102
- args: [{ selector: 'valtimo-password', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\">\n <strong>Last password changed</strong>\n </div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.last_password_reset }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMsg\" class=\"bg-danger text-white mb-0 p-3 text-center\">\n {{ errorMsg }}\n </div>\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"password\"\n >New password</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"password\"\n id=\"password\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"password\"\n class=\"form-control\"\n placeholder=\"Your new password\"\n [ngClass]=\"{\n 'is-valid': formControls.password.touched && formControls.password.valid,\n 'is-invalid': formControls.password.touched && formControls.password.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.password.touched && formControls.password.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.password.errors.required\">\n Your password is required\n </div>\n <div *ngIf=\"formControls.password.errors.pattern\">\n It expects at least 1 lowercase letter, 1 uppercase letter, 1 digit and 1\n special characters. The length should be greater than 4 characters. The\n sequence of the characters is not important.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"confirmPassword\"\n >New password confirmation</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"password\"\n id=\"confirmPassword\"\n minlength=\"4\"\n maxlength=\"50\"\n formControlName=\"confirmPassword\"\n class=\"form-control\"\n placeholder=\"Your new password confirmation\"\n [ngClass]=\"{\n 'is-valid':\n formControls.confirmPassword.touched && formControls.confirmPassword.valid,\n 'is-invalid':\n formControls.confirmPassword.touched && formControls.confirmPassword.errors,\n }\"\n required\n />\n <div\n *ngIf=\"\n formControls.confirmPassword.touched && formControls.confirmPassword.errors\n \"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.confirmPassword.errors.required\">\n Your new password confirmation is required\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.minlength\">\n Your new password confirmation is required to be at least 4 characters\n </div>\n <div *ngIf=\"formControls.confirmPassword.errors.mustMatch\">\n Your password and confirmation password must match\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n" }]
103
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AlertService }] });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9hY2NvdW50L3NyYy9saWIvcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9hY2NvdW50L3NyYy9saWIvcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQWMsV0FBVyxFQUFhLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFFNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFPL0MsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixZQUNVLFdBQXdCLEVBQ3hCLFlBQTBCO1FBRDFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQ2pDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVc7UUFDVCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVPLFFBQVE7UUFDZDs7O2FBR0s7SUFDUCxDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRztnQkFDNUIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDckQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDckQsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLEVBQUU7YUFDeEUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUMzQjtZQUNFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVCLFVBQVUsQ0FBQyxRQUFRO2dCQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLHdEQUF3RCxDQUFDO2dCQUM1RSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzthQUN6QixDQUFDO1lBQ0YsZUFBZSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsVUFBVSxDQUFDLFFBQVE7Z0JBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzthQUN6QixDQUFDO1NBQ0gsRUFDRDtZQUNFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztTQUN6RCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sU0FBUyxDQUFDLFdBQW1CLEVBQUUsbUJBQTJCO1FBQy9ELE9BQU8sQ0FBQyxTQUFvQixFQUFFLEVBQUU7WUFDOUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDaEUsSUFBSSxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDaEUsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRO1FBQ2I7Ozs7O2FBS0s7SUFDUCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDOytHQXZGVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix3REM1QjlCLDYwTEEySUE7OzRGRC9HYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWxlcnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1wYXNzd29yZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bhc3N3b3JkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBwcm9maWxlOiBhbnk7XG4gIHB1YmxpYyBlcnJvck1zZzogc3RyaW5nO1xuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICB9XG5cbiAgZ2V0IGZvcm1Db250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RGF0YSgpIHtcbiAgICAvKiB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJZGVudGl0eSgpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLnByb2ZpbGUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0VmFsdWVzKCk7XG4gICAgfSk7Ki9cbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsdWVzKCkge1xuICAgIGlmICh0aGlzLnByb2ZpbGUpIHtcbiAgICAgIC8vIGh1bWFuaXplIGRhdGVzXG4gICAgICB0aGlzLnByb2ZpbGUuaHVtYW5pemVfZGF0ZXMgPSB7XG4gICAgICAgIGNyZWF0ZWRfYXQ6IG1vbWVudCh0aGlzLnByb2ZpbGUuY3JlYXRlZF9hdCkuZnJvbU5vdygpLFxuICAgICAgICB1cGRhdGVkX2F0OiBtb21lbnQodGhpcy5wcm9maWxlLnVwZGF0ZWRfYXQpLmZyb21Ob3coKSxcbiAgICAgICAgbGFzdF9wYXNzd29yZF9yZXNldDogbW9tZW50KHRoaXMucHJvZmlsZS5sYXN0X3Bhc3N3b3JkX3Jlc2V0KS5mcm9tTm93KCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFxuICAgICAge1xuICAgICAgICBwYXNzd29yZDogbmV3IEZvcm1Db250cm9sKCcnLCBbXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJyg/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlswLTldKSg/PS4qWyRAJCElKj8mXSkuezQsfScpLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcbiAgICAgICAgXSksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogbmV3IEZvcm1Db250cm9sKCcnLCBbXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCg0KSxcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXG4gICAgICAgIF0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdG9yOiB0aGlzLm11c3RNYXRjaCgncGFzc3dvcmQnLCAnY29uZmlybVBhc3N3b3JkJyksXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtdXN0TWF0Y2goY29udHJvbE5hbWU6IHN0cmluZywgbWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV07XG4gICAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XG4gICAgICBpZiAobWF0Y2hpbmdDb250cm9sLmVycm9ycyAmJiAhbWF0Y2hpbmdDb250cm9sLmVycm9ycy5tdXN0TWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgIT09IG1hdGNoaW5nQ29udHJvbC52YWx1ZSkge1xuICAgICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKHttdXN0TWF0Y2g6IHRydWV9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdCgpIHtcbiAgICAvKiB0aGlzLnVzZXJTZXJ2aWNlLmNoYW5nZVBhc3N3b3JkKHRoaXMuZm9ybS52YWx1ZS5wYXNzd29yZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoJ1Bhc3N3b3JkIGhhcyBiZWVuIGNoYW5nZWQnKTtcbiAgICB9LCByZXN1bHQgPT4ge1xuICAgICAgdGhpcy5lcnJvck1zZyA9IHJlc3VsdC5lcnJvci5kZXRhaWwuc3BsaXQoJzogJywgMilbMV07XG4gICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfSk7Ki9cbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgIHRoaXMuaW5pdERhdGEoKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHB4LTAgbWItNVwiPlxuICAgICAgPHZhbHRpbW8td2lkZ2V0ICpuZ0lmPVwicHJvZmlsZVwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHktNVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tMyB0ZXh0LXNtLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+TGFzdCBwYXNzd29yZCBjaGFuZ2VkPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTggY29sLWxnLTZcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJvZmlsZS5odW1hbml6ZV9kYXRlcy5sYXN0X3Bhc3N3b3JkX3Jlc2V0IH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNc2dcIiBjbGFzcz1cImJnLWRhbmdlciB0ZXh0LXdoaXRlIG1iLTAgcC0zIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICB7eyBlcnJvck1zZyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHktY29udHJhc3QgcC01XCI+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3dcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTMgY29sLWZvcm0tbGFiZWwgdGV4dC1zbS1yaWdodFwiIGZvcj1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgID5OZXcgcGFzc3dvcmQ8L2xhYmVsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTggY29sLWxnLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB2YWx0aW1vRmllbGRBdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aD1cIjRcIlxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIllvdXIgbmV3IHBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICdpcy12YWxpZCc6IGZvcm1Db250cm9scy5wYXNzd29yZC50b3VjaGVkICYmIGZvcm1Db250cm9scy5wYXNzd29yZC52YWxpZCxcbiAgICAgICAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGZvcm1Db250cm9scy5wYXNzd29yZC50b3VjaGVkICYmIGZvcm1Db250cm9scy5wYXNzd29yZC5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtQ29udHJvbHMucGFzc3dvcmQudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMucGFzc3dvcmQuZXJyb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1Db250cm9scy5wYXNzd29yZC5lcnJvcnMucmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICBZb3VyIHBhc3N3b3JkIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUNvbnRyb2xzLnBhc3N3b3JkLmVycm9ycy5wYXR0ZXJuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgSXQgZXhwZWN0cyBhdCBsZWFzdCAxIGxvd2VyY2FzZSBsZXR0ZXIsIDEgdXBwZXJjYXNlIGxldHRlciwgMSBkaWdpdCBhbmQgMVxuICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgY2hhcmFjdGVycy4gVGhlIGxlbmd0aCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDQgY2hhcmFjdGVycy4gVGhlXG4gICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2Ugb2YgdGhlIGNoYXJhY3RlcnMgaXMgbm90IGltcG9ydGFudC5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93XCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsIHRleHQtc20tcmlnaHRcIiBmb3I9XCJjb25maXJtUGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgPk5ldyBwYXNzd29yZCBjb25maXJtYXRpb248L2xhYmVsXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTggY29sLWxnLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImNvbmZpcm1QYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIG1pbmxlbmd0aD1cIjRcIlxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbmZpcm1QYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJZb3VyIG5ldyBwYXNzd29yZCBjb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgJ2lzLXZhbGlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9scy5jb25maXJtUGFzc3dvcmQudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMuY29uZmlybVBhc3N3b3JkLnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9scy5jb25maXJtUGFzc3dvcmQudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMuY29uZmlybVBhc3N3b3JkLmVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9scy5jb25maXJtUGFzc3dvcmQudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMuY29uZmlybVBhc3N3b3JkLmVycm9yc1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUNvbnRyb2xzLmNvbmZpcm1QYXNzd29yZC5lcnJvcnMucmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICBZb3VyIG5ldyBwYXNzd29yZCBjb25maXJtYXRpb24gaXMgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmb3JtQ29udHJvbHMuY29uZmlybVBhc3N3b3JkLmVycm9ycy5taW5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICBZb3VyIG5ldyBwYXNzd29yZCBjb25maXJtYXRpb24gaXMgcmVxdWlyZWQgdG8gYmUgYXQgbGVhc3QgNCBjaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUNvbnRyb2xzLmNvbmZpcm1QYXNzd29yZC5lcnJvcnMubXVzdE1hdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgWW91ciBwYXNzd29yZCBhbmQgY29uZmlybWF0aW9uIHBhc3N3b3JkIG11c3QgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0zIG10LTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgUmVzZXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3BhY2UgYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgU3VibWl0XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdmFsdGltby13aWRnZXQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,89 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component } from '@angular/core';
17
- import { FormControl, Validators } from '@angular/forms';
18
- import moment from 'moment';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/forms";
21
- import * as i2 from "@valtimo/components";
22
- import * as i3 from "@ngx-translate/core";
23
- import * as i4 from "@angular/common";
24
- moment.locale(localStorage.getItem('langKey'));
25
- export class ProfileComponent {
26
- constructor(formBuilder, alertService, translate) {
27
- this.formBuilder = formBuilder;
28
- this.alertService = alertService;
29
- this.translate = translate;
30
- this.resourceIds = [];
31
- }
32
- ngOnInit() {
33
- this.reset();
34
- }
35
- ngOnDestroy() {
36
- location.reload();
37
- }
38
- get formControls() {
39
- return this.form.controls;
40
- }
41
- initData() {
42
- /* this.userProviderService.getUserIdentity().subscribe(value => {
43
- this.profile = value;
44
- this.setValues();
45
- });*/
46
- }
47
- setValues() {
48
- if (this.profile) {
49
- // set humanize dates
50
- this.profile.humanize_dates = {
51
- created_at: moment(this.profile.created_at).fromNow(),
52
- updated_at: moment(this.profile.updated_at).fromNow(),
53
- last_password_reset: moment(this.profile.last_password_reset).fromNow(),
54
- };
55
- // set form values
56
- this.form.controls.firstName.setValue(this.profile.user_metadata.firstname);
57
- this.form.controls.lastName.setValue(this.profile.user_metadata.lastname);
58
- this.form.controls.langKey.setValue(this.profile.user_metadata.langKey);
59
- }
60
- }
61
- createFormGroup() {
62
- return this.formBuilder.group({
63
- firstName: new FormControl('', Validators.required),
64
- lastName: new FormControl('', Validators.required),
65
- langKey: new FormControl('', Validators.required),
66
- });
67
- }
68
- onFileUpload(resources) {
69
- this.resourceIds = resources.map(resource => resource.id);
70
- }
71
- onSubmit() {
72
- this.form.value.email = this.profile.email;
73
- // TODO Updating profile ?? allowed when using keycloak
74
- /* this.userService.updateProfile(this.form.value).subscribe(() => {
75
- this.alertService.success('Profile has been updated');
76
- });*/
77
- }
78
- reset() {
79
- this.form = this.createFormGroup();
80
- this.initData();
81
- }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AlertService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProfileComponent, selector: "valtimo-profile", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i2.FieldAutoFocusDirective, selector: "[valtimoFieldAutoFocus]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
84
- }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileComponent, decorators: [{
86
- type: Component,
87
- args: [{ selector: 'valtimo-profile', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget *ngIf=\"profile\">\n <div>\n <div class=\"card-body\">\n <div class=\"row py-5\">\n <div class=\"col-12\">\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Nickname</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.nickname }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Email</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">{{ profile.email }}</div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Authorities</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <span\n class=\"badge badge-pill badge-success mb-1 mr-1\"\n *ngFor=\"let role of profile.roles\"\n >{{ role }}</span\n >\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account status</strong></div>\n <div\n class=\"col-12 col-sm-8 col-lg-6\"\n [ngClass]=\"{'text-danger': profile.blocked}\"\n >\n {{ profile.blocked ? 'Blocked' : 'Activated' }}\n </div>\n </div>\n\n <div class=\"row mb-3\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Account created</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.created_at }}\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12 col-sm-3 text-sm-right\"><strong>Last updated</strong></div>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n {{ profile.humanize_dates.updated_at }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"card-body-contrast p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"firstName\"\n >First name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n valtimoFieldAutoFocus\n type=\"text\"\n id=\"firstName\"\n formControlName=\"firstName\"\n class=\"form-control\"\n placeholder=\"Your first name\"\n [ngClass]=\"{\n 'is-valid': formControls.firstName.touched && formControls.firstName.valid,\n 'is-invalid': formControls.firstName.touched && formControls.firstName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.firstName.touched && formControls.firstName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.firstName.errors.required\">\n Your first name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"lastName\"\n >Last name</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"lastName\"\n formControlName=\"lastName\"\n class=\"form-control\"\n placeholder=\"Your last name\"\n [ngClass]=\"{\n 'is-valid': formControls.lastName.touched && formControls.lastName.valid,\n 'is-invalid': formControls.lastName.touched && formControls.lastName.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.lastName.touched && formControls.lastName.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.lastName.errors.required\">\n Your last name is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"langKey\"\n >Language</label\n >\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <select\n id=\"langKey\"\n formControlName=\"langKey\"\n class=\"form-control\"\n [ngClass]=\"{\n 'is-valid': formControls.langKey.touched && formControls.langKey.valid,\n 'is-invalid': formControls.langKey.touched && formControls.langKey.errors,\n }\"\n required\n >\n <option\n *ngFor=\"let lang of translate.getLangs()\"\n [value]=\"lang\"\n [selected]=\"lang === translate.currentLang\"\n >\n {{ 'settings.language.options.' + lang | translate }}\n </option>\n </select>\n <div\n *ngIf=\"formControls.langKey.touched && formControls.langKey.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.langKey.errors.required\">\n Your language is required\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12\">\n <div class=\"text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n Reset\n </button>\n <button\n class=\"btn btn-space btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n >\n Submit\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n" }]
88
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AlertService }, { type: i3.TranslateService }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2FjY291bnQvc3JjL2xpYi9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9hY2NvdW50L3NyYy9saWIvcHJvZmlsZS9wcm9maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFjLFdBQVcsRUFBYSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7OztBQUc1QixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQU8vQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSzNCLFlBQ1UsV0FBd0IsRUFDeEIsWUFBMEIsRUFDM0IsU0FBMkI7UUFGMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFMN0IsZ0JBQVcsR0FBZSxFQUFFLENBQUM7SUFNakMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRU8sUUFBUTtRQUNkOzs7YUFHSztJQUNQLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHO2dCQUM1QixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNyRCxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUNyRCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRTthQUN4RSxDQUFDO1lBQ0Ysa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuRCxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEQsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxZQUFZLENBQUMsU0FBUztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0MsdURBQXVEO1FBQ3ZEOzthQUVLO0lBQ1AsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQzsrR0FwRVUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsdURDN0I3Qixpc1BBNExBOzs0RkQvSmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5tb21lbnQubG9jYWxlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nS2V5JykpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXByb2ZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2ZpbGUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgcHJvZmlsZTogYW55O1xuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgcmVzb3VyY2VJZHM6IEFycmF5PGFueT4gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICB9XG5cbiAgZ2V0IGZvcm1Db250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RGF0YSgpIHtcbiAgICAvKiAgIHRoaXMudXNlclByb3ZpZGVyU2VydmljZS5nZXRVc2VySWRlbnRpdHkoKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5wcm9maWxlID0gdmFsdWU7XG4gICAgICB0aGlzLnNldFZhbHVlcygpO1xuICAgIH0pOyovXG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5wcm9maWxlKSB7XG4gICAgICAvLyBzZXQgaHVtYW5pemUgZGF0ZXNcbiAgICAgIHRoaXMucHJvZmlsZS5odW1hbml6ZV9kYXRlcyA9IHtcbiAgICAgICAgY3JlYXRlZF9hdDogbW9tZW50KHRoaXMucHJvZmlsZS5jcmVhdGVkX2F0KS5mcm9tTm93KCksXG4gICAgICAgIHVwZGF0ZWRfYXQ6IG1vbWVudCh0aGlzLnByb2ZpbGUudXBkYXRlZF9hdCkuZnJvbU5vdygpLFxuICAgICAgICBsYXN0X3Bhc3N3b3JkX3Jlc2V0OiBtb21lbnQodGhpcy5wcm9maWxlLmxhc3RfcGFzc3dvcmRfcmVzZXQpLmZyb21Ob3coKSxcbiAgICAgIH07XG4gICAgICAvLyBzZXQgZm9ybSB2YWx1ZXNcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maXJzdE5hbWUuc2V0VmFsdWUodGhpcy5wcm9maWxlLnVzZXJfbWV0YWRhdGEuZmlyc3RuYW1lKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5sYXN0TmFtZS5zZXRWYWx1ZSh0aGlzLnByb2ZpbGUudXNlcl9tZXRhZGF0YS5sYXN0bmFtZSk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMubGFuZ0tleS5zZXRWYWx1ZSh0aGlzLnByb2ZpbGUudXNlcl9tZXRhZGF0YS5sYW5nS2V5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBmaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBsYXN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGxhbmdLZXk6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25GaWxlVXBsb2FkKHJlc291cmNlcykge1xuICAgIHRoaXMucmVzb3VyY2VJZHMgPSByZXNvdXJjZXMubWFwKHJlc291cmNlID0+IHJlc291cmNlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdCgpIHtcbiAgICB0aGlzLmZvcm0udmFsdWUuZW1haWwgPSB0aGlzLnByb2ZpbGUuZW1haWw7XG4gICAgLy8gVE9ETyBVcGRhdGluZyBwcm9maWxlID8/IGFsbG93ZWQgd2hlbiB1c2luZyBrZXljbG9ha1xuICAgIC8qIHRoaXMudXNlclNlcnZpY2UudXBkYXRlUHJvZmlsZSh0aGlzLmZvcm0udmFsdWUpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKCdQcm9maWxlIGhhcyBiZWVuIHVwZGF0ZWQnKTtcbiAgICB9KTsqL1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XG4gICAgdGhpcy5pbml0RGF0YSgpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gICAgICA8dmFsdGltby13aWRnZXQgKm5nSWY9XCJwcm9maWxlXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweS01XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTMgdGV4dC1zbS1yaWdodFwiPjxzdHJvbmc+Tmlja25hbWU8L3N0cm9uZz48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTggY29sLWxnLTZcIj57eyBwcm9maWxlLm5pY2tuYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTMgdGV4dC1zbS1yaWdodFwiPjxzdHJvbmc+RW1haWw8L3N0cm9uZz48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTggY29sLWxnLTZcIj57eyBwcm9maWxlLmVtYWlsIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTMgdGV4dC1zbS1yaWdodFwiPjxzdHJvbmc+QXV0aG9yaXRpZXM8L3N0cm9uZz48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTggY29sLWxnLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2Utc3VjY2VzcyBtYi0xIG1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByb2xlIG9mIHByb2ZpbGUucm9sZXNcIlxuICAgICAgICAgICAgICAgICAgICAgID57eyByb2xlIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zIHRleHQtc20tcmlnaHRcIj48c3Ryb25nPkFjY291bnQgc3RhdHVzPC9zdHJvbmc+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGNvbC1zbS04IGNvbC1sZy02XCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IHByb2ZpbGUuYmxvY2tlZH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcm9maWxlLmJsb2NrZWQgPyAnQmxvY2tlZCcgOiAnQWN0aXZhdGVkJyB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTMgdGV4dC1zbS1yaWdodFwiPjxzdHJvbmc+QWNjb3VudCBjcmVhdGVkPC9zdHJvbmc+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS04IGNvbC1sZy02XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2ZpbGUuaHVtYW5pemVfZGF0ZXMuY3JlYXRlZF9hdCB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zIHRleHQtc20tcmlnaHRcIj48c3Ryb25nPkxhc3QgdXBkYXRlZDwvc3Ryb25nPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tOCBjb2wtbGctNlwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcm9maWxlLmh1bWFuaXplX2RhdGVzLnVwZGF0ZWRfYXQgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keS1jb250cmFzdCBwLTVcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC0xMiBjb2wtc20tMyBjb2wtZm9ybS1sYWJlbCB0ZXh0LXNtLXJpZ2h0XCIgZm9yPVwiZmlyc3ROYW1lXCJcbiAgICAgICAgICAgICAgICAgID5GaXJzdCBuYW1lPC9sYWJlbFxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS04IGNvbC1sZy02XCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdmFsdGltb0ZpZWxkQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmaXJzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiWW91ciBmaXJzdCBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICdpcy12YWxpZCc6IGZvcm1Db250cm9scy5maXJzdE5hbWUudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMuZmlyc3ROYW1lLnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZm9ybUNvbnRyb2xzLmZpcnN0TmFtZS50b3VjaGVkICYmIGZvcm1Db250cm9scy5maXJzdE5hbWUuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybUNvbnRyb2xzLmZpcnN0TmFtZS50b3VjaGVkICYmIGZvcm1Db250cm9scy5maXJzdE5hbWUuZXJyb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1Db250cm9scy5maXJzdE5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgWW91ciBmaXJzdCBuYW1lIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC0xMiBjb2wtc20tMyBjb2wtZm9ybS1sYWJlbCB0ZXh0LXNtLXJpZ2h0XCIgZm9yPVwibGFzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgPkxhc3QgbmFtZTwvbGFiZWxcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tOCBjb2wtbGctNlwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJsYXN0TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIllvdXIgbGFzdCBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICdpcy12YWxpZCc6IGZvcm1Db250cm9scy5sYXN0TmFtZS50b3VjaGVkICYmIGZvcm1Db250cm9scy5sYXN0TmFtZS52YWxpZCxcbiAgICAgICAgICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGZvcm1Db250cm9scy5sYXN0TmFtZS50b3VjaGVkICYmIGZvcm1Db250cm9scy5sYXN0TmFtZS5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtQ29udHJvbHMubGFzdE5hbWUudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMubGFzdE5hbWUuZXJyb3JzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1Db250cm9scy5sYXN0TmFtZS5lcnJvcnMucmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICBZb3VyIGxhc3QgbmFtZSBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3dcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTMgY29sLWZvcm0tbGFiZWwgdGV4dC1zbS1yaWdodFwiIGZvcj1cImxhbmdLZXlcIlxuICAgICAgICAgICAgICAgICAgPkxhbmd1YWdlPC9sYWJlbFxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS04IGNvbC1sZy02XCI+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGlkPVwibGFuZ0tleVwiXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhbmdLZXlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAnaXMtdmFsaWQnOiBmb3JtQ29udHJvbHMubGFuZ0tleS50b3VjaGVkICYmIGZvcm1Db250cm9scy5sYW5nS2V5LnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZm9ybUNvbnRyb2xzLmxhbmdLZXkudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMubGFuZ0tleS5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhbmcgb2YgdHJhbnNsYXRlLmdldExhbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJsYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwibGFuZyA9PT0gdHJhbnNsYXRlLmN1cnJlbnRMYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdzZXR0aW5ncy5sYW5ndWFnZS5vcHRpb25zLicgKyBsYW5nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybUNvbnRyb2xzLmxhbmdLZXkudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMubGFuZ0tleS5lcnJvcnNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUNvbnRyb2xzLmxhbmdLZXkuZXJyb3JzLnJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgWW91ciBsYW5ndWFnZSBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTMgbXQtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNwYWNlIGJ0bi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICBSZXNldFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICBTdWJtaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC92YWx0aW1vLXdpZGdldD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,23 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- /*
17
- * Public API Surface of account
18
- */
19
- export * from './lib/profile/profile.component';
20
- export * from './lib/password/password.component';
21
- export * from './lib/account.module';
22
- export * from './lib/account.init';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vYWNjb3VudC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVIOztHQUVHO0FBRUgsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYWNjb3VudFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFzc3dvcmQvcGFzc3dvcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjY291bnQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FjY291bnQuaW5pdCc7XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdGltby1hY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9hY2NvdW50L3NyYy92YWx0aW1vLWFjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==