{"version":3,"file":"axulus-uikit-password.mjs","sources":["../../src/app/components/password/password.ts","../../src/app/components/password/axulus-uikit-password.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  Directive,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  NgModule,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  Pipe,\n  PipeTransform,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OverlayService, PrimeNGConfig, PrimeTemplate, TranslationKeys } from '@axulus/uikit/api';\nimport { ConnectedOverlayScrollHandler, DomHandler } from '@axulus/uikit/dom';\nimport { InputTextModule } from '@axulus/uikit/inputtext';\nimport { ZIndexUtils } from '@axulus/uikit/utils';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n  selector: '[pPassword]',\n  host: {\n    class: 'p-inputtext p-component p-element',\n    '[class.p-filled]': 'filled'\n  }\n})\nexport class PasswordDirective implements OnDestroy, DoCheck {\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        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      } else {\n        var score = this.testStrength(value);\n\n        if (score < 30) {\n          label = this.weakLabel;\n          meterPos = '0px -10px';\n        } else if (score >= 30 && score < 80) {\n          label = this.mediumLabel;\n          meterPos = '0px -20px';\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) return x / y;\n    else 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    if (!DomHandler.isTouchDevice()) {\n      this.hideOverlay();\n    }\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\ntype Mapper<T, G> = (item: T, ...args: any[]) => G;\n\n@Pipe({\n  name: 'mapper',\n  pure: true\n})\nexport class MapperPipe implements PipeTransform {\n  public transform<T, G>(value: T, mapper: Mapper<T, G>, ...args: unknown[]): G {\n    return mapper(value, ...args);\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]=\"toggleMask | mapper: containerClass\" [ngStyle]=\"style\" [class]=\"styleClass\">\n      <input\n        #input\n        [attr.label]=\"label\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-labelledBy]=\"ariaLabelledBy\"\n        [attr.id]=\"inputId\"\n        pInputText\n        [ngClass]=\"disabled | mapper: inputFieldClass\"\n        [ngStyle]=\"inputStyle\"\n        [class]=\"inputStyleClass\"\n        [attr.type]=\"unmasked | mapper: inputType\"\n        [attr.placeholder]=\"placeholder\"\n        [value]=\"value\"\n        (input)=\"onInput($event)\"\n        (focus)=\"onInputFocus($event)\"\n        (blur)=\"onInputBlur($event)\"\n        (keyup)=\"onKeyUp($event)\"\n        (keydown)=\"onKeyDown($event)\"\n      />\n      <i *ngIf=\"showClear && value != null\" class=\"p-password-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n      <i *ngIf=\"toggleMask\" [ngClass]=\"unmasked | mapper: toggleIconClass\" (click)=\"onMaskToggle()\"></i>\n      <div\n        #overlay\n        *ngIf=\"overlayVisible\"\n        [ngClass]=\"'p-password-panel p-component'\"\n        (click)=\"onOverlayClick($event)\"\n        [@overlayAnimation]=\"{\n          value: 'visible',\n          params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions }\n        }\"\n        (@overlayAnimation.start)=\"onAnimationStart($event)\"\n        (@overlayAnimation.done)=\"onAnimationEnd($event)\"\n      >\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]=\"meter | mapper: 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', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate('{{showTransitionParams}}')]),\n      transition(':leave', [animate('{{hideTransitionParams}}', style({ opacity: 0 }))])\n    ])\n  ],\n  host: {\n    class: 'p-element p-inputwrapper',\n    '[class.p-inputwrapper-filled]': 'filled()',\n    '[class.p-inputwrapper-focus]': 'focused',\n    '[class.p-password-clearable]': 'showClear',\n    '[class.p-password-mask]': 'toggleMask'\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, ControlValueAccessor {\n  @Input() ariaLabel: string;\n\n  @Input() ariaLabelledBy: string;\n\n  @Input() label: string;\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() panelStyle: any;\n\n  @Input() panelStyleClass: 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  @Input() showClear: boolean = false;\n\n  @ViewChild('input') input: ElementRef;\n\n  @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n  @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClear: EventEmitter<any> = new EventEmitter();\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  translationSubscription: Subscription;\n\n  constructor(private cd: ChangeDetectorRef, private config: PrimeNGConfig, public el: ElementRef, public overlayService: OverlayService) {}\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    this.translationSubscription = this.config.translationObserver.subscribe(() => {\n      this.updateUI(this.value || '');\n    });\n  }\n\n  onAnimationStart(event) {\n    switch (event.toState) {\n      case 'visible':\n        this.overlay = event.element;\n        ZIndexUtils.set('overlay', this.overlay, this.config.zIndex.overlay);\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  onAnimationEnd(event) {\n    switch (event.toState) {\n      case 'void':\n        ZIndexUtils.clear(event.element);\n        break;\n    }\n  }\n\n  appendContainer() {\n    if (this.appendTo) {\n      if (this.appendTo === 'body') document.body.appendChild(this.overlay);\n      else 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    } 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  onInputFocus(event: Event) {\n    this.focused = true;\n    if (this.feedback) {\n      this.overlayVisible = true;\n    }\n\n    this.onFocus.emit(event);\n  }\n\n  onInputBlur(event: Event) {\n    this.focused = false;\n    if (this.feedback) {\n      this.overlayVisible = false;\n    }\n\n    this.onBlur.emit(event);\n  }\n\n  onKeyDown(event: KeyboardEvent) {\n    if (event.key === 'Escape') {\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  onOverlayClick(event) {\n    this.overlayService.add({\n      originalEvent: event,\n      target: this.el.nativeElement\n    });\n  }\n\n  testStrength(str) {\n    let level = 0;\n\n    if (this.strongCheckRegExp.test(str)) level = 3;\n    else if (this.mediumCheckRegExp.test(str)) level = 2;\n    else if (str.length) level = 1;\n\n    return level;\n  }\n\n  writeValue(value: any): void {\n    if (value === undefined) this.value = null;\n    else this.value = value;\n\n    if (this.feedback) 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    this.cd.markForCheck();\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 && !DomHandler.isTouchDevice()) {\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(toggleMask: boolean) {\n    return { 'p-password p-component p-inputwrapper': true, 'p-input-icon-right': toggleMask };\n  }\n\n  inputFieldClass(disabled: boolean) {\n    return { 'p-password-input': true, 'p-disabled': disabled };\n  }\n\n  toggleIconClass(unmasked: boolean) {\n    return unmasked ? 'pi pi-eye-slash' : 'pi pi-eye';\n  }\n\n  strengthClass(meter: any) {\n    return `p-password-strength ${meter ? 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') document.body.removeChild(this.overlay);\n      else document.getElementById(this.appendTo).removeChild(this.overlay);\n    }\n  }\n\n  inputType(unmasked: boolean) {\n    return unmasked ? 'text' : 'password';\n  }\n\n  getTranslation(option: string) {\n    return this.config.getTranslation(option);\n  }\n\n  clear() {\n    this.value = null;\n    this.onModelChange(this.value);\n    this.writeValue(this.value);\n    this.onClear.emit();\n  }\n\n  ngOnDestroy() {\n    if (this.overlay) {\n      ZIndexUtils.clear(this.overlay);\n      this.overlay = null;\n    }\n\n    this.restoreAppend();\n    this.unbindResizeListener();\n\n    if (this.scrollHandler) {\n      this.scrollHandler.destroy();\n      this.scrollHandler = null;\n    }\n\n    if (this.translationSubscription) {\n      this.translationSubscription.unsubscribe();\n    }\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, InputTextModule],\n  exports: [PasswordDirective, Password],\n  declarations: [PasswordDirective, Password, MapperPipe]\n})\nexport class PasswordModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}