ng-search-dropdown
v1.0.3
Published
It's a search-dropdown
Downloads
11
Maintainers
Keywords
Readme
ng-search-dropdown
ng-search-dropdown
Custom Dropdown component for Angular 4+ with multiple and single selection options
Features
- single select dropdown
- multi select dropdown
- search dropdown list
- arrows keys support
- limit number of items displayed in dropdown
- custom sort
- angular forms support
- angular v4 and above supported
- cross browser support
Examples
Installation
npm install ng-search-dropdown
Using with webpack and tsc builds/ angular-cli builds
- import
SelectDropDownModule
into your app.module;
import { SelectDropDownModule } from 'ng-search-dropdown'
- add
SelectDropDownModule
to the imports of your NgModule:
@NgModule({
imports: [
...,
SelectDropDownModule
],
...
})
class YourModule { ... }
- include css styles in you
angular-cli.json
for versions earlier than 1.4.0
"styles": [
"../node_modules/ng-search-dropdown/dist/assets/style.css"
],
Config
Input
multiple: boolean
-true/false
beased if multiple selection required or notDefaults to false
.options: Array
- Array of string/objects that are to be the dropdown options.disabled: boolean
- disabled attribute to disable the dropdown when required.config: Object
- configuration object.
config = {
displayFn:(item: any) => { return item.hello.world; } //to support flexible text displaying for each item
displayKey:"description", //if objects array passed which key to be displayed defaults to description
search:true //true/false for the search functionlity defaults to false,
height: 'auto' //height of the list so that if there are more no of items it can show a scroll defaults to auto. With auto height scroll will never appear
placeholder:'Select' // text to be displayed when no item is selected defaults to Select,
customComparator: ()=>{} // a custom function using which user wants to sort the items. default is undefined and Array.sort() will be used in that case,
limitTo: 0 // number thats limits the no of options displayed in the UI (if zero, options will not be limited)
moreText: 'more' // text to be displayed whenmore than one items are selected like Option 1 + 5 more
noResultsFound: 'No results found!' // text to be displayed when no items are found while searching
searchPlaceholder:'Search' // label thats displayed in search input,
searchOnKey: 'name' // key on which search should be performed this will be selective search. if undefined this will be extensive search on all keys
clearOnSelection: false // clears search criteria when an option is selected if set to true, default is false
inputDirection: 'ltr' // the direction of the search input can be rtl or ltr(default)
}
Output
change: Event
- change event when user changes the selected optionsopen: Event
- open event when the dropdown toogles onclose: Event
- close event when the dropdown toogles offsearchChange: Event
- search change event when the search text changes
Change detection
As of now ng-search-dropdown
uses Default change detection startegy which means dirty checking checks for immutable data types. And in Javascript Objects and arrays are mutable. So when changing any of the @Input parameters if you mutate an object change detection will not detect it. For ex:-
this.options.push({id: 34, description: 'Adding new item'});
// or
config.height = '200px';
Both the above scenarios will not trigger the change detection. In order for the componet to detect the changes what you need to do is:-
this.options = [...this.options, {id: 34, description: 'Adding new item'}];
// or
config = {...config, height:'200px'};
Help Improve
Found a bug or an issue with this? Open a new issue here on GitHub.
Contributing to this project
Anyone and everyone is welcome to contribute. Please take a moment to review the guidelines for contributing.