{"version":3,"file":"ngx-select-dropdown.mjs","sources":["../../../projects/ngx-select-dropdown/src/lib/ngx-select-dropdown.service.ts","../../../projects/ngx-select-dropdown/src/lib/pipes/filter-by.pipe.ts","../../../projects/ngx-select-dropdown/src/lib/pipes/limit-to.pipe.ts","../../../projects/ngx-select-dropdown/src/lib/ngx-select-dropdown.component.ts","../../../projects/ngx-select-dropdown/src/lib/ngx-select-dropdown.component.html","../../../projects/ngx-select-dropdown/src/lib/ngx-select-dropdown.module.ts","../../../projects/ngx-select-dropdown/src/public-api.ts","../../../projects/ngx-select-dropdown/src/ngx-select-dropdown.ts"],"sourcesContent":["import { EventEmitter, Injectable } from \"@angular/core\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class SelectDropDownService {\n  openDropdownInstance = new EventEmitter<string>();\n  closeDropdownInstance = new EventEmitter<string>();\n  openInstances: string[] = [];\n  constructor() {\n    // constructor\n  }\n  public isOpen(instanceId): boolean {\n    return this.openInstances.indexOf(instanceId) > -1;\n  }\n  /**\n   * @summary: Open a specific dropdown instance based on the instance ID.\n   * @param instanceId: Instance id of the dropdown that must be opened.\n   */\n  openDropdown(instanceId: string) {\n    this.openDropdownInstance.emit(instanceId);\n  }\n  /**\n   * @summary: Close a specific dropdown instance based on the instance ID.\n   * @param instanceId: Instance id of the dropdown that must be closed.\n   */\n  closeDropdown(instanceId: string) {\n    this.closeDropdownInstance.emit(instanceId);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * filters an array based on searctext\n */\n@Pipe({\n   name: 'filterBy'\n})\nexport class FilterByPipe implements PipeTransform {\n   public transform(array: any[], searchText?: string, keyName?: string) {\n      if (!array || !searchText || !Array.isArray(array)) {\n         return array;\n      }\n      if (typeof array[0] === 'string') {\n         return array.filter((item) => item.toLowerCase().indexOf(searchText.toLowerCase()) > -1);\n      }\n      // filter array, items which match and return true will be\n      // kept, false will be filtered out\n      if (!keyName) {\n         return array.filter((item: any) => {\n            for (const key in item) {\n               if (typeof item[key] !== 'object' && item[key].toString().toLowerCase().indexOf(searchText.toLowerCase()) > -1) {\n                  return true;\n               }\n            }\n            return false;\n         });\n      } else {\n         return array.filter((item: any) => {\n            if (typeof item[keyName] !== 'object' && item[keyName].toString().toLowerCase().indexOf(searchText.toLowerCase()) > -1) {\n               return true;\n            }\n            return false;\n         });\n      }\n\n   }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'limitTo'\n})\nexport class LimitToPipe implements PipeTransform {\n  public transform(array: any[], itemsCount: number, startIndex = 0) {\n    if (!Array.isArray(array) || itemsCount === 0) {\n      return array;\n    }\n    return array.slice(startIndex, startIndex + itemsCount);\n  }\n}\n","import { SelectDropDownService } from \"./ngx-select-dropdown.service\";\nimport { FilterByPipe } from \"./pipes/filter-by.pipe\";\nimport {\n  Component,\n  OnInit,\n  Input,\n  EventEmitter,\n  Output,\n  HostListener,\n  OnChanges,\n  SimpleChanges,\n  ViewChildren,\n  ElementRef,\n  QueryList,\n  AfterViewInit,\n  ChangeDetectorRef,\n  forwardRef,\n  ViewChild,\n  HostBinding,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\n@Component({\n  selector: \"ngx-select-dropdown\",\n  templateUrl: \"./ngx-select-dropdown.component.html\",\n  styleUrls: [\"./ngx-select-dropdown.component.scss\"],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NgxSelectDropdownComponent),\n      multi: true,\n    },\n  ],\n})\nexport class NgxSelectDropdownComponent\n  implements OnInit, OnChanges, AfterViewInit\n{\n  /** value of the dropdown */\n  @Input() public _value: any;\n\n  /**\n   * Get the required inputs\n   */\n  @Input() public options: any = [];\n\n  /**\n   * configuration options\n   */\n  @Input() public config: any = {};\n\n  /**\n   * Whether multiple selection or single selection allowed\n   */\n  @Input() public multiple = false;\n\n  /**\n   * Value\n   */\n  @Input() public disabled: boolean;\n\n  /** unique identifier to uniquely identify particular instance */\n  @Input() public instanceId: any;\n\n  /**\n   * change event when value changes to provide user to handle things in change event\n   */\n  @Output() public change: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * The search text change event emitter emitted when user type in the search input\n   */\n  @Output() public searchChange: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Event emitted when dropdown is open.\n   */\n  @Output() public open: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Event emitted when dropdown is open.\n   */\n  @Output() public close: EventEmitter<any> = new EventEmitter();\n\n  /**\n   * Toogle the dropdown list\n   */\n  public toggleDropdown = false;\n\n  /**\n   * Available items for selection\n   */\n  public availableItems: any = [];\n\n  /**\n   * Selected Items\n   */\n  public selectedItems: any = [];\n\n  /**\n   * Selection text to be Displayed\n   */\n  public selectedDisplayText = \"Select\";\n\n  /**\n   * Search text\n   */\n  public searchText: string;\n\n  /**\n   * variable to track if clicked inside or outside of component\n   */\n  public clickedInside = false;\n\n  /**\n   * variable to track keypress event inside and outsid of component\n   */\n  public insideKeyPress = false;\n\n  /**\n   * variable to track the focused item whenuser uses arrow keys to select item\n   */\n  public focusedItemIndex: number = null;\n\n  /**\n   * element to show not found text when not itmes match the search\n   */\n\n  public showNotFound = false;\n\n  /**\n   * The position from the top of the element in pixels to drop according to the visibility in viewport\n   */\n  public top: string;\n\n  /**\n   * Flag to indicate is the click initiation was on one of the availabe or selected options\n   * This is to track the mouse down event especially in Safari.\n   */\n  public optionMouseDown: boolean;\n\n  /**\n   * Element ref of the dropdown list DOM element\n   */\n  private dropdownList: ElementRef;\n\n  /**\n   * Flag for select all option\n   */\n  public selectAll: boolean;\n\n  /**\n   * Hold the reference to available items in the list to focus on the item when scrolling\n   */\n  @ViewChildren(\"availableOption\")\n  public availableOptions: QueryList<ElementRef>;\n\n  get value() {\n    return this._value;\n  }\n  set value(val) {\n    this._value = val;\n    this.onChange(val);\n    this.onTouched();\n  }\n\n  constructor(\n    private cdref: ChangeDetectorRef,\n    public _elementRef: ElementRef,\n    private dropdownService: SelectDropDownService\n  ) {\n    this.multiple = false;\n    this.selectAll = false;\n  }\n\n  public onChange: any = () => {\n    // empty\n  };\n  public onTouched: any = () => {\n    // empty\n  };\n\n  /**\n   * click listener for host inside this component i.e\n   * if many instances are there, this detects if clicked inside\n   * this instance\n   */\n  @HostListener(\"click\")\n  public clickInsideComponent() {\n    this.clickedInside = true;\n  }\n  /**\n   * View reference for the dorpdown list\n   */\n  @ViewChild(\"dropdownList\") set dropDownElement(ref: ElementRef) {\n    if (ref) {\n      // initially setter gets called with undefined\n      this.dropdownList = ref;\n    }\n  }\n\n  /**\n   * Event listener for the blur event to hide the dropdown\n   */\n  @HostListener(\"blur\") public blur() {\n    if (!this.insideKeyPress && !this.optionMouseDown) {\n      this.toggleDropdown = false;\n      this.openStateChange();\n    }\n  }\n\n  /**\n   * Event listener for the focus event to show the dropdown when using tab key\n   */\n  @HostListener(\"focus\") public focus() {\n    /* istanbul ignore else */\n    if (!this.disabled) {\n      this.toggleDropdown = true;\n      this.openStateChange();\n    }\n  }\n  /**\n   * click handler on documnent to hide the open dropdown if clicked outside\n   */\n  @HostListener(\"document:click\")\n  public clickOutsideComponent() {\n    /* istanbul ignore else */\n    if (!this.clickedInside) {\n      this.toggleDropdown = false;\n      this.openStateChange();\n      this.resetArrowKeyActiveElement();\n      // clear searh on close\n      this.searchText = null;\n      this.close.emit();\n    }\n    this.clickedInside = false;\n  }\n\n  /**\n   * click handler on documnent to hide the open dropdown if clicked outside\n   */\n  @HostListener(\"document:keydown\")\n  public KeyPressOutsideComponent() {\n    /* istanbul ignore else */\n    if (!this.insideKeyPress) {\n      this.toggleDropdown = false;\n      this.openStateChange();\n      this.resetArrowKeyActiveElement();\n    }\n    this.insideKeyPress = false;\n  }\n\n  /**\n   * Binding to set the tabindex property to set to 0 for accessibilty\n   */\n  @HostBinding(\"attr.tabindex\") tabindex = 0;\n  /**\n   * Event handler for key up and down event and enter press for selecting element\n   */\n  @HostListener(\"keydown\", [\"$event\"])\n  public handleKeyboardEvent($event: KeyboardEvent | any) {\n    this.insideKeyPress = true;\n    /* istanbul ignore else */\n    if ($event.keyCode === 27 || this.disabled) {\n      this.toggleDropdown = false;\n      this.openStateChange();\n      this.insideKeyPress = false;\n      return;\n    }\n    const avaOpts = this.availableOptions.toArray();\n    /* istanbul ignore else */\n    if ($event.keyCode !== 9 && avaOpts.length === 0 && !this.toggleDropdown) {\n      this.toggleDropdown = true;\n      this.openStateChange();\n    }\n    // Arrow Down\n    /* istanbul ignore else */\n    if ($event.keyCode === 40 && avaOpts.length > 0) {\n      this.onArrowKeyDown();\n      /* istanbul ignore else */\n      if (this.focusedItemIndex >= avaOpts.length) {\n        this.focusedItemIndex = 0;\n      }\n      avaOpts[this.focusedItemIndex].nativeElement.focus();\n      $event.preventDefault();\n    }\n    // Arrow Up\n    /* istanbul ignore else */\n    if ($event.keyCode === 38 && avaOpts.length) {\n      this.onArrowKeyUp();\n      /* istanbul ignore else */\n      if (this.focusedItemIndex >= avaOpts.length) {\n        this.focusedItemIndex = avaOpts.length - 1;\n      }\n      avaOpts[this.focusedItemIndex].nativeElement.focus();\n      $event.preventDefault();\n    }\n    // Enter\n    /* istanbul ignore else */\n    if ($event.keyCode === 13 && this.focusedItemIndex !== null) {\n      const filteredItems = new FilterByPipe().transform(\n        this.availableItems,\n        this.searchText,\n        this.config.searchOnKey\n      );\n      this.selectItem(\n        filteredItems[this.focusedItemIndex],\n        this.availableItems.indexOf(filteredItems[this.focusedItemIndex])\n      );\n      return false;\n    }\n  }\n\n  /**\n   * Component onInit\n   */\n  public ngOnInit() {\n    /* istanbul ignore else */\n    if (\n      typeof this.options !== \"undefined\" &&\n      typeof this.config !== \"undefined\" &&\n      Array.isArray(this.options)\n    ) {\n      this.availableItems = [\n        ...this.options.sort(this.config.customComparator),\n      ];\n      this.initDropdownValuesAndOptions();\n    }\n    this.serviceSubscriptions();\n  }\n\n  isVisible() {\n    if (!this.dropdownList) {\n      return { visible: false, element: null };\n    }\n    const el = this.dropdownList.nativeElement;\n    if (!el) {\n      return { visible: false, element: el };\n    }\n    const rect = el.getBoundingClientRect();\n    const topShown = rect.top >= 0;\n    const bottomShown = rect.bottom <= window.innerHeight;\n    return { visible: topShown && bottomShown, element: el };\n  }\n\n  serviceSubscriptions() {\n    this.dropdownService.openDropdownInstance.subscribe((instanceId) => {\n      if (this.instanceId === instanceId) {\n        this.toggleDropdown = true;\n        this.openStateChange();\n        this.resetArrowKeyActiveElement();\n      }\n    });\n    this.dropdownService.closeDropdownInstance.subscribe((instanceId) => {\n      if (this.instanceId === instanceId) {\n        this.toggleDropdown = false;\n        this.openStateChange();\n        this.resetArrowKeyActiveElement();\n      }\n    });\n  }\n\n  /**\n   * after view init to subscribe to available option changes\n   */\n  public ngAfterViewInit() {\n    this.availableOptions.changes.subscribe(this.setNotFoundState.bind(this));\n  }\n\n  public registerOnChange(fn: any) {\n    this.onChange = fn;\n  }\n\n  public registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  public setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  public writeValue(value: any, internal?: boolean) {\n    if (value) {\n      if (Array.isArray(value)) {\n        if (this.multiple) {\n          this.value = value;\n        } else if (value.length > 0) {\n          this.value = value[0];\n        }\n      } else {\n        this.value = value;\n      }\n      /* istanbul ignore else */\n      if (this.selectedItems.length === 0) {\n        if (Array.isArray(value)) {\n          this.selectedItems = value;\n        } else {\n          this.selectedItems.push(value);\n        }\n        this.initDropdownValuesAndOptions();\n      }\n    } else {\n      this.value = [];\n      /* istanbul ignore else */\n      if (!internal) {\n        this.reset();\n      }\n    }\n    /* istanbul ignore else */\n    if (!internal) {\n      this.reset();\n    }\n  }\n\n  public reset() {\n    if (!this.config) {\n      return;\n    }\n    this.selectedItems = [];\n    this.availableItems = [...this.options.sort(this.config.customComparator)];\n    this.initDropdownValuesAndOptions();\n  }\n  /**\n   * function sets whether to show items not found text or not\n   */\n  public setNotFoundState() {\n    if (this.availableOptions.length === 0) {\n      this.showNotFound = true;\n    } else {\n      this.showNotFound = false;\n    }\n    this.cdref.detectChanges();\n  }\n  /**\n   * Component onchage i.e when any of the input properties change\n   */\n  public ngOnChanges(changes: SimpleChanges) {\n    if (!this.config) {\n      return;\n    }\n    this.selectedItems = [];\n    // this.searchText = null;\n    this.options = this.options || [];\n    /* istanbul ignore else */\n    if (changes.options) {\n      this.availableItems = [\n        ...this.options.sort(this.config.customComparator),\n      ];\n    }\n    /* istanbul ignore else */\n    if (changes.value) {\n      /* istanbul ignore else */\n      if (\n        JSON.stringify(changes.value.currentValue) === JSON.stringify([]) ||\n        changes.value.currentValue === \"\" ||\n        changes.value.currentValue === null\n      ) {\n        this.availableItems = [\n          ...this.options.sort(this.config.customComparator),\n        ];\n      }\n    }\n    this.initDropdownValuesAndOptions();\n  }\n\n  /**\n   * Deselct a selected items\n   * @param item:  item to be deselected\n   * @param index:  index of the item\n   */\n  public deselectItem(item: any, index: number) {\n    this.selectedItems.forEach((element: any, i: number) => {\n      /* istanbul ignore else */\n      if (item === element) {\n        this.selectedItems.splice(i, 1);\n      }\n    });\n    let sortedItems = [...this.availableItems];\n    /* istanbul ignore else */\n    if (!this.availableItems.includes(item)) {\n      this.availableItems.push(item);\n      sortedItems = this.availableItems.sort(this.config.customComparator);\n    }\n    this.selectedItems = [...this.selectedItems];\n    this.availableItems = [...sortedItems];\n    /* istanbul ignore else */\n    if (!Array.isArray(this.value)) {\n      this.value = [];\n    }\n    this.valueChanged();\n    this.resetArrowKeyActiveElement();\n  }\n\n  /**\n   * Select an item\n   * @param item:  item to be selected\n   * @param index:  index of the item\n   */\n  public selectItem(item: string, index?: number) {\n    /* istanbul ignore else */\n    if (!this.multiple) {\n      /* istanbul ignore else */\n      if (this.selectedItems.length > 0) {\n        this.availableItems.push(this.selectedItems[0]);\n      }\n      this.selectedItems = [];\n      this.toggleDropdown = false;\n    }\n\n    this.availableItems.forEach((element: any, i: number) => {\n      /* istanbul ignore else */\n      if (item === element) {\n        this.selectedItems.push(item);\n        this.availableItems.splice(i, 1);\n      }\n    });\n\n    /* istanbul ignore else */\n    if (this.config.clearOnSelection) {\n      this.searchText = null;\n    }\n\n    this.selectedItems = [...this.selectedItems];\n    this.availableItems = [...this.availableItems];\n    this.selectedItems.sort(this.config.customComparator);\n    this.availableItems.sort(this.config.customComparator);\n    // this.searchText = null;\n    this.valueChanged();\n    this.resetArrowKeyActiveElement();\n  }\n\n  /**\n   * When selected items changes trigger the chaange back to parent\n   */\n  public valueChanged() {\n    this.writeValue(this.selectedItems, true);\n    // this.valueChange.emit(this.value);\n    this.change.emit({ value: this.value });\n    this.setSelectedDisplayText();\n  }\n\n  /**\n   * Toggle the dropdownlist on/off\n   */\n  public openSelectDropdown() {\n    this.toggleDropdown = true;\n    this.top = \"30px\";\n    this.openStateChange();\n    this.resetArrowKeyActiveElement();\n    setTimeout(() => {\n      const { visible, element } = this.isVisible();\n      if (element) {\n        this.top = visible\n          ? \"30px\"\n          : `-${element.getBoundingClientRect().height}px`;\n      }\n    }, 3);\n  }\n\n  public closeSelectDropdown() {\n    this.toggleDropdown = false;\n    this.openStateChange();\n    this.resetArrowKeyActiveElement();\n  }\n\n  public openStateChange() {\n    if (this.toggleDropdown) {\n      this.dropdownService.openInstances.push(this.instanceId);\n      this.open.emit();\n    } else {\n      this.searchText = null;\n      this.optionMouseDown = false;\n      this.close.emit();\n      this.dropdownService.openInstances.splice(\n        this.dropdownService.openInstances.indexOf(this.instanceId),\n        1\n      );\n    }\n  }\n\n  /**\n   * The change handler for search text\n   */\n  public searchTextChanged() {\n    this.searchChange.emit(this.searchText);\n  }\n\n  public changeSearchText($event: any) {\n    $event.stopPropagation();\n  }\n\n  /**\n   * initialize the config and other properties\n   */\n  private initDropdownValuesAndOptions() {\n    const config: any = {\n      displayKey: \"description\",\n      height: \"auto\",\n      search: false,\n      placeholder: \"Select\",\n      searchPlaceholder: \"Search...\",\n      limitTo: 0,\n      customComparator: undefined,\n      noResultsFound: \"No results found!\",\n      moreText: \"more\",\n      searchOnKey: null,\n      clearOnSelection: false,\n      inputDirection: \"ltr\",\n      selectAll: \"Select All\",\n    };\n    /* istanbul ignore else */\n    if (this.config === \"undefined\" || Object.keys(this.config).length === 0) {\n      this.config = { ...config };\n    }\n    for (const key of Object.keys(config)) {\n      this.config[key] = this.config[key] ? this.config[key] : config[key];\n    }\n    this.config = { ...this.config };\n    // Adding placeholder in config as default param\n    this.selectedDisplayText = this.config[\"placeholder\"];\n    /* istanbul ignore else */\n    if (this.value !== \"\" && typeof this.value !== \"undefined\") {\n      if (Array.isArray(this.value)) {\n        this.selectedItems = this.value;\n      } else if (this.value !== \"\" && this.value !== null) {\n        this.selectedItems[0] = this.value;\n      } else {\n        this.selectedItems = [];\n        this.value = [];\n      }\n\n      this.selectedItems.forEach((item: any) => {\n        const ind = this.availableItems.findIndex(\n          (aItem: any) => JSON.stringify(item) === JSON.stringify(aItem)\n        );\n        if (ind !== -1) {\n          this.availableItems.splice(ind, 1);\n        }\n      });\n    }\n    this.setSelectedDisplayText();\n  }\n\n  /**\n   * set the text to be displayed\n   */\n  private setSelectedDisplayText() {\n    let text: string = this.selectedItems[0];\n    /* istanbul ignore else */\n    if (typeof this.selectedItems[0] === \"object\") {\n      text = this.config.displayFn\n        ? this.config.displayFn(this.selectedItems[0])\n        : this.selectedItems[0][this.config.displayKey];\n    }\n    if (this.multiple && this.selectedItems.length > 0) {\n      this.selectedDisplayText =\n        this.selectedItems.length === 1\n          ? text\n          : text +\n            ` + ${this.selectedItems.length - 1} ${this.config.moreText}`;\n    } else {\n      this.selectedDisplayText =\n        this.selectedItems.length === 0 ? this.config.placeholder : text;\n    }\n  }\n\n  /**\n   * Event handler for arrow key up event thats focuses on a item\n   */\n  private onArrowKeyUp() {\n    /* istanbul ignore else */\n    if (this.focusedItemIndex === 0) {\n      this.focusedItemIndex = this.availableItems.length - 1;\n      return;\n    }\n    /* istanbul ignore else */\n    if (this.onArrowKey()) {\n      this.focusedItemIndex--;\n    }\n  }\n\n  /**\n   * Event handler for arrow key down event thats focuses on a item\n   */\n  private onArrowKeyDown() {\n    /* istanbul ignore else */\n    if (this.focusedItemIndex === this.availableItems.length - 1) {\n      this.focusedItemIndex = 0;\n      return;\n    }\n    /* istanbul ignore else */\n    if (this.onArrowKey()) {\n      this.focusedItemIndex++;\n    }\n  }\n\n  private onArrowKey() {\n    /* istanbul ignore else */\n    if (this.focusedItemIndex === null) {\n      this.focusedItemIndex = 0;\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * will reset the element that is marked active using arrow keys\n   */\n  private resetArrowKeyActiveElement() {\n    this.focusedItemIndex = null;\n  }\n\n  public toggleSelectAll(): void {\n    this.selectAll = !this.selectAll;\n    if (this.selectAll) {\n      this.selectedItems = [...this.selectedItems, ...this.availableItems];\n      this.availableItems = [];\n    } else {\n      this.availableItems = [...this.selectedItems, ...this.availableItems];\n      this.selectedItems = [];\n    }\n    this.toggleDropdown = false;\n    this.selectedItems.sort(this.config.customComparator);\n    this.availableItems.sort(this.config.customComparator);\n    // this.searchText = null;\n    this.valueChanged();\n    this.resetArrowKeyActiveElement();\n  }\n}\n","<div class=\"ngx-dropdown-container\">\n    <button *ngIf=\"!toggleDropdown\" type=\"button\" tabindex=\"-1\" class=\"ngx-dropdown-button\"\n        [ngClass]=\"{ 'ngx-disabled': disabled }\" [disabled]=\"disabled\" (click)=\"openSelectDropdown()\">\n        <span class=\"display-text\">{{ selectedDisplayText }} </span>\n        <span class=\"nsdicon-angle-down\"></span>\n\n    </button>\n    <button *ngIf=\"toggleDropdown\" type=\"button\" tabindex=\"-1\" class=\"ngx-dropdown-button\"\n        [ngClass]=\"{ 'ngx-disabled': disabled }\" [disabled]=\"disabled\" (click)=\"closeSelectDropdown()\">\n        <span class=\"display-text\">{{ selectedDisplayText }} </span>\n        <span class=\"nsdicon-angle-down\" [ngClass]=\"{'up': toggleDropdown }\"></span>\n    </button>\n    <div #dropdownList class=\"ngx-dropdown-list-container\" *ngIf=\"toggleDropdown\" [style.maxHeight]=\"config.height\"\n        [style.top]=\"top\">\n        <div class=\"select-options\" *ngIf=\"multiple\">\n            <label (click)=\"toggleSelectAll()\">\n                <input type=\"checkbox\" class=\"filled-in\" [(ngModel)]=\"selectAll\"/>\n                <span>{{ config.selectAll }}</span>\n              </label>\n        </div>\n        <div class=\"search-container\" *ngIf=\"config.search\">\n            <input (change)=\"changeSearchText($event)\" [style.direction]=\"config.inputDirection\" name=\"search-text\"\n                (input)=\"searchTextChanged()\" [(ngModel)]=\"searchText\" tabindex=\"-1\" autocomplete=\"off\" />\n            <label [ngClass]=\"{ active: searchText }\">\n                <span class=\"nsdicon-search\"></span>\n                {{ config.searchPlaceholder }}</label>\n        </div>\n        <ul class=\"selected-items\">\n            <li class=\"selected-item\" tabindex=\"-1\" *ngFor=\"let selected of selectedItems; let i = index\"\n                (click)=\"deselectItem(selected, i)\" (mousedown)=\"optionMouseDown = true\">\n                <span class=\"nsdicon-close\">x</span>\n                <span>\n                    {{\n                    config.displayFn\n                    ? config.displayFn(selected)\n                    : selected[config.displayKey] || selected\n                    }}\n                </span>\n            </li>\n        </ul>\n        <hr *ngIf=\"selectedItems.length > 0 && availableItems.length > 0\" />\n        <ul class=\"available-items\">\n            <li class=\"available-item\" #availableOption *ngFor=\"\n            let item of availableItems\n              | filterBy: searchText:config.searchOnKey\n              | limitTo: config.limitTo;\n            let i = index\n          \" tabindex=\"-1\" [ngClass]=\"{\n            active: focusedItemIndex == i && !item.disabled,\n            disabled: item.disabled\n          }\" (click)=\"selectItem(item, i)\" (mousedown)=\"optionMouseDown = true\">\n                {{\n                config.displayFn\n                ? config.displayFn(item)\n                : item[config.displayKey] || item\n                }}\n            </li>\n            <li *ngIf=\"showNotFound\">{{ config.noResultsFound }}</li>\n        </ul>\n    </div>\n</div>","import { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { NgxSelectDropdownComponent } from \"./ngx-select-dropdown.component\";\nimport { FilterByPipe } from \"./pipes/filter-by.pipe\";\nimport { LimitToPipe } from \"./pipes/limit-to.pipe\";\n@NgModule({\n  declarations: [NgxSelectDropdownComponent, FilterByPipe, LimitToPipe],\n  imports: [CommonModule, FormsModule],\n  exports: [NgxSelectDropdownComponent, FilterByPipe, LimitToPipe],\n  providers: [],\n})\nexport class SelectDropDownModule {\n}\n","/*\n * Public API Surface of ngx-select-dropdown\n */\n\nexport * from './lib/ngx-select-dropdown.service';\nexport * from './lib/ngx-select-dropdown.component';\nexport * from './lib/ngx-select-dropdown.module';\nexport * from './lib/pipes/filter-by.pipe';\nexport * from './lib/pipes/limit-to.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SelectDropDownService","i4.FilterByPipe","i5.LimitToPipe"],"mappings":"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"}