{"version":3,"file":"primeng-password.umd.js","sources":["../../src/app/components/password/password.ts","../../src/app/components/password/primeng-password.ts"],"sourcesContent":["import {NgModule,Directive,ElementRef,HostListener,Input,OnDestroy,DoCheck,NgZone, OnInit, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, QueryList, TemplateRef, Component, AfterContentInit, ViewChild, ChangeDetectorRef, forwardRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {animate, style, transition, trigger} from '@angular/animations';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {DomHandler, ConnectedOverlayScrollHandler} from 'primeng/dom';\nimport {PrimeNGConfig, PrimeTemplate, TranslationKeys} from 'primeng/api';\nimport {InputTextModule} from 'primeng/inputtext';\n\n@Directive({\n    selector: '[pPassword]',\n    host: {\n        '[class.p-inputtext]': 'true',\n        '[class.p-component]': 'true',\n        '[class.p-filled]': 'filled'\n    }\n})\nexport class PasswordDirective 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    scrollHandler: any;\n\n    documentResizeListener: any;\n\n    constructor(public el: ElementRef, public zone: NgZone) {}\n\n    ngDoCheck() {\n        this.updateFilledState();\n    }\n\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 = 'p-password-panel p-component p-password-panel-overlay p-connected-overlay';\n        this.meter = document.createElement('div');\n        this.meter.className = 'p-password-meter';\n        this.info = document.createElement('div');\n        this.info.className = 'p-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    showOverlay() {\n        if (this.feedback) {\n            if (!this.panel) {\n                this.createPanel();\n            }\n\n            this.panel.style.zIndex = String(++DomHandler.zindex);\n            this.panel.style.display = 'block';\n            this.zone.runOutsideAngular(() => {\n\n                setTimeout(() => {\n                    DomHandler.addClass(this.panel, 'p-connected-overlay-visible');\n                    this.bindScrollListener();\n                    this.bindDocumentResizeListener();\n                }, 1);\n            });\n            DomHandler.absolutePosition(this.panel, this.el.nativeElement);\n        }\n    }\n\n    hideOverlay() {\n        if (this.feedback && this.panel) {\n            DomHandler.addClass(this.panel, 'p-connected-overlay-hidden');\n            DomHandler.removeClass(this.panel, 'p-connected-overlay-visible');\n            this.unbindScrollListener();\n            this.unbindDocumentResizeListener();\n\n            this.zone.runOutsideAngular(() => {\n                setTimeout(() => {\n                    this.ngOnDestroy();\n                }, 150);\n            });\n        }\n    }\n\n    @HostListener('focus')\n    onFocus() {\n        this.showOverlay();\n    }\n\n    @HostListener('blur')\n    onBlur() {\n        this.hideOverlay();\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            if (!this.panel || !DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n                this.showOverlay();\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: RegExpMatchArray;\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    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (DomHandler.hasClass(this.panel, 'p-connected-overlay-visible')) {\n                    this.hideOverlay();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hideOverlay();\n    }\n\n    ngOnDestroy() {\n        if (this.panel) {\n            if (this.scrollHandler) {\n                this.scrollHandler.destroy();\n                this.scrollHandler = null;\n            }\n\n            this.unbindDocumentResizeListener();\n\n            document.body.removeChild(this.panel);\n            this.panel = null;\n            this.meter = null;\n            this.info = null;\n        }\n    }\n}\n\n\nexport const Password_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Password),\n    multi: true\n};\n@Component({\n    selector: 'p-password',\n    template: `\n        <div [ngClass]=\"containerClass()\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <input #input [attr.id]=\"inputId\" pInputText [ngClass]=\"inputFieldClass()\" [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [attr.type]=\"inputType()\" [attr.placeholder]=\"placeholder\" [value]=\"value\" (input)=\"onInput($event)\" (focus)=\"onFocus()\" \n                (blur)=\"onBlur()\" (keyup)=\"onKeyUp($event)\" />\n            <i *ngIf=\"toggleMask\" [ngClass]=\"toggleIconClass()\" (click)=\"onMaskToggle()\"></i>\n            <div #overlay *ngIf=\"overlayVisible\" [ngClass]=\"'p-password-panel p-component'\" \n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@overlayAnimation.start)=\"onAnimationStart($event)\">\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                <ng-container *ngIf=\"contentTemplate; else content\">\n                    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                </ng-container>\n                <ng-template #content>\n                    <div class=\"p-password-meter\">\n                        <div [ngClass]=\"strengthClass()\" [ngStyle]=\"{'width': meter ? meter.width : ''}\"></div>\n                    </div>\n                    <div className=\"p-password-info\">{{infoText}}</div>\n                </ng-template>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    host: {\n        '[class.p-inputwrapper-filled]': 'filled()',\n        '[class.p-inputwrapper-focus]': 'focused'\n    },\n    providers: [Password_VALUE_ACCESSOR],\n    styleUrls: ['./password.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class Password implements AfterContentInit,OnInit {\n    \n    @Input() disabled: boolean;\n\n    @Input() promptLabel: string;\n\n    @Input() mediumRegex: string = '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})';\n\n    @Input() strongRegex: string = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.{8,})';\n\n    @Input() weakLabel: string;\n\n    @Input() mediumLabel: string;\n\n    @Input() strongLabel: string;\n\n    @Input() inputId: string;\n\n    @Input() feedback: boolean = true;\n\n    @Input() appendTo: any;\n\n    @Input() toggleMask: boolean;\n\n    @Input() inputStyleClass: string;\n\n    @Input() styleClass: string;\n\n    @Input() style: any;\n\n    @Input() inputStyle: any;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Input() placeholder: string;\n\n    @ViewChild('input') input: ElementRef;\n\n    contentTemplate: TemplateRef<any>;\n\n    footerTemplate: TemplateRef<any>;\n\n    headerTemplate: TemplateRef<any>;\n\n    @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n    \n    overlayVisible: boolean = false;\n\n    meter: any;\n    \n    infoText: string;\n    \n    focused: boolean = false;\n    \n    unmasked: boolean = false;\n\n    mediumCheckRegExp: any;\n\n    strongCheckRegExp: any;\n\n    resizeListener: any;\n\n    outsideClickListener: any;\n\n    scrollHandler: any;\n\n    overlay: any;\n\n    value: string = null;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n\n    constructor(private cd: ChangeDetectorRef, private config: PrimeNGConfig) {}\n\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch(item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                break;\n\n                case 'header':\n                    this.headerTemplate = item.template;\n                break;\n\n                case 'footer':\n                    this.footerTemplate = item.template;\n                break;\n                \n                default:\n                    this.contentTemplate = item.template;\n                break;\n            }\n        });\n    }\n\n    ngOnInit() {\n        this.infoText = this.promptText();\n        this.mediumCheckRegExp = new RegExp(this.mediumRegex);\n        this.strongCheckRegExp = new RegExp(this.strongRegex);\n    }\n\n    onAnimationStart(event) {\n        switch(event.toState) {\n            case 'visible':\n                this.overlay = event.element;\n                this.overlay.style.zIndex = String(DomHandler.generateZIndex());\n                this.appendContainer();\n                this.alignOverlay();\n                this.bindScrollListener();\n                this.bindResizeListener();\n            break;\n\n            case 'void':\n                this.unbindScrollListener();\n                this.unbindResizeListener();\n                this.overlay = null;\n            break;\n        }\n    }\n\n    appendContainer() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                document.getElementById(this.appendTo).appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo) {\n            this.overlay.style.minWidth = DomHandler.getOuterWidth(this.input.nativeElement) + 'px';\n            DomHandler.absolutePosition(this.overlay, this.input.nativeElement);\n        }\n        else {\n            DomHandler.relativePosition(this.overlay, this.input.nativeElement);\n        }\n    }\n\n    onInput(event)  {\n        this.value = event.target.value;\n        this.onModelChange(this.value);\n        this.onModelTouched();\n    }\n\n    onFocus() {\n        this.focused = true;\n        if (this.feedback) {\n            this.overlayVisible = true;\n        }\n    }\n\n    onBlur() {\n        this.focused = false;\n        if (this.feedback) {\n            this.overlayVisible = false;\n        }\n    }\n\n    onKeyUp(event) {\n        if (this.feedback) {\n            let value = event.target.value;\n            this.updateUI(value);\n\n            if (!this.overlayVisible) {\n                this.overlayVisible = true;\n            }\n        }\n    }\n    \n    updateUI(value) {\n        let label = null;\n        let meter = null;\n\n        switch (this.testStrength(value)) {\n            case 1:\n                label = this.weakText();\n                meter = {\n                    strength: 'weak',\n                    width: '33.33%'\n                };\n                break;\n\n            case 2:\n                label = this.mediumText();\n                meter = {\n                    strength: 'medium',\n                    width: '66.66%'\n                };\n                break;\n\n            case 3:\n                label = this.strongText();\n                meter = {\n                    strength: 'strong',\n                    width: '100%'\n                };\n                break;\n\n            default:\n                label = this.promptText();\n                meter = null;\n                break;\n        }\n\n        this.meter = meter;\n        this.infoText = label;\n    }\n\n    onMaskToggle() {\n        this.unmasked = !this.unmasked;\n    }\n\n    testStrength(str) {\n        let level = 0;\n\n        if (this.strongCheckRegExp.test(str))\n            level = 3;\n        else if (this.mediumCheckRegExp.test(str))\n            level = 2;\n        else if (str.length)\n            level = 1;\n\n        return level;\n    }\n\n    writeValue(value: any) : void {\n        if (value === undefined)\n            this.value = null;\n        else \n            this.value = value;\n\n        if (this.feedback)\n            this.updateUI(this.value || \"\");\n        \n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.input.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.overlayVisible = false;\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    bindResizeListener() {\n        if (!this.resizeListener) {\n            this.resizeListener = () => {\n                if (this.overlayVisible) {\n                    this.overlayVisible = false;\n                }\n            };\n            window.addEventListener('resize', this.resizeListener);\n        }\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    unbindResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n\n    unbindOutsideClickListener() {\n        if (this.outsideClickListener) {\n            document.removeEventListener('click', this.outsideClickListener);\n            this.outsideClickListener = null;\n        }\n    }\n\n    containerClass() {\n        return {'p-password p-component p-inputwrapper': true,\n            'p-input-icon-right': this.toggleMask\n        };\n    }\n\n    inputFieldClass() {\n        return {'p-password-input' : true, \n                'p-disabled': this.disabled\n        };\n    }\n\n    toggleIconClass() {\n        return this.unmasked ? 'pi pi-eye-slash' : 'pi pi-eye';\n    }\n\n    strengthClass() {\n        return `p-password-strength ${this.meter ? this.meter.strength : ''}`;\n    }\n\n    filled() {\n        return (this.value != null && this.value.toString().length > 0)\n    }\n\n    promptText() {\n        return this.promptLabel || this.getTranslation(TranslationKeys.PASSWORD_PROMPT);\n    }\n\n    weakText() {\n        return this.weakLabel || this.getTranslation(TranslationKeys.WEAK);\n    }\n\n    mediumText() {\n        return this.mediumLabel || this.getTranslation(TranslationKeys.MEDIUM);\n    }\n\n    strongText() {\n        return this.strongLabel || this.getTranslation(TranslationKeys.STRONG);\n    }\n\n    restoreAppend() {\n        if (this.overlay && this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.removeChild(this.overlay);\n            else\n                document.getElementById(this.appendTo).removeChild(this.overlay);\n        }\n    }\n\n    inputType() {\n        return this.unmasked ? 'text' : 'password';\n    }\n\n    getTranslation(option: string) {\n        return this.config.getTranslation(option);\n    }\n\n    ngOnDestroy() {\n        this.restoreAppend();\n        this.unbindResizeListener();\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n    }\n}\n\n@NgModule({\n    imports: [CommonModule, InputTextModule],\n    exports: [PasswordDirective, Password],\n    declarations: [PasswordDirective, Password]\n})\nexport class PasswordModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["DomHandler","ConnectedOverlayScrollHandler","Directive","Input","HostListener","NG_VALUE_ACCESSOR","forwardRef","TranslationKeys","PrimeTemplate","trigger","transition","style","animate","Component","ChangeDetectionStrategy","ViewEncapsulation","ViewChild","ContentChildren","CommonModule","InputTextModule","NgModule"],"mappings":"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"}