angular2-multiselect-dropdown
Advanced tools
| { | ||
| "compileOnSave": false, | ||
| "compilerOptions": { | ||
| "outDir": "./dist/out-tsc", | ||
| "baseUrl": "src", | ||
| "sourceMap": true, | ||
| "declaration": false, | ||
| "moduleResolution": "node", | ||
| "emitDecoratorMetadata": true, | ||
| "experimentalDecorators": true, | ||
| "target": "es5", | ||
| "typeRoots": [ | ||
| "node_modules/@types" | ||
| ], | ||
| "lib": [ | ||
| "es2016", | ||
| "dom" | ||
| ] | ||
| } | ||
| } |
+2
-1
| { | ||
| "name": "angular2-multiselect-dropdown", | ||
| "version": "1.1.1", | ||
| "version": "1.1.2", | ||
| "license": "MIT", | ||
@@ -19,3 +19,4 @@ "angular-cli": {}, | ||
| "devDependencies": { | ||
| } | ||
| } |
+1
-0
@@ -112,2 +112,3 @@ # Angular2 Multiselect Dropdown | ||
| | classes | String | Custom classes to the dropdown component. Classes are added to the dropdown selector tag. To add multiple classes, the value should be space separated class names.| '' | | ||
| | limitSelection | Number | Limit the selection of number of items from the dropdown list. Once the limit is reached, all unselected items gets disabled. | none | | ||
@@ -114,0 +115,0 @@ ### Callback Methods |
@@ -23,4 +23,4 @@ <div class="cuppa-dropdown" (clickOutside)="closeDropdown()"> | ||
| <div class="list-area"> | ||
| <div class="pure-checkbox select-all" *ngIf="settings.enableCheckAll && !settings.singleSelection" (click)="toggleSelectAll()"> | ||
| <input type="checkbox" [checked]="isSelectAll"/> | ||
| <div class="pure-checkbox select-all" *ngIf="settings.enableCheckAll && !settings.singleSelection && !settings.limitSelection" (click)="toggleSelectAll()"> | ||
| <input type="checkbox" [checked]="isSelectAll" [disabled]="settings.limitSelection == selectedItems.length"/> | ||
| <label> | ||
@@ -37,3 +37,3 @@ <span [hidden]="isSelectAll">{{settings.selectAllText}}</span> | ||
| <li *ngFor="let item of data | listFilter:filter; let i = index;" (click)="onItemClick(item,i)" class="pure-checkbox"> | ||
| <input type="checkbox" [checked]="isSelected(item)"/> | ||
| <input type="checkbox" [checked]="isSelected(item)" [disabled]="settings.limitSelection == selectedItems.length && !isSelected(item)"/> | ||
| <label>{{item.itemName}}</label> | ||
@@ -40,0 +40,0 @@ </li> |
@@ -73,18 +73,29 @@ import { Component, OnInit, NgModule, OnChanges, ViewEncapsulation,forwardRef, Input, Output, EventEmitter, ElementRef, AfterViewInit, Pipe, PipeTransform } from '@angular/core'; | ||
| onItemClick(item: ListItem,index){ | ||
| let found = this.isSelected(item); | ||
| let found = this.isSelected(item); | ||
| let limit = this.selectedItems.length < this.settings.limitSelection ? true : false; | ||
| if(!found){ | ||
| this.addSelected(item); | ||
| this.onSelect.emit(item); | ||
| } | ||
| else{ | ||
| this.removeSelected(item); | ||
| this.onDeSelect.emit(item); | ||
| } | ||
| if(this.isSelectAll || this.data.length > this.selectedItems.length){ | ||
| this.isSelectAll = false; | ||
| } | ||
| if(this.data.length == this.selectedItems.length){ | ||
| this.isSelectAll = true; | ||
| } | ||
| if(!found){ | ||
| if(this.settings.limitSelection){ | ||
| if(limit){ | ||
| this.addSelected(item); | ||
| this.onSelect.emit(item); | ||
| } | ||
| } | ||
| else{ | ||
| this.addSelected(item); | ||
| this.onSelect.emit(item); | ||
| } | ||
| } | ||
| else{ | ||
| this.removeSelected(item); | ||
| this.onDeSelect.emit(item); | ||
| } | ||
| if(this.isSelectAll || this.data.length > this.selectedItems.length){ | ||
| this.isSelectAll = false; | ||
| } | ||
| if(this.data.length == this.selectedItems.length){ | ||
| this.isSelectAll = true; | ||
| } | ||
| } | ||
@@ -111,4 +122,10 @@ private onTouchedCallback: () => void = noop; | ||
| } | ||
| else | ||
| this.selectedItems = value; | ||
| else{ | ||
| if(this.settings.limitSelection){ | ||
| this.selectedItems = value.splice(0,this.settings.limitSelection); | ||
| } | ||
| else{ | ||
| this.selectedItems = value; | ||
| } | ||
| } | ||
| } else { | ||
@@ -115,0 +132,0 @@ this.selectedItems = []; |
@@ -11,2 +11,3 @@ export interface DropdownSettings{ | ||
| classes: String; | ||
| limitSelection?: Number; | ||
| } |
23646
7.16%11
10%268
15.52%134
0.75%