@abp/ng.account 6.0.0 → 6.0.2

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.
@@ -1,7 +1,7 @@
1
1
  import * as i3$2 from '@abp/ng.core';
2
2
  import { InternalStore, ConfigStateService, RouterOutletComponent, ReplaceableRouteContainerComponent, AuthGuard, LazyModuleFactory, CoreModule } from '@abp/ng.core';
3
3
  import * as i2$1 from '@abp/ng.theme.shared';
4
- import { getPasswordValidators, fadeIn, ThemeSharedModule } from '@abp/ng.theme.shared';
4
+ import { getPasswordValidators, Confirmation, fadeIn, ThemeSharedModule } from '@abp/ng.theme.shared';
5
5
  import * as i0 from '@angular/core';
6
6
  import { Component, InjectionToken, Injectable, Inject, NgModule } from '@angular/core';
7
7
  import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
@@ -12,12 +12,12 @@ import { ActivatedRoute, RouterModule } from '@angular/router';
12
12
  import * as i2 from '@abp/ng.account.core/proxy';
13
13
  import * as i1 from '@angular/forms';
14
14
  import { Validators, UntypedFormControl } from '@angular/forms';
15
- import { finalize, catchError, switchMap, map, tap, mapTo } from 'rxjs/operators';
15
+ import { finalize, catchError, filter, switchMap, map, tap, mapTo } from 'rxjs/operators';
16
16
  import * as i3 from '@angular/common';
17
17
  import { throwError } from 'rxjs';
18
18
  import { trigger, transition, useAnimation } from '@angular/animations';
19
- import * as i8 from '@abp/ng.theme.shared/extensions';
20
- import { FormPropData, generateFormFromProps, EXTENSIONS_IDENTIFIER, EXTENSIONS_FORM_PROP, EXTENSIBLE_FORM_VIEW_PROVIDER, FormProp, ExtensionsService, getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, mergeWithDefaultProps, UiExtensionsModule } from '@abp/ng.theme.shared/extensions';
19
+ import * as i4 from '@abp/ng.theme.shared/extensions';
20
+ import { EXTENSIONS_FORM_PROP, EXTENSIBLE_FORM_VIEW_PROVIDER, FormProp, FormPropData, generateFormFromProps, EXTENSIONS_IDENTIFIER, ExtensionsService, getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, mergeWithDefaultProps, UiExtensionsModule } from '@abp/ng.theme.shared/extensions';
21
21
 
22
22
  class ForgotPasswordComponent {
23
23
  constructor(fb, accountService) {
@@ -204,13 +204,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
204
204
  args: [{ selector: 'abp-change-password-form', exportAs: 'abpChangePasswordForm', template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" [mapErrorsFn]=\"mapErrorsFn\" validateOnSubmit>\r\n <div *ngIf=\"!hideCurrentPassword\" class=\"mb-3 form-group\">\r\n <label for=\"current-password\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:CurrentPassword' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"password\"\r\n id=\"current-password\"\r\n class=\"form-control\"\r\n formControlName=\"password\"\r\n autofocus\r\n autocomplete=\"current-password\"\r\n />\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"new-password\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:NewPassword' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"password\"\r\n id=\"new-password\"\r\n class=\"form-control\"\r\n formControlName=\"newPassword\"\r\n autocomplete=\"new-password\"\r\n />\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"confirm-new-password\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:NewPasswordConfirm' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"password\"\r\n id=\"confirm-new-password\"\r\n class=\"form-control\"\r\n formControlName=\"repeatNewPassword\"\r\n autocomplete=\"new-password\"\r\n />\r\n </div>\r\n <abp-button\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-primary color-white\"\r\n buttonType=\"submit\"\r\n [loading]=\"inProgress\"\r\n [disabled]=\"form?.invalid\"\r\n >{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n" }]
205
205
  }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.Injector }, { type: i2$1.ToasterService }, { type: i2.ProfileService }, { type: ManageProfileStateService }]; } });
206
206
 
207
+ const RE_LOGIN_CONFIRMATION_TOKEN = new InjectionToken('RE_LOGIN_CONFIRMATION_TOKEN');
208
+
209
+ class PersonalSettingsHalfRowComponent {
210
+ constructor(propData) {
211
+ this.propData = propData;
212
+ this.displayName = propData.displayName;
213
+ this.name = propData.name;
214
+ this.id = propData.id;
215
+ }
216
+ }
217
+ PersonalSettingsHalfRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PersonalSettingsHalfRowComponent, deps: [{ token: EXTENSIONS_FORM_PROP }], target: i0.ɵɵFactoryTarget.Component });
218
+ PersonalSettingsHalfRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: PersonalSettingsHalfRowComponent, selector: "abp-personal-settings-half-row", ngImport: i0, template: ` <div class="w-50 d-inline">
219
+ <div class="mb-3 form-group">
220
+ <label [attr.for]="name" class="form-label">{{ displayName | abpLocalization }} </label>
221
+ <input
222
+ type="text"
223
+ [attr.id]="id"
224
+ class="form-control"
225
+ [attr.name]="name"
226
+ [formControlName]="name"
227
+ />
228
+ </div>
229
+ </div>`, isInline: true, dependencies: [{ 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.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i3$2.LocalizationPipe, name: "abpLocalization" }], viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER] });
230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PersonalSettingsHalfRowComponent, decorators: [{
231
+ type: Component,
232
+ args: [{ selector: 'abp-personal-settings-half-row', template: ` <div class="w-50 d-inline">
233
+ <div class="mb-3 form-group">
234
+ <label [attr.for]="name" class="form-label">{{ displayName | abpLocalization }} </label>
235
+ <input
236
+ type="text"
237
+ [attr.id]="id"
238
+ class="form-control"
239
+ [attr.name]="name"
240
+ [formControlName]="name"
241
+ />
242
+ </div>
243
+ </div>`, viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER] }]
244
+ }], ctorParameters: function () { return [{ type: i4.FormProp, decorators: [{
245
+ type: Inject,
246
+ args: [EXTENSIONS_FORM_PROP]
247
+ }] }]; } });
248
+
249
+ const { maxLength: maxLength$1, required: required$1, email: email$1 } = Validators;
250
+ const DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS = FormProp.createMany([
251
+ {
252
+ type: "string" /* ePropType.String */,
253
+ name: 'userName',
254
+ displayName: 'AbpIdentity::DisplayName:UserName',
255
+ id: 'username',
256
+ validators: () => [required$1, maxLength$1(256)],
257
+ },
258
+ {
259
+ type: "string" /* ePropType.String */,
260
+ name: 'name',
261
+ displayName: 'AbpIdentity::DisplayName:Name',
262
+ id: 'name',
263
+ validators: () => [maxLength$1(64)],
264
+ template: PersonalSettingsHalfRowComponent,
265
+ className: 'd-inline-block w-50',
266
+ },
267
+ {
268
+ type: "string" /* ePropType.String */,
269
+ name: 'surname',
270
+ displayName: 'AbpIdentity::DisplayName:Surname',
271
+ id: 'surname',
272
+ validators: () => [maxLength$1(64)],
273
+ className: 'd-inline-block w-50 ps-4',
274
+ template: PersonalSettingsHalfRowComponent,
275
+ },
276
+ {
277
+ type: "string" /* ePropType.String */,
278
+ name: 'email',
279
+ displayName: 'AbpIdentity::DisplayName:Email',
280
+ id: 'email-address',
281
+ validators: () => [required$1, email$1, maxLength$1(256)],
282
+ },
283
+ {
284
+ type: "string" /* ePropType.String */,
285
+ name: 'phoneNumber',
286
+ displayName: 'AbpIdentity::DisplayName:PhoneNumber',
287
+ id: 'phone-number',
288
+ validators: () => [maxLength$1(16)],
289
+ },
290
+ ]);
291
+
292
+ const DEFAULT_ACCOUNT_FORM_PROPS = {
293
+ ["Account.PersonalSettingsComponent" /* eAccountComponents.PersonalSettings */]: DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS,
294
+ };
295
+ const ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken('ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS');
296
+
207
297
  class PersonalSettingsComponent {
208
- constructor(fb, toasterService, profileService, manageProfileState, injector) {
298
+ constructor(fb, toasterService, profileService, manageProfileState, authService, confirmationService, isPersonalSettingsChangedConfirmationActive, injector) {
209
299
  this.fb = fb;
210
300
  this.toasterService = toasterService;
211
301
  this.profileService = profileService;
212
302
  this.manageProfileState = manageProfileState;
303
+ this.authService = authService;
304
+ this.confirmationService = confirmationService;
305
+ this.isPersonalSettingsChangedConfirmationActive = isPersonalSettingsChangedConfirmationActive;
213
306
  this.injector = injector;
307
+ this.logoutConfirmation = () => {
308
+ this.authService.logout().subscribe();
309
+ };
214
310
  }
215
311
  buildForm() {
216
312
  this.selected = this.manageProfileState.getProfile();
@@ -226,6 +322,7 @@ class PersonalSettingsComponent {
226
322
  submit() {
227
323
  if (this.form.invalid)
228
324
  return;
325
+ const isLogOutConfirmMessageVisible = this.isLogoutConfirmMessageActive();
229
326
  this.inProgress = true;
230
327
  this.profileService
231
328
  .update(this.form.value)
@@ -233,16 +330,28 @@ class PersonalSettingsComponent {
233
330
  .subscribe(profile => {
234
331
  this.manageProfileState.setProfile(profile);
235
332
  this.toasterService.success('AbpAccount::PersonalSettingsSaved', 'Success', { life: 5000 });
333
+ if (isLogOutConfirmMessageVisible) {
334
+ this.showLogoutConfirmMessage();
335
+ }
236
336
  });
237
337
  }
338
+ isLogoutConfirmMessageActive() {
339
+ return this.isPersonalSettingsChangedConfirmationActive;
340
+ }
341
+ showLogoutConfirmMessage() {
342
+ this.confirmationService
343
+ .info('AbpAccount::PersonalSettingsChangedConfirmationModalDescription', 'AbpAccount::PersonalSettingsChangedConfirmationModalTitle')
344
+ .pipe(filter(status => status === Confirmation.Status.confirm))
345
+ .subscribe(this.logoutConfirmation);
346
+ }
238
347
  }
239
- PersonalSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PersonalSettingsComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2$1.ToasterService }, { token: i2.ProfileService }, { token: ManageProfileStateService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
348
+ PersonalSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PersonalSettingsComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2$1.ToasterService }, { token: i2.ProfileService }, { token: ManageProfileStateService }, { token: i3$2.AuthService }, { token: i2$1.ConfirmationService }, { token: RE_LOGIN_CONFIRMATION_TOKEN }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
240
349
  PersonalSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: PersonalSettingsComponent, selector: "abp-personal-settings-form", providers: [
241
350
  {
242
351
  provide: EXTENSIONS_IDENTIFIER,
243
352
  useValue: "Account.PersonalSettingsComponent" /* eAccountComponents.PersonalSettings */,
244
353
  },
245
- ], exportAs: ["abpPersonalSettingsForm"], ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"form\" (ngSubmit)=\"submit()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n\r\n <abp-button\r\n buttonType=\"submit\"\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-primary color-white\"\r\n [loading]=\"inProgress\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$2.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i8.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { kind: "pipe", type: i3$2.LocalizationPipe, name: "abpLocalization" }] });
354
+ ], exportAs: ["abpPersonalSettingsForm"], ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"form\" (ngSubmit)=\"submit()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n\r\n <abp-button\r\n buttonType=\"submit\"\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-primary color-white\"\r\n [loading]=\"inProgress\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$2.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i2$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i4.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { kind: "pipe", type: i3$2.LocalizationPipe, name: "abpLocalization" }] });
246
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PersonalSettingsComponent, decorators: [{
247
356
  type: Component,
248
357
  args: [{ selector: 'abp-personal-settings-form', exportAs: 'abpPersonalSettingsForm', providers: [
@@ -251,7 +360,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
251
360
  useValue: "Account.PersonalSettingsComponent" /* eAccountComponents.PersonalSettings */,
252
361
  },
253
362
  ], template: "<form [formGroup]=\"form\" *ngIf=\"form\" (ngSubmit)=\"submit()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n\r\n <abp-button\r\n buttonType=\"submit\"\r\n iconClass=\"fa fa-check\"\r\n buttonClass=\"btn btn-primary color-white\"\r\n [loading]=\"inProgress\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n" }]
254
- }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2$1.ToasterService }, { type: i2.ProfileService }, { type: ManageProfileStateService }, { type: i0.Injector }]; } });
363
+ }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2$1.ToasterService }, { type: i2.ProfileService }, { type: ManageProfileStateService }, { type: i3$2.AuthService }, { type: i2$1.ConfirmationService }, { type: undefined, decorators: [{
364
+ type: Inject,
365
+ args: [RE_LOGIN_CONFIRMATION_TOKEN]
366
+ }] }, { type: i0.Injector }]; } });
255
367
 
256
368
  class ManageProfileComponent {
257
369
  constructor(profileService, manageProfileState) {
@@ -279,7 +391,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
279
391
  args: [{ selector: 'abp-manage-profile', animations: [trigger('fadeIn', [transition(':enter', useAnimation(fadeIn))])], template: "<div id=\"AbpContentToolbar\"></div>\r\n\r\n<div class=\"card border-0 shadow-sm min-h-400\" [abpLoading]=\"!(profile$ | async)?.userName\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-3\">\r\n <ul class=\"nav flex-column nav-pills\" id=\"nav-tab\" role=\"tablist\">\r\n <li\r\n *ngIf=\"!hideChangePasswordTab && (profile$ | async)\"\r\n class=\"nav-item\"\r\n (click)=\"selectedTab = 0\"\r\n >\r\n <a\r\n class=\"nav-link\"\r\n [ngClass]=\"{ active: selectedTab === 0 }\"\r\n role=\"tab\"\r\n href=\"javascript:void(0)\"\r\n >{{ 'AbpUi::ChangePassword' | abpLocalization }}</a\r\n >\r\n </li>\r\n <li class=\"nav-item mb-2\" (click)=\"selectedTab = 1\">\r\n <a\r\n class=\"nav-link\"\r\n [ngClass]=\"{ active: selectedTab === 1 }\"\r\n role=\"tab\"\r\n href=\"javascript:void(0)\"\r\n >{{ 'AbpAccount::PersonalSettings' | abpLocalization }}</a\r\n >\r\n </li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"profile$ | async\" class=\"col-12 col-md-9\">\r\n <div class=\"tab-content\" *ngIf=\"selectedTab === 0\" [@fadeIn]>\r\n <div class=\"tab-pane active\" role=\"tabpanel\">\r\n <h4>\r\n {{ 'AbpIdentity::ChangePassword' | abpLocalization }}\r\n <hr />\r\n </h4>\r\n <abp-change-password-form\r\n *abpReplaceableTemplate=\"{\r\n componentKey: changePasswordKey\r\n }\"\r\n ></abp-change-password-form>\r\n </div>\r\n </div>\r\n <div class=\"tab-content\" *ngIf=\"selectedTab === 1\" [@fadeIn]>\r\n <div class=\"tab-pane active\" role=\"tabpanel\">\r\n <h4>\r\n {{ 'AbpIdentity::PersonalSettings' | abpLocalization }}\r\n <hr />\r\n </h4>\r\n <abp-personal-settings-form\r\n *abpReplaceableTemplate=\"{\r\n componentKey: personalSettingsKey\r\n }\"\r\n ></abp-personal-settings-form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".min-h-400{min-height:400px}\n"] }]
280
392
  }], ctorParameters: function () { return [{ type: i2.ProfileService }, { type: ManageProfileStateService }]; } });
281
393
 
282
- const { maxLength: maxLength$1, required: required$1, email: email$1 } = Validators;
394
+ const { maxLength, required, email } = Validators;
283
395
  class RegisterComponent {
284
396
  constructor(fb, accountService, configState, toasterService, authService, injector) {
285
397
  this.fb = fb;
@@ -309,9 +421,9 @@ class RegisterComponent {
309
421
  }
310
422
  buildForm() {
311
423
  this.form = this.fb.group({
312
- username: ['', [required$1, maxLength$1(255)]],
313
- password: ['', [required$1, ...getPasswordValidators(this.injector)]],
314
- email: ['', [required$1, email$1]],
424
+ username: ['', [required, maxLength(255)]],
425
+ password: ['', [required, ...getPasswordValidators(this.injector)]],
426
+ email: ['', [required, email]],
315
427
  });
316
428
  }
317
429
  onSubmit() {
@@ -416,94 +528,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
416
528
  type: Injectable
417
529
  }], ctorParameters: function () { return [{ type: i3$2.AuthService }]; } });
418
530
 
419
- class PersonalSettingsHalfRowComponent {
420
- constructor(propData) {
421
- this.propData = propData;
422
- this.displayName = propData.displayName;
423
- this.name = propData.name;
424
- this.id = propData.id;
425
- }
426
- }
427
- PersonalSettingsHalfRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PersonalSettingsHalfRowComponent, deps: [{ token: EXTENSIONS_FORM_PROP }], target: i0.ɵɵFactoryTarget.Component });
428
- PersonalSettingsHalfRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: PersonalSettingsHalfRowComponent, selector: "abp-personal-settings-half-row", ngImport: i0, template: ` <div class="w-50 d-inline">
429
- <div class="mb-3 form-group">
430
- <label [attr.for]="name" class="form-label">{{ displayName | abpLocalization }} </label>
431
- <input
432
- type="text"
433
- [attr.id]="id"
434
- class="form-control"
435
- [attr.name]="name"
436
- [formControlName]="name"
437
- />
438
- </div>
439
- </div>`, isInline: true, dependencies: [{ 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.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i3$2.LocalizationPipe, name: "abpLocalization" }], viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER] });
440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: PersonalSettingsHalfRowComponent, decorators: [{
441
- type: Component,
442
- args: [{ selector: 'abp-personal-settings-half-row', template: ` <div class="w-50 d-inline">
443
- <div class="mb-3 form-group">
444
- <label [attr.for]="name" class="form-label">{{ displayName | abpLocalization }} </label>
445
- <input
446
- type="text"
447
- [attr.id]="id"
448
- class="form-control"
449
- [attr.name]="name"
450
- [formControlName]="name"
451
- />
452
- </div>
453
- </div>`, viewProviders: [EXTENSIBLE_FORM_VIEW_PROVIDER] }]
454
- }], ctorParameters: function () { return [{ type: i8.FormProp, decorators: [{
455
- type: Inject,
456
- args: [EXTENSIONS_FORM_PROP]
457
- }] }]; } });
458
-
459
- const { maxLength, required, email } = Validators;
460
- const DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS = FormProp.createMany([
461
- {
462
- type: "string" /* ePropType.String */,
463
- name: 'userName',
464
- displayName: 'AbpIdentity::DisplayName:UserName',
465
- id: 'username',
466
- validators: () => [required, maxLength(256)],
467
- },
468
- {
469
- type: "string" /* ePropType.String */,
470
- name: 'name',
471
- displayName: 'AbpIdentity::DisplayName:Name',
472
- id: 'name',
473
- validators: () => [maxLength(64)],
474
- template: PersonalSettingsHalfRowComponent,
475
- className: 'd-inline-block w-50',
476
- },
477
- {
478
- type: "string" /* ePropType.String */,
479
- name: 'surname',
480
- displayName: 'AbpIdentity::DisplayName:Surname',
481
- id: 'surname',
482
- validators: () => [maxLength(64)],
483
- className: 'd-inline-block w-50 ps-4',
484
- template: PersonalSettingsHalfRowComponent,
485
- },
486
- {
487
- type: "string" /* ePropType.String */,
488
- name: 'email',
489
- displayName: 'AbpIdentity::DisplayName:Email',
490
- id: 'email-address',
491
- validators: () => [required, email, maxLength(256)],
492
- },
493
- {
494
- type: "string" /* ePropType.String */,
495
- name: 'phoneNumber',
496
- displayName: 'AbpIdentity::DisplayName:PhoneNumber',
497
- id: 'phone-number',
498
- validators: () => [maxLength(16)],
499
- },
500
- ]);
501
-
502
- const DEFAULT_ACCOUNT_FORM_PROPS = {
503
- ["Account.PersonalSettingsComponent" /* eAccountComponents.PersonalSettings */]: DEFAULT_PERSONAL_SETTINGS_UPDATE_FORM_PROPS,
504
- };
505
- const ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS = new InjectionToken('ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS');
506
-
507
531
  class AccountExtensionsGuard {
508
532
  constructor(injector) {
509
533
  this.injector = injector;
@@ -632,6 +656,10 @@ class AccountModule {
632
656
  useFactory: accountConfigOptionsFactory,
633
657
  deps: [ACCOUNT_CONFIG_OPTIONS],
634
658
  },
659
+ {
660
+ provide: RE_LOGIN_CONFIRMATION_TOKEN,
661
+ useValue: options.isPersonalSettingsChangedConfirmationActive ?? true,
662
+ },
635
663
  {
636
664
  provide: ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS,
637
665
  useValue: options.editFormPropContributors,
@@ -693,5 +721,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
693
721
  * Generated bundle index. Do not edit.
694
722
  */
695
723
 
696
- export { ACCOUNT_CONFIG_OPTIONS, ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, AccountExtensionsGuard, AccountModule, AuthenticationFlowGuard, ChangePasswordComponent, DEFAULT_ACCOUNT_FORM_PROPS, ForgotPasswordComponent, LoginComponent, ManageProfileComponent, ManageProfileStateService, PersonalSettingsComponent, PersonalSettingsHalfRowComponent, RegisterComponent, ResetPasswordComponent };
724
+ export { ACCOUNT_CONFIG_OPTIONS, ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, AccountExtensionsGuard, AccountModule, AuthenticationFlowGuard, ChangePasswordComponent, DEFAULT_ACCOUNT_FORM_PROPS, ForgotPasswordComponent, LoginComponent, ManageProfileComponent, ManageProfileStateService, PersonalSettingsComponent, PersonalSettingsHalfRowComponent, RE_LOGIN_CONFIRMATION_TOKEN, RegisterComponent, ResetPasswordComponent };
697
725
  //# sourceMappingURL=abp-ng.account.mjs.map