{"version":3,"file":"axulus-uikit-dropdown.mjs","sources":["../../src/app/components/dropdown/dropdown.ts","../../src/app/components/dropdown/axulus-uikit-dropdown.ts"],"sourcesContent":["import { AnimationEvent } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgModule,\n  NgZone,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  ViewRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FilterService, OverlayOptions, PrimeNGConfig, PrimeTemplate, SelectItem, SharedModule, TranslationKeys } from '@axulus/uikit/api';\nimport { AutoFocusModule } from '@axulus/uikit/autofocus';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { Overlay, OverlayModule } from '@axulus/uikit/overlay';\nimport { RippleModule } from '@axulus/uikit/ripple';\nimport { Scroller, ScrollerModule, ScrollerOptions } from '@axulus/uikit/scroller';\nimport { TooltipModule } from '@axulus/uikit/tooltip';\nimport { ObjectUtils, UniqueComponentId } from '@axulus/uikit/utils';\n\nexport const DROPDOWN_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Dropdown),\n  multi: true\n};\n\nexport interface DropdownFilterOptions {\n  filter?: (value?: any) => void;\n  reset?: () => void;\n}\n\n@Component({\n  selector: 'p-dropdownItem',\n  template: `\n    <li\n      (click)=\"onOptionClick($event)\"\n      role=\"option\"\n      pRipple\n      [attr.aria-label]=\"label\"\n      [attr.aria-selected]=\"selected\"\n      [ngStyle]=\"{ height: itemSize + 'px' }\"\n      [id]=\"selected ? 'p-highlighted-option' : ''\"\n      [ngClass]=\"{ 'p-dropdown-item': true, 'p-highlight': selected, 'p-disabled': disabled }\"\n    >\n      <span *ngIf=\"!template\">{{ label || 'empty' }}</span>\n      <ng-container *ngTemplateOutlet=\"template; context: { $implicit: option }\"></ng-container>\n    </li>\n  `,\n  host: {\n    class: 'p-element'\n  }\n})\nexport class DropdownItem {\n  @Input() option: SelectItem;\n\n  @Input() selected: boolean;\n\n  @Input() label: string;\n\n  @Input() disabled: boolean;\n\n  @Input() visible: boolean;\n\n  @Input() itemSize: number;\n\n  @Input() template: TemplateRef<any>;\n\n  @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n  onOptionClick(event: Event) {\n    this.onClick.emit({\n      originalEvent: event,\n      option: this.option\n    });\n  }\n}\n\n@Component({\n  selector: 'p-dropdown',\n  template: `\n    <div\n      #container\n      [ngClass]=\"{\n        'p-dropdown p-component': true,\n        'p-disabled': disabled,\n        'p-dropdown-open': overlayVisible,\n        'p-focus': focused,\n        'p-dropdown-clearable': showClear && !disabled\n      }\"\n      (click)=\"onMouseclick($event)\"\n      [ngStyle]=\"style\"\n      [class]=\"styleClass\"\n    >\n      <div class=\"p-hidden-accessible\">\n        <input\n          #in\n          [attr.id]=\"inputId\"\n          type=\"text\"\n          readonly\n          (focus)=\"onInputFocus($event)\"\n          aria-haspopup=\"listbox\"\n          [attr.placeholder]=\"placeholder\"\n          aria-haspopup=\"listbox\"\n          [attr.aria-label]=\"ariaLabel\"\n          [attr.aria-expanded]=\"false\"\n          [attr.aria-labelledby]=\"ariaLabelledBy\"\n          (blur)=\"onInputBlur($event)\"\n          (keydown)=\"onKeydown($event, true)\"\n          [disabled]=\"disabled\"\n          [attr.tabindex]=\"tabindex\"\n          pAutoFocus\n          [autofocus]=\"autofocus\"\n          [attr.aria-activedescendant]=\"overlayVisible ? labelId : null\"\n          role=\"combobox\"\n        />\n      </div>\n      <span\n        [attr.id]=\"labelId\"\n        [ngClass]=\"{\n          'p-dropdown-label p-inputtext': true,\n          'p-dropdown-label-empty': label == null || label.length === 0\n        }\"\n        *ngIf=\"!editable && label != null\"\n        [pTooltip]=\"tooltip\"\n        [tooltipPosition]=\"tooltipPosition\"\n        [positionStyle]=\"tooltipPositionStyle\"\n        [tooltipStyleClass]=\"tooltipStyleClass\"\n      >\n        <ng-container *ngIf=\"!selectedItemTemplate\">{{ label || 'empty' }}</ng-container>\n        <ng-container *ngTemplateOutlet=\"selectedItemTemplate; context: { $implicit: selectedOption }\"></ng-container>\n      </span>\n      <span\n        [ngClass]=\"{\n          'p-dropdown-label p-inputtext p-placeholder': true,\n          'p-dropdown-label-empty': placeholder == null || placeholder.length === 0\n        }\"\n        *ngIf=\"!editable && label == null\"\n        >{{ placeholder || 'empty' }}</span\n      >\n      <input\n        #editableInput\n        type=\"text\"\n        [attr.maxlength]=\"maxlength\"\n        class=\"p-dropdown-label p-inputtext\"\n        *ngIf=\"editable\"\n        [disabled]=\"disabled\"\n        [attr.placeholder]=\"placeholder\"\n        aria-haspopup=\"listbox\"\n        [attr.aria-expanded]=\"overlayVisible\"\n        (input)=\"onEditableInputChange($event)\"\n        (focus)=\"onEditableInputFocus($event)\"\n        (blur)=\"onInputBlur($event)\"\n      />\n      <i class=\"p-dropdown-clear-icon pi pi-times\" (click)=\"clear($event)\" *ngIf=\"isVisibleClearIcon\"></i>\n      <div\n        class=\"p-dropdown-trigger\"\n        role=\"button\"\n        aria-label=\"dropdown trigger\"\n        aria-haspopup=\"listbox\"\n        [attr.aria-expanded]=\"overlayVisible\"\n      >\n        <span class=\"p-dropdown-trigger-icon\" [ngClass]=\"dropdownIcon\"></span>\n      </div>\n      <p-overlay\n        #overlay\n        [(visible)]=\"overlayVisible\"\n        [options]=\"overlayOptions\"\n        [target]=\"'@parent'\"\n        [appendTo]=\"appendTo\"\n        [autoZIndex]=\"autoZIndex\"\n        [baseZIndex]=\"baseZIndex\"\n        [showTransitionOptions]=\"showTransitionOptions\"\n        [hideTransitionOptions]=\"hideTransitionOptions\"\n        (onAnimationStart)=\"onOverlayAnimationStart($event)\"\n        (onHide)=\"hide()\"\n      >\n        <ng-template pTemplate=\"content\">\n          <div [ngClass]=\"'p-dropdown-panel p-component'\" [ngStyle]=\"panelStyle\" [class]=\"panelStyleClass\">\n            <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n            <div class=\"p-dropdown-header\" *ngIf=\"filter\" (click)=\"$event.stopPropagation()\">\n              <ng-container *ngIf=\"filterTemplate; else builtInFilterElement\">\n                <ng-container *ngTemplateOutlet=\"filterTemplate; context: { options: filterOptions }\"></ng-container>\n              </ng-container>\n              <ng-template #builtInFilterElement>\n                <div class=\"p-dropdown-filter-container\">\n                  <input\n                    #filter\n                    type=\"text\"\n                    autocomplete=\"off\"\n                    [value]=\"filterValue || ''\"\n                    class=\"p-dropdown-filter p-inputtext p-component\"\n                    [attr.placeholder]=\"filterPlaceholder\"\n                    (keydown.enter)=\"$event.preventDefault()\"\n                    (keydown)=\"onKeydown($event, false)\"\n                    (input)=\"onFilterInputChange($event)\"\n                    [attr.aria-label]=\"ariaFilterLabel\"\n                    [attr.aria-activedescendant]=\"overlayVisible ? 'p-highlighted-option' : labelId\"\n                  />\n                  <span class=\"p-dropdown-filter-icon pi pi-search\"></span>\n                </div>\n              </ng-template>\n            </div>\n            <div class=\"p-dropdown-items-wrapper\" [style.max-height]=\"virtualScroll ? 'auto' : scrollHeight || 'auto'\">\n              <p-scroller\n                *ngIf=\"virtualScroll\"\n                #scroller\n                [items]=\"optionsToDisplay\"\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: optionsToDisplay, options: {} }\"></ng-container>\n              </ng-container>\n\n              <ng-template #buildInItems let-items let-scrollerOptions=\"options\">\n                <ul\n                  #items\n                  [attr.id]=\"listId\"\n                  class=\"p-dropdown-items\"\n                  [ngClass]=\"scrollerOptions.contentStyleClass\"\n                  [style]=\"scrollerOptions.contentStyle\"\n                  role=\"listbox\"\n                >\n                  <ng-container *ngIf=\"group\">\n                    <ng-template ngFor let-optgroup [ngForOf]=\"items\">\n                      <li class=\"p-dropdown-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\n                        *ngTemplateOutlet=\"\n                          itemslist;\n                          context: { $implicit: getOptionGroupChildren(optgroup), selectedOption: selectedOption }\n                        \"\n                      ></ng-container>\n                    </ng-template>\n                  </ng-container>\n                  <ng-container *ngIf=\"!group\">\n                    <ng-container\n                      *ngTemplateOutlet=\"itemslist; context: { $implicit: items, selectedOption: selectedOption }\"\n                    ></ng-container>\n                  </ng-container>\n                  <ng-template #itemslist let-options let-selectedOption=\"selectedOption\">\n                    <ng-template ngFor let-option let-i=\"index\" [ngForOf]=\"options\">\n                      <p-dropdownItem\n                        [option]=\"option\"\n                        [selected]=\"selectedOption == option\"\n                        [label]=\"getOptionLabel(option)\"\n                        [disabled]=\"isOptionDisabled(option)\"\n                        (onClick)=\"onItemClick($event)\"\n                        [template]=\"itemTemplate\"\n                      ></p-dropdownItem>\n                    </ng-template>\n                  </ng-template>\n                  <li\n                    *ngIf=\"filterValue && isEmpty()\"\n                    class=\"p-dropdown-empty-message\"\n                    [ngStyle]=\"{ height: scrollerOptions.itemSize + 'px' }\"\n                  >\n                    <ng-container *ngIf=\"!emptyFilterTemplate && !emptyTemplate; else emptyFilter\">\n                      {{ emptyFilterMessageLabel }}\n                    </ng-container>\n                    <ng-container #emptyFilter *ngTemplateOutlet=\"emptyFilterTemplate || emptyTemplate\"></ng-container>\n                  </li>\n                  <li\n                    *ngIf=\"!filterValue && isEmpty()\"\n                    class=\"p-dropdown-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            </div>\n            <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n          </div>\n        </ng-template>\n      </p-overlay>\n    </div>\n  `,\n\n  host: {\n    class: 'p-element p-inputwrapper',\n    '[class.p-inputwrapper-filled]': 'filled',\n    '[class.p-inputwrapper-focus]': 'focused || overlayVisible'\n  },\n  providers: [DROPDOWN_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./dropdown.css']\n})\nexport class Dropdown implements OnInit, AfterViewInit, AfterContentInit, AfterViewChecked, ControlValueAccessor {\n  @Input() scrollHeight: string = '200px';\n\n  @Input() filter: boolean;\n\n  @Input() name: string;\n\n  @Input() style: any;\n\n  @Input() panelStyle: any;\n\n  @Input() styleClass: string;\n\n  @Input() panelStyleClass: string;\n\n  @Input() readonly: boolean;\n\n  @Input() required: boolean;\n\n  @Input() editable: boolean;\n\n  @Input() appendTo: any;\n\n  @Input() tabindex: number;\n\n  @Input() placeholder: string;\n\n  @Input() filterPlaceholder: string;\n\n  @Input() filterLocale: string;\n\n  @Input() inputId: string;\n\n  @Input() selectId: string;\n\n  @Input() dataKey: string;\n\n  @Input() filterBy: string;\n\n  @Input() autofocus: boolean;\n\n  @Input() resetFilterOnHide: boolean = false;\n\n  @Input() dropdownIcon: string = 'pi pi-chevron-down';\n\n  @Input() optionLabel: string;\n\n  @Input() optionValue: string;\n\n  @Input() optionDisabled: string;\n\n  @Input() optionGroupLabel: string;\n\n  @Input() optionGroupChildren: string = 'items';\n\n  @Input() autoDisplayFirst: boolean = true;\n\n  @Input() group: boolean;\n\n  @Input() showClear: boolean;\n\n  @Input() emptyFilterMessage: string = '';\n\n  @Input() emptyMessage: string = '';\n\n  @Input() lazy: boolean = false;\n\n  @Input() virtualScroll: boolean;\n\n  @Input() virtualScrollItemSize: number;\n\n  @Input() virtualScrollOptions: ScrollerOptions;\n\n  @Input() overlayOptions: OverlayOptions;\n\n  @Input() ariaFilterLabel: string;\n\n  @Input() ariaLabel: string;\n\n  @Input() ariaLabelledBy: string;\n\n  @Input() filterMatchMode: string = 'contains';\n\n  @Input() maxlength: number;\n\n  @Input() tooltip: string = '';\n\n  @Input() tooltipPosition: string = 'right';\n\n  @Input() tooltipPositionStyle: string = 'absolute';\n\n  @Input() tooltipStyleClass: string;\n\n  @Input() autofocusFilter: boolean = true;\n\n  @Input() overlayDirection: string = 'end';\n\n  @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n  @Output() onFilter: EventEmitter<any> = new EventEmitter();\n\n  @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n  @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n  @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n  @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n  @Output() onLazyLoad: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('container') containerViewChild: ElementRef;\n\n  @ViewChild('filter') filterViewChild: ElementRef;\n\n  @ViewChild('in') accessibleViewChild: ElementRef;\n\n  @ViewChild('editableInput') editableInputViewChild: ElementRef;\n\n  @ViewChild('items') itemsViewChild: ElementRef;\n\n  @ViewChild('scroller') scroller: Scroller;\n\n  @ViewChild('overlay') overlayViewChild: Overlay;\n\n  @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n  private _disabled: boolean;\n\n  @Input() get disabled(): boolean {\n    return this._disabled;\n  }\n\n  set disabled(_disabled: boolean) {\n    if (_disabled) {\n      this.focused = false;\n\n      if (this.overlayVisible) this.hide();\n    }\n\n    this._disabled = _disabled;\n    if (!(this.cd as ViewRef).destroyed) {\n      this.cd.detectChanges();\n    }\n  }\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  /* @deprecated */\n  _autoZIndex: boolean;\n  @Input() get autoZIndex(): boolean {\n    return this._autoZIndex;\n  }\n  set autoZIndex(val: boolean) {\n    this._autoZIndex = val;\n    console.warn('The autoZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  /* @deprecated */\n  _baseZIndex: number;\n  @Input() get baseZIndex(): number {\n    return this._baseZIndex;\n  }\n  set baseZIndex(val: number) {\n    this._baseZIndex = val;\n    console.warn('The baseZIndex property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  /* @deprecated */\n  _showTransitionOptions: string;\n  @Input() get showTransitionOptions(): string {\n    return this._showTransitionOptions;\n  }\n  set showTransitionOptions(val: string) {\n    this._showTransitionOptions = val;\n    console.warn('The showTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  /* @deprecated */\n  _hideTransitionOptions: string;\n  @Input() get hideTransitionOptions(): string {\n    return this._hideTransitionOptions;\n  }\n  set hideTransitionOptions(val: string) {\n    this._hideTransitionOptions = val;\n    console.warn('The hideTransitionOptions property is deprecated since v14.2.0, use overlayOptions property instead.');\n  }\n\n  itemsWrapper: HTMLDivElement;\n\n  itemTemplate: TemplateRef<any>;\n\n  groupTemplate: TemplateRef<any>;\n\n  loaderTemplate: TemplateRef<any>;\n\n  selectedItemTemplate: TemplateRef<any>;\n\n  headerTemplate: TemplateRef<any>;\n\n  filterTemplate: TemplateRef<any>;\n\n  footerTemplate: TemplateRef<any>;\n\n  emptyFilterTemplate: TemplateRef<any>;\n\n  emptyTemplate: TemplateRef<any>;\n\n  filterOptions: DropdownFilterOptions;\n\n  selectedOption: any;\n\n  _options: any[];\n\n  value: any;\n\n  onModelChange: Function = () => {};\n\n  onModelTouched: Function = () => {};\n\n  optionsToDisplay: any[];\n\n  hover: boolean;\n\n  focused: boolean;\n\n  overlayVisible: boolean;\n\n  optionsChanged: boolean;\n\n  panel: HTMLDivElement;\n\n  dimensionsUpdated: boolean;\n\n  hoveredItem: any;\n\n  selectedOptionUpdated: boolean;\n\n  _filterValue: string;\n\n  searchValue: string;\n\n  searchIndex: number;\n\n  searchTimeout: any;\n\n  previousSearchChar: string;\n\n  currentSearchChar: string;\n\n  preventModelTouched: boolean;\n\n  id: string = UniqueComponentId();\n\n  labelId: string;\n\n  listId: string;\n\n  constructor(\n    public el: ElementRef,\n    public renderer: Renderer2,\n    public cd: ChangeDetectorRef,\n    public zone: NgZone,\n    public filterService: FilterService,\n    public config: PrimeNGConfig\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 'selectedItem':\n          this.selectedItemTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'filter':\n          this.filterTemplate = item.template;\n          break;\n\n        case 'footer':\n          this.footerTemplate = item.template;\n          break;\n\n        case 'emptyfilter':\n          this.emptyFilterTemplate = item.template;\n          break;\n\n        case 'empty':\n          this.emptyTemplate = item.template;\n          break;\n\n        case 'group':\n          this.groupTemplate = 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  ngOnInit() {\n    this.optionsToDisplay = this.options;\n    this.updateSelectedOption(null);\n    this.labelId = this.id + '_label';\n    this.listId = this.id + '_list';\n\n    if (this.filterBy) {\n      this.filterOptions = {\n        filter: (value) => this.onFilterInputChange(value),\n        reset: () => this.resetFilter()\n      };\n    }\n  }\n\n  @Input() get options(): any[] {\n    return this._options;\n  }\n\n  set options(val: any[]) {\n    this._options = val;\n    this.optionsToDisplay = this._options;\n    this.updateSelectedOption(this.value);\n\n    this.selectedOption = this.findOption(this.value, this.optionsToDisplay);\n    if (!this.selectedOption && ObjectUtils.isNotEmpty(this.value) && !this.editable) {\n      this.value = null;\n      this.onModelChange(this.value);\n    }\n\n    this.optionsChanged = true;\n\n    if (this._filterValue && this._filterValue.length) {\n      this.activateFilter();\n    }\n  }\n\n  @Input() get filterValue(): string {\n    return this._filterValue;\n  }\n\n  set filterValue(val: string) {\n    this._filterValue = val;\n    this.activateFilter();\n  }\n\n  ngAfterViewInit() {\n    if (this.editable) {\n      this.updateEditableLabel();\n    }\n  }\n\n  get label(): string {\n    return this.selectedOption ? this.getOptionLabel(this.selectedOption) : null;\n  }\n\n  get emptyMessageLabel(): string {\n    return this.emptyMessage || this.config.getTranslation(TranslationKeys.EMPTY_MESSAGE);\n  }\n\n  get emptyFilterMessageLabel(): string {\n    return this.emptyFilterMessage || this.config.getTranslation(TranslationKeys.EMPTY_FILTER_MESSAGE);\n  }\n\n  get filled(): boolean {\n    if (typeof this.value === 'string') return !!this.value;\n\n    return this.value || this.value != null || this.value != undefined;\n  }\n\n  get isVisibleClearIcon(): boolean {\n    return this.value != null && this.value !== '' && this.showClear && !this.disabled;\n  }\n\n  updateEditableLabel(): void {\n    if (this.editableInputViewChild && this.editableInputViewChild.nativeElement) {\n      this.editableInputViewChild.nativeElement.value = this.selectedOption ? this.getOptionLabel(this.selectedOption) : this.value || '';\n    }\n  }\n\n  getOptionLabel(option: any) {\n    return this.optionLabel\n      ? ObjectUtils.resolveFieldData(option, this.optionLabel)\n      : option && option.label !== undefined\n      ? option.label\n      : option;\n  }\n\n  getOptionValue(option: any) {\n    return this.optionValue\n      ? ObjectUtils.resolveFieldData(option, this.optionValue)\n      : !this.optionLabel && option && option.value !== undefined\n      ? option.value\n      : option;\n  }\n\n  isOptionDisabled(option: any) {\n    return this.optionDisabled\n      ? ObjectUtils.resolveFieldData(option, this.optionDisabled)\n      : option && option.disabled !== undefined\n      ? option.disabled\n      : false;\n  }\n\n  getOptionGroupLabel(optionGroup: any) {\n    return this.optionGroupLabel\n      ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupLabel)\n      : optionGroup && optionGroup.label !== undefined\n      ? optionGroup.label\n      : optionGroup;\n  }\n\n  getOptionGroupChildren(optionGroup: any) {\n    return this.optionGroupChildren ? ObjectUtils.resolveFieldData(optionGroup, this.optionGroupChildren) : optionGroup.items;\n  }\n\n  onItemClick(event) {\n    const option = event.option;\n\n    if (!this.isOptionDisabled(option)) {\n      this.selectItem(event.originalEvent, option);\n      this.accessibleViewChild.nativeElement.focus({ preventScroll: true });\n    }\n\n    setTimeout(() => {\n      this.hide();\n    }, 1);\n  }\n\n  selectItem(event, option) {\n    if (this.selectedOption != option) {\n      this.selectedOption = option;\n      this.value = this.getOptionValue(option);\n\n      this.onModelChange(this.value);\n      this.updateEditableLabel();\n      this.onChange.emit({\n        originalEvent: event,\n        value: this.value\n      });\n    }\n  }\n\n  ngAfterViewChecked() {\n    if (this.optionsChanged && this.overlayVisible) {\n      this.optionsChanged = false;\n\n      this.zone.runOutsideAngular(() => {\n        setTimeout(() => {\n          if (this.overlayViewChild) {\n            this.overlayViewChild.alignOverlay();\n          }\n        }, 1);\n      });\n    }\n\n    if (this.selectedOptionUpdated && this.itemsWrapper) {\n      let selectedItem = DomHandler.findSingle(this.overlayViewChild.el.nativeElement, 'li.p-highlight');\n      if (selectedItem) {\n        DomHandler.scrollInView(this.itemsWrapper, DomHandler.findSingle(this.overlayViewChild.el.nativeElement, 'li.p-highlight'));\n      }\n      this.selectedOptionUpdated = false;\n    }\n  }\n\n  writeValue(value: any): void {\n    if (this.filter) {\n      this.resetFilter();\n    }\n\n    this.value = value;\n    this.updateSelectedOption(value);\n    this.updateEditableLabel();\n    this.cd.markForCheck();\n  }\n\n  resetFilter(): void {\n    this._filterValue = null;\n\n    if (this.filterViewChild && this.filterViewChild.nativeElement) {\n      this.filterViewChild.nativeElement.value = '';\n    }\n\n    this.optionsToDisplay = this.options;\n  }\n\n  updateSelectedOption(val: any): void {\n    this.selectedOption = this.findOption(val, this.optionsToDisplay);\n\n    if (\n      this.autoDisplayFirst &&\n      !this.placeholder &&\n      !this.selectedOption &&\n      this.optionsToDisplay &&\n      this.optionsToDisplay.length &&\n      !this.editable\n    ) {\n      if (this.group) {\n        this.selectedOption = this.optionsToDisplay[0].items[0];\n      } else {\n        this.selectedOption = this.optionsToDisplay[0];\n      }\n      this.value = this.getOptionValue(this.selectedOption);\n      this.onModelChange(this.value);\n    }\n\n    this.selectedOptionUpdated = true;\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  onMouseclick(event) {\n    if (this.disabled || this.readonly || this.isInputClick(event)) {\n      return;\n    }\n\n    this.onClick.emit(event);\n\n    this.accessibleViewChild.nativeElement.focus({ preventScroll: true });\n\n    if (this.overlayVisible) this.hide();\n    else this.show();\n\n    this.cd.detectChanges();\n  }\n\n  isInputClick(event): boolean {\n    return (\n      DomHandler.hasClass(event.target, 'p-dropdown-clear-icon') ||\n      event.target.isSameNode(this.accessibleViewChild.nativeElement) ||\n      (this.editableInputViewChild && event.target.isSameNode(this.editableInputViewChild.nativeElement))\n    );\n  }\n\n  isEmpty() {\n    return !this.optionsToDisplay || (this.optionsToDisplay && this.optionsToDisplay.length === 0);\n  }\n\n  onEditableInputFocus(event) {\n    this.focused = true;\n    this.hide();\n    this.onFocus.emit(event);\n  }\n\n  onEditableInputChange(event) {\n    this.value = event.target.value;\n    this.updateSelectedOption(this.value);\n    this.onModelChange(this.value);\n    this.onChange.emit({\n      originalEvent: event,\n      value: this.value\n    });\n  }\n\n  show() {\n    this.overlayVisible = true;\n    this.cd.markForCheck();\n  }\n\n  onOverlayAnimationStart(event: AnimationEvent) {\n    if (event.toState === 'visible') {\n      this.itemsWrapper = DomHandler.findSingle(\n        this.overlayViewChild.el.nativeElement,\n        this.virtualScroll ? '.p-scroller' : '.p-dropdown-items-wrapper'\n      );\n      this.virtualScroll && this.scroller.setContentEl(this.itemsViewChild.nativeElement);\n\n      if (this.options && this.options.length) {\n        if (this.virtualScroll) {\n          const selectedIndex = this.selectedOption\n            ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay)\n            : -1;\n          if (selectedIndex !== -1) {\n            this.scroller.scrollToIndex(selectedIndex);\n          }\n        } else {\n          let selectedListItem = DomHandler.findSingle(this.itemsWrapper, '.p-dropdown-item.p-highlight');\n\n          if (selectedListItem) {\n            selectedListItem.scrollIntoView({ block: 'nearest', inline: 'center' });\n          }\n        }\n      }\n\n      if (this.filterViewChild && this.filterViewChild.nativeElement) {\n        this.preventModelTouched = true;\n\n        if (this.autofocusFilter) {\n          this.filterViewChild.nativeElement.focus();\n        }\n      }\n\n      this.onShow.emit(event);\n    }\n    if (event.toState === 'void') {\n      this.itemsWrapper = null;\n      this.onModelTouched();\n      this.onHide.emit(event);\n    }\n  }\n\n  hide() {\n    this.overlayVisible = false;\n\n    if (this.filter && this.resetFilterOnHide) {\n      this.resetFilter();\n    }\n\n    this.cd.markForCheck();\n  }\n\n  onInputFocus(event) {\n    this.focused = true;\n    this.onFocus.emit(event);\n  }\n\n  onInputBlur(event) {\n    this.focused = false;\n    this.onBlur.emit(event);\n\n    if (!this.preventModelTouched) {\n      this.onModelTouched();\n    }\n    this.preventModelTouched = false;\n  }\n\n  findPrevEnabledOption(index) {\n    let prevEnabledOption;\n\n    if (this.optionsToDisplay && this.optionsToDisplay.length) {\n      for (let i = index - 1; 0 <= i; i--) {\n        let option = this.optionsToDisplay[i];\n        if (this.isOptionDisabled(option)) {\n          continue;\n        } else {\n          prevEnabledOption = option;\n          break;\n        }\n      }\n\n      if (!prevEnabledOption) {\n        for (let i = this.optionsToDisplay.length - 1; i >= index; i--) {\n          let option = this.optionsToDisplay[i];\n          if (this.isOptionDisabled(option)) {\n            continue;\n          } else {\n            prevEnabledOption = option;\n            break;\n          }\n        }\n      }\n    }\n\n    return prevEnabledOption;\n  }\n\n  findNextEnabledOption(index) {\n    let nextEnabledOption;\n\n    if (this.optionsToDisplay && this.optionsToDisplay.length) {\n      for (let i = index + 1; i < this.optionsToDisplay.length; i++) {\n        let option = this.optionsToDisplay[i];\n        if (this.isOptionDisabled(option)) {\n          continue;\n        } else {\n          nextEnabledOption = option;\n          break;\n        }\n      }\n\n      if (!nextEnabledOption) {\n        for (let i = 0; i < index; i++) {\n          let option = this.optionsToDisplay[i];\n          if (this.isOptionDisabled(option)) {\n            continue;\n          } else {\n            nextEnabledOption = option;\n            break;\n          }\n        }\n      }\n    }\n\n    return nextEnabledOption;\n  }\n\n  onKeydown(event: KeyboardEvent, search: boolean) {\n    if (this.readonly || !this.optionsToDisplay || this.optionsToDisplay.length === null) {\n      return;\n    }\n\n    switch (event.which) {\n      //down\n      case 40:\n        if (!this.overlayVisible && event.altKey) {\n          this.show();\n        } else {\n          if (this.group) {\n            let selectedItemIndex = this.selectedOption\n              ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay)\n              : -1;\n\n            if (selectedItemIndex !== -1) {\n              let nextItemIndex = selectedItemIndex.itemIndex + 1;\n              if (nextItemIndex < this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex]).length) {\n                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[nextItemIndex]);\n                this.selectedOptionUpdated = true;\n              } else if (this.optionsToDisplay[selectedItemIndex.groupIndex + 1]) {\n                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex + 1])[0]);\n                this.selectedOptionUpdated = true;\n              }\n            } else {\n              if (this.optionsToDisplay && this.optionsToDisplay.length > 0) {\n                this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[0])[0]);\n              }\n            }\n          } else {\n            let selectedItemIndex = this.selectedOption\n              ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay)\n              : -1;\n            let nextEnabledOption = this.findNextEnabledOption(selectedItemIndex);\n            if (nextEnabledOption) {\n              this.selectItem(event, nextEnabledOption);\n              this.selectedOptionUpdated = true;\n            }\n          }\n        }\n\n        event.preventDefault();\n\n        break;\n\n      //up\n      case 38:\n        if (this.group) {\n          let selectedItemIndex = this.selectedOption\n            ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay)\n            : -1;\n          if (selectedItemIndex !== -1) {\n            let prevItemIndex = selectedItemIndex.itemIndex - 1;\n            if (prevItemIndex >= 0) {\n              this.selectItem(event, this.getOptionGroupChildren(this.optionsToDisplay[selectedItemIndex.groupIndex])[prevItemIndex]);\n              this.selectedOptionUpdated = true;\n            } else if (prevItemIndex < 0) {\n              let prevGroup = this.optionsToDisplay[selectedItemIndex.groupIndex - 1];\n              if (prevGroup) {\n                this.selectItem(event, this.getOptionGroupChildren(prevGroup)[this.getOptionGroupChildren(prevGroup).length - 1]);\n                this.selectedOptionUpdated = true;\n              }\n            }\n          }\n        } else {\n          let selectedItemIndex = this.selectedOption\n            ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay)\n            : -1;\n          let prevEnabledOption = this.findPrevEnabledOption(selectedItemIndex);\n          if (prevEnabledOption) {\n            this.selectItem(event, prevEnabledOption);\n            this.selectedOptionUpdated = true;\n          }\n        }\n\n        event.preventDefault();\n        break;\n\n      //space\n      case 32:\n        if (search) {\n          if (!this.overlayVisible) {\n            this.show();\n          } else {\n            this.hide();\n          }\n\n          event.preventDefault();\n        }\n        break;\n\n      //enter\n      case 13:\n        if (this.overlayVisible && (!this.filter || (this.optionsToDisplay && this.optionsToDisplay.length > 0))) {\n          this.hide();\n        } else if (!this.overlayVisible) {\n          this.show();\n        }\n\n        event.preventDefault();\n        break;\n\n      //escape and tab\n      case 27:\n      case 9:\n        this.hide();\n        break;\n\n      //search item based on keyboard input\n      default:\n        if (search && !event.metaKey && event.which !== 17) {\n          this.search(event);\n        }\n        break;\n    }\n  }\n\n  search(event: KeyboardEvent) {\n    if (this.searchTimeout) {\n      clearTimeout(this.searchTimeout);\n    }\n\n    const char = event.key;\n    this.previousSearchChar = this.currentSearchChar;\n    this.currentSearchChar = char;\n\n    if (this.previousSearchChar === this.currentSearchChar) this.searchValue = this.currentSearchChar;\n    else this.searchValue = this.searchValue ? this.searchValue + char : char;\n\n    let newOption;\n    if (this.group) {\n      let searchIndex = this.selectedOption\n        ? this.findOptionGroupIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay)\n        : { groupIndex: 0, itemIndex: 0 };\n      newOption = this.searchOptionWithinGroup(searchIndex);\n    } else {\n      let searchIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this.optionsToDisplay) : -1;\n      newOption = this.searchOption(++searchIndex);\n    }\n\n    if (newOption && !this.isOptionDisabled(newOption)) {\n      this.selectItem(event, newOption);\n      this.selectedOptionUpdated = true;\n    }\n\n    this.searchTimeout = setTimeout(() => {\n      this.searchValue = null;\n    }, 250);\n  }\n\n  searchOption(index) {\n    let option;\n\n    if (this.searchValue) {\n      option = this.searchOptionInRange(index, this.optionsToDisplay.length);\n\n      if (!option) {\n        option = this.searchOptionInRange(0, index);\n      }\n    }\n\n    return option;\n  }\n\n  searchOptionInRange(start, end) {\n    for (let i = start; i < end; i++) {\n      let opt = this.optionsToDisplay[i];\n      if (\n        this.getOptionLabel(opt)\n          .toLocaleLowerCase(this.filterLocale)\n          .startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) &&\n        !this.isOptionDisabled(opt)\n      ) {\n        return opt;\n      }\n    }\n\n    return null;\n  }\n\n  searchOptionWithinGroup(index) {\n    let option;\n\n    if (this.searchValue) {\n      for (let i = index.groupIndex; i < this.optionsToDisplay.length; i++) {\n        for (\n          let j = index.groupIndex === i ? index.itemIndex + 1 : 0;\n          j < this.getOptionGroupChildren(this.optionsToDisplay[i]).length;\n          j++\n        ) {\n          let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n          if (\n            this.getOptionLabel(opt)\n              .toLocaleLowerCase(this.filterLocale)\n              .startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) &&\n            !this.isOptionDisabled(opt)\n          ) {\n            return opt;\n          }\n        }\n      }\n\n      if (!option) {\n        for (let i = 0; i <= index.groupIndex; i++) {\n          for (\n            let j = 0;\n            j < (index.groupIndex === i ? index.itemIndex : this.getOptionGroupChildren(this.optionsToDisplay[i]).length);\n            j++\n          ) {\n            let opt = this.getOptionGroupChildren(this.optionsToDisplay[i])[j];\n            if (\n              this.getOptionLabel(opt)\n                .toLocaleLowerCase(this.filterLocale)\n                .startsWith((this.searchValue as any).toLocaleLowerCase(this.filterLocale)) &&\n              !this.isOptionDisabled(opt)\n            ) {\n              return opt;\n            }\n          }\n        }\n      }\n    }\n\n    return null;\n  }\n\n  findOptionIndex(val: any, opts: any[]): number {\n    let index: number = -1;\n    if (opts) {\n      for (let i = 0; i < opts.length; i++) {\n        if ((val == null && this.getOptionValue(opts[i]) == null) || ObjectUtils.equals(val, this.getOptionValue(opts[i]), this.dataKey)) {\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  findOption(val: any, opts: any[], inGroup?: boolean): SelectItem {\n    if (this.group && !inGroup) {\n      let opt: SelectItem;\n      if (opts && opts.length) {\n        for (let optgroup of opts) {\n          opt = this.findOption(val, this.getOptionGroupChildren(optgroup), true);\n          if (opt) {\n            break;\n          }\n        }\n      }\n      return opt;\n    } else {\n      let index: number = this.findOptionIndex(val, opts);\n      return index != -1 ? opts[index] : null;\n    }\n  }\n\n  onFilterInputChange(event): void {\n    let inputValue = event.target.value;\n    if (inputValue && inputValue.length) {\n      this._filterValue = inputValue;\n      this.activateFilter();\n    } else {\n      this._filterValue = null;\n      this.optionsToDisplay = this.options;\n    }\n\n    this.virtualScroll && this.scroller.scrollToIndex(0);\n\n    this.optionsChanged = true;\n    this.onFilter.emit({ originalEvent: event, filter: this._filterValue });\n  }\n\n  activateFilter() {\n    let searchFields: string[] = (this.filterBy || this.optionLabel || 'label').split(',');\n\n    if (this.options && this.options.length) {\n      if (this.group) {\n        let filteredGroups = [];\n        for (let optgroup of this.options) {\n          let filteredSubOptions = this.filterService.filter(\n            this.getOptionGroupChildren(optgroup),\n            searchFields,\n            this.filterValue,\n            this.filterMatchMode,\n            this.filterLocale\n          );\n          if (filteredSubOptions && filteredSubOptions.length) {\n            filteredGroups.push({ ...optgroup, ...{ [this.optionGroupChildren]: filteredSubOptions } });\n          }\n        }\n\n        this.optionsToDisplay = filteredGroups;\n      } else {\n        this.optionsToDisplay = this.filterService.filter(\n          this.options,\n          searchFields,\n          this.filterValue,\n          this.filterMatchMode,\n          this.filterLocale\n        );\n      }\n\n      this.optionsChanged = true;\n    }\n  }\n\n  applyFocus(): void {\n    if (this.editable) DomHandler.findSingle(this.el.nativeElement, '.p-dropdown-label.p-inputtext').focus();\n    else DomHandler.findSingle(this.el.nativeElement, 'input[readonly]').focus();\n  }\n\n  focus(): void {\n    this.applyFocus();\n  }\n\n  clear(event: Event) {\n    this.value = null;\n    this.onModelChange(this.value);\n    this.onChange.emit({\n      originalEvent: event,\n      value: this.value\n    });\n    this.updateSelectedOption(this.value);\n    this.updateEditableLabel();\n    this.onClear.emit(event);\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, SharedModule, TooltipModule, RippleModule, ScrollerModule, AutoFocusModule],\n  exports: [Dropdown, DropdownItem, OverlayModule, SharedModule, ScrollerModule, AutoFocusModule],\n  declarations: [Dropdown, DropdownItem]\n})\nexport class DropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}