ngx-select-dropdown
Version:
A angular(4+) select dropdown for single select or multiselct module.
1 lines • 52.2 kB
Source Map (JSON)
{"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.trim().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.trim().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.trim().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 { NgxDropdownConfig } from \"./types/ngx-select-dropdown.types\";\nimport { 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 TemplateRef,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nconst config: NgxDropdownConfig = {\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 selectAllLabel: \"Select all\",\n enableSelectAll: false,\n};\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: NgxDropdownConfig = config;\n\n /**\n * Whether multiple selection or single selection allowed\n */\n @Input() public multiple = false;\n\n /**\n * Flag to disbale the dropdown\n */\n @Input() public disabled: boolean;\n\n /** unique identifier to uniquely identify particular instance */\n @Input() public instanceId: any;\n\n /** Template ref for the selected item */\n @Input() selectedItemTemplate: TemplateRef<any>;\n\n /** Template ref for the avilable item */\n @Input() optionItemTemplate: TemplateRef<any>;\n\n /** Template ref for the no matched found case */\n @Input() notFoundTemplate: TemplateRef<any>;\n\n /** Template ref for the button */\n @Input() dropdownButtonTemplate: TemplateRef<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 that 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($event: Event) {\n if (\n !this.insideKeyPress &&\n !this.optionMouseDown &&\n $event instanceof KeyboardEvent\n ) {\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 (\n this.availableOptions.length === 0 &&\n this.selectedItems.length !== this.options.length\n ) {\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 if (!this.areAllSelected()) {\n this.selectAll = false;\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 /* istanbul ignore else */\n if (this.areAllSelected()) {\n this.selectAll = true;\n }\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 /* istanbul ignore else */\n if (\n typeof this.config === \"undefined\" ||\n Object.keys(this.config).length === 0\n ) {\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 /**\n * Toggle the select all option\n */\n public toggleSelectAll(close?: boolean, emitChange?: boolean): 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.selectedItems.sort(this.config.customComparator);\n this.availableItems.sort(this.config.customComparator);\n this.valueChanged();\n this.closeSelectDropdown();\n this.openStateChange();\n this.resetArrowKeyActiveElement();\n }\n\n /**\n * Check if all options selected\n */\n areAllSelected() {\n return this.selectedItems.length === this.options.length;\n }\n}\n","<div class=\"ngx-dropdown-container\">\n <div [ngClass]=\"{ 'ngx-disabled': disabled }\" *ngIf=\"!toggleDropdown\" (click)=\"openSelectDropdown()\">\n <ng-container [ngTemplateOutlet]=\"dropdownButtonTemplate || dropdownButton\"></ng-container>\n </div>\n <div [ngClass]=\"{ 'ngx-disabled': disabled }\" *ngIf=\"toggleDropdown\" (click)=\"closeSelectDropdown()\">\n <ng-container [ngTemplateOutlet]=\"dropdownButtonTemplate || dropdownButton\"></ng-container>\n </div>\n <div #dropdownList class=\"ngx-dropdown-list-container\" *ngIf=\"toggleDropdown\" [style.maxHeight]=\"config.height\"\n [style.top]=\"top\">\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 <div *ngIf=\"config.enableSelectAll && multiple\">\n <div class=\"select-options\">\n <label (click)=\"toggleSelectAll(true, true)\">\n <input type=\"checkbox\" class=\"filled-in\" [(ngModel)]=\"selectAll\" />\n <span>{{ config.selectAllLabel }}</span>\n </label>\n </div>\n </div>\n <div class=\"selected-items\">\n <div class=\"selected-item\" tabindex=\"-1\" *ngFor=\"let selected of selectedItems; let i = index\"\n (click)=\"deselectItem(selected, i)\" (mousedown)=\"optionMouseDown = true\">\n <ng-container [ngTemplateOutlet]=\"selectedItemTemplate || selectedTemplate\"\n [ngTemplateOutletContext]=\"{item: selected, config: config}\"></ng-container>\n\n </div>\n </div>\n <hr *ngIf=\"selectedItems.length > 0 && availableItems.length > 0\" />\n <div class=\"available-items\">\n <div 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 <ng-container [ngTemplateOutlet]=\"optionItemTemplate || availableItemTemplate\"\n [ngTemplateOutletContext]=\"{item: item, config: config}\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"notFoundTemplate || notFound\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #notFound>\n <div *ngIf=\"showNotFound\">{{ config.noResultsFound }}</div>\n</ng-template>\n\n<ng-template #availableItemTemplate let-item=\"item\" let-config=\"config\">\n <span>\n {{\n config.displayFn\n ? config.displayFn(item)\n : item[config.displayKey] || item\n }}\n </span>\n</ng-template>\n<ng-template #selectedTemplate let-item=\"item\" let-config=\"config\">\n <span class=\"nsdicon-close\">x</span>\n <span>\n {{\n config.displayFn\n ? config.displayFn(item)\n : item[config.displayKey] || item\n }}\n </span>\n</ng-template>\n\n<ng-template #dropdownButton>\n <button type=\"button\" tabindex=\"-1\" class=\"ngx-dropdown-button\" [ngClass]=\"{ 'ngx-disabled': disabled }\"\n [disabled]=\"disabled\">\n <span class=\"display-text\">{{ selectedDisplayText }} </span>\n <span class=\"nsdicon-angle-down\" [ngClass]=\"{'up': toggleDropdown }\"></span>\n </button>\n</ng-template>","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/types/ngx-select-dropdown.types';\nexport * from './lib/ngx-select-dropdown.module';\nexport * from './lib/pipes/filter-by.pipe';\nexport * from './lib/pipes/limit-to.pipe';","/**\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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