Browse Source

feat(account): make personal settings component replaceable

#2404
pull/2522/head
mehmet-erim 7 years ago
parent
commit
e9115b97e4
  1. 9
      npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.ts
  2. 4
      npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.html
  3. 19
      npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
  4. 6
      npm/ng-packs/packages/account/src/lib/models/account.ts

9
npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.ts

@ -1,13 +1,16 @@
import { Component, Input, TemplateRef } from '@angular/core'; import { Component, Input, TemplateRef } from '@angular/core';
import { Account } from '../../models/account';
@Component({ @Component({
selector: 'abp-auth-wrapper', selector: 'abp-auth-wrapper',
templateUrl: './auth-wrapper.component.html', templateUrl: './auth-wrapper.component.html',
exportAs: 'abpAuthWrapper',
}) })
export class AuthWrapperComponent { export class AuthWrapperComponent
implements Account.AuthWrapperComponentInputs, Account.AuthWrapperComponentOutputs {
@Input() @Input()
mainContentRef: TemplateRef<any>; readonly mainContentRef: TemplateRef<any>;
@Input() @Input()
cancelContentRef: TemplateRef<any>; readonly cancelContentRef: TemplateRef<any>;
} }

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

@ -33,7 +33,9 @@
{{ 'AbpIdentity::PersonalSettings' | abpLocalization }} {{ 'AbpIdentity::PersonalSettings' | abpLocalization }}
<hr /> <hr />
</h4> </h4>
<abp-personal-settings-form></abp-personal-settings-form> <abp-personal-settings-form
*abpReplaceableTemplate="{ componentKey: 'Account.PersonalSettingsComponent' }"
></abp-personal-settings-form>
</div> </div>
</div> </div>
</div> </div>

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

@ -5,14 +5,20 @@ import { Select, Store } from '@ngxs/store';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { take, withLatestFrom, finalize } from 'rxjs/operators'; import { take, withLatestFrom, finalize } from 'rxjs/operators';
import { ToasterService } from '@abp/ng.theme.shared'; import { ToasterService } from '@abp/ng.theme.shared';
import { Account } from '../../models/account';
const { maxLength, required, email } = Validators; const { maxLength, required, email } = Validators;
@Component({ @Component({
selector: 'abp-personal-settings-form', selector: 'abp-personal-settings-form',
templateUrl: './personal-settings.component.html', templateUrl: './personal-settings.component.html',
exportAs: 'abpPersonalSettingsForm',
}) })
export class PersonalSettingsComponent implements OnInit { export class PersonalSettingsComponent
implements
OnInit,
Account.PersonalSettingsComponentInputs,
Account.PersonalSettingsComponentOutputs {
@Select(ProfileState.getProfile) @Select(ProfileState.getProfile)
profile$: Observable<Profile.Response>; profile$: Observable<Profile.Response>;
@ -20,7 +26,11 @@ export class PersonalSettingsComponent implements OnInit {
inProgress: boolean; inProgress: boolean;
constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {} constructor(
private fb: FormBuilder,
private store: Store,
private toasterService: ToasterService,
) {}
ngOnInit() { ngOnInit() {
this.buildForm(); this.buildForm();
@ -29,10 +39,7 @@ export class PersonalSettingsComponent implements OnInit {
buildForm() { buildForm() {
this.store this.store
.dispatch(new GetProfile()) .dispatch(new GetProfile())
.pipe( .pipe(withLatestFrom(this.profile$), take(1))
withLatestFrom(this.profile$),
take(1),
)
.subscribe(([, profile]) => { .subscribe(([, profile]) => {
this.form = this.fb.group({ this.form = this.fb.group({
userName: [profile.userName, [required, maxLength(256)]], userName: [profile.userName, [required, maxLength(256)]],

6
npm/ng-packs/packages/account/src/lib/models/account.ts

@ -14,4 +14,10 @@ export namespace Account {
// tslint:disable-next-line: no-empty-interface // tslint:disable-next-line: no-empty-interface
export interface TenantBoxComponentOutputs {} export interface TenantBoxComponentOutputs {}
// tslint:disable-next-line: no-empty-interface
export interface PersonalSettingsComponentInputs {}
// tslint:disable-next-line: no-empty-interface
export interface PersonalSettingsComponentOutputs {}
} }

Loading…
Cancel
Save