UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

51 lines 12.8 kB
import { Component, Output, EventEmitter } from '@angular/core'; import { UserService } from '@c8y/client'; import { LoginService } from './login.service'; import { LoginViews } from './login.model'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/client"; import * as i2 from "./login.service"; import * as i3 from "@angular/forms"; import * as i4 from "../i18n/c8y-translate.directive"; import * as i5 from "@angular/common"; import * as i6 from "../forms/form-group.component"; import * as i7 from "../forms/required-input-placeholder.directive"; import * as i8 from "../i18n/c8y-translate.pipe"; export class RecoverPasswordComponent { constructor(users, loginService) { this.users = users; this.loginService = loginService; this.onChangeView = new EventEmitter(); this.LOGIN_VIEWS = LoginViews; this.isLoading = false; this.model = { email: '', tenantId: '' }; } ngOnInit() { this.model.tenantId = this.loginService.getTenant(); } async resetPassword() { try { this.isLoading = true; const { res } = await this.users.sendPasswordResetMail(this.model.email, this.model.tenantId); if (res.status === 200) { this.loginService.addSuccessMessage('password_reset_requested'); } } finally { this.loginService.reset(); this.isLoading = false; } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecoverPasswordComponent, deps: [{ token: i1.UserService }, { token: i2.LoginService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecoverPasswordComponent, selector: "c8y-recover-password", outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<form #resetForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"resetPassword()\" novalidate>\n <div class=\"legend form-block center\" translate>Forgot password?</div>\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Reset password' | translate }}\"\n [disabled]=\"!resetForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Reset password' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n type=\"submit\"\n title=\"{{ 'Login' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.Credentials })\"\n >\n {{ 'Login' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i7.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i8.C8yTranslatePipe, name: "translate" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecoverPasswordComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-recover-password', template: "<form #resetForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"resetPassword()\" novalidate>\n <div class=\"legend form-block center\" translate>Forgot password?</div>\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Reset password' | translate }}\"\n [disabled]=\"!resetForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Reset password' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n type=\"submit\"\n title=\"{{ 'Login' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.Credentials })\"\n >\n {{ 'Login' | translate }}\n </button>\n </div>\n</form>\n" }] }], ctorParameters: () => [{ type: i1.UserService }, { type: i2.LoginService }], propDecorators: { onChangeView: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Zlci1wYXNzd29yZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2xvZ2luL3JlY292ZXItcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9sb2dpbi9yZWNvdmVyLXBhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBTzNDLE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFBb0IsS0FBa0IsRUFBUyxZQUEwQjtRQUFyRCxVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFSL0QsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsVUFBVSxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFHO1lBQ04sS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7SUFFMEUsQ0FBQztJQUU3RSxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWE7UUFDakIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlGLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDOytHQTFCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix1R0NWckMsb2hEQW9EQTs7NEZEMUNhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7MkdBS3RCLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2luVmlld3MgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXJlY292ZXItcGFzc3dvcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjb3Zlci1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgUmVjb3ZlclBhc3N3b3JkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIG9uQ2hhbmdlVmlldyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgTE9HSU5fVklFV1MgPSBMb2dpblZpZXdzO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgbW9kZWwgPSB7XG4gICAgZW1haWw6ICcnLFxuICAgIHRlbmFudElkOiAnJ1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXNlcnM6IFVzZXJTZXJ2aWNlLCBwdWJsaWMgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tb2RlbC50ZW5hbnRJZCA9IHRoaXMubG9naW5TZXJ2aWNlLmdldFRlbmFudCgpO1xuICB9XG5cbiAgYXN5bmMgcmVzZXRQYXNzd29yZCgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgeyByZXMgfSA9IGF3YWl0IHRoaXMudXNlcnMuc2VuZFBhc3N3b3JkUmVzZXRNYWlsKHRoaXMubW9kZWwuZW1haWwsIHRoaXMubW9kZWwudGVuYW50SWQpO1xuICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICB0aGlzLmxvZ2luU2VydmljZS5hZGRTdWNjZXNzTWVzc2FnZSgncGFzc3dvcmRfcmVzZXRfcmVxdWVzdGVkJyk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9naW5TZXJ2aWNlLnJlc2V0KCk7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPGZvcm0gI3Jlc2V0Rm9ybT1cIm5nRm9ybVwiIGNsYXNzPVwibG9naW5Gb3JtXCIgKG5nU3VibWl0KT1cInJlc2V0UGFzc3dvcmQoKVwiIG5vdmFsaWRhdGU+XG4gIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9jayBjZW50ZXJcIiB0cmFuc2xhdGU+Rm9yZ290IHBhc3N3b3JkPzwvZGl2PlxuICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJ0ZW5hbnRGaWVsZFwiIGlkPVwidGVuYW50RmllbGRcIiAqbmdJZj1cImxvZ2luU2VydmljZS5zaG93VGVuYW50KClcIj5cbiAgICA8bGFiZWwgdHJhbnNsYXRlPlRlbmFudCBJRDwvbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICBbKG5nTW9kZWwpXT1cIm1vZGVsLnRlbmFudElkXCJcbiAgICAgICN0ZW5hbnRJZD1cIm5nTW9kZWxcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgbmFtZT1cInRlbmFudElkXCJcbiAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1RlbmFudCBJRCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgcmVxdWlyZWRcbiAgICAvPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gIDxjOHktZm9ybS1ncm91cD5cbiAgICA8bGFiZWwgdHJhbnNsYXRlPkVtYWlsIGFkZHJlc3M8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbC5lbWFpbFwiXG4gICAgICAjZW1haWw9XCJuZ01vZGVsXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIG5hbWU9XCJlbWFpbFwiXG4gICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdFbWFpbCBhZGRyZXNzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBlbWFpbFxuICAgICAgcmVxdWlyZWRcbiAgICAvPlxuICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gIDxidXR0b25cbiAgICB0aXRsZT1cInt7ICdSZXNldCBwYXNzd29yZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIFtkaXNhYmxlZF09XCIhcmVzZXRGb3JtLmZvcm0udmFsaWQgfHwgaXNMb2FkaW5nXCJcbiAgICB0eXBlPVwic3VibWl0XCJcbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tbGcgYnRuLWJsb2NrIGZvcm0tZ3JvdXBcIlxuICA+XG4gICAge3sgJ1Jlc2V0IHBhc3N3b3JkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG0tdC04XCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICB0aXRsZT1cInt7ICdMb2dpbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtXCJcbiAgICAgIChjbGljayk9XCJvbkNoYW5nZVZpZXcuZW1pdCh7IHZpZXc6IExPR0lOX1ZJRVdTLkNyZWRlbnRpYWxzIH0pXCJcbiAgICA+XG4gICAgICB7eyAnTG9naW4nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19