UNPKG

ngx-pwd-strength

Version:

Angular Package, that measure password strength and indicate how secure is it

90 lines 11.6 kB
import { Directive, HostListener } from '@angular/core'; import { NgxPwdStrengthComponent } from "./ngx-pwd-strength.component"; import * as i0 from "@angular/core"; import * as i1 from "./ngx-pwd-strength.service"; export class NgxPwdStrengthDirective { constructor(ngxPwdStrengthService, elementRef, componentFactoryResolver, appRef, injector) { this.ngxPwdStrengthService = ngxPwdStrengthService; this.elementRef = elementRef; this.componentFactoryResolver = componentFactoryResolver; this.appRef = appRef; this.injector = injector; } get isPopupDestroyed() { return this.componentRef && this.componentRef.hostView.destroyed; } getHostPosition() { this.hostPosition = this.elementRef.nativeElement.getBoundingClientRect(); } onMouseEnter(value) { this.displayPopup(); this.ratePassword(value); } onInput(value) { this.ratePassword(value); } onMouseLeave() { this.destroyPopup(); } ratePassword(password) { if (password) { let score = this.ngxPwdStrengthService.getScore(password); this.ngxPwdStrengthService.updateScore(score); } else { this.ngxPwdStrengthService.updateScore(null); } } displayPopup() { if (!this.componentRef || this.isPopupDestroyed) { this.buildPopup(); } } buildPopup() { this.getHostPosition(); this.loadComponent(NgxPwdStrengthComponent); } loadComponent(component) { this.componentRef = this.componentFactoryResolver .resolveComponentFactory(component) .create(this.injector); const hostComponent = this.componentRef.instance; hostComponent.data = { element: this.elementRef.nativeElement, elementPosition: this.hostPosition }; this.appRef.attachView(this.componentRef.hostView); const domElem = this.componentRef.hostView.rootNodes[0]; document.body.appendChild(domElem); hostComponent.show = true; } destroyPopup() { if (!this.isPopupDestroyed) { this.componentRef.instance.show = false; if (!this.componentRef || this.isPopupDestroyed) { return; } this.appRef.detachView(this.componentRef.hostView); this.componentRef.destroy(); } } } NgxPwdStrengthDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NgxPwdStrengthDirective, deps: [{ token: i1.NgxPwdStrengthService }, { token: i0.ElementRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); NgxPwdStrengthDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.9", type: NgxPwdStrengthDirective, selector: "input[type=password][ngxPwdStrength]", host: { listeners: { "focusin": "onMouseEnter($event.target.value)", "input": "onInput($event.target.value)", "focusout": "onMouseLeave()" } }, exportAs: ["ngxPwdStrength"], ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: NgxPwdStrengthDirective, decorators: [{ type: Directive, args: [{ selector: 'input[type=password][ngxPwdStrength]', exportAs: 'ngxPwdStrength' }] }], ctorParameters: function () { return [{ type: i1.NgxPwdStrengthService }, { type: i0.ElementRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }]; }, propDecorators: { onMouseEnter: [{ type: HostListener, args: ["focusin", ["$event.target.value"]] }], onInput: [{ type: HostListener, args: ["input", ["$event.target.value"]] }], onMouseLeave: [{ type: HostListener, args: ["focusout"] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXB3ZC1zdHJlbmd0aC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHdkLXN0cmVuZ3RoL3NyYy9saWIvbmd4LXB3ZC1zdHJlbmd0aC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBRWIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7OztBQVFyRSxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQ1UscUJBQTRDLEVBQzVDLFVBQXNCLEVBQ3RCLHdCQUFrRCxFQUNsRCxNQUFzQixFQUN0QixRQUFrQjtRQUpsQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3hCLENBQUM7SUFFTCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ25FLENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFHRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBR0QsT0FBTyxDQUFDLEtBQWE7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBR0QsWUFBWTtRQUNWLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLElBQUcsUUFBUSxFQUFFO1lBQ1gsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9DO2FBQU07WUFDTCxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBYztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0I7YUFDOUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUF5QixDQUFDO1FBQ2xFLGFBQWEsQ0FBQyxJQUFJLEdBQUc7WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYTtZQUN0QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDbkMsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsTUFBTSxPQUFPLEdBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDakcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBMEIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDL0MsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs7b0hBbEZVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7Z09BdUJDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFPaEQsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQU05QyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEluamVjdG9yXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RE9NUmVjdCwgSG9zdENvbXBvbmVudH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuaW1wb3J0IHtOZ3hQd2RTdHJlbmd0aENvbXBvbmVudH0gZnJvbSBcIi4vbmd4LXB3ZC1zdHJlbmd0aC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtOZ3hQd2RTdHJlbmd0aFNlcnZpY2V9IGZyb20gXCIuL25neC1wd2Qtc3RyZW5ndGguc2VydmljZVwiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdpbnB1dFt0eXBlPXBhc3N3b3JkXVtuZ3hQd2RTdHJlbmd0aF0nLFxyXG4gIGV4cG9ydEFzOiAnbmd4UHdkU3RyZW5ndGgnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTmd4UHdkU3RyZW5ndGhEaXJlY3RpdmUge1xyXG5cclxuICBob3N0UG9zaXRpb24hOiBET01SZWN0O1xyXG4gIGNvbXBvbmVudFJlZjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmd4UHdkU3RyZW5ndGhTZXJ2aWNlOiBOZ3hQd2RTdHJlbmd0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcclxuICApIHsgfVxyXG5cclxuICBnZXQgaXNQb3B1cERlc3Ryb3llZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZiAmJiB0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldy5kZXN0cm95ZWQ7XHJcbiAgfVxyXG4gIGdldEhvc3RQb3NpdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuaG9zdFBvc2l0aW9uID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZm9jdXNpblwiLCBbXCIkZXZlbnQudGFyZ2V0LnZhbHVlXCJdKVxyXG4gIG9uTW91c2VFbnRlcih2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc3BsYXlQb3B1cCgpO1xyXG4gICAgdGhpcy5yYXRlUGFzc3dvcmQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImlucHV0XCIsIFtcIiRldmVudC50YXJnZXQudmFsdWVcIl0pXHJcbiAgb25JbnB1dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnJhdGVQYXNzd29yZCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZm9jdXNvdXRcIilcclxuICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3lQb3B1cCgpO1xyXG4gIH1cclxuXHJcbiAgcmF0ZVBhc3N3b3JkKHBhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgIGlmKHBhc3N3b3JkKSB7XHJcbiAgICAgIGxldCBzY29yZSA9IHRoaXMubmd4UHdkU3RyZW5ndGhTZXJ2aWNlLmdldFNjb3JlKHBhc3N3b3JkKTtcclxuICAgICAgdGhpcy5uZ3hQd2RTdHJlbmd0aFNlcnZpY2UudXBkYXRlU2NvcmUoc2NvcmUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5uZ3hQd2RTdHJlbmd0aFNlcnZpY2UudXBkYXRlU2NvcmUobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5UG9wdXAoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmIHx8IHRoaXMuaXNQb3B1cERlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLmJ1aWxkUG9wdXAoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1aWxkUG9wdXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEhvc3RQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5sb2FkQ29tcG9uZW50KE5neFB3ZFN0cmVuZ3RoQ29tcG9uZW50KTtcclxuICB9XHJcblxyXG4gIGxvYWRDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcclxuICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudClcclxuICAgICAgLmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuICAgIGNvbnN0IGhvc3RDb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBIb3N0Q29tcG9uZW50O1xyXG4gICAgaG9zdENvbXBvbmVudC5kYXRhID0ge1xyXG4gICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgZWxlbWVudFBvc2l0aW9uOiB0aGlzLmhvc3RQb3NpdGlvblxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuICAgIGNvbnN0IGRvbUVsZW0gPSAodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XHJcblxyXG4gICAgaG9zdENvbXBvbmVudC5zaG93ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3lQb3B1cCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1BvcHVwRGVzdHJveWVkKSB7XHJcbiAgICAgICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBIb3N0Q29tcG9uZW50KS5zaG93ID0gZmFsc2U7XHJcbiAgICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYgfHwgdGhpcy5pc1BvcHVwRGVzdHJveWVkKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=