mirror of https://github.com/abpframework/abp.git
68 changed files with 1747 additions and 138 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@ |
|||||
{"version":3,"file":"abp-ng.account.config.js","sources":["ng://@abp/ng.account.config/lib/services/account-config.service.ts","ng://@abp/ng.account.config/lib/account-config.module.ts"],"sourcesContent":["import { eLayoutType, RestService, addAbpRoutes } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AccountConfigService {\n constructor(private router: Router, private restService: RestService) {\n addAbpRoutes({\n name: 'AbpAccount::Menu:Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [\n { path: 'login', name: 'AbpAccount::Login', order: 1 },\n { path: 'register', name: 'AbpAccount::Register', order: 2 },\n ],\n });\n }\n}\n","import { CoreModule, noop } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { APP_INITIALIZER, InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AccountConfigService } from './services/account-config.service';\n\nexport interface AccountConfigOptions {\n redirectUrl?: string;\n}\n\nexport function accountOptionsFactory(options: AccountConfigOptions) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n\n@NgModule({\n imports: [CoreModule, ThemeSharedModule],\n providers: [{ provide: APP_INITIALIZER, multi: true, deps: [AccountConfigService], useFactory: noop }],\n})\nexport class AccountConfigModule {\n static forRoot(options = {} as AccountConfigOptions): ModuleWithProviders {\n return {\n ngModule: AccountConfigModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: accountOptionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA,MAOa,oBAAoB;;;;;IAC/B,YAAoB,MAAc,EAAU,WAAwB;QAAhD,WAAM,GAAN,MAAM,CAAQ;QAAU,gBAAW,GAAX,WAAW,CAAa;QAClE,YAAY,CAAC;YACX,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI;YACf,MAAM;YACN,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE;gBACtD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE;aAC7D;SACF,CAAC,CAAC;KACJ;;;YAfF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;YAJQ,MAAM;YAFO,WAAW;;;;;;;;IAQnB,sCAAsB;;;;;IAAE,2CAAgC;;;;;;;ACRtE;;;AAKA,mCAEC;;;IADC,2CAAqB;;;;;;AAGvB,SAAgB,qBAAqB,CAAC,OAA6B;IACjE,uBACE,WAAW,EAAE,GAAG,IACb,OAAO,EACV;CACH;;AAED,MAAa,eAAe,GAAG,IAAI,cAAc,CAAC,iBAAiB,CAAC;WAI6B,IAAI;AAErG,MAAa,mBAAmB;;;;;IAC9B,OAAO,OAAO,CAAC,OAAO,sBAAG,EAAE,EAAwB;QACjD,OAAO;YACL,QAAQ,EAAE,mBAAmB;YAC7B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAC/C;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,UAAU,EAAE,qBAAqB;oBACjC,IAAI,EAAE,CAAC,eAAe,CAAC;iBACxB;aACF;SACF,CAAC;KACH;;;YAjBF,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBACxC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,IAAM,EAAE,CAAC;aACvG;;;;;;;;;;;;;;;"} |
{"version":3,"file":"abp-ng.account.config.js","sources":["ng://@abp/ng.account.config/lib/services/account-config.service.ts","ng://@abp/ng.account.config/lib/account-config.module.ts"],"sourcesContent":["import { eLayoutType, RestService, addAbpRoutes } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AccountConfigService {\n constructor(private router: Router, private restService: RestService) {\n addAbpRoutes({\n name: 'AbpAccount::Menu:Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [\n { path: 'login', name: 'AbpAccount::Login', order: 1 },\n { path: 'register', name: 'AbpAccount::Register', order: 2 },\n { path: 'manage-profile', name: 'AbpAccount::ManageYourProfile', order: 3 },\n ],\n });\n }\n}\n","import { CoreModule, noop } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { APP_INITIALIZER, InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AccountConfigService } from './services/account-config.service';\n\nexport interface AccountConfigOptions {\n redirectUrl?: string;\n}\n\nexport function accountOptionsFactory(options: AccountConfigOptions) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n\n@NgModule({\n imports: [CoreModule, ThemeSharedModule],\n providers: [{ provide: APP_INITIALIZER, multi: true, deps: [AccountConfigService], useFactory: noop }],\n})\nexport class AccountConfigModule {\n static forRoot(options = {} as AccountConfigOptions): ModuleWithProviders {\n return {\n ngModule: AccountConfigModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: accountOptionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA,MAOa,oBAAoB;;;;;IAC/B,YAAoB,MAAc,EAAU,WAAwB;QAAhD,WAAM,GAAN,MAAM,CAAQ;QAAU,gBAAW,GAAX,WAAW,CAAa;QAClE,YAAY,CAAC;YACX,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI;YACf,MAAM;YACN,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE;gBACtD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE;aAC5E;SACF,CAAC,CAAC;KACJ;;;YAhBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;YAJQ,MAAM;YAFO,WAAW;;;;;;;;IAQnB,sCAAsB;;;;;IAAE,2CAAgC;;;;;;;ACRtE;;;AAKA,mCAEC;;;IADC,2CAAqB;;;;;;AAGvB,SAAgB,qBAAqB,CAAC,OAA6B;IACjE,uBACE,WAAW,EAAE,GAAG,IACb,OAAO,EACV;CACH;;AAED,MAAa,eAAe,GAAG,IAAI,cAAc,CAAC,iBAAiB,CAAC;WAI6B,IAAI;AAErG,MAAa,mBAAmB;;;;;IAC9B,OAAO,OAAO,CAAC,OAAO,sBAAG,EAAE,EAAwB;QACjD,OAAO;YACL,QAAQ,EAAE,mBAAmB;YAC7B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAC/C;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,UAAU,EAAE,qBAAqB;oBACjC,IAAI,EAAE,CAAC,eAAe,CAAC;iBACxB;aACF;SACF,CAAC;KACH;;;YAjBF,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBACxC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,IAAM,EAAE,CAAC;aACvG;;;;;;;;;;;;;;;"} |
||||
@ -1 +1 @@ |
|||||
{"version":3,"file":"abp-ng.account.config.js","sources":["ng://@abp/ng.account.config/lib/services/account-config.service.ts","ng://@abp/ng.account.config/lib/account-config.module.ts"],"sourcesContent":["import { eLayoutType, RestService, addAbpRoutes } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AccountConfigService {\n constructor(private router: Router, private restService: RestService) {\n addAbpRoutes({\n name: 'AbpAccount::Menu:Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [\n { path: 'login', name: 'AbpAccount::Login', order: 1 },\n { path: 'register', name: 'AbpAccount::Register', order: 2 },\n ],\n });\n }\n}\n","import { CoreModule, noop } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { APP_INITIALIZER, InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AccountConfigService } from './services/account-config.service';\n\nexport interface AccountConfigOptions {\n redirectUrl?: string;\n}\n\nexport function accountOptionsFactory(options: AccountConfigOptions) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n\n@NgModule({\n imports: [CoreModule, ThemeSharedModule],\n providers: [{ provide: APP_INITIALIZER, multi: true, deps: [AccountConfigService], useFactory: noop }],\n})\nexport class AccountConfigModule {\n static forRoot(options = {} as AccountConfigOptions): ModuleWithProviders {\n return {\n ngModule: AccountConfigModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: accountOptionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAAA;IAQE,8BAAoB,MAAc,EAAU,WAAwB;QAAhD,WAAM,GAAN,MAAM,CAAQ;QAAU,gBAAW,GAAX,WAAW,CAAa;QAClE,YAAY,CAAC;YACX,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI;YACf,MAAM;YACN,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE;gBACtD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE;aAC7D;SACF,CAAC,CAAC;KACJ;;gBAfF,UAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;gBAJQ,MAAM;gBAFO,WAAW;;;+BAAjC;CAIA,IAgBC;;;;;;IAZa,sCAAsB;;;;;IAAE,2CAAgC;;;;;;;;;;ACHtE,mCAEC;;;IADC,2CAAqB;;;;;;AAGvB,SAAgB,qBAAqB,CAAC,OAA6B;IACjE,kBACE,WAAW,EAAE,GAAG,IACb,OAAO,EACV;CACH;;AAED,IAAa,eAAe,GAAG,IAAI,cAAc,CAAC,iBAAiB,CAAC;SAI6B,IAAI;AAFrG;IAAA;KAkBC;;;;;IAbQ,2BAAO;;;;IAAd,UAAe,OAAoC;QAApC,wBAAA,EAAA,6BAAU,EAAE,EAAwB;QACjD,OAAO;YACL,QAAQ,EAAE,mBAAmB;YAC7B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAC/C;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,UAAU,EAAE,qBAAqB;oBACjC,IAAI,EAAE,CAAC,eAAe,CAAC;iBACxB;aACF;SACF,CAAC;KACH;;gBAjBF,QAAQ,SAAC;oBACR,OAAO,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;oBACxC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,IAAM,EAAE,CAAC;iBACvG;;IAeD,0BAAC;CAlBD;;;;;;;;;;;;;;"} |
{"version":3,"file":"abp-ng.account.config.js","sources":["ng://@abp/ng.account.config/lib/services/account-config.service.ts","ng://@abp/ng.account.config/lib/account-config.module.ts"],"sourcesContent":["import { eLayoutType, RestService, addAbpRoutes } from '@abp/ng.core';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AccountConfigService {\n constructor(private router: Router, private restService: RestService) {\n addAbpRoutes({\n name: 'AbpAccount::Menu:Account',\n path: 'account',\n invisible: true,\n layout: eLayoutType.application,\n children: [\n { path: 'login', name: 'AbpAccount::Login', order: 1 },\n { path: 'register', name: 'AbpAccount::Register', order: 2 },\n { path: 'manage-profile', name: 'AbpAccount::ManageYourProfile', order: 3 },\n ],\n });\n }\n}\n","import { CoreModule, noop } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { APP_INITIALIZER, InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { AccountConfigService } from './services/account-config.service';\n\nexport interface AccountConfigOptions {\n redirectUrl?: string;\n}\n\nexport function accountOptionsFactory(options: AccountConfigOptions) {\n return {\n redirectUrl: '/',\n ...options,\n };\n}\n\nexport const ACCOUNT_OPTIONS = new InjectionToken('ACCOUNT_OPTIONS');\n\n@NgModule({\n imports: [CoreModule, ThemeSharedModule],\n providers: [{ provide: APP_INITIALIZER, multi: true, deps: [AccountConfigService], useFactory: noop }],\n})\nexport class AccountConfigModule {\n static forRoot(options = {} as AccountConfigOptions): ModuleWithProviders {\n return {\n ngModule: AccountConfigModule,\n providers: [\n { provide: ACCOUNT_OPTIONS, useValue: options },\n {\n provide: 'ACCOUNT_OPTIONS',\n useFactory: accountOptionsFactory,\n deps: [ACCOUNT_OPTIONS],\n },\n ],\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAAA;IAQE,8BAAoB,MAAc,EAAU,WAAwB;QAAhD,WAAM,GAAN,MAAM,CAAQ;QAAU,gBAAW,GAAX,WAAW,CAAa;QAClE,YAAY,CAAC;YACX,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI;YACf,MAAM;YACN,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE;gBACtD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,EAAE;aAC5E;SACF,CAAC,CAAC;KACJ;;gBAhBF,UAAU,SAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;;gBAJQ,MAAM;gBAFO,WAAW;;;+BAAjC;CAIA,IAiBC;;;;;;IAba,sCAAsB;;;;;IAAE,2CAAgC;;;;;;;;;;ACHtE,mCAEC;;;IADC,2CAAqB;;;;;;AAGvB,SAAgB,qBAAqB,CAAC,OAA6B;IACjE,kBACE,WAAW,EAAE,GAAG,IACb,OAAO,EACV;CACH;;AAED,IAAa,eAAe,GAAG,IAAI,cAAc,CAAC,iBAAiB,CAAC;SAI6B,IAAI;AAFrG;IAAA;KAkBC;;;;;IAbQ,2BAAO;;;;IAAd,UAAe,OAAoC;QAApC,wBAAA,EAAA,6BAAU,EAAE,EAAwB;QACjD,OAAO;YACL,QAAQ,EAAE,mBAAmB;YAC7B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAC/C;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,UAAU,EAAE,qBAAqB;oBACjC,IAAI,EAAE,CAAC,eAAe,CAAC;iBACxB;aACF;SACF,CAAC;KACH;;gBAjBF,QAAQ,SAAC;oBACR,OAAO,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;oBACxC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,IAAM,EAAE,CAAC;iBACvG;;IAeD,0BAAC;CAlBD;;;;;;;;;;;;;;"} |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,27 @@ |
|||||
|
/** |
||||
|
* @fileoverview added by tsickle |
||||
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc |
||||
|
*/ |
||||
|
import { Component } from '@angular/core'; |
||||
|
export class ManageProfileComponent { |
||||
|
constructor() { |
||||
|
this.selectedTab = 0; |
||||
|
} |
||||
|
/** |
||||
|
* @return {?} |
||||
|
*/ |
||||
|
ngOnInit() { } |
||||
|
} |
||||
|
ManageProfileComponent.decorators = [ |
||||
|
{ type: Component, args: [{ |
||||
|
selector: 'abp-manage-profile', |
||||
|
template: "<div class=\"row entry-row\">\n <div class=\"col-auto\"></div>\n <div id=\"breadcrumb\" class=\"col-md-auto pl-md-0\"></div>\n <div class=\"col\"></div>\n</div>\n\n<div id=\"ManageProfileWrapper\">\n <div class=\"row\">\n <div class=\"col-3\">\n <ul class=\"nav flex-column nav-pills\" id=\"nav-tab\" role=\"tablist\">\n <li class=\"nav-item pointer\" (click)=\"selectedTab = 0\">\n <a class=\"nav-link\" [ngClass]=\"{ active: selectedTab === 0 }\" role=\"tab\">{{\n 'AbpUi::ChangePassword' | abpLocalization\n }}</a>\n </li>\n <li class=\"nav-item pointer\" (click)=\"selectedTab = 1\">\n <a class=\"nav-link\" [ngClass]=\"{ active: selectedTab === 1 }\" role=\"tab\">{{\n 'AbpAccount::PersonalSettings' | abpLocalization\n }}</a>\n </li>\n </ul>\n </div>\n <div class=\"col-9\">\n <div class=\"tab-content\" *ngIf=\"selectedTab === 0\">\n <div class=\"tab-pane fade show active\" role=\"tabpanel\">\n <abp-change-password-form></abp-change-password-form>\n </div>\n </div>\n <div class=\"tab-content\" *ngIf=\"selectedTab === 1\">\n <div class=\"tab-pane fade show active\" role=\"tabpanel\">\n <abp-personal-settings-form></abp-personal-settings-form>\n </div>\n </div>\n </div>\n </div>\n</div>\n" |
||||
|
}] } |
||||
|
]; |
||||
|
/** @nocollapse */ |
||||
|
ManageProfileComponent.ctorParameters = () => []; |
||||
|
if (false) { |
||||
|
/** @type {?} */ |
||||
|
ManageProfileComponent.prototype.selectedTab; |
||||
|
} |
||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbWFuYWdlLXByb2ZpbGUvbWFuYWdlLXByb2ZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBTWxELE1BQU0sT0FBTyxzQkFBc0I7SUFHakM7UUFGQSxnQkFBVyxHQUFHLENBQUMsQ0FBQztJQUVELENBQUM7Ozs7SUFFaEIsUUFBUSxLQUFVLENBQUM7OztZQVRwQixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsKzJDQUE4QzthQUMvQzs7Ozs7O0lBRUMsNkNBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLW1hbmFnZS1wcm9maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hbmFnZS1wcm9maWxlLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTWFuYWdlUHJvZmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlbGVjdGVkVGFiID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxufVxuIl19
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,32 @@ |
|||||
|
/** |
||||
|
* @fileoverview added by tsickle |
||||
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc |
||||
|
*/ |
||||
|
import { Component } from '@angular/core'; |
||||
|
var ManageProfileComponent = /** @class */ (function () { |
||||
|
function ManageProfileComponent() { |
||||
|
this.selectedTab = 0; |
||||
|
} |
||||
|
/** |
||||
|
* @return {?} |
||||
|
*/ |
||||
|
ManageProfileComponent.prototype.ngOnInit = /** |
||||
|
* @return {?} |
||||
|
*/ |
||||
|
function () { }; |
||||
|
ManageProfileComponent.decorators = [ |
||||
|
{ type: Component, args: [{ |
||||
|
selector: 'abp-manage-profile', |
||||
|
template: "<div class=\"row entry-row\">\n <div class=\"col-auto\"></div>\n <div id=\"breadcrumb\" class=\"col-md-auto pl-md-0\"></div>\n <div class=\"col\"></div>\n</div>\n\n<div id=\"ManageProfileWrapper\">\n <div class=\"row\">\n <div class=\"col-3\">\n <ul class=\"nav flex-column nav-pills\" id=\"nav-tab\" role=\"tablist\">\n <li class=\"nav-item pointer\" (click)=\"selectedTab = 0\">\n <a class=\"nav-link\" [ngClass]=\"{ active: selectedTab === 0 }\" role=\"tab\">{{\n 'AbpUi::ChangePassword' | abpLocalization\n }}</a>\n </li>\n <li class=\"nav-item pointer\" (click)=\"selectedTab = 1\">\n <a class=\"nav-link\" [ngClass]=\"{ active: selectedTab === 1 }\" role=\"tab\">{{\n 'AbpAccount::PersonalSettings' | abpLocalization\n }}</a>\n </li>\n </ul>\n </div>\n <div class=\"col-9\">\n <div class=\"tab-content\" *ngIf=\"selectedTab === 0\">\n <div class=\"tab-pane fade show active\" role=\"tabpanel\">\n <abp-change-password-form></abp-change-password-form>\n </div>\n </div>\n <div class=\"tab-content\" *ngIf=\"selectedTab === 1\">\n <div class=\"tab-pane fade show active\" role=\"tabpanel\">\n <abp-personal-settings-form></abp-personal-settings-form>\n </div>\n </div>\n </div>\n </div>\n</div>\n" |
||||
|
}] } |
||||
|
]; |
||||
|
/** @nocollapse */ |
||||
|
ManageProfileComponent.ctorParameters = function () { return []; }; |
||||
|
return ManageProfileComponent; |
||||
|
}()); |
||||
|
export { ManageProfileComponent }; |
||||
|
if (false) { |
||||
|
/** @type {?} */ |
||||
|
ManageProfileComponent.prototype.selectedTab; |
||||
|
} |
||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFicC9uZy5hY2NvdW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbWFuYWdlLXByb2ZpbGUvbWFuYWdlLXByb2ZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxEO0lBT0U7UUFGQSxnQkFBVyxHQUFHLENBQUMsQ0FBQztJQUVELENBQUM7Ozs7SUFFaEIseUNBQVE7OztJQUFSLGNBQWtCLENBQUM7O2dCQVRwQixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsKzJDQUE4QztpQkFDL0M7Ozs7SUFPRCw2QkFBQztDQUFBLEFBVkQsSUFVQztTQU5ZLHNCQUFzQjs7O0lBQ2pDLDZDQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1tYW5hZ2UtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYW5hZ2UtcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hbmFnZVByb2ZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzZWxlY3RlZFRhYiA9IDA7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbn1cbiJdfQ==
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,15 @@ |
|||||
|
import { ToasterService } from '@abp/ng.theme.shared'; |
||||
|
import { OnInit } from '@angular/core'; |
||||
|
import { FormBuilder, FormGroup } from '@angular/forms'; |
||||
|
import { Validation } from '@ngx-validate/core'; |
||||
|
import { Store } from '@ngxs/store'; |
||||
|
export declare class ChangePasswordComponent implements OnInit { |
||||
|
private fb; |
||||
|
private store; |
||||
|
private toasterService; |
||||
|
form: FormGroup; |
||||
|
mapErrorsFn: Validation.MapErrorsFn; |
||||
|
constructor(fb: FormBuilder, store: Store, toasterService: ToasterService); |
||||
|
ngOnInit(): void; |
||||
|
onSubmit(): void; |
||||
|
} |
||||
@ -1,2 +1,5 @@ |
|||||
|
export * from './change-password/change-password.component'; |
||||
export * from './login/login.component'; |
export * from './login/login.component'; |
||||
|
export * from './manage-profile/manage-profile.component'; |
||||
export * from './register/register.component'; |
export * from './register/register.component'; |
||||
|
export * from './personal-settings/personal-settings.component'; |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
import { OnInit } from '@angular/core'; |
||||
|
export declare class ManageProfileComponent implements OnInit { |
||||
|
selectedTab: number; |
||||
|
constructor(); |
||||
|
ngOnInit(): void; |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
import { Profile } from '@abp/ng.core'; |
||||
|
import { OnInit } from '@angular/core'; |
||||
|
import { FormBuilder, FormGroup } from '@angular/forms'; |
||||
|
import { Store } from '@ngxs/store'; |
||||
|
import { Observable } from 'rxjs'; |
||||
|
import { ToasterService } from '@abp/ng.theme.shared'; |
||||
|
export declare class PersonalSettingsComponent implements OnInit { |
||||
|
private fb; |
||||
|
private store; |
||||
|
private toasterService; |
||||
|
profile$: Observable<Profile.Response>; |
||||
|
form: FormGroup; |
||||
|
constructor(fb: FormBuilder, store: Store, toasterService: ToasterService); |
||||
|
buildForm(): void; |
||||
|
submit(): void; |
||||
|
ngOnInit(): void; |
||||
|
} |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,19 @@ |
|||||
|
<form [formGroup]="form" (ngSubmit)="onSubmit()" [mapErrorsFn]="mapErrorsFn"> |
||||
|
<div class="form-group"> |
||||
|
<label for="current-password">{{ 'AbpIdentity::DisplayName:CurrentPassword' | abpLocalization }}</label |
||||
|
><span> * </span |
||||
|
><input type="password" id="current-password" class="form-control" formControlName="password" autofocus /> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label for="new-password">{{ 'AbpIdentity::DisplayName:NewPassword' | abpLocalization }}</label |
||||
|
><span> * </span><input type="password" id="new-password" class="form-control" formControlName="newPassword" /> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label for="confirm-new-password">{{ 'AbpIdentity::DisplayName:NewPasswordConfirm' | abpLocalization }}</label |
||||
|
><span> * </span |
||||
|
><input type="password" id="confirm-new-password" class="form-control" formControlName="repeatNewPassword" /> |
||||
|
</div> |
||||
|
<abp-button iconClass="fa fa-check" buttonClass="btn btn-primary color-white" (click)="onSubmit()">{{ |
||||
|
'AbpIdentity::Save' | abpLocalization |
||||
|
}}</abp-button> |
||||
|
</form> |
||||
@ -0,0 +1,63 @@ |
|||||
|
import { ChangePassword } from '@abp/ng.core'; |
||||
|
import { ToasterService } from '@abp/ng.theme.shared'; |
||||
|
import { Component, OnInit } from '@angular/core'; |
||||
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; |
||||
|
import { comparePasswords, Validation } from '@ngx-validate/core'; |
||||
|
import { Store } from '@ngxs/store'; |
||||
|
import snq from 'snq'; |
||||
|
|
||||
|
const { minLength, required } = Validators; |
||||
|
|
||||
|
const PASSWORD_FIELDS = ['newPassword', 'repeatNewPassword']; |
||||
|
|
||||
|
@Component({ |
||||
|
selector: 'abp-change-password-form', |
||||
|
templateUrl: './change-password.component.html', |
||||
|
}) |
||||
|
export class ChangePasswordComponent implements OnInit { |
||||
|
form: FormGroup; |
||||
|
|
||||
|
mapErrorsFn: Validation.MapErrorsFn = (errors, groupErrors, control) => { |
||||
|
if (PASSWORD_FIELDS.indexOf(control.name) < 0) return errors; |
||||
|
|
||||
|
return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch')); |
||||
|
} |
||||
|
|
||||
|
constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {} |
||||
|
|
||||
|
ngOnInit(): void { |
||||
|
this.form = this.fb.group( |
||||
|
{ |
||||
|
password: ['', required], |
||||
|
newPassword: ['', required], |
||||
|
repeatNewPassword: ['', required], |
||||
|
}, |
||||
|
{ |
||||
|
validators: [comparePasswords(PASSWORD_FIELDS)], |
||||
|
}, |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
onSubmit() { |
||||
|
if (this.form.invalid) return; |
||||
|
|
||||
|
this.store |
||||
|
.dispatch( |
||||
|
new ChangePassword({ |
||||
|
currentPassword: this.form.get('password').value, |
||||
|
newPassword: this.form.get('newPassword').value, |
||||
|
}), |
||||
|
) |
||||
|
.subscribe({ |
||||
|
next: () => { |
||||
|
this.form.reset(); |
||||
|
this.toasterService.success('AbpAccount::PasswordChangedMessage', 'Success', { life: 5000 }); |
||||
|
}, |
||||
|
error: err => { |
||||
|
this.toasterService.error(snq(() => err.error.error.message, 'AbpAccount::DefaultErrorMessage'), 'Error', { |
||||
|
life: 7000, |
||||
|
}); |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -1,2 +1,5 @@ |
|||||
|
export * from './change-password/change-password.component'; |
||||
export * from './login/login.component'; |
export * from './login/login.component'; |
||||
|
export * from './manage-profile/manage-profile.component'; |
||||
export * from './register/register.component'; |
export * from './register/register.component'; |
||||
|
export * from './personal-settings/personal-settings.component'; |
||||
|
|||||
@ -0,0 +1,36 @@ |
|||||
|
<div class="row entry-row"> |
||||
|
<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="row"> |
||||
|
<div class="col-3"> |
||||
|
<ul class="nav flex-column nav-pills" id="nav-tab" role="tablist"> |
||||
|
<li class="nav-item pointer" (click)="selectedTab = 0"> |
||||
|
<a class="nav-link" [ngClass]="{ active: selectedTab === 0 }" role="tab">{{ |
||||
|
'AbpUi::ChangePassword' | abpLocalization |
||||
|
}}</a> |
||||
|
</li> |
||||
|
<li class="nav-item pointer" (click)="selectedTab = 1"> |
||||
|
<a class="nav-link" [ngClass]="{ active: selectedTab === 1 }" role="tab">{{ |
||||
|
'AbpAccount::PersonalSettings' | abpLocalization |
||||
|
}}</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
<div class="col-9"> |
||||
|
<div class="tab-content" *ngIf="selectedTab === 0"> |
||||
|
<div class="tab-pane fade show active" role="tabpanel"> |
||||
|
<abp-change-password-form></abp-change-password-form> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="tab-content" *ngIf="selectedTab === 1"> |
||||
|
<div class="tab-pane fade show active" role="tabpanel"> |
||||
|
<abp-personal-settings-form></abp-personal-settings-form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
@ -0,0 +1,13 @@ |
|||||
|
import { Component, OnInit } from '@angular/core'; |
||||
|
|
||||
|
@Component({ |
||||
|
selector: 'abp-manage-profile', |
||||
|
templateUrl: './manage-profile.component.html', |
||||
|
}) |
||||
|
export class ManageProfileComponent implements OnInit { |
||||
|
selectedTab = 0; |
||||
|
|
||||
|
constructor() {} |
||||
|
|
||||
|
ngOnInit(): void {} |
||||
|
} |
||||
@ -0,0 +1,31 @@ |
|||||
|
<form novalidate *ngIf="form" [formGroup]="form" (ngSubmit)="submit()"> |
||||
|
<div class="form-group"> |
||||
|
<label for="username">{{ 'AbpIdentity::DisplayName:UserName' | abpLocalization }}</label |
||||
|
><span> * </span><input type="text" id="username" class="form-control" formControlName="userName" autofocus /> |
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col col-md-6"> |
||||
|
<div class="form-group"> |
||||
|
<label for="name">{{ 'AbpIdentity::DisplayName:Name' | abpLocalization }}</label |
||||
|
><input type="text" id="name" class="form-control" formControlName="name" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col col-md-6"> |
||||
|
<div class="form-group"> |
||||
|
<label for="surname">{{ 'AbpIdentity::DisplayName:Surname' | abpLocalization }}</label |
||||
|
><input type="text" id="surname" class="form-control" formControlName="surname" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label for="email-address">{{ 'AbpIdentity::DisplayName:Email' | abpLocalization }}</label |
||||
|
><span> * </span><input type="text" id="email-address" class="form-control" formControlName="email" /> |
||||
|
</div> |
||||
|
<div class="form-group"> |
||||
|
<label for="phone-number">{{ 'AbpIdentity::DisplayName:PhoneNumber' | abpLocalization }}</label |
||||
|
><input type="text" id="phone-number" class="form-control" formControlName="phoneNumber" /> |
||||
|
</div> |
||||
|
<abp-button iconClass="fa fa-check" buttonClass="btn btn-primary color-white" (click)="submit()"> |
||||
|
{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button |
||||
|
> |
||||
|
</form> |
||||
@ -0,0 +1,52 @@ |
|||||
|
import { GetProfile, Profile, ProfileState, UpdateProfile } from '@abp/ng.core'; |
||||
|
import { Component, OnInit } from '@angular/core'; |
||||
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; |
||||
|
import { Select, Store } from '@ngxs/store'; |
||||
|
import { Observable } from 'rxjs'; |
||||
|
import { take, withLatestFrom } from 'rxjs/operators'; |
||||
|
import { ToasterService } from '@abp/ng.theme.shared'; |
||||
|
|
||||
|
const { maxLength, required, email } = Validators; |
||||
|
|
||||
|
@Component({ |
||||
|
selector: 'abp-personal-settings-form', |
||||
|
templateUrl: './personal-settings.component.html', |
||||
|
}) |
||||
|
export class PersonalSettingsComponent implements OnInit { |
||||
|
@Select(ProfileState.getProfile) |
||||
|
profile$: Observable<Profile.Response>; |
||||
|
|
||||
|
form: FormGroup; |
||||
|
|
||||
|
constructor(private fb: FormBuilder, private store: Store, private toasterService: ToasterService) {} |
||||
|
|
||||
|
buildForm() { |
||||
|
this.store |
||||
|
.dispatch(new GetProfile()) |
||||
|
.pipe( |
||||
|
withLatestFrom(this.profile$), |
||||
|
take(1), |
||||
|
) |
||||
|
.subscribe(([, profile]) => { |
||||
|
this.form = this.fb.group({ |
||||
|
userName: [profile.userName, [required, maxLength(256)]], |
||||
|
email: [profile.email, [required, email, maxLength(256)]], |
||||
|
name: [profile.name || '', [maxLength(64)]], |
||||
|
surname: [profile.surname || '', [maxLength(64)]], |
||||
|
phoneNumber: [profile.phoneNumber || '', [maxLength(16)]], |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
submit() { |
||||
|
if (this.form.invalid) return; |
||||
|
|
||||
|
this.store.dispatch(new UpdateProfile(this.form.value)).subscribe(() => { |
||||
|
this.toasterService.success('AbpAccount::PersonalSettingsSaved', 'Success', { life: 5000 }); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
ngOnInit() { |
||||
|
this.buildForm(); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue