{"version":3,"file":"material-zui-angular-autocomplete.mjs","sources":["../../../../projects/material-zui/angular/autocomplete/src/data.ts","../../../../projects/material-zui/angular/autocomplete/src/index.component.ts","../../../../projects/material-zui/angular/autocomplete/src/index.component.html","../../../../projects/material-zui/angular/autocomplete/src/index.module.ts","../../../../projects/material-zui/angular/autocomplete/material-zui-angular-autocomplete.ts"],"sourcesContent":["export const REQUIRED = 'This field is required'\nexport const PATTERN_FAIL = 'This field is not match'\nexport const MAX_LENGTH_MSG = 'Max length is'\nexport const MIN_LENGTH_MSG = 'Min length is'\nexport const MIN_MSG = 'Min is'\nexport const MAX_MSG = 'Max is'\nexport const INVALID_PATTERN = 'Invalid pattern'\nexport const INVALID_EMAIL = 'Invalid email'\nexport const NO_DATA = 'No data'\n\nexport const WIDTH = '200px'\n\nexport const DATETIME_FORMAT = {\n  time: 'HH:mm',\n  fullTime: 'HH:mm:ss',\n  date: 'dd/MM/yyyy',\n  dateTime: 'dd/MM/yyyy HH:mm',\n  dateFullTime: 'dd/MM/yyyy HH:mm:ss',\n}\n\nexport const DEFAULT_DELAY = 500\nexport const DEFAULT_DURATION = 4000\n","import {Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild} from '@angular/core'\nimport {AbstractControl, AsyncValidatorFn, ControlValueAccessor, FormControl, FormGroup, NgForm, NG_VALUE_ACCESSOR, ValidationErrors, ValidatorFn, Validators} from '@angular/forms'\nimport {MatAutocompleteSelectedEvent, MatAutocompleteTrigger} from '@angular/material/autocomplete'\nimport {MatFormFieldAppearance} from '@angular/material/form-field'\nimport {TooltipPosition} from '@angular/material/tooltip'\nimport * as $ from 'jquery'\nimport {Subscription, timer} from 'rxjs'\nimport {debounce, distinctUntilChanged} from 'rxjs/operators'\n\nimport {IInputVal, Items, IValidatorMessage, ZuiGetError, ValidatorFunc} from '@material-zui/angular/type'\nimport * as ZuiB from '@material-zui/core/boolean'\nimport * as ZuiF from '@material-zui/core/faker'\nimport * as ZuiN from '@material-zui/core/number'\nimport {ZuiNullable} from '@material-zui/core/type'\nimport {DEFAULT_DELAY, INVALID_EMAIL, MAX_LENGTH_MSG, MAX_MSG, MIN_LENGTH_MSG, MIN_MSG, PATTERN_FAIL, REQUIRED, WIDTH} from './data'\nimport {IAutoComplete, IType} from './types'\n\n@Component({\n  selector: 'zui-autocomplete',\n  templateUrl: './index.component.html',\n  styleUrls: ['./index.component.scss', '../../assets/scss/style.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ZuiAutocompleteComponent),\n      multi: true,\n    },\n  ],\n})\nexport class ZuiAutocompleteComponent implements ControlValueAccessor {\n  @Input() label!: string\n  @Input() placeholder!: string\n  @Input() valueField!: string\n  @Input() displayField!: string\n  @Input() hintStart!: string\n  @Input() hintEnd!: string\n  @Input() noDataText!: string\n  @Input() name: string = `zui-autocomplete-${ZuiF.uuid()}`\n\n  @Input() pattern!: string\n  @Input() max!: number\n  @Input() min!: number\n  @Input() maxLength!: number\n  @Input() minLength!: number\n\n  @Input() items: Items = []\n\n  tooltipDisabled!: boolean\n  @Input('tooltipDisabled') set _tooltipDisabled(val: IInputVal) {\n    this.tooltipDisabled = ZuiB.toBool(val)\n  }\n  @Input() tooltipPosition: TooltipPosition = 'above'\n\n  #form!: FormGroup\n  @Input() set form(val: NgForm | FormGroup) {\n    if (val) {\n      if (val instanceof NgForm) {\n        this.#form = val.form\n      } else {\n        this.#form = val\n      }\n    }\n  }\n\n  /** \"outline\" | \"legacy\" | \"standard\" | \"fill\", default: \"outline\"*/\n  @Input() appearance: MatFormFieldAppearance = 'outline'\n\n  /** 'on' | 'off' | 'new-password' */\n  @Input() autocomplete: IAutoComplete = 'off'\n\n  /** \"text\" | \"number\" | \"email\" | \"textarea\" */\n  @Input() type: IType = 'text'\n\n  @Input() validatorMessage!: IValidatorMessage\n  validatorMessageDefault: IValidatorMessage = {required: REQUIRED, pattern: PATTERN_FAIL, email: INVALID_EMAIL}\n  validatorMessageVal: IValidatorMessage = this.validatorMessageDefault\n\n  @Input() set model(value: any) {\n    this.#setValue(value)\n  }\n\n  @Input() set required(val: IInputVal) {\n    this.requiredVal = ZuiB.toBool(val)\n  }\n  requiredVal: boolean = false\n\n  @Input() set delay(val: number) {\n    this.#delay = val\n  }\n  #delay: number = 0\n\n  /** default \"200px\", eg: \"300px\", \"400em\", \"500rem\" */\n  @Input() set width(val: string) {\n    this.widthVal = val\n    this.fullWidth = false\n  }\n  widthVal: string = WIDTH\n\n  @Input() set noFullWidth(val: IInputVal) {\n    this.fullWidth = ZuiB.toBoolReverse(val)\n  }\n  fullWidth: boolean = true\n\n  @Input() set validateFirst(val: IInputVal) {\n    if (ZuiB.toBool(val)) this.inputControl.markAllAsTouched()\n  }\n  validateFirstVal!: boolean\n\n  @Input() set disabled(val: IInputVal) {\n    this.disabledVal = ZuiB.toBool(val)\n    if (this.disabledVal) {\n      this.inputControl.disable()\n    } else {\n      this.inputControl.enable()\n    }\n  }\n  disabledVal: boolean = false\n\n  freeTextVal!: boolean\n  @Input() set freeText(val: IInputVal) {\n    this.freeTextVal = ZuiB.toBool(val)\n  }\n\n  caseSensitiveVal!: boolean\n  @Input() set caseSensitive(val: IInputVal) {\n    this.caseSensitiveVal = ZuiB.toBool(val)\n  }\n\n  wrapItemVal: boolean = false\n  @Input() set wrapItem(val: IInputVal) {\n    this.wrapItemVal = ZuiB.toBool(val)\n  }\n\n  disabledValidateVal: boolean = false\n  @Input() set disabledValidate(val: IInputVal) {\n    this.disabledValidateVal = ZuiB.toBool(val)\n  }\n\n  @Input() set disabledFreeText(val: IInputVal) {\n    this.allowFreeText = ZuiB.toBoolReverse(val)\n  }\n  allowFreeText: boolean = true\n\n  @Input() set validator(validator: ValidatorFunc) {\n    this.#validator = validator\n    this.#setAsyncValidator()\n  }\n  #validator!: ZuiNullable<ValidatorFunc>\n\n  @Output() modelChange = new EventEmitter<any>()\n\n  @ViewChild(MatAutocompleteTrigger, {read: MatAutocompleteTrigger}) autoComplete!: MatAutocompleteTrigger\n  @ViewChild('input') input!: ElementRef<HTMLElement>\n\n  #subscription = new Subscription()\n  inputControl = new FormControl()\n  formControl = new FormControl()\n  filterItems!: any[]\n  selectedItem: any\n  searchTerm!: ZuiNullable<string>\n  loading: boolean = false\n  focused: boolean = false\n  first: boolean = true\n\n  ngOnInit(): void {\n    const isFunction = typeof this.items === 'function'\n    if (isFunction && !this.#delay) this.#delay = DEFAULT_DELAY\n    this.#subscription.add(\n      this.inputControl.valueChanges\n        .pipe(\n          debounce(() => timer(this.#delay)),\n          distinctUntilChanged()\n        )\n        .subscribe(this.#setFilter)\n    )\n  }\n\n  ngAfterViewInit(): void {\n    this.#form?.addControl(this.name, this.formControl)\n    $('body *').on('wheel', (e: JQuery.Event) => {\n      if (this.autoComplete?.panelOpen) e.preventDefault()\n    })\n  }\n\n  ngOnChanges(): void {\n    if (this.allowFreeText || !this.focused) this.#setValidator()\n    this.first = false\n  }\n\n  // ngOnDestroy(): void {\n  //   this.#subscription.unsubscribe()\n  //   $('body *').off()\n  // }\n\n  onChange(_: any): void {}\n\n  registerOnTouched(): void {}\n\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn\n  }\n\n  writeValue(value: string): void {\n    this.formControl.setValue(value)\n  }\n\n  get error(): ZuiGetError {\n    if (!this.disabledValidateVal) {\n      const {required, maxlength, minlength, max, min, pattern, email} = this.validatorMessageVal\n      if (this.inputControl?.hasError('required')) return required\n      if (this.inputControl?.hasError('maxlength')) return maxlength\n      if (this.inputControl?.hasError('minlength')) return minlength\n      if (this.inputControl?.hasError('max')) return max\n      if (this.inputControl?.hasError('min')) return min\n      if (this.inputControl?.hasError('pattern')) return pattern\n      if (this.inputControl?.hasError('email')) return email\n      if (this.inputControl?.hasError('validatorError') || this.inputControl?.hasError('validatorMsg')) return this.inputControl.errors?.['validatorMsg']\n    }\n    return false\n  }\n\n  get showClearContent(): boolean {\n    if (!!this.formControl?.value && !this.disabledVal && !this.loading) return this.allowFreeText ? true : !this.focused\n    return false\n  }\n\n  get showLengthContent(): boolean {\n    if (!this.hintEnd && (!!this.maxLength || !!this.max)) return this.allowFreeText ? true : !this.focused\n    return false\n  }\n\n  get tooltipValue(): string {\n    const {value} = this.formControl\n    if (this.allowFreeText) return value\n    const displayValue = this.formControl?.value?.[this.displayField]\n    return displayValue ? displayValue : value\n  }\n\n  get displayFieldType(): string {\n    return this.type === 'number' ? this.valueField : this.displayField\n  }\n\n  #formatNumber = (value: string | number): string => ZuiN.format(value)\n\n  #lengthError = (message: string, number?: number): string => `${message} ${number ? this.#formatNumber(number) : ''}`\n\n  #setLengthValidate = (validatorMessage: IValidatorMessage): void => {\n    let {minlength, maxlength, min, max} = validatorMessage ?? {}\n    if (!maxlength) maxlength = this.#lengthError(MAX_LENGTH_MSG, this.maxLength)\n    if (!minlength) minlength = this.#lengthError(MIN_LENGTH_MSG, this.minLength)\n    if (!max) max = this.#lengthError(MAX_MSG, this.max)\n    if (!min) min = this.#lengthError(MIN_MSG, this.min)\n    this.validatorMessageVal = {...this.validatorMessageDefault, ...validatorMessage, minlength, maxlength, min, max}\n  }\n\n  #setValidator = (): void => {\n    if (!this.disabledValidateVal) {\n      this.inputControl.clearValidators()\n      const validators: ValidatorFn[] = []\n      if (this.requiredVal) validators.push(Validators.required)\n      if (this.maxLength) validators.push(Validators.maxLength(this.maxLength))\n      if (this.minLength) validators.push(Validators.minLength(this.minLength))\n      if (this.max) validators.push(Validators.max(this.max))\n      if (this.min) validators.push(Validators.min(this.min))\n      if (this.pattern) validators.push(Validators.pattern(this.pattern))\n      this.inputControl.setValidators(validators)\n    }\n    this.validatorMessageVal = {...this.validatorMessageDefault, ...this.validatorMessage}\n    this.#setLengthValidate(this.validatorMessage)\n    if (this.validateFirstVal || !this.first) this.inputControl.markAllAsTouched()\n  }\n\n  #searchItems = async (searchTerm: string): Promise<any[]> => {\n    try {\n      this.loading = true\n      let items: any[] = []\n      if (this.type === 'number') {\n        items = await this.#getNumberItems(searchTerm)\n      } else {\n        items = Array.isArray(this.items) ? this.items : await this.items(searchTerm)\n      }\n      if (this.caseSensitiveVal) return items.filter(item => item[this.displayFieldType].includes(searchTerm))\n      const textLower = searchTerm?.toLowerCase()\n      return items.filter(item => item?.[this.displayFieldType]?.toLowerCase().includes(textLower))\n    } finally {\n      this.loading = false\n    }\n  }\n\n  #setFilter = async (searchTerm: string): Promise<void> => {\n    if (typeof searchTerm === 'string' || typeof searchTerm === 'number' || !searchTerm) {\n      const allowSearch = this.allowFreeText ? this.searchTerm !== searchTerm || !this.filterItems?.length : true\n      if (allowSearch) {\n        searchTerm = searchTerm?.toString() ?? ''\n        this.searchTerm = searchTerm\n        if (this.allowFreeText) this.#emit(searchTerm)\n        this.filterItems = await this.#searchItems(searchTerm)\n        // this.inputControl.markAllAsTouched()\n      }\n    }\n  }\n\n  #setValue = (value: any) => {\n    this.formControl.setValue(value)\n    if (this.allowFreeText) {\n      const content = value?.[this.displayFieldType] ?? value ?? ''\n      this.inputControl.setValue(content, {emitEvent: false})\n    } else {\n      this.onSelect({option: {value}} as MatAutocompleteSelectedEvent)\n      this.onBlur()\n    }\n  }\n\n  #getNumberItems = async (searchTerm: string): Promise<any[]> => {\n    let items: any[] = []\n    if (this.type === 'number') {\n      if (Array.isArray(this.items) && this.items.length > 0 && this.items?.[0]?.[this.displayField] === undefined) {\n        items = this.items\n      } else if (typeof this.items === 'function') {\n        items = await this.items(searchTerm)\n      }\n    }\n    return items.map(item => ({\n      [this.valueField]: item?.toString() ?? '',\n      [this.displayField]: this.#formatNumber(item),\n    }))\n  }\n\n  #getCurrentValue = () => {\n    const displayValue = this.selectedItem?.[this.displayFieldType]\n    if (this.allowFreeText) return displayValue\n    return displayValue ? displayValue : this.selectedItem\n  }\n\n  #emit = (_value?: any) => {\n    let value = _value\n    if (value === undefined) value = this.#getCurrentValue()\n    this.modelChange.emit(value)\n    this.formControl.setValue(value)\n  }\n\n  #getSelectedValue = (value: string) => (this.allowFreeText ? value ?? '' : this.selectedItem ?? {})\n\n  #customValidator =\n    (): AsyncValidatorFn =>\n    async (c: AbstractControl): Promise<ValidationErrors | null> => {\n      if (this.#validator) {\n        const value = this.#getSelectedValue(c?.value)\n        const validator = this.#validator(value)\n        let validatorMsg: string = ''\n        let validatorError: boolean = !!validator\n        if (typeof validator === 'string') {\n          validatorMsg = validator\n        } else if (typeof validator === 'boolean') {\n          validatorError = !validator\n        } else if (validator instanceof Promise) {\n          const resultValidator = await validator\n          if (typeof resultValidator === 'string') {\n            validatorMsg = resultValidator\n          } else if (typeof resultValidator === 'boolean') {\n            validatorError = !resultValidator\n          }\n        }\n        return validatorError ? {validatorError, validatorMsg} : null\n      }\n      return null\n    }\n\n  #setAsyncValidator = () => {\n    if (this.#validator) {\n      this.inputControl.clearAsyncValidators()\n      const asyncValidators: AsyncValidatorFn[] = []\n      asyncValidators.push(this.#customValidator())\n      this.inputControl.setAsyncValidators(asyncValidators)\n      this.inputControl.updateValueAndValidity()\n      if (this.validateFirstVal || !this.first) this.formControl.markAllAsTouched()\n    }\n  }\n\n  onSelect = (e: MatAutocompleteSelectedEvent): void => {\n    this.selectedItem = e?.option?.value\n    if (this.allowFreeText) {\n      const value = this.inputControl?.value?.[this.displayFieldType] ?? ''\n      this.inputControl.setValue(value, {emitEvent: false})\n    } else {\n      this.placeholder = this.#getCurrentValue()\n    }\n    this.#emit()\n    this.input?.nativeElement?.blur()\n  }\n\n  onFocus = (): void => {\n    if (this.allowFreeText) {\n      this.focused = true\n      this.#setFilter(this.inputControl.value ?? '')\n    } else {\n      this.inputControl.clearValidators()\n      this.focused = true\n      const emitEvent = !this.searchTerm\n      this.inputControl.setValue(this.searchTerm ?? '', {emitEvent})\n    }\n  }\n\n  onBlur = (_e?: Event): void => {\n    if (this.allowFreeText) {\n      this.focused = false\n    } else {\n      if (this.focused) {\n        this.#setValidator()\n        this.focused = false\n      }\n      this.inputControl.setValue(this.#getCurrentValue(), {emitEvent: false})\n    }\n  }\n\n  // click clear when focusing in input will trigger onBlur then clear action\n  clear = (e: Event): void => {\n    const emitEvent = this.allowFreeText ? this.autoComplete.panelOpen || !this.filterItems?.length : typeof this.items !== 'function'\n    this.inputControl.setValue('', {emitEvent})\n    this.formControl.reset()\n    this.searchTerm = null\n    this.onSelect({option: {value: null}} as any)\n    e.stopPropagation()\n  }\n}\n","<mat-form-field\n  [class.w-100]=\"fullWidth\"\n  [ngStyle]=\"{width: widthVal}\"\n  [appearance]=\"appearance\"\n  [matTooltip]=\"tooltipValue\"\n  [matTooltipDisabled]=\"tooltipDisabled\"\n  [matTooltipPosition]=\"tooltipPosition\"\n>\n  <mat-label>{{ label }}</mat-label>\n  <input\n    *ngIf=\"type === 'text'\"\n    matInput\n    #autocompleteTrigger\n    #input\n    type=\"text\"\n    [class.zui-autocomplete-input]=\"!allowFreeText\"\n    [placeholder]=\"placeholder\"\n    [formControl]=\"inputControl\"\n    [autocomplete]=\"autocomplete\"\n    [matAutocomplete]=\"auto\"\n    [required]=\"!disabledValidateVal && requiredVal\"\n    (focus)=\"onFocus()\"\n    (blur)=\"onBlur($event)\"\n  />\n  <input\n    *ngIf=\"type === 'email'\"\n    matInput\n    email\n    #autocompleteTrigger\n    #input\n    type=\"email\"\n    [class.zui-autocomplete-input]=\"!allowFreeText\"\n    [placeholder]=\"placeholder\"\n    [formControl]=\"inputControl\"\n    [autocomplete]=\"autocomplete\"\n    [matAutocomplete]=\"auto\"\n    [required]=\"!disabledValidateVal && requiredVal\"\n    (focus)=\"onFocus()\"\n    (blur)=\"onBlur($event)\"\n  />\n  <input\n    *ngIf=\"type === 'number'\"\n    matInput\n    #autocompleteTrigger\n    #input\n    type=\"number\"\n    class=\"zui-number-hide-arrows\"\n    [class.zui-autocomplete-input]=\"!allowFreeText\"\n    [placeholder]=\"placeholder\"\n    [formControl]=\"inputControl\"\n    [autocomplete]=\"autocomplete\"\n    [matAutocomplete]=\"auto\"\n    [required]=\"!disabledValidateVal && requiredVal\"\n    (focus)=\"onFocus()\"\n    (blur)=\"onBlur($event)\"\n  />\n  <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event)\">\n    <mat-option\n      *ngFor=\"let item of filterItems\"\n      [value]=\"item\"\n      [matTooltip]=\"item[displayField]\"\n      [matTooltipDisabled]=\"tooltipDisabled || wrapItemVal\"\n      [matTooltipPosition]=\"tooltipPosition\"\n      [class.zui-option-wrap]=\"wrapItemVal\"\n    >\n      {{ item[displayField] }}\n    </mat-option>\n    <mat-option *ngIf=\"!filterItems?.length && noDataText\" class=\"text-center\" disabled>\n      <mat-icon class=\"m-0 fs-20\">filter_none</mat-icon>\n      <span class=\"ml-5\">{{ noDataText }}</span>\n    </mat-option>\n  </mat-autocomplete>\n\n  <ng-container matSuffix>\n    <mat-spinner *ngIf=\"loading\" strokeWidth=\"2\" mode=\"indeterminate\" diameter=\"18\" value=\"100\"></mat-spinner>\n    <button *ngIf=\"showClearContent\" class=\"zui-autocomplete-clear\" mat-icon-button aria-label=\"Clear\" (click)=\"clear($event)\">\n      <mat-icon>close</mat-icon>\n    </button>\n  </ng-container>\n\n  <mat-hint *ngIf=\"hintStart\" [align]=\"'start'\">{{ hintStart }}</mat-hint>\n  <mat-hint [align]=\"'end'\">\n    <ng-container *ngIf=\"hintEnd\">{{ hintEnd }}</ng-container>\n    <ng-container *ngIf=\"showLengthContent\">\n      <ng-container *ngIf=\"minLength || maxLength\">\n        <ng-container *ngIf=\"!minLength\">{{ (inputControl.value?.length | formatNumber) || 0 }}/{{ maxLength | formatNumber }}</ng-container>\n        <ng-container *ngIf=\"minLength\">{{ (inputControl.value?.length | formatNumber) || 0 }}/({{ minLength | formatNumber }} - {{ maxLength | formatNumber }})</ng-container>\n      </ng-container>\n      <ng-container *ngIf=\"min !== undefined || max !== undefined\">\n        <ng-container *ngIf=\"!min\">{{ max | formatNumber }}</ng-container>\n        <ng-container *ngIf=\"min\">{{ min | formatNumber }} - {{ max | formatNumber }}</ng-container>\n      </ng-container>\n    </ng-container>\n  </mat-hint>\n  <mat-error *ngIf=\"error\">{{ error }}</mat-error>\n</mat-form-field>\n","import {NgModule} from '@angular/core'\nimport {ZuiAngularModule} from '@material-zui/angular/modules'\nimport {ZuiAutocompleteComponent} from './index.component'\n\n@NgModule({\n  imports: [ZuiAngularModule],\n  declarations: [ZuiAutocompleteComponent],\n  exports: [ZuiAutocompleteComponent],\n})\nexport class ZuiAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}