{"version":3,"file":"moxa-formoxa-mx-password-input.mjs","sources":["../../../../libs/formoxa/mx-password-input/src/lib/components/mx-password-input.component.ts","../../../../libs/formoxa/mx-password-input/src/lib/components/mx-password-input.component.html","../../../../libs/formoxa/mx-password-input/src/lib/components/mx-validation-rule-list.component.ts","../../../../libs/formoxa/mx-password-input/src/lib/directives/mx-password-input-validation.directive.ts","../../../../libs/formoxa/mx-password-input/src/moxa-formoxa-mx-password-input.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  Optional,\n  Self,\n  forwardRef,\n  inject,\n  input\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MxIconButtonDirective } from '@moxa/formoxa/mx-button';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'mx-password-input',\n  templateUrl: './mx-password-input.component.html',\n  styleUrls: ['./mx-password-input.component.scss'],\n  imports: [FormsModule, MatInputModule, MatButtonModule, MatIconModule, MxIconButtonDirective],\n  providers: [\n    {\n      provide: MatFormFieldControl,\n      useExisting: forwardRef(() => MxPasswordInputComponent)\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MxPasswordInputComponent implements ControlValueAccessor, MatFormFieldControl<string>, OnDestroy {\n  static nextId = 0;\n  stateChanges = new Subject<void>();\n  focused = false;\n  touched = false;\n  controlType: string = 'mx-password-input';\n  describedBy = '';\n  shouldLabelFloat = true;\n  isVisible = false;\n\n  private onChange!: (value: string) => void;\n  private onTouched!: () => void;\n  private _cdr = inject(ChangeDetectorRef);\n\n  @Input()\n  get value() {\n    return this._value;\n  }\n  set value(v: string) {\n    this._value = v;\n    this.stateChanges.next();\n    if (this.onChange) {\n      this.onChange(v);\n    }\n  }\n\n  @Input()\n  get placeholder() {\n    return this._placeholder;\n  }\n  set placeholder(plh) {\n    this._placeholder = plh;\n    this.stateChanges.next();\n  }\n\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(req: BooleanInput) {\n    this._required = coerceBooleanProperty(req);\n    this.stateChanges.next();\n  }\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: BooleanInput) {\n    this._disabled = coerceBooleanProperty(value);\n    this.stateChanges.next();\n  }\n\n  @Input()\n  get errorState(): boolean {\n    return this._errorState || (!!this.ngControl?.invalid && this.touched);\n  }\n  set errorState(value: boolean) {\n    this._errorState = value;\n  }\n\n  maxlength = input<number | string | null>(null);\n  autocomplete = input<'new-password' | 'current-password' | 'off' | ''>('');\n\n  private _value = '';\n  private _placeholder = '';\n  private _required = false;\n  private _disabled = false;\n  private _errorState = false;\n\n  get empty(): boolean {\n    return !this.value;\n  }\n\n  @HostBinding() id = `mx-password-input-${MxPasswordInputComponent.nextId++}`;\n  @HostBinding('class') class = 'mx-password-input';\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    private elRef: ElementRef<HTMLElement>\n  ) {\n    if (this.ngControl != null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngDoCheck() {\n    if (this.ngControl && this.ngControl.control) {\n      const wasTouched = this.touched;\n      this.touched = this.ngControl.control.touched;\n\n      if (wasTouched !== this.touched) {\n        this.stateChanges.next();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.stateChanges.next();\n    this.stateChanges.complete();\n  }\n\n  setDescribedByIds(ids: string[]): void {\n    const controlElement = this.elRef.nativeElement.querySelector('input')!;\n    controlElement.setAttribute('aria-describedby', ids.join(' '));\n  }\n\n  onContainerClick(event: MouseEvent): void {\n    if ((event.target as Element).tagName.toLowerCase() !== 'input') {\n      this.elRef.nativeElement?.querySelector('input')?.focus();\n    }\n  }\n\n  writeValue(data: string): void {\n    this.value = data;\n    this._cdr.detectChanges();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n    this.stateChanges.next();\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this._cdr.markForCheck();\n  }\n\n  onFocusIn(event: FocusEvent) {\n    if (!this.focused) {\n      this.focused = true;\n      this.stateChanges.next();\n    }\n  }\n\n  onFocusOut(event: FocusEvent) {\n    this.touched = true;\n    this.focused = false;\n    this.stateChanges.next();\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n\n  onToggleVisibility(): void {\n    this.isVisible = !this.isVisible;\n  }\n}\n","<input\n  matInput\n  class=\"mx-password-input__input\"\n  [autocomplete]=\"autocomplete()\"\n  [type]=\"isVisible ? 'text' : 'password'\"\n  [placeholder]=\"placeholder\"\n  [disabled]=\"disabled\"\n  [(ngModel)]=\"value\"\n  [maxlength]=\"maxlength()\"\n  (focus)=\"onFocusIn($event)\"\n  (focusout)=\"onFocusOut($event)\"\n/>\n<button\n  mat-icon-button\n  mxIconButton\n  class=\"mx-password-input__button\"\n  type=\"button\"\n  [class.disabled]=\"disabled\"\n  (click)=\"onToggleVisibility()\"\n>\n  <mat-icon [svgIcon]=\"isVisible ? 'icon:visibility' : 'icon:visibility_off'\"></mat-icon>\n</button>\n","import { AsyncPipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, tap } from 'rxjs/operators';\nimport { MxPasswordValidationRule } from '../models/mx-password-validation.model';\n\ninterface Rule extends MxPasswordValidationRule {\n  isValid: boolean;\n}\n\n@Component({\n  selector: 'mx-validation-rule-list',\n  styleUrls: ['./mx-validation-rule-list.component.scss'],\n  imports: [AsyncPipe, MatIconModule],\n  template: `\n    @if (debouncerActions$ | async) {}\n\n    <ul class=\"mx-validation-rule-list__content\">\n      @for (rule of displayRules; track rule) {\n        <li class=\"mx-validation-rule-list__rule\">\n          @if (isInputDirty) {\n            <mat-icon\n              [class.valid]=\"rule.isValid\"\n              [class.invalid]=\"!rule.isValid\"\n              [svgIcon]=\"rule.isValid ? 'icon:done' : 'icon:clear'\"\n            />\n          } @else {\n            <div class=\"mx-validation-rule-list__rule__dot\"></div>\n          }\n          {{ rule.label }}\n        </li>\n      }\n    </ul>\n  `\n})\nexport class mxValidationRuleListComponent implements OnInit {\n  @Input() rules: MxPasswordValidationRule[] = [];\n  @Input()\n  get value() {\n    return this._value;\n  }\n  set value(v: string) {\n    this.debouncer$.next(v);\n  }\n\n  private _value = '';\n  private debouncer$: Subject<string> = new Subject<string>();\n\n  isInputDirty = false;\n  displayRules: Rule[] = [];\n  debouncerActions$: Observable<string> = this.debouncer$.pipe(\n    debounceTime(100),\n    tap((v: string) => {\n      this._value = v;\n      this.validateValue(v);\n    })\n  );\n\n  get isPasswordValid(): boolean {\n    return this.displayRules.every((rule) => rule.isValid);\n  }\n\n  ngOnInit(): void {\n    this.displayRules = this.rules.map((rule) => ({\n      ...rule,\n      isValid: false\n    }));\n  }\n\n  private validateValue(value: string) {\n    this.displayRules.forEach((rule: Rule) => {\n      rule.isValid = rule.validator(value);\n    });\n  }\n}\n","import { ComponentRef, Directive, ElementRef, Input, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { MxPasswordInputComponent } from '../components/mx-password-input.component';\nimport { mxValidationRuleListComponent } from '../components/mx-validation-rule-list.component';\nimport { MxPasswordValidationRule } from '../models/mx-password-validation.model';\n\n@Directive({\n  selector: 'mx-password-input[mxPasswordInputValidation]',\n  standalone: true\n})\nexport class MxPasswordInputValidationDirective implements OnInit, OnDestroy {\n  @Input() mxPasswordInputValidationRules: MxPasswordValidationRule[] = [];\n  private componentRef!: ComponentRef<mxValidationRuleListComponent>;\n  private valueSubscription!: Subscription;\n  private invalidSubscription!: Subscription;\n\n  constructor(\n    private elRef: ElementRef<HTMLElement>,\n    private viewContainerRef: ViewContainerRef,\n    private component: MxPasswordInputComponent\n  ) {}\n\n  ngOnInit() {\n    this.componentRef = this.viewContainerRef.createComponent(mxValidationRuleListComponent);\n    this.componentRef.instance.rules = this.mxPasswordInputValidationRules;\n\n    const matFormField = this.elRef.nativeElement.closest('mat-form-field');\n    if (matFormField) {\n      matFormField.append(this.componentRef.location.nativeElement);\n    }\n\n    this.valueSubscription = this.component.stateChanges.subscribe(() => {\n      this.componentRef.instance.value = this.component.value;\n    });\n\n    this._addInputEventListener();\n\n    const validatorFns: ValidatorFn[] = this.mxPasswordInputValidationRules.map((rule) => {\n      return (control: AbstractControl): { passwordValidation: true } | null => {\n        return rule.validator(control.value) ? null : { passwordValidation: true };\n      };\n    });\n\n    if (this.component.ngControl.control && validatorFns.length) {\n      this.component.ngControl.control.addValidators(validatorFns);\n      this.component.ngControl.control.updateValueAndValidity();\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.valueSubscription) {\n      this.valueSubscription.unsubscribe();\n    }\n    if (this.invalidSubscription) {\n      this.invalidSubscription.unsubscribe();\n    }\n    this._removeInputEventListener();\n  }\n\n  private _addInputEventListener(): void {\n    const input = this.elRef.nativeElement.querySelector('input');\n    if (input) {\n      input.addEventListener('blur', () => {\n        this.setInputDirty();\n      });\n      input.addEventListener('input', () => {\n        this.setInputDirty();\n      });\n    }\n  }\n\n  private _removeInputEventListener(): void {\n    const input = this.elRef.nativeElement.querySelector('input');\n    if (input) {\n      input.removeEventListener('blur', () => {\n        this.setInputDirty();\n      });\n      input.removeEventListener('input', () => {\n        this.setInputDirty();\n      });\n    }\n  }\n\n  private setInputDirty = () => {\n    this.componentRef.instance.isInputDirty = true;\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.MxPasswordInputComponent"],"mappings":"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"}