UNPKG

9.7 kBSource Map (JSON)View Raw
1{"version":3,"sources":["ng://primeng/password/password.ts"],"names":["Password","el","zone","this","promptLabel","weakLabel","mediumLabel","strongLabel","feedback","Object","defineProperty","prototype","show","nativeElement","type","ngDoCheck","updateFilledState","onInput","e","filled","value","length","createPanel","panel","document","createElement","className","meter","info","textContent","appendChild","style","minWidth","DomHandler","getOuterWidth","body","onFocus","_this","zIndex","String","zindex","runOutsideAngular","setTimeout","addClass","removeClass","absolutePosition","onBlur","ngOnDestroy","onKeyup","target","label","meterPos","score","testStrength","backgroundPosition","str","val","grade","match","normalize","x","y","disabled","removeChild","ElementRef","NgZone","__decorate","Input","HostListener","Directive","selector","host","[class.ui-inputtext]","[class.ui-corner-all]","[class.ui-state-default]","[class.ui-widget]","[class.ui-state-filled]","PasswordModule","NgModule","imports","CommonModule","exports","declarations"],"mappings":"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","sourcesContent":["import {NgModule,Directive,ElementRef,HostListener,Input,OnDestroy,DoCheck,NgZone} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\n\n@Directive({\n selector: '[pPassword]',\n host: {\n '[class.ui-inputtext]': 'true',\n '[class.ui-corner-all]': 'true',\n '[class.ui-state-default]': 'true',\n '[class.ui-widget]': 'true',\n '[class.ui-state-filled]': 'filled'\n }\n})\nexport class Password implements OnDestroy,DoCheck {\n\n @Input() promptLabel: string = 'Enter a password';\n\n @Input() weakLabel: string = 'Weak';\n\n @Input() mediumLabel: string = 'Medium';\n\n @Input() strongLabel: string = 'Strong';\n \n @Input() feedback: boolean = true;\n\n @Input() set showPassword(show: boolean) {\n this.el.nativeElement.type = show ? 'text' : 'password';\n }\n \n panel: HTMLDivElement;\n \n meter: any;\n \n info: any;\n \n filled: boolean;\n \n constructor(public el: ElementRef, public zone: NgZone) {}\n \n ngDoCheck() {\n this.updateFilledState();\n }\n \n //To trigger change detection to manage ui-state-filled for material labels when there is no value binding\n @HostListener('input', ['$event']) \n onInput(e) {\n this.updateFilledState();\n }\n \n updateFilledState() {\n this.filled = this.el.nativeElement.value && this.el.nativeElement.value.length;\n }\n\n createPanel() {\n this.panel = document.createElement('div');\n this.panel.className = 'ui-password-panel ui-widget ui-state-highlight ui-corner-all';\n this.meter = document.createElement('div');\n this.meter.className = 'ui-password-meter';\n this.info = document.createElement('div');\n this.info.className = 'ui-password-info';\n this.info.textContent = this.promptLabel;\n this.panel.appendChild(this.meter);\n this.panel.appendChild(this.info);\n this.panel.style.minWidth = DomHandler.getOuterWidth(this.el.nativeElement) + 'px';\n document.body.appendChild(this.panel);\n }\n \n @HostListener('focus', ['$event']) \n onFocus(e) {\n if (this.feedback) {\n if (!this.panel) {\n this.createPanel();\n }\n \n this.panel.style.zIndex = String(++DomHandler.zindex);\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n DomHandler.addClass(this.panel, 'ui-password-panel-visible');\n DomHandler.removeClass(this.panel, 'ui-password-panel-hidden');\n }, 1);\n DomHandler.absolutePosition(this.panel, this.el.nativeElement);\n });\n }\n }\n \n @HostListener('blur', ['$event']) \n onBlur(e) { \n if (this.feedback) {\n DomHandler.addClass(this.panel, 'ui-password-panel-hidden');\n DomHandler.removeClass(this.panel, 'ui-password-panel-visible');\n\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n this.ngOnDestroy();\n }, 150);\n });\n } \n }\n \n @HostListener('keyup', ['$event'])\n onKeyup(e) {\n if (this.feedback) {\n let value = e.target.value,\n label = null,\n meterPos = null;\n\n if (value.length === 0) {\n label = this.promptLabel;\n meterPos = '0px 0px';\n }\n else {\n var score = this.testStrength(value);\n\n if (score < 30) {\n label = this.weakLabel;\n meterPos = '0px -10px';\n }\n else if (score >= 30 && score < 80) {\n label = this.mediumLabel;\n meterPos = '0px -20px';\n } \n else if (score >= 80) {\n label = this.strongLabel;\n meterPos = '0px -30px';\n }\n }\n\n this.meter.style.backgroundPosition = meterPos;\n this.info.textContent = label;\n }\n }\n \n testStrength(str: string) {\n let grade: number = 0;\n let val;\n\n val = str.match('[0-9]');\n grade += this.normalize(val ? val.length : 1/4, 1) * 25;\n\n val = str.match('[a-zA-Z]');\n grade += this.normalize(val ? val.length : 1/2, 3) * 10;\n\n val = str.match('[!@#$%^&*?_~.,;=]');\n grade += this.normalize(val ? val.length : 1/6, 1) * 35;\n\n val = str.match('[A-Z]');\n grade += this.normalize(val ? val.length : 1/6, 1) * 30;\n\n grade *= str.length / 8;\n\n return grade > 100 ? 100 : grade;\n }\n \n normalize(x, y) {\n let diff = x - y;\n\n if (diff <= 0)\n return x / y;\n else\n return 1 + 0.5 * (x / (x + y/4));\n }\n \n get disabled(): boolean {\n return this.el.nativeElement.disabled;\n }\n \n ngOnDestroy() {\n if (this.panel) {\n document.body.removeChild(this.panel);\n this.panel = null;\n this.meter = null;\n this.info = null;\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [Password],\n declarations: [Password]\n})\nexport class PasswordModule { }\n"]}
\No newline at end of file