{"version":3,"file":"axulus-uikit-autocomplete.mjs","sources":["../../src/app/components/autocomplete/autocomplete.ts","../../src/app/components/autocomplete/axulus-uikit-autocomplete.ts"],"sourcesContent":["import { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  IterableDiffers,\n  NgModule,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OverlayService, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys } from '@axulus/uikit/api';\nimport { AutoFocusModule } from '@axulus/uikit/autofocus';\nimport { ButtonModule } from '@axulus/uikit/button';\nimport { ConnectedOverlayScrollHandler, DomHandler } from '@axulus/uikit/dom';\nimport { InputTextModule } from '@axulus/uikit/inputtext';\nimport { RippleModule } from '@axulus/uikit/ripple';\nimport { Scroller, ScrollerModule, ScrollerOptions } from '@axulus/uikit/scroller';\nimport { ObjectUtils, UniqueComponentId, ZIndexUtils } from '@axulus/uikit/utils';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => AutoComplete),\n  multi: true\n};\n\n@Component({\n  selector: 'p-autoComplete',\n  template: `\n    <span\n      #container\n      [ngClass]=\"{\n        'p-autocomplete p-component': true,\n        'p-autocomplete-dd': dropdown,\n        'p-autocomplete-multiple': multiple\n      }\"\n      [ngStyle]=\"style\"\n      [class]=\"styleClass\"\n    >\n      <input\n        pAutoFocus\n        [autofocus]=\"autofocus\"\n        *ngIf=\"!multiple\"\n        #in\n        [attr.type]=\"type\"\n        [attr.id]=\"inputId\"\n        [ngStyle]=\"inputStyle\"\n        [class]=\"inputStyleClass\"\n        [autocomplete]=\"autocomplete\"\n        [attr.required]=\"required\"\n        [attr.name]=\"name\"\n        class=\"p-autocomplete-input p-inputtext p-component\"\n        [ngClass]=\"{ 'p-autocomplete-dd-input': dropdown, 'p-disabled': disabled }\"\n        [value]=\"inputFieldValue\"\n        aria-autocomplete=\"list\"\n        role=\"searchbox\"\n        (click)=\"onInputClick($event)\"\n        (input)=\"onInput($event)\"\n        (keydown)=\"onKeydown($event)\"\n        (keyup)=\"onKeyup($event)\"\n        (focus)=\"onInputFocus($event)\"\n        (blur)=\"onInputBlur($event)\"\n        (change)=\"onInputChange($event)\"\n        (paste)=\"onInputPaste($event)\"\n        [attr.placeholder]=\"placeholder\"\n        [attr.size]=\"size\"\n        [attr.maxlength]=\"maxlength\"\n        [attr.tabindex]=\"tabindex\"\n        [readonly]=\"readonly\"\n        [disabled]=\"disabled\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n        [attr.aria-required]=\"required\"\n      />\n      <i *ngIf=\"!multiple && filled && !disabled && showClear\" class=\"p-autocomplete-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n      <i *ngIf=\"multiple && filled && !disabled && showClear\" class=\"p-autocomplete-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n      <ul\n        *ngIf=\"multiple\"\n        #multiContainer\n        class=\"p-autocomplete-multiple-container p-component p-inputtext\"\n        [ngClass]=\"{ 'p-disabled': disabled, 'p-focus': focus }\"\n        (click)=\"multiIn.focus()\"\n      >\n        <li #token *ngFor=\"let val of value\" class=\"p-autocomplete-token\">\n          <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: { $implicit: val }\"></ng-container>\n          <span *ngIf=\"!selectedItemTemplate\" class=\"p-autocomplete-token-label\">{{ resolveFieldData(val) }}</span>\n          <span class=\"p-autocomplete-token-icon pi pi-times-circle\" (click)=\"removeItem(token)\" *ngIf=\"!disabled && !readonly\"></span>\n        </li>\n        <li class=\"p-autocomplete-input-token\">\n          <input\n            pAutoFocus\n            [autofocus]=\"autofocus\"\n            #multiIn\n            [attr.type]=\"type\"\n            [attr.id]=\"inputId\"\n            [disabled]=\"disabled\"\n            [attr.placeholder]=\"value && value.length ? null : placeholder\"\n            [attr.tabindex]=\"tabindex\"\n            [attr.maxlength]=\"maxlength\"\n            (input)=\"onInput($event)\"\n            (click)=\"onInputClick($event)\"\n            (keydown)=\"onKeydown($event)\"\n            [readonly]=\"readonly\"\n            (keyup)=\"onKeyup($event)\"\n            (focus)=\"onInputFocus($event)\"\n            (blur)=\"onInputBlur($event)\"\n            (change)=\"onInputChange($event)\"\n            (paste)=\"onInputPaste($event)\"\n            [autocomplete]=\"autocomplete\"\n            [ngStyle]=\"inputStyle\"\n            [class]=\"inputStyleClass\"\n            [attr.aria-label]=\"ariaLabel\"\n            [attr.aria-labelledby]=\"ariaLabelledBy\"\n            [attr.aria-required]=\"required\"\n            aria-autocomplete=\"list\"\n            [attr.aria-controls]=\"listId\"\n            role=\"searchbox\"\n            [attr.aria-expanded]=\"overlayVisible\"\n            aria-haspopup=\"true\"\n            [attr.aria-activedescendant]=\"'p-highlighted-option'\"\n          />\n        </li>\n      </ul>\n      <i *ngIf=\"loading\" class=\"p-autocomplete-loader pi pi-spinner pi-spin\"></i\n      ><button\n        #ddBtn\n        type=\"button\"\n        pButton\n        [icon]=\"dropdownIcon\"\n        [attr.aria-label]=\"dropdownAriaLabel\"\n        class=\"p-autocomplete-dropdown\"\n        [disabled]=\"disabled\"\n        pRipple\n        (click)=\"handleDropdownClick($event)\"\n        *ngIf=\"dropdown\"\n        [attr.tabindex]=\"tabindex\"\n      ></button>\n      <div\n        #panel\n        *ngIf=\"overlayVisible\"\n        (click)=\"onOverlayClick($event)\"\n        [ngClass]=\"['p-autocomplete-panel p-component']\"\n        [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight\"\n        [ngStyle]=\"panelStyle\"\n        [class]=\"panelStyleClass\"\n        [@overlayAnimation]=\"{\n          value: 'visible',\n          params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions }\n        }\"\n        (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\"\n        (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\"\n      >\n        <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n        <p-scroller\n          *ngIf=\"virtualScroll\"\n          #scroller\n          [items]=\"suggestions\"\n          [style]=\"{ height: scrollHeight }\"\n          [itemSize]=\"virtualScrollItemSize || _itemSize\"\n          [autoSize]=\"true\"\n          [lazy]=\"lazy\"\n          (onLazyLoad)=\"onLazyLoad.emit($event)\"\n          [options]=\"virtualScrollOptions\"\n        >\n          <ng-template pTemplate=\"content\" let-items let-scrollerOptions=\"options\">\n            <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: items, options: scrollerOptions }\"></ng-container>\n          </ng-template>\n          <ng-container *ngIf=\"loaderTemplate\">\n            <ng-template pTemplate=\"loader\" let-scrollerOptions=\"options\">\n              <ng-container *ngTemplateOutlet=\"loaderTemplate; context: { options: scrollerOptions }\"></ng-container>\n            </ng-template>\n          </ng-container>\n        </p-scroller>\n        <ng-container *ngIf=\"!virtualScroll\">\n          <ng-container *ngTemplateOutlet=\"buildInItems; context: { $implicit: suggestions, options: {} }\"></ng-container>\n        </ng-container>\n\n        <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n          <ul\n            #items\n            role=\"listbox\"\n            [attr.id]=\"listId\"\n            class=\"p-autocomplete-items\"\n            [ngClass]=\"scrollerOptions.contentStyleClass\"\n            [style]=\"scrollerOptions.contentStyle\"\n          >\n            <ng-container *ngIf=\"group\">\n              <ng-template ngFor let-optgroup [ngForOf]=\"items\">\n                <li class=\"p-autocomplete-item-group\" [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\">\n                  <span *ngIf=\"!groupTemplate\">{{ getOptionGroupLabel(optgroup) || 'empty' }}</span>\n                  <ng-container *ngTemplateOutlet=\"groupTemplate; context: { $implicit: optgroup }\"></ng-container>\n                </li>\n                <ng-container *ngTemplateOutlet=\"itemslist; context: { $implicit: getOptionGroupChildren(optgroup) }\"></ng-container>\n              </ng-template>\n            </ng-container>\n            <ng-container *ngIf=\"!group\">\n              <ng-container *ngTemplateOutlet=\"itemslist; context: { $implicit: items }\"></ng-container>\n            </ng-container>\n            <ng-template #itemslist let-suggestionsToDisplay>\n              <li\n                role=\"option\"\n                *ngFor=\"let option of suggestionsToDisplay; let idx = index\"\n                class=\"p-autocomplete-item\"\n                pRipple\n                [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\"\n                [ngClass]=\"{ 'p-highlight': option === highlightOption }\"\n                [id]=\"highlightOption == option ? 'p-highlighted-option' : ''\"\n                (click)=\"selectItem(option)\"\n              >\n                <span *ngIf=\"!itemTemplate\">{{ resolveFieldData(option) }}</span>\n                <ng-container\n                  *ngTemplateOutlet=\"\n                    itemTemplate;\n                    context: {\n                      $implicit: option,\n                      index: scrollerOptions.getOptions ? scrollerOptions.getOptions(idx) : idx\n                    }\n                  \"\n                ></ng-container>\n              </li>\n            </ng-template>\n            <li\n              *ngIf=\"noResults && showEmptyMessage\"\n              class=\"p-autocomplete-empty-message\"\n              [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\"\n            >\n              <ng-container *ngIf=\"!emptyTemplate; else empty\">\n                {{ emptyMessageLabel }}\n              </ng-container>\n              <ng-container #empty *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n            </li>\n          </ul>\n        </ng-template>\n        <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n      </div>\n    </span>\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]': '((focus && !disabled) || autofocus) || overlayVisible',\n    '[class.p-autocomplete-clearable]': 'showClear && !disabled'\n  },\n  providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./autocomplete.css']\n})\nexport class AutoComplete implements AfterViewChecked, AfterContentInit, OnDestroy, ControlValueAccessor {\n  @Input() minLength: number = 1;\n\n  @Input() delay: number = 300;\n\n  @Input() style: any;\n\n  @Input() panelStyle: any;\n\n  @Input() styleClass: string;\n\n  @Input() panelStyleClass: string;\n\n  @Input() inputStyle: any;\n\n  @Input() inputId: string;\n\n  @Input() inputStyleClass: string;\n\n  @Input() placeholder: string;\n\n  @Input() readonly: boolean;\n\n  @Input() disabled: boolean;\n\n  @Input() scrollHeight: string = '200px';\n\n  @Input() lazy: boolean = false;\n\n  @Input() virtualScroll: boolean;\n\n  @Input() virtualScrollItemSize: number;\n\n  @Input() virtualScrollOptions: ScrollerOptions;\n\n  @Input() maxlength: number;\n\n  @Input() name: string;\n\n  @Input() required: boolean;\n\n  @Input() size: number;\n\n  @Input() appendTo: any;\n\n  @Input() autoHighlight: boolean;\n\n  @Input() forceSelection: boolean;\n\n  @Input() type: string = 'text';\n\n  @Input() autoZIndex: boolean = true;\n\n  @Input() baseZIndex: number = 0;\n\n  @Input() ariaLabel: string;\n\n  @Input() dropdownAriaLabel: string;\n\n  @Input() ariaLabelledBy: string;\n\n  @Input() dropdownIcon: string = 'pi pi-chevron-down';\n\n  @Input() unique: boolean = true;\n\n  @Input() group: boolean;\n\n  @Input() completeOnFocus: boolean = false;\n\n  @Input() showClear: boolean = false;\n\n  @Input() field: string;\n\n  @Input() dropdown: boolean;\n\n  @Input() showEmptyMessage: boolean;\n\n  @Input() dropdownMode: string = 'blank';\n\n  @Input() multiple: boolean;\n\n  @Input() tabindex: number;\n\n  @Input() dataKey: string;\n\n  @Input() emptyMessage: string;\n\n  @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n  @Input() hideTransitionOptions: string = '.1s linear';\n\n  @Input() autofocus: boolean;\n\n  @Input() autocomplete: string = 'off';\n\n  @Input() optionGroupChildren: string;\n\n  @Input() optionGroupLabel: string;\n\n  @ViewChild('container') containerEL: ElementRef;\n\n  @ViewChild('in') inputEL: ElementRef;\n\n  @ViewChild('multiIn') multiInputEL: ElementRef;\n\n  @ViewChild('multiContainer') multiContainerEL: ElementRef;\n\n  @ViewChild('ddBtn') dropdownButton: ElementRef;\n\n  @ViewChild('items') itemsViewChild: ElementRef;\n\n  @ViewChild('scroller') scroller: Scroller;\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  @Output() completeMethod: EventEmitter<any> = new EventEmitter();\n\n  @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n  @Output() onUnselect: EventEmitter<any> = new EventEmitter();\n\n  @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n  @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n  @Output() onDropdownClick: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n  @Output() onKeyUp: EventEmitter<any> = new EventEmitter();\n\n  @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n  @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n  @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n  /* @deprecated */\n  _itemSize: number;\n  @Input() get itemSize(): number {\n    return this._itemSize;\n  }\n  set itemSize(val: number) {\n    this._itemSize = val;\n    console.warn('The itemSize property is deprecated, use virtualScrollItemSize property instead.');\n  }\n\n  overlay: HTMLDivElement;\n\n  itemsWrapper: HTMLDivElement;\n\n  itemTemplate: TemplateRef<any>;\n\n  emptyTemplate: TemplateRef<any>;\n\n  headerTemplate: TemplateRef<any>;\n\n  footerTemplate: TemplateRef<any>;\n\n  selectedItemTemplate: TemplateRef<any>;\n\n  groupTemplate: TemplateRef<any>;\n\n  loaderTemplate: TemplateRef<any>;\n\n  value: any;\n\n  _suggestions: any[];\n\n  onModelChange: Function = () => {};\n\n  onModelTouched: Function = () => {};\n\n  timeout: any;\n\n  overlayVisible: boolean = false;\n\n  documentClickListener: any;\n\n  suggestionsUpdated: boolean;\n\n  highlightOption: any;\n\n  highlightOptionChanged: boolean;\n\n  focus: boolean = false;\n\n  filled: boolean;\n\n  inputClick: boolean;\n\n  inputKeyDown: boolean;\n\n  noResults: boolean;\n\n  differ: any;\n\n  inputFieldValue: string = null;\n\n  loading: boolean;\n\n  scrollHandler: any;\n\n  documentResizeListener: any;\n\n  forceSelectionUpdateModelTimeout: any;\n\n  listId: string;\n\n  itemClicked: boolean;\n\n  inputValue: string = null;\n\n  constructor(\n    public el: ElementRef,\n    public renderer: Renderer2,\n    public cd: ChangeDetectorRef,\n    public differs: IterableDiffers,\n    public config: PrimeNGConfig,\n    public overlayService: OverlayService\n  ) {\n    this.differ = differs.find([]).create(null);\n    this.listId = UniqueComponentId() + '_list';\n  }\n\n  @Input() get suggestions(): any[] {\n    return this._suggestions;\n  }\n\n  set suggestions(val: any[]) {\n    this._suggestions = val;\n    this.handleSuggestionsChange();\n  }\n\n  ngAfterViewChecked() {\n    //Use timeouts as since Angular 4.2, AfterViewChecked is broken and not called after panel is updated\n    if (this.suggestionsUpdated && this.overlay && this.overlay.offsetParent) {\n      setTimeout(() => {\n        if (this.overlay) {\n          this.alignOverlay();\n        }\n      }, 1);\n      this.suggestionsUpdated = false;\n    }\n\n    if (this.highlightOptionChanged) {\n      setTimeout(() => {\n        if (this.overlay && this.itemsWrapper) {\n          let listItem = DomHandler.findSingle(this.overlay, 'li.p-highlight');\n\n          if (listItem) {\n            DomHandler.scrollInView(this.itemsWrapper, listItem);\n          }\n        }\n      }, 1);\n      this.highlightOptionChanged = false;\n    }\n  }\n\n  handleSuggestionsChange() {\n    if (this._suggestions != null && this.loading) {\n      this.highlightOption = null;\n      if (this._suggestions.length) {\n        this.noResults = false;\n        this.show();\n        this.suggestionsUpdated = true;\n\n        if (this.autoHighlight) {\n          this.highlightOption = this._suggestions[0];\n        }\n      } else {\n        this.noResults = true;\n\n        if (this.showEmptyMessage) {\n          this.show();\n          this.suggestionsUpdated = true;\n        } else {\n          this.hide();\n        }\n      }\n\n      this.loading = false;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach((item) => {\n      switch (item.getType()) {\n        case 'item':\n          this.itemTemplate = item.template;\n          break;\n\n        case 'group':\n          this.groupTemplate = item.template;\n          break;\n\n        case 'selectedItem':\n          this.selectedItemTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'empty':\n          this.emptyTemplate = item.template;\n          break;\n\n        case 'footer':\n          this.footerTemplate = item.template;\n          break;\n\n        case 'loader':\n          this.loaderTemplate = item.template;\n          break;\n\n        default:\n          this.itemTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.filled = this.value && this.value != '';\n    this.updateInputField();\n    this.cd.markForCheck();\n  }\n\n  getOptionGroupChildren(optionGroup: any) {\n    return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n  }\n\n  getOptionGroupLabel(optionGroup: any) {\n    return this.optionGroupLabel\n      ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel)\n      : optionGroup.label != undefined\n      ? optionGroup.label\n      : optionGroup;\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  onInput(event: Event) {\n    // When an input element with a placeholder is clicked, the onInput event is invoked in IE.\n    if (!this.inputKeyDown && DomHandler.isIE()) {\n      return;\n    }\n\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n    }\n\n    let value = (<HTMLInputElement>event.target).value;\n    this.inputValue = value;\n    if (!this.multiple && !this.forceSelection) {\n      this.onModelChange(value);\n    }\n\n    if (value.length === 0 && !this.multiple) {\n      this.value = null;\n      this.hide();\n      this.onClear.emit(event);\n      this.onModelChange(value);\n    }\n\n    if (value.length >= this.minLength) {\n      this.timeout = setTimeout(() => {\n        this.search(event, value);\n      }, this.delay);\n    } else {\n      this.hide();\n    }\n    this.updateFilledState();\n    this.inputKeyDown = false;\n  }\n\n  onInputClick(event: MouseEvent) {\n    if (this.documentClickListener) {\n      this.inputClick = true;\n    }\n  }\n\n  search(event: any, query: string) {\n    //allow empty string but not undefined or null\n    if (query === undefined || query === null) {\n      return;\n    }\n\n    this.loading = true;\n\n    this.completeMethod.emit({\n      originalEvent: event,\n      query: query\n    });\n  }\n\n  selectItem(option: any, focus: boolean = true) {\n    if (this.forceSelectionUpdateModelTimeout) {\n      clearTimeout(this.forceSelectionUpdateModelTimeout);\n      this.forceSelectionUpdateModelTimeout = null;\n    }\n\n    if (this.multiple) {\n      this.multiInputEL.nativeElement.value = '';\n      this.value = this.value || [];\n      if (!this.isSelected(option) || !this.unique) {\n        this.value = [...this.value, option];\n        this.onModelChange(this.value);\n      }\n    } else {\n      this.inputEL.nativeElement.value = this.resolveFieldData(option);\n      this.value = option;\n      this.onModelChange(this.value);\n    }\n\n    this.onSelect.emit(option);\n    this.updateFilledState();\n\n    if (focus) {\n      this.itemClicked = true;\n      this.focusInput();\n    }\n  }\n\n  show() {\n    if (this.multiInputEL || this.inputEL) {\n      let hasFocus = this.multiple\n        ? this.multiInputEL.nativeElement.ownerDocument.activeElement == this.multiInputEL.nativeElement\n        : this.inputEL.nativeElement.ownerDocument.activeElement == this.inputEL.nativeElement;\n\n      if (!this.overlayVisible && hasFocus) {\n        this.overlayVisible = true;\n      }\n    }\n  }\n\n  clear() {\n    if (this.multiple) {\n      this.value = null;\n    } else {\n      this.inputValue = null;\n      this.inputEL.nativeElement.value = '';\n    }\n\n    this.updateFilledState();\n    this.onModelChange(this.value);\n    this.onClear.emit();\n  }\n\n  onOverlayAnimationStart(event: AnimationEvent) {\n    switch (event.toState) {\n      case 'visible':\n        this.overlay = event.element;\n        this.itemsWrapper = this.virtualScroll ? DomHandler.findSingle(this.overlay, '.p-scroller') : this.overlay;\n        this.virtualScroll && this.scroller?.setContentEl(this.itemsViewChild.nativeElement);\n        this.appendOverlay();\n\n        if (this.autoZIndex) {\n          ZIndexUtils.set('overlay', this.overlay, this.baseZIndex + this.config.zIndex.overlay);\n        }\n\n        this.alignOverlay();\n        this.bindDocumentClickListener();\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n        this.onShow.emit(event);\n        break;\n\n      case 'void':\n        this.onOverlayHide();\n        break;\n    }\n  }\n\n  onOverlayAnimationEnd(event: AnimationEvent) {\n    switch (event.toState) {\n      case 'void':\n        if (this.autoZIndex) {\n          ZIndexUtils.clear(event.element);\n        }\n        break;\n    }\n  }\n\n  onOverlayClick(event) {\n    this.overlayService.add({\n      originalEvent: event,\n      target: this.el.nativeElement\n    });\n  }\n\n  appendOverlay() {\n    if (this.appendTo) {\n      if (this.appendTo === 'body') document.body.appendChild(this.overlay);\n      else DomHandler.appendChild(this.overlay, this.appendTo);\n\n      if (!this.overlay.style.minWidth) {\n        this.overlay.style.minWidth = DomHandler.getWidth(this.el.nativeElement.children[0]) + 'px';\n      }\n    }\n  }\n\n  resolveFieldData(value) {\n    let data = this.field ? ObjectUtils.resolveFieldData(value, this.field) : value;\n    return data !== (null || undefined) ? data : '';\n  }\n\n  restoreOverlayAppend() {\n    if (this.overlay && this.appendTo) {\n      this.el.nativeElement.appendChild(this.overlay);\n    }\n  }\n\n  alignOverlay() {\n    if (this.appendTo)\n      DomHandler.absolutePosition(this.overlay, this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement);\n    else DomHandler.relativePosition(this.overlay, this.multiple ? this.multiContainerEL.nativeElement : this.inputEL.nativeElement);\n  }\n\n  hide() {\n    this.overlayVisible = false;\n    this.cd.markForCheck();\n  }\n\n  handleDropdownClick(event) {\n    if (!this.overlayVisible) {\n      this.focusInput();\n      let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n\n      if (this.dropdownMode === 'blank') this.search(event, '');\n      else if (this.dropdownMode === 'current') this.search(event, queryValue);\n\n      this.onDropdownClick.emit({\n        originalEvent: event,\n        query: queryValue\n      });\n    } else {\n      this.hide();\n    }\n  }\n\n  focusInput() {\n    if (this.multiple) this.multiInputEL.nativeElement.focus();\n    else this.inputEL.nativeElement.focus();\n  }\n\n  get emptyMessageLabel(): string {\n    return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n  }\n\n  removeItem(item: any) {\n    let itemIndex = DomHandler.index(item);\n    let removedValue = this.value[itemIndex];\n    this.value = this.value.filter((val, i) => i != itemIndex);\n    this.onModelChange(this.value);\n    this.updateFilledState();\n    this.onUnselect.emit(removedValue);\n  }\n\n  onKeydown(event) {\n    if (this.overlayVisible) {\n      switch (event.which) {\n        //down\n        case 40:\n          if (this.group) {\n            let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n\n            if (highlightItemIndex !== -1) {\n              let nextItemIndex = highlightItemIndex.itemIndex + 1;\n              if (nextItemIndex < this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex]).length) {\n                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[nextItemIndex];\n                this.highlightOptionChanged = true;\n              } else if (this.suggestions[highlightItemIndex.groupIndex + 1]) {\n                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex + 1])[0];\n                this.highlightOptionChanged = true;\n              }\n            } else {\n              this.highlightOption = this.getOptionGroupChildren(this.suggestions[0])[0];\n            }\n          } else {\n            let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n            if (highlightItemIndex != -1) {\n              var nextItemIndex = highlightItemIndex + 1;\n              if (nextItemIndex != this.suggestions.length) {\n                this.highlightOption = this.suggestions[nextItemIndex];\n                this.highlightOptionChanged = true;\n              }\n            } else {\n              this.highlightOption = this.suggestions[0];\n            }\n          }\n\n          event.preventDefault();\n          break;\n\n        //up\n        case 38:\n          if (this.group) {\n            let highlightItemIndex = this.findOptionGroupIndex(this.highlightOption, this.suggestions);\n            if (highlightItemIndex !== -1) {\n              let prevItemIndex = highlightItemIndex.itemIndex - 1;\n              if (prevItemIndex >= 0) {\n                this.highlightOption = this.getOptionGroupChildren(this.suggestions[highlightItemIndex.groupIndex])[prevItemIndex];\n                this.highlightOptionChanged = true;\n              } else if (prevItemIndex < 0) {\n                let prevGroup = this.suggestions[highlightItemIndex.groupIndex - 1];\n                if (prevGroup) {\n                  this.highlightOption = this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1];\n                  this.highlightOptionChanged = true;\n                }\n              }\n            }\n          } else {\n            let highlightItemIndex = this.findOptionIndex(this.highlightOption, this.suggestions);\n\n            if (highlightItemIndex > 0) {\n              let prevItemIndex = highlightItemIndex - 1;\n              this.highlightOption = this.suggestions[prevItemIndex];\n              this.highlightOptionChanged = true;\n            }\n          }\n\n          event.preventDefault();\n          break;\n\n        //enter\n        case 13:\n          if (this.highlightOption) {\n            this.selectItem(this.highlightOption);\n            this.hide();\n          }\n          event.preventDefault();\n          break;\n\n        //escape\n        case 27:\n          this.hide();\n          event.preventDefault();\n          break;\n\n        //tab\n        case 9:\n          if (this.highlightOption) {\n            this.selectItem(this.highlightOption);\n          }\n          this.hide();\n          break;\n      }\n    } else {\n      if (event.which === 40 && this.suggestions) {\n        this.search(event, event.target.value);\n      } else if (event.ctrlKey && event.key === 'z' && !this.multiple) {\n        this.inputEL.nativeElement.value = this.resolveFieldData(null);\n        this.value = '';\n        this.onModelChange(this.value);\n      } else if (event.ctrlKey && event.key === 'z' && this.multiple) {\n        this.value.pop();\n        this.onModelChange(this.value);\n        this.updateFilledState();\n      }\n    }\n\n    if (this.multiple) {\n      switch (event.which) {\n        //backspace\n        case 8:\n          if (this.value && this.value.length && !this.multiInputEL.nativeElement.value) {\n            this.value = [...this.value];\n            const removedValue = this.value.pop();\n            this.onModelChange(this.value);\n            this.updateFilledState();\n            this.onUnselect.emit(removedValue);\n          }\n          break;\n      }\n    }\n\n    this.inputKeyDown = true;\n  }\n\n  onKeyup(event) {\n    this.onKeyUp.emit(event);\n  }\n\n  onInputFocus(event) {\n    if (!this.itemClicked && this.completeOnFocus) {\n      let queryValue = this.multiple ? this.multiInputEL.nativeElement.value : this.inputEL.nativeElement.value;\n      this.search(event, queryValue);\n    }\n\n    this.focus = true;\n    this.onFocus.emit(event);\n    this.itemClicked = false;\n  }\n\n  onInputBlur(event) {\n    this.focus = false;\n    this.onModelTouched();\n    this.onBlur.emit(event);\n  }\n\n  onInputChange(event) {\n    if (this.forceSelection) {\n      let valid = false;\n      let inputValue = event.target.value.trim();\n\n      if (this.suggestions) {\n        for (let suggestion of this.suggestions) {\n          let itemValue = this.field ? ObjectUtils.resolveFieldData(suggestion, this.field) : suggestion;\n          if (itemValue && inputValue === itemValue.trim()) {\n            valid = true;\n            this.forceSelectionUpdateModelTimeout = setTimeout(() => {\n              this.selectItem(suggestion, false);\n            }, 250);\n            break;\n          }\n        }\n      }\n\n      if (!valid) {\n        if (this.multiple) {\n          this.multiInputEL.nativeElement.value = '';\n        } else {\n          this.value = null;\n          this.inputEL.nativeElement.value = '';\n        }\n\n        this.onClear.emit(event);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n      }\n    }\n  }\n\n  onInputPaste(event: ClipboardEvent) {\n    this.onKeydown(event);\n  }\n\n  isSelected(val: any): boolean {\n    let selected: boolean = false;\n    if (this.value && this.value.length) {\n      for (let i = 0; i < this.value.length; i++) {\n        if (ObjectUtils.equals(this.value[i], val, this.dataKey)) {\n          selected = true;\n          break;\n        }\n      }\n    }\n    return selected;\n  }\n\n  findOptionIndex(option, suggestions): number {\n    let index: number = -1;\n    if (suggestions) {\n      for (let i = 0; i < suggestions.length; i++) {\n        if (ObjectUtils.equals(option, suggestions[i])) {\n          index = i;\n          break;\n        }\n      }\n    }\n\n    return index;\n  }\n\n  findOptionGroupIndex(val: any, opts: any[]): any {\n    let groupIndex, itemIndex;\n\n    if (opts) {\n      for (let i = 0; i < opts.length; i++) {\n        groupIndex = i;\n        itemIndex = this.findOptionIndex(val, this.getOptionGroupChildren(opts[i]));\n\n        if (itemIndex !== -1) {\n          break;\n        }\n      }\n    }\n\n    if (itemIndex !== -1) {\n      return { groupIndex: groupIndex, itemIndex: itemIndex };\n    } else {\n      return -1;\n    }\n  }\n\n  updateFilledState() {\n    if (this.multiple)\n      this.filled =\n        (this.value && this.value.length) ||\n        (this.multiInputEL && this.multiInputEL.nativeElement && this.multiInputEL.nativeElement.value != '');\n    else\n      this.filled =\n        (this.inputFieldValue && this.inputFieldValue != '') ||\n        (this.inputEL && this.inputEL.nativeElement && this.inputEL.nativeElement.value != '');\n  }\n\n  updateInputField() {\n    let formattedValue = this.resolveFieldData(this.value);\n    this.inputFieldValue = formattedValue;\n\n    if (this.inputEL && this.inputEL.nativeElement) {\n      this.inputEL.nativeElement.value = formattedValue;\n    }\n\n    this.updateFilledState();\n  }\n\n  bindDocumentClickListener() {\n    if (!this.documentClickListener) {\n      const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n      this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n        if (event.which === 3) {\n          return;\n        }\n\n        if (!this.inputClick && !this.isDropdownClick(event)) {\n          this.hide();\n        }\n\n        this.inputClick = false;\n        this.cd.markForCheck();\n      });\n    }\n  }\n\n  isDropdownClick(event) {\n    if (this.dropdown) {\n      let target = event.target;\n      return target === this.dropdownButton.nativeElement || target.parentNode === this.dropdownButton.nativeElement;\n    } else {\n      return false;\n    }\n  }\n\n  unbindDocumentClickListener() {\n    if (this.documentClickListener) {\n      this.documentClickListener();\n      this.documentClickListener = null;\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 (this.overlayVisible && !DomHandler.isTouchDevice()) {\n      this.hide();\n    }\n  }\n\n  bindScrollListener() {\n    if (!this.scrollHandler) {\n      this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerEL.nativeElement, () => {\n        if (this.overlayVisible) {\n          this.hide();\n        }\n      });\n    }\n\n    this.scrollHandler.bindScrollListener();\n  }\n\n  unbindScrollListener() {\n    if (this.scrollHandler) {\n      this.scrollHandler.unbindScrollListener();\n    }\n  }\n\n  onOverlayHide() {\n    this.unbindDocumentClickListener();\n    this.unbindDocumentResizeListener();\n    this.unbindScrollListener();\n    if (this.overlay) {\n      this.overlay = null;\n      this.onHide.emit();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.forceSelectionUpdateModelTimeout) {\n      clearTimeout(this.forceSelectionUpdateModelTimeout);\n      this.forceSelectionUpdateModelTimeout = null;\n    }\n\n    if (this.scrollHandler) {\n      this.scrollHandler.destroy();\n      this.scrollHandler = null;\n    }\n\n    if (this.overlay) {\n      ZIndexUtils.clear(this.overlay);\n    }\n\n    this.restoreOverlayAppend();\n    this.onOverlayHide();\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, InputTextModule, ButtonModule, SharedModule, RippleModule, ScrollerModule, AutoFocusModule],\n  exports: [AutoComplete, SharedModule, ScrollerModule, AutoFocusModule],\n  declarations: [AutoComplete]\n})\nexport class AutoCompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}