Browse Source

feat(account): implement manage-profile htmls

pull/1984/head
mehmet-erim 7 years ago
parent
commit
746c7ceda9
  1. 10
      npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.html
  2. 8
      npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts
  3. 64
      npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.html
  4. 7
      npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.html
  5. 23
      npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts

10
npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.html

@ -13,7 +13,11 @@
><span> * </span ><span> * </span
><input type="password" id="confirm-new-password" class="form-control" formControlName="repeatNewPassword" /> ><input type="password" id="confirm-new-password" class="form-control" formControlName="repeatNewPassword" />
</div> </div>
<abp-button iconClass="fa fa-check" buttonClass="btn btn-primary color-white" buttonType="submit">{{ <abp-button
'AbpIdentity::Save' | abpLocalization iconClass="fa fa-check"
}}</abp-button> buttonClass="btn btn-primary color-white"
buttonType="submit"
[loading]="inProgress"
>{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
>
</form> </form>

8
npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts

@ -5,6 +5,7 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { comparePasswords, Validation } from '@ngx-validate/core'; import { comparePasswords, Validation } from '@ngx-validate/core';
import { Store } from '@ngxs/store'; import { Store } from '@ngxs/store';
import snq from 'snq'; import snq from 'snq';
import { finalize } from 'rxjs/operators';
const { minLength, required } = Validators; const { minLength, required } = Validators;
@ -17,11 +18,13 @@ const PASSWORD_FIELDS = ['newPassword', 'repeatNewPassword'];
export class ChangePasswordComponent implements OnInit { export class ChangePasswordComponent implements OnInit {
form: FormGroup; form: FormGroup;
inProgress: boolean;
mapErrorsFn: Validation.MapErrorsFn = (errors, groupErrors, control) => { mapErrorsFn: Validation.MapErrorsFn = (errors, groupErrors, control) => {
if (PASSWORD_FIELDS.indexOf(control.name) < 0) return errors; if (PASSWORD_FIELDS.indexOf(control.name) < 0) return errors;
return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch')); return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch'));
} };
constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {} constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {}
@ -40,7 +43,7 @@ export class ChangePasswordComponent implements OnInit {
onSubmit() { onSubmit() {
if (this.form.invalid) return; if (this.form.invalid) return;
this.inProgress = true;
this.store this.store
.dispatch( .dispatch(
new ChangePassword({ new ChangePassword({
@ -48,6 +51,7 @@ export class ChangePasswordComponent implements OnInit {
newPassword: this.form.get('newPassword').value, newPassword: this.form.get('newPassword').value,
}), }),
) )
.pipe(finalize(() => (this.inProgress = false)))
.subscribe({ .subscribe({
next: () => { next: () => {
this.form.reset(); this.form.reset();

64
npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.html

@ -1,34 +1,40 @@
<div class="row entry-row"> <div id="AbpContentToolbar"></div>
<div class="col-auto"></div>
<div id="breadcrumb" class="col-md-auto pl-md-0"></div>
<div class="col"></div>
</div>
<div id="ManageProfileWrapper"> <div class="card border-0 shadow-sm">
<div class="row"> <div class="card-body">
<div class="col-3"> <div class="row">
<ul class="nav flex-column nav-pills" id="nav-tab" role="tablist"> <div class="col-3">
<li class="nav-item pointer" (click)="selectedTab = 0"> <ul class="nav flex-column nav-pills" id="nav-tab" role="tablist">
<a class="nav-link" [ngClass]="{ active: selectedTab === 0 }" role="tab">{{ <li class="nav-item" (click)="selectedTab = 0">
'AbpUi::ChangePassword' | abpLocalization <a class="nav-link" [ngClass]="{ active: selectedTab === 0 }" role="tab" href="javascript:void(0)">{{
}}</a> 'AbpUi::ChangePassword' | abpLocalization
</li> }}</a>
<li class="nav-item pointer" (click)="selectedTab = 1"> </li>
<a class="nav-link" [ngClass]="{ active: selectedTab === 1 }" role="tab">{{ <li class="nav-item" (click)="selectedTab = 1">
'AbpAccount::PersonalSettings' | abpLocalization <a class="nav-link" [ngClass]="{ active: selectedTab === 1 }" role="tab" href="javascript:void(0)">{{
}}</a> 'AbpAccount::PersonalSettings' | abpLocalization
</li> }}</a>
</ul> </li>
</div> </ul>
<div class="col-9">
<div class="tab-content" *ngIf="selectedTab === 0" [@fadeIn]>
<div class="tab-pane active" role="tabpanel">
<abp-change-password-form></abp-change-password-form>
</div>
</div> </div>
<div class="tab-content" *ngIf="selectedTab === 1" [@fadeIn]> <div class="col-9">
<div class="tab-pane active" role="tabpanel"> <div class="tab-content" *ngIf="selectedTab === 0" [@fadeIn]>
<abp-personal-settings-form></abp-personal-settings-form> <div class="tab-pane active" role="tabpanel">
<h4>
{{ 'AbpIdentity::ChangePassword' | abpLocalization }}
<hr />
</h4>
<abp-change-password-form></abp-change-password-form>
</div>
</div>
<div class="tab-content" *ngIf="selectedTab === 1" [@fadeIn]>
<div class="tab-pane active" role="tabpanel">
<h4>
{{ 'AbpIdentity::PersonalSettings' | abpLocalization }}
<hr />
</h4>
<abp-personal-settings-form></abp-personal-settings-form>
</div>
</div> </div>
</div> </div>
</div> </div>

7
npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.html

@ -25,7 +25,12 @@
<label for="phone-number">{{ 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization }}</label <label for="phone-number">{{ 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization }}</label
><input type="text" id="phone-number" class="form-control" formControlName="phoneNumber" /> ><input type="text" id="phone-number" class="form-control" formControlName="phoneNumber" />
</div> </div>
<abp-button buttonType="submit" iconClass="fa fa-check" buttonClass="btn btn-primary color-white"> <abp-button
buttonType="submit"
iconClass="fa fa-check"
buttonClass="btn btn-primary color-white"
[loading]="inProgress"
>
{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button {{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
> >
</form> </form>

23
npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts

@ -3,7 +3,7 @@ import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Select, Store } from '@ngxs/store'; import { Select, Store } from '@ngxs/store';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { take, withLatestFrom } from 'rxjs/operators'; import { take, withLatestFrom, finalize } from 'rxjs/operators';
import { ToasterService } from '@abp/ng.theme.shared'; import { ToasterService } from '@abp/ng.theme.shared';
const { maxLength, required, email } = Validators; const { maxLength, required, email } = Validators;
@ -18,8 +18,14 @@ export class PersonalSettingsComponent implements OnInit {
form: FormGroup; form: FormGroup;
inProgress: boolean;
constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {} constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {}
ngOnInit() {
this.buildForm();
}
buildForm() { buildForm() {
this.store this.store
.dispatch(new GetProfile()) .dispatch(new GetProfile())
@ -40,13 +46,12 @@ export class PersonalSettingsComponent implements OnInit {
submit() { submit() {
if (this.form.invalid) return; if (this.form.invalid) return;
this.inProgress = true;
this.store.dispatch(new UpdateProfile(this.form.value)).subscribe(() => { this.store
this.toasterService.success('AbpAccount::PersonalSettingsSaved', 'Success', { life: 5000 }); .dispatch(new UpdateProfile(this.form.value))
}); .pipe(finalize(() => (this.inProgress = false)))
} .subscribe(() => {
this.toasterService.success('AbpAccount::PersonalSettingsSaved', 'Success', { life: 5000 });
ngOnInit() { });
this.buildForm();
} }
} }

Loading…
Cancel
Save