@abp/ng.account 5.3.3 → 5.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/account.module.mjs +6 -1
- package/esm2020/lib/components/personal-settings/personal-settings.component.mjs +51 -16
- package/esm2020/lib/models/config-options.mjs +1 -1
- package/esm2020/lib/tokens/index.mjs +2 -1
- package/esm2020/lib/tokens/re-login-confirmation.token.mjs +3 -0
- package/fesm2015/abp-ng.account.mjs +55 -13
- package/fesm2015/abp-ng.account.mjs.map +1 -1
- package/fesm2020/abp-ng.account.mjs +52 -13
- package/fesm2020/abp-ng.account.mjs.map +1 -1
- package/lib/components/personal-settings/personal-settings.component.d.ts +11 -2
- package/lib/models/config-options.d.ts +1 -0
- package/lib/tokens/index.d.ts +1 -0
- package/lib/tokens/re-login-confirmation.token.d.ts +2 -0
- package/lib/utils/factory-utils.d.ts +1 -0
- package/package.json +4 -4
|
@@ -14,6 +14,7 @@ import { accountConfigOptionsFactory } from './utils/factory-utils';
|
|
|
14
14
|
import { AuthenticationFlowGuard } from './guards/authentication-flow.guard';
|
|
15
15
|
import { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';
|
|
16
16
|
import { ResetPasswordComponent } from './components/reset-password/reset-password.component';
|
|
17
|
+
import { RE_LOGIN_CONFIRMATION_TOKEN } from './tokens';
|
|
17
18
|
import * as i0 from "@angular/core";
|
|
18
19
|
const declarations = [
|
|
19
20
|
LoginComponent,
|
|
@@ -36,6 +37,10 @@ export class AccountModule {
|
|
|
36
37
|
useFactory: accountConfigOptionsFactory,
|
|
37
38
|
deps: [ACCOUNT_CONFIG_OPTIONS],
|
|
38
39
|
},
|
|
40
|
+
{
|
|
41
|
+
provide: RE_LOGIN_CONFIRMATION_TOKEN,
|
|
42
|
+
useValue: options.isPersonalSettingsChangedConfirmationActive ?? true,
|
|
43
|
+
},
|
|
39
44
|
],
|
|
40
45
|
};
|
|
41
46
|
}
|
|
@@ -82,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
82
87
|
exports: [...declarations],
|
|
83
88
|
}]
|
|
84
89
|
}] });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hY2NvdW50L3NyYy9saWIvYWNjb3VudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXVCLFFBQVEsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFFdkQsTUFBTSxZQUFZLEdBQUc7SUFDbkIsY0FBYztJQUNkLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkIsc0JBQXNCO0NBQ3ZCLENBQUM7QUFhRixNQUFNLE9BQU8sYUFBYTtJQUN4QixNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBMEI7UUFDbEQsT0FBTztZQUNMLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLFNBQVMsRUFBRTtnQkFDVCx1QkFBdUI7Z0JBQ3ZCLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7Z0JBQ3REO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFVBQVUsRUFBRSwyQkFBMkI7b0JBQ3ZDLElBQUksRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUMvQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsMkJBQTJCO29CQUNwQyxRQUFRLEVBQUUsT0FBTyxDQUFDLDJDQUEyQyxJQUFJLElBQUk7aUJBQ3RFO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUEwQjtRQUNqRCxPQUFPLElBQUksaUJBQWlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7OzBHQXRCVSxhQUFhOzJHQUFiLGFBQWEsaUJBcEJ4QixjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIseUJBQXlCO1FBQ3pCLHVCQUF1QjtRQUN2QixzQkFBc0IsYUFNcEIsVUFBVTtRQUNWLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLHFCQUFxQixhQWhCdkIsY0FBYztRQUNkLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsc0JBQXNCO1FBQ3RCLHlCQUF5QjtRQUN6Qix1QkFBdUI7UUFDdkIsc0JBQXNCOzJHQWNYLGFBQWEsWUFUZjtZQUNQLFVBQVU7WUFDVixvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixxQkFBcUI7U0FDdEI7MkZBR1UsYUFBYTtrQkFYekIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztvQkFDL0IsT0FBTyxFQUFFO3dCQUNQLFVBQVU7d0JBQ1Ysb0JBQW9CO3dCQUNwQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlLCBMYXp5TW9kdWxlRmFjdG9yeSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgTmdNb2R1bGVGYWN0b3J5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBBY2NvdW50Um91dGluZ01vZHVsZSB9IGZyb20gJy4vYWNjb3VudC1yb3V0aW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7IENoYW5nZVBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFuYWdlUHJvZmlsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYW5hZ2UtcHJvZmlsZS9tYW5hZ2UtcHJvZmlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQZXJzb25hbFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BlcnNvbmFsLXNldHRpbmdzL3BlcnNvbmFsLXNldHRpbmdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlZ2lzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjY291bnRDb25maWdPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMvY29uZmlnLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBBQ0NPVU5UX0NPTkZJR19PUFRJT05TIH0gZnJvbSAnLi90b2tlbnMvY29uZmlnLW9wdGlvbnMudG9rZW4nO1xyXG5pbXBvcnQgeyBhY2NvdW50Q29uZmlnT3B0aW9uc0ZhY3RvcnkgfSBmcm9tICcuL3V0aWxzL2ZhY3RvcnktdXRpbHMnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbkZsb3dHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL2F1dGhlbnRpY2F0aW9uLWZsb3cuZ3VhcmQnO1xyXG5pbXBvcnQgeyBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3Jnb3QtcGFzc3dvcmQvZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc2V0UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVzZXQtcGFzc3dvcmQvcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUkVfTE9HSU5fQ09ORklSTUFUSU9OX1RPS0VOIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5cclxuY29uc3QgZGVjbGFyYXRpb25zID0gW1xyXG4gIExvZ2luQ29tcG9uZW50LFxyXG4gIFJlZ2lzdGVyQ29tcG9uZW50LFxyXG4gIENoYW5nZVBhc3N3b3JkQ29tcG9uZW50LFxyXG4gIE1hbmFnZVByb2ZpbGVDb21wb25lbnQsXHJcbiAgUGVyc29uYWxTZXR0aW5nc0NvbXBvbmVudCxcclxuICBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCxcclxuICBSZXNldFBhc3N3b3JkQ29tcG9uZW50LFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnNdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvcmVNb2R1bGUsXHJcbiAgICBBY2NvdW50Um91dGluZ01vZHVsZSxcclxuICAgIFRoZW1lU2hhcmVkTW9kdWxlLFxyXG4gICAgTmdiRHJvcGRvd25Nb2R1bGUsXHJcbiAgICBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbLi4uZGVjbGFyYXRpb25zXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjY291bnRNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JDaGlsZChvcHRpb25zID0ge30gYXMgQWNjb3VudENvbmZpZ09wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFjY291bnRNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBY2NvdW50TW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBBdXRoZW50aWNhdGlvbkZsb3dHdWFyZCxcclxuICAgICAgICB7IHByb3ZpZGU6IEFDQ09VTlRfQ09ORklHX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogJ0FDQ09VTlRfT1BUSU9OUycsXHJcbiAgICAgICAgICB1c2VGYWN0b3J5OiBhY2NvdW50Q29uZmlnT3B0aW9uc0ZhY3RvcnksXHJcbiAgICAgICAgICBkZXBzOiBbQUNDT1VOVF9DT05GSUdfT1BUSU9OU10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm92aWRlOiBSRV9MT0dJTl9DT05GSVJNQVRJT05fVE9LRU4sXHJcbiAgICAgICAgICB1c2VWYWx1ZTogb3B0aW9ucy5pc1BlcnNvbmFsU2V0dGluZ3NDaGFuZ2VkQ29uZmlybWF0aW9uQWN0aXZlID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZm9yTGF6eShvcHRpb25zID0ge30gYXMgQWNjb3VudENvbmZpZ09wdGlvbnMpOiBOZ01vZHVsZUZhY3Rvcnk8QWNjb3VudE1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIG5ldyBMYXp5TW9kdWxlRmFjdG9yeShBY2NvdW50TW9kdWxlLmZvckNoaWxkKG9wdGlvbnMpKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,41 +1,50 @@
|
|
|
1
1
|
import { ProfileService } from '@abp/ng.account.core/proxy';
|
|
2
|
-
import { ToasterService } from '@abp/ng.theme.shared';
|
|
3
|
-
import { Component } from '@angular/core';
|
|
2
|
+
import { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';
|
|
3
|
+
import { Component, Inject } from '@angular/core';
|
|
4
4
|
import { FormBuilder, Validators } from '@angular/forms';
|
|
5
|
-
import { finalize } from 'rxjs/operators';
|
|
5
|
+
import { finalize, filter } from 'rxjs/operators';
|
|
6
6
|
import { ManageProfileStateService } from '../../services/manage-profile.state.service';
|
|
7
|
+
import { AuthService } from '@abp/ng.core';
|
|
8
|
+
import { RE_LOGIN_CONFIRMATION_TOKEN } from '../../tokens';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
import * as i1 from "@angular/forms";
|
|
9
11
|
import * as i2 from "@abp/ng.theme.shared";
|
|
10
12
|
import * as i3 from "@abp/ng.account.core/proxy";
|
|
11
13
|
import * as i4 from "../../services/manage-profile.state.service";
|
|
12
|
-
import * as i5 from "@
|
|
13
|
-
import * as i6 from "@
|
|
14
|
+
import * as i5 from "@abp/ng.core";
|
|
15
|
+
import * as i6 from "@angular/common";
|
|
14
16
|
import * as i7 from "@ngx-validate/core";
|
|
15
17
|
const { maxLength, required, email } = Validators;
|
|
16
18
|
export class PersonalSettingsComponent {
|
|
17
|
-
constructor(fb, toasterService, profileService, manageProfileState) {
|
|
19
|
+
constructor(fb, toasterService, profileService, manageProfileState, authService, confirmationService, isPersonalSettingsChangedConfirmationActive) {
|
|
18
20
|
this.fb = fb;
|
|
19
21
|
this.toasterService = toasterService;
|
|
20
22
|
this.profileService = profileService;
|
|
21
23
|
this.manageProfileState = manageProfileState;
|
|
24
|
+
this.authService = authService;
|
|
25
|
+
this.confirmationService = confirmationService;
|
|
26
|
+
this.isPersonalSettingsChangedConfirmationActive = isPersonalSettingsChangedConfirmationActive;
|
|
27
|
+
this.logoutConfirmation = () => {
|
|
28
|
+
this.authService.logout().subscribe();
|
|
29
|
+
};
|
|
22
30
|
}
|
|
23
31
|
ngOnInit() {
|
|
24
32
|
this.buildForm();
|
|
25
33
|
}
|
|
26
34
|
buildForm() {
|
|
27
|
-
|
|
35
|
+
this.profile = this.manageProfileState.getProfile();
|
|
28
36
|
this.form = this.fb.group({
|
|
29
|
-
userName: [profile.userName, [required, maxLength(256)]],
|
|
30
|
-
email: [profile.email, [required, email, maxLength(256)]],
|
|
31
|
-
name: [profile.name || '', [maxLength(64)]],
|
|
32
|
-
surname: [profile.surname || '', [maxLength(64)]],
|
|
33
|
-
phoneNumber: [profile.phoneNumber || '', [maxLength(16)]],
|
|
37
|
+
userName: [this.profile.userName, [required, maxLength(256)]],
|
|
38
|
+
email: [this.profile.email, [required, email, maxLength(256)]],
|
|
39
|
+
name: [this.profile.name || '', [maxLength(64)]],
|
|
40
|
+
surname: [this.profile.surname || '', [maxLength(64)]],
|
|
41
|
+
phoneNumber: [this.profile.phoneNumber || '', [maxLength(16)]],
|
|
34
42
|
});
|
|
35
43
|
}
|
|
36
44
|
submit() {
|
|
37
45
|
if (this.form.invalid)
|
|
38
46
|
return;
|
|
47
|
+
const isLogOutConfirmMessageVisible = this.isLogoutConfirmMessageActive();
|
|
39
48
|
this.inProgress = true;
|
|
40
49
|
this.profileService
|
|
41
50
|
.update(this.form.value)
|
|
@@ -43,13 +52,39 @@ export class PersonalSettingsComponent {
|
|
|
43
52
|
.subscribe(profile => {
|
|
44
53
|
this.manageProfileState.setProfile(profile);
|
|
45
54
|
this.toasterService.success('AbpAccount::PersonalSettingsSaved', 'Success', { life: 5000 });
|
|
55
|
+
if (isLogOutConfirmMessageVisible) {
|
|
56
|
+
this.showLogoutConfirmMessage();
|
|
57
|
+
}
|
|
46
58
|
});
|
|
47
59
|
}
|
|
60
|
+
isDataSame(oldValue, newValue) {
|
|
61
|
+
return Object.entries(oldValue).some(([key, value]) => {
|
|
62
|
+
if (key in newValue) {
|
|
63
|
+
return value !== newValue[key];
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
isLogoutConfirmMessageActive() {
|
|
69
|
+
if (!this.isPersonalSettingsChangedConfirmationActive) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return this.isDataSame(this.profile, this.form.value);
|
|
73
|
+
}
|
|
74
|
+
showLogoutConfirmMessage() {
|
|
75
|
+
this.confirmationService
|
|
76
|
+
.info('AbpAccount::PersonalSettingsChangedConfirmationModalDescription', 'AbpAccount::PersonalSettingsChangedConfirmationModalTitle')
|
|
77
|
+
.pipe(filter(status => status === Confirmation.Status.confirm))
|
|
78
|
+
.subscribe(this.logoutConfirmation);
|
|
79
|
+
}
|
|
48
80
|
}
|
|
49
|
-
PersonalSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: PersonalSettingsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ToasterService }, { token: i3.ProfileService }, { token: i4.ManageProfileStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
PersonalSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: PersonalSettingsComponent, selector: "abp-personal-settings-form", exportAs: ["abpPersonalSettingsForm"], ngImport: i0, template: "<form validateOnSubmit *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"username\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:UserName' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"text\"\r\n id=\"username\"\r\n class=\"form-control\"\r\n formControlName=\"userName\"\r\n autofocus\r\n (keydown.space)=\"$event.preventDefault()\"\r\n />\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Name' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"name\" class=\"form-control\" formControlName=\"name\" />\r\n </div>\r\n </div>\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"surname\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Surname' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"surname\" class=\"form-control\" formControlName=\"surname\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"email-address\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Email' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input type=\"text\" id=\"email-address\" class=\"form-control\" formControlName=\"email\" />\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"phone-number\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"phone-number\" class=\"form-control\" formControlName=\"phoneNumber\" />\r\n </div>\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 [disabled]=\"form?.invalid\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n", components: [{ type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type:
|
|
81
|
+
PersonalSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: PersonalSettingsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.ToasterService }, { token: i3.ProfileService }, { token: i4.ManageProfileStateService }, { token: i5.AuthService }, { token: i2.ConfirmationService }, { token: RE_LOGIN_CONFIRMATION_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
PersonalSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: PersonalSettingsComponent, selector: "abp-personal-settings-form", exportAs: ["abpPersonalSettingsForm"], ngImport: i0, template: "<form validateOnSubmit *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"username\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:UserName' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"text\"\r\n id=\"username\"\r\n class=\"form-control\"\r\n formControlName=\"userName\"\r\n autofocus\r\n (keydown.space)=\"$event.preventDefault()\"\r\n />\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Name' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"name\" class=\"form-control\" formControlName=\"name\" />\r\n </div>\r\n </div>\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"surname\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Surname' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"surname\" class=\"form-control\" formControlName=\"surname\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"email-address\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Email' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input type=\"text\" id=\"email-address\" class=\"form-control\" formControlName=\"email\" />\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"phone-number\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"phone-number\" class=\"form-control\" formControlName=\"phoneNumber\" />\r\n </div>\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 [disabled]=\"form?.invalid\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n", components: [{ type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { 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]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i5.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }], pipes: { "abpLocalization": i5.LocalizationPipe } });
|
|
51
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: PersonalSettingsComponent, decorators: [{
|
|
52
84
|
type: Component,
|
|
53
85
|
args: [{ selector: 'abp-personal-settings-form', exportAs: 'abpPersonalSettingsForm', template: "<form validateOnSubmit *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"username\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:UserName' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"text\"\r\n id=\"username\"\r\n class=\"form-control\"\r\n formControlName=\"userName\"\r\n autofocus\r\n (keydown.space)=\"$event.preventDefault()\"\r\n />\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Name' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"name\" class=\"form-control\" formControlName=\"name\" />\r\n </div>\r\n </div>\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"surname\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Surname' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"surname\" class=\"form-control\" formControlName=\"surname\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"email-address\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Email' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input type=\"text\" id=\"email-address\" class=\"form-control\" formControlName=\"email\" />\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"phone-number\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"phone-number\" class=\"form-control\" formControlName=\"phoneNumber\" />\r\n </div>\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 [disabled]=\"form?.invalid\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n" }]
|
|
54
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ToasterService }, { type: i3.ProfileService }, { type: i4.ManageProfileStateService }
|
|
55
|
-
|
|
86
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.ToasterService }, { type: i3.ProfileService }, { type: i4.ManageProfileStateService }, { type: i5.AuthService }, { type: i2.ConfirmationService }, { type: undefined, decorators: [{
|
|
87
|
+
type: Inject,
|
|
88
|
+
args: [RE_LOGIN_CONFIRMATION_TOKEN]
|
|
89
|
+
}] }]; } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uYWwtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvcGVyc29uYWwtc2V0dGluZ3MvcGVyc29uYWwtc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvcGVyc29uYWwtc2V0dGluZ3MvcGVyc29uYWwtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7QUFFM0QsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBT2xELE1BQU0sT0FBTyx5QkFBeUI7SUFXcEMsWUFDVSxFQUFlLEVBQ2YsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsa0JBQTZDLEVBQ3BDLFdBQXdCLEVBQ2pDLG1CQUF3QyxFQUV4QywyQ0FBb0Q7UUFQ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O1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBTU8sNEJBQTRCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsMkNBQTJDLEVBQUU7WUFDckQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsbUJBQW1CO2FBQ3JCLElBQUksQ0FDSCxpRUFBaUUsRUFDakUsMkRBQTJELENBQzVEO2FBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlELFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN4QyxDQUFDOztzSEFqRlUseUJBQXlCLGdOQWtCMUIsMkJBQTJCOzBHQWxCMUIseUJBQXlCLHlHQ2pCdEMsNmxFQXdEQTsyRkR2Q2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLDRCQUE0QixZQUU1Qix5QkFBeUI7OzBCQW9CaEMsTUFBTTsyQkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9maWxlRHRvLCBQcm9maWxlU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuYWNjb3VudC5jb3JlL3Byb3h5JztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnQnO1xyXG5pbXBvcnQgeyBNYW5hZ2VQcm9maWxlU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFuYWdlLXByb2ZpbGUuc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgUkVfTE9HSU5fQ09ORklSTUFUSU9OX1RPS0VOIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbmNvbnN0IHsgbWF4TGVuZ3RoLCByZXF1aXJlZCwgZW1haWwgfSA9IFZhbGlkYXRvcnM7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1wZXJzb25hbC1zZXR0aW5ncy1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGVyc29uYWwtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGV4cG9ydEFzOiAnYWJwUGVyc29uYWxTZXR0aW5nc0Zvcm0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGVyc29uYWxTZXR0aW5nc0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHNcclxuICAgIE9uSW5pdCxcclxuICAgIEFjY291bnQuUGVyc29uYWxTZXR0aW5nc0NvbXBvbmVudElucHV0cyxcclxuICAgIEFjY291bnQuUGVyc29uYWxTZXR0aW5nc0NvbXBvbmVudE91dHB1dHNcclxue1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgaW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICBwcml2YXRlIHByb2ZpbGU6IFByb2ZpbGVEdG87XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYW5hZ2VQcm9maWxlU3RhdGU6IE1hbmFnZVByb2ZpbGVTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIEBJbmplY3QoUkVfTE9HSU5fQ09ORklSTUFUSU9OX1RPS0VOKVxyXG4gICAgcHJpdmF0ZSBpc1BlcnNvbmFsU2V0dGluZ3NDaGFuZ2VkQ29uZmlybWF0aW9uQWN0aXZlOiBib29sZWFuLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCkge1xyXG4gICAgdGhpcy5wcm9maWxlID0gdGhpcy5tYW5hZ2VQcm9maWxlU3RhdGUuZ2V0UHJvZmlsZSgpO1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHVzZXJOYW1lOiBbdGhpcy5wcm9maWxlLnVzZXJOYW1lLCBbcmVxdWlyZWQsIG1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIGVtYWlsOiBbdGhpcy5wcm9maWxlLmVtYWlsLCBbcmVxdWlyZWQsIGVtYWlsLCBtYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICBuYW1lOiBbdGhpcy5wcm9maWxlLm5hbWUgfHwgJycsIFttYXhMZW5ndGgoNjQpXV0sXHJcbiAgICAgIHN1cm5hbWU6IFt0aGlzLnByb2ZpbGUuc3VybmFtZSB8fCAnJywgW21heExlbmd0aCg2NCldXSxcclxuICAgICAgcGhvbmVOdW1iZXI6IFt0aGlzLnByb2ZpbGUucGhvbmVOdW1iZXIgfHwgJycsIFttYXhMZW5ndGgoMTYpXV0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgaXNMb2dPdXRDb25maXJtTWVzc2FnZVZpc2libGUgPSB0aGlzLmlzTG9nb3V0Q29uZmlybU1lc3NhZ2VBY3RpdmUoKTtcclxuICAgIHRoaXMuaW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLnByb2ZpbGVTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGUodGhpcy5mb3JtLnZhbHVlKVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pblByb2dyZXNzID0gZmFsc2UpKSlcclxuICAgICAgLnN1YnNjcmliZShwcm9maWxlID0+IHtcclxuICAgICAgICB0aGlzLm1hbmFnZVByb2ZpbGVTdGF0ZS5zZXRQcm9maWxlKHByb2ZpbGUpO1xyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnQWJwQWNjb3VudDo6UGVyc29uYWxTZXR0aW5nc1NhdmVkJywgJ1N1Y2Nlc3MnLCB7IGxpZmU6IDUwMDAgfSk7XHJcbiAgICAgICAgaWYgKGlzTG9nT3V0Q29uZmlybU1lc3NhZ2VWaXNpYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dMb2dvdXRDb25maXJtTWVzc2FnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc0RhdGFTYW1lKG9sZFZhbHVlLCBuZXdWYWx1ZSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9sZFZhbHVlKS5zb21lKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgaWYgKGtleSBpbiBuZXdWYWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gbmV3VmFsdWVba2V5XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvZ291dENvbmZpcm1hdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9nb3V0KCkuc3Vic2NyaWJlKCk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBpc0xvZ291dENvbmZpcm1NZXNzYWdlQWN0aXZlKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzUGVyc29uYWxTZXR0aW5nc0NoYW5nZWRDb25maXJtYXRpb25BY3RpdmUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaXNEYXRhU2FtZSh0aGlzLnByb2ZpbGUsIHRoaXMuZm9ybS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dMb2dvdXRDb25maXJtTWVzc2FnZSgpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZVxyXG4gICAgICAuaW5mbyhcclxuICAgICAgICAnQWJwQWNjb3VudDo6UGVyc29uYWxTZXR0aW5nc0NoYW5nZWRDb25maXJtYXRpb25Nb2RhbERlc2NyaXB0aW9uJyxcclxuICAgICAgICAnQWJwQWNjb3VudDo6UGVyc29uYWxTZXR0aW5nc0NoYW5nZWRDb25maXJtYXRpb25Nb2RhbFRpdGxlJyxcclxuICAgICAgKVxyXG4gICAgICAucGlwZShmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSlcclxuICAgICAgLnN1YnNjcmliZSh0aGlzLmxvZ291dENvbmZpcm1hdGlvbik7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIHZhbGlkYXRlT25TdWJtaXQgKm5nSWY9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInN1Ym1pdCgpXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1iLTMgZm9ybS1ncm91cFwiPlxyXG4gICAgPGxhYmVsIGZvcj1cInVzZXJuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcclxuICAgICAgJ0FicElkZW50aXR5OjpEaXNwbGF5TmFtZTpVc2VyTmFtZScgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgIH19PC9sYWJlbFxyXG4gICAgPjxzcGFuPiAqIDwvc3BhblxyXG4gICAgPjxpbnB1dFxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGlkPVwidXNlcm5hbWVcIlxyXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZXJOYW1lXCJcclxuICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtbWQtNlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cIm5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57e1xyXG4gICAgICAgICAgJ0FicElkZW50aXR5OjpEaXNwbGF5TmFtZTpOYW1lJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgIH19PC9sYWJlbFxyXG4gICAgICAgID48aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cIm5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtbWQtNlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsIGZvcj1cInN1cm5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57e1xyXG4gICAgICAgICAgJ0FicElkZW50aXR5OjpEaXNwbGF5TmFtZTpTdXJuYW1lJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgIH19PC9sYWJlbFxyXG4gICAgICAgID48aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInN1cm5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInN1cm5hbWVcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cclxuICAgIDxsYWJlbCBmb3I9XCJlbWFpbC1hZGRyZXNzXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3tcclxuICAgICAgJ0FicElkZW50aXR5OjpEaXNwbGF5TmFtZTpFbWFpbCcgfCBhYnBMb2NhbGl6YXRpb25cclxuICAgIH19PC9sYWJlbFxyXG4gICAgPjxzcGFuPiAqIDwvc3BhblxyXG4gICAgPjxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZW1haWwtYWRkcmVzc1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiAvPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtYi0zIGZvcm0tZ3JvdXBcIj5cclxuICAgIDxsYWJlbCBmb3I9XCJwaG9uZS1udW1iZXJcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj57e1xyXG4gICAgICAnQWJwSWRlbnRpdHk6OkRpc3BsYXlOYW1lOlBob25lTnVtYmVyJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgfX08L2xhYmVsXHJcbiAgICA+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJwaG9uZS1udW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyXCIgLz5cclxuICA8L2Rpdj5cclxuICA8YWJwLWJ1dHRvblxyXG4gICAgYnV0dG9uVHlwZT1cInN1Ym1pdFwiXHJcbiAgICBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiXHJcbiAgICBidXR0b25DbGFzcz1cImJ0biBidG4tcHJpbWFyeSBjb2xvci13aGl0ZVwiXHJcbiAgICBbbG9hZGluZ109XCJpblByb2dyZXNzXCJcclxuICAgIFtkaXNhYmxlZF09XCJmb3JtPy5pbnZhbGlkXCJcclxuICA+XHJcbiAgICB7eyAnQWJwSWRlbnRpdHk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hYnAtYnV0dG9uXHJcbiAgPlxyXG48L2Zvcm0+XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hY2NvdW50L3NyYy9saWIvbW9kZWxzL2NvbmZpZy1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFjY291bnRDb25maWdPcHRpb25zIHtcclxuICByZWRpcmVjdFVybD86IHN0cmluZztcclxuICBpc1BlcnNvbmFsU2V0dGluZ3NDaGFuZ2VkQ29uZmlybWF0aW9uQWN0aXZlPzogYm9vbGVhbjtcclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export * from './config-options.token';
|
|
2
|
-
|
|
2
|
+
export * from './re-login-confirmation.token';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hY2NvdW50L3NyYy9saWIvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnLW9wdGlvbnMudG9rZW4nO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlLWxvZ2luLWNvbmZpcm1hdGlvbi50b2tlbic7XHJcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const RE_LOGIN_CONFIRMATION_TOKEN = new InjectionToken('RE_LOGIN_CONFIRMATION_TOKEN');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmUtbG9naW4tY29uZmlybWF0aW9uLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWNjb3VudC9zcmMvbGliL3Rva2Vucy9yZS1sb2dpbi1jb25maXJtYXRpb24udG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FDM0QsNkJBQTZCLENBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IFJFX0xPR0lOX0NPTkZJUk1BVElPTl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPihcclxuICAnUkVfTE9HSU5fQ09ORklSTUFUSU9OX1RPS0VOJyxcclxuKTtcclxuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i3 from '@abp/ng.core';
|
|
2
2
|
import { InternalStore, 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
|
-
import { Component, InjectionToken, Injectable, NgModule } from '@angular/core';
|
|
6
|
+
import { Component, InjectionToken, Injectable, Inject, NgModule } from '@angular/core';
|
|
7
7
|
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
|
|
8
8
|
import * as i6$1 from '@ngx-validate/core';
|
|
9
9
|
import { comparePasswords, NgxValidateCoreModule } from '@ngx-validate/core';
|
|
@@ -11,7 +11,7 @@ import * as i3$1 from '@angular/router';
|
|
|
11
11
|
import { ActivatedRoute, RouterModule } from '@angular/router';
|
|
12
12
|
import * as i1 from '@angular/forms';
|
|
13
13
|
import { Validators, FormControl } from '@angular/forms';
|
|
14
|
-
import { finalize, catchError, switchMap } from 'rxjs/operators';
|
|
14
|
+
import { finalize, catchError, filter, switchMap } from 'rxjs/operators';
|
|
15
15
|
import * as i2 from '@abp/ng.account.core/proxy';
|
|
16
16
|
import * as i6 from '@angular/common';
|
|
17
17
|
import { throwError } from 'rxjs';
|
|
@@ -202,30 +202,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
202
202
|
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" }]
|
|
203
203
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.Injector }, { type: i2$1.ToasterService }, { type: i2.ProfileService }, { type: ManageProfileStateService }]; } });
|
|
204
204
|
|
|
205
|
+
const RE_LOGIN_CONFIRMATION_TOKEN = new InjectionToken('RE_LOGIN_CONFIRMATION_TOKEN');
|
|
206
|
+
|
|
205
207
|
const { maxLength: maxLength$1, required: required$1, email: email$1 } = Validators;
|
|
206
208
|
class PersonalSettingsComponent {
|
|
207
|
-
constructor(fb, toasterService, profileService, manageProfileState) {
|
|
209
|
+
constructor(fb, toasterService, profileService, manageProfileState, authService, confirmationService, isPersonalSettingsChangedConfirmationActive) {
|
|
208
210
|
this.fb = fb;
|
|
209
211
|
this.toasterService = toasterService;
|
|
210
212
|
this.profileService = profileService;
|
|
211
213
|
this.manageProfileState = manageProfileState;
|
|
214
|
+
this.authService = authService;
|
|
215
|
+
this.confirmationService = confirmationService;
|
|
216
|
+
this.isPersonalSettingsChangedConfirmationActive = isPersonalSettingsChangedConfirmationActive;
|
|
217
|
+
this.logoutConfirmation = () => {
|
|
218
|
+
this.authService.logout().subscribe();
|
|
219
|
+
};
|
|
212
220
|
}
|
|
213
221
|
ngOnInit() {
|
|
214
222
|
this.buildForm();
|
|
215
223
|
}
|
|
216
224
|
buildForm() {
|
|
217
|
-
|
|
225
|
+
this.profile = this.manageProfileState.getProfile();
|
|
218
226
|
this.form = this.fb.group({
|
|
219
|
-
userName: [profile.userName, [required$1, maxLength$1(256)]],
|
|
220
|
-
email: [profile.email, [required$1, email$1, maxLength$1(256)]],
|
|
221
|
-
name: [profile.name || '', [maxLength$1(64)]],
|
|
222
|
-
surname: [profile.surname || '', [maxLength$1(64)]],
|
|
223
|
-
phoneNumber: [profile.phoneNumber || '', [maxLength$1(16)]],
|
|
227
|
+
userName: [this.profile.userName, [required$1, maxLength$1(256)]],
|
|
228
|
+
email: [this.profile.email, [required$1, email$1, maxLength$1(256)]],
|
|
229
|
+
name: [this.profile.name || '', [maxLength$1(64)]],
|
|
230
|
+
surname: [this.profile.surname || '', [maxLength$1(64)]],
|
|
231
|
+
phoneNumber: [this.profile.phoneNumber || '', [maxLength$1(16)]],
|
|
224
232
|
});
|
|
225
233
|
}
|
|
226
234
|
submit() {
|
|
227
235
|
if (this.form.invalid)
|
|
228
236
|
return;
|
|
237
|
+
const isLogOutConfirmMessageVisible = this.isLogoutConfirmMessageActive();
|
|
229
238
|
this.inProgress = true;
|
|
230
239
|
this.profileService
|
|
231
240
|
.update(this.form.value)
|
|
@@ -233,15 +242,43 @@ class PersonalSettingsComponent {
|
|
|
233
242
|
.subscribe(profile => {
|
|
234
243
|
this.manageProfileState.setProfile(profile);
|
|
235
244
|
this.toasterService.success('AbpAccount::PersonalSettingsSaved', 'Success', { life: 5000 });
|
|
245
|
+
if (isLogOutConfirmMessageVisible) {
|
|
246
|
+
this.showLogoutConfirmMessage();
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
isDataSame(oldValue, newValue) {
|
|
251
|
+
return Object.entries(oldValue).some(([key, value]) => {
|
|
252
|
+
if (key in newValue) {
|
|
253
|
+
return value !== newValue[key];
|
|
254
|
+
}
|
|
255
|
+
return false;
|
|
236
256
|
});
|
|
237
257
|
}
|
|
258
|
+
isLogoutConfirmMessageActive() {
|
|
259
|
+
if (!this.isPersonalSettingsChangedConfirmationActive) {
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
return this.isDataSame(this.profile, this.form.value);
|
|
263
|
+
}
|
|
264
|
+
showLogoutConfirmMessage() {
|
|
265
|
+
this.confirmationService
|
|
266
|
+
.info('AbpAccount::PersonalSettingsChangedConfirmationModalDescription', 'AbpAccount::PersonalSettingsChangedConfirmationModalTitle')
|
|
267
|
+
.pipe(filter(status => status === Confirmation.Status.confirm))
|
|
268
|
+
.subscribe(this.logoutConfirmation);
|
|
269
|
+
}
|
|
238
270
|
}
|
|
239
|
-
PersonalSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: PersonalSettingsComponent, deps: [{ token: i1.FormBuilder }, { token: i2$1.ToasterService }, { token: i2.ProfileService }, { token: ManageProfileStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
271
|
+
PersonalSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: PersonalSettingsComponent, deps: [{ token: i1.FormBuilder }, { token: i2$1.ToasterService }, { token: i2.ProfileService }, { token: ManageProfileStateService }, { token: i3.AuthService }, { token: i2$1.ConfirmationService }, { token: RE_LOGIN_CONFIRMATION_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
|
|
240
272
|
PersonalSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: PersonalSettingsComponent, selector: "abp-personal-settings-form", exportAs: ["abpPersonalSettingsForm"], ngImport: i0, template: "<form validateOnSubmit *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"username\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:UserName' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"text\"\r\n id=\"username\"\r\n class=\"form-control\"\r\n formControlName=\"userName\"\r\n autofocus\r\n (keydown.space)=\"$event.preventDefault()\"\r\n />\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Name' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"name\" class=\"form-control\" formControlName=\"name\" />\r\n </div>\r\n </div>\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"surname\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Surname' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"surname\" class=\"form-control\" formControlName=\"surname\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"email-address\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Email' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input type=\"text\" id=\"email-address\" class=\"form-control\" formControlName=\"email\" />\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"phone-number\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"phone-number\" class=\"form-control\" formControlName=\"phoneNumber\" />\r\n </div>\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 [disabled]=\"form?.invalid\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n", components: [{ type: i2$1.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6$1.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { 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]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i6$1.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { type: i3.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }], pipes: { "abpLocalization": i3.LocalizationPipe } });
|
|
241
273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: PersonalSettingsComponent, decorators: [{
|
|
242
274
|
type: Component,
|
|
243
275
|
args: [{ selector: 'abp-personal-settings-form', exportAs: 'abpPersonalSettingsForm', template: "<form validateOnSubmit *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"username\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:UserName' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input\r\n type=\"text\"\r\n id=\"username\"\r\n class=\"form-control\"\r\n formControlName=\"userName\"\r\n autofocus\r\n (keydown.space)=\"$event.preventDefault()\"\r\n />\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"name\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Name' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"name\" class=\"form-control\" formControlName=\"name\" />\r\n </div>\r\n </div>\r\n <div class=\"col col-md-6\">\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"surname\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Surname' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"surname\" class=\"form-control\" formControlName=\"surname\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"email-address\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:Email' | abpLocalization\r\n }}</label\r\n ><span> * </span\r\n ><input type=\"text\" id=\"email-address\" class=\"form-control\" formControlName=\"email\" />\r\n </div>\r\n <div class=\"mb-3 form-group\">\r\n <label for=\"phone-number\" class=\"form-label\">{{\r\n 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization\r\n }}</label\r\n ><input type=\"text\" id=\"phone-number\" class=\"form-control\" formControlName=\"phoneNumber\" />\r\n </div>\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 [disabled]=\"form?.invalid\"\r\n >\r\n {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button\r\n >\r\n</form>\r\n" }]
|
|
244
|
-
}], ctorParameters: function () {
|
|
276
|
+
}], ctorParameters: function () {
|
|
277
|
+
return [{ type: i1.FormBuilder }, { type: i2$1.ToasterService }, { type: i2.ProfileService }, { type: ManageProfileStateService }, { type: i3.AuthService }, { type: i2$1.ConfirmationService }, { type: undefined, decorators: [{
|
|
278
|
+
type: Inject,
|
|
279
|
+
args: [RE_LOGIN_CONFIRMATION_TOKEN]
|
|
280
|
+
}] }];
|
|
281
|
+
} });
|
|
245
282
|
|
|
246
283
|
class ManageProfileComponent {
|
|
247
284
|
constructor(profileService, manageProfileState) {
|
|
@@ -506,6 +543,7 @@ const declarations = [
|
|
|
506
543
|
];
|
|
507
544
|
class AccountModule {
|
|
508
545
|
static forChild(options = {}) {
|
|
546
|
+
var _a;
|
|
509
547
|
return {
|
|
510
548
|
ngModule: AccountModule,
|
|
511
549
|
providers: [
|
|
@@ -516,6 +554,10 @@ class AccountModule {
|
|
|
516
554
|
useFactory: accountConfigOptionsFactory,
|
|
517
555
|
deps: [ACCOUNT_CONFIG_OPTIONS],
|
|
518
556
|
},
|
|
557
|
+
{
|
|
558
|
+
provide: RE_LOGIN_CONFIRMATION_TOKEN,
|
|
559
|
+
useValue: (_a = options.isPersonalSettingsChangedConfirmationActive) !== null && _a !== void 0 ? _a : true,
|
|
560
|
+
},
|
|
519
561
|
],
|
|
520
562
|
};
|
|
521
563
|
}
|
|
@@ -567,5 +609,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
|
|
|
567
609
|
* Generated bundle index. Do not edit.
|
|
568
610
|
*/
|
|
569
611
|
|
|
570
|
-
export { ACCOUNT_CONFIG_OPTIONS, AccountModule, AuthenticationFlowGuard, ChangePasswordComponent, ForgotPasswordComponent, LoginComponent, ManageProfileComponent, ManageProfileStateService, PersonalSettingsComponent, RegisterComponent, ResetPasswordComponent };
|
|
612
|
+
export { ACCOUNT_CONFIG_OPTIONS, AccountModule, AuthenticationFlowGuard, ChangePasswordComponent, ForgotPasswordComponent, LoginComponent, ManageProfileComponent, ManageProfileStateService, PersonalSettingsComponent, RE_LOGIN_CONFIRMATION_TOKEN, RegisterComponent, ResetPasswordComponent };
|
|
571
613
|
//# sourceMappingURL=abp-ng.account.mjs.map
|