Socket
Socket
Sign inDemoInstall

angular-2-dropdown-multiselect

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-2-dropdown-multiselect - npm Package Compare versions

Comparing version 1.6.1 to 1.6.2

19

bundles/dropdown.umd.js

@@ -23,3 +23,3 @@ (function (global, factory) {

var isUnderLimit = options.length <= limit;
if (this._searchCache[str]) {
if (this._searchCache.hasOwnProperty(str)) {
return isUnderLimit ? this._searchCache[str] : this._limitRenderedItems(this._searchCache[str], renderLimit);

@@ -151,3 +151,4 @@ }

loadViewDistance: 1,
selectAddedValues: false
selectAddedValues: false,
ignoreLabels: false
};

@@ -383,3 +384,3 @@ this.defaultTexts = {

if (!isAtSelectionLimit) {
if (option.parentId) {
if (option.parentId && !this.settings.ignoreLabels) {
var children = this.options.filter(function (child) { return child.id !== option.id && child.parentId === option.parentId; });

@@ -412,10 +413,14 @@ if (children.every(function (child) { return _this.model.indexOf(child.id) > -1; })) {

var _this = this;
var numSelectedOptions = this.options.length;
if (this.settings.ignoreLabels) {
numSelectedOptions = this.options.filter(function (option) { return !option.isLabel; }).length;
}
if (this.numSelected === 0 || this.settings.fixedTitle) {
this.title = (this.texts) ? this.texts.defaultTitle : '';
}
else if (this.settings.displayAllSelectedText && this.model.length === this.options.length) {
else if (this.settings.displayAllSelectedText && this.model.length === numSelectedOptions) {
this.title = (this.texts) ? this.texts.allSelected : '';
}
else if (this.settings.dynamicTitleMaxItems && this.settings.dynamicTitleMaxItems >= this.numSelected) {
var useOptions = this.settings.isLazyLoad ? this.lazyLoadOptions : this.options;
var useOptions = this.settings.isLazyLoad && this.lazyLoadOptions ? this.lazyLoadOptions : this.options;
this.title = useOptions

@@ -440,3 +445,3 @@ .filter(function (option) {

.filter(function (option) {
if (this.model.indexOf(option.id) === -1) {
if (this.model.indexOf(option.id) === -1 && !(this.settings.ignoreLabels && option.isLabel)) {
this.onAdded.emit(option.id);

@@ -570,3 +575,3 @@ return true;

'onFilter': [{ type: _angular_core.Output },],
'onClick': [{ type: _angular_core.HostListener, args: ['document: click', ['$event.target'],] },],
'onClick': [{ type: _angular_core.HostListener, args: ['document: click', ['$event.target'],] }, { type: _angular_core.HostListener, args: ['document: touchstart', ['$event.target'],] },],
};

@@ -573,0 +578,0 @@

@@ -1,1 +0,1 @@

!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports,require("@angular/core"),require("rxjs/add/operator/takeUntil"),require("@angular/forms"),require("rxjs/Subject"),require("@angular/common")):"function"==typeof define&&define.amd?define(["exports","@angular/core","rxjs/add/operator/takeUntil","@angular/forms","rxjs/Subject","@angular/common"],factory):factory(global.dropdown=global.dropdown||{},global.ng.core,global.Rx.Observable.prototype,global.ng.forms,global.Rx,global.ng.common)}(this,function(exports,_angular_core,rxjs_add_operator_takeUntil,_angular_forms,rxjs_Subject,_angular_common){"use strict";var MultiSelectSearchFilter=function(){function MultiSelectSearchFilter(){this._searchCache={},this._searchCacheInclusive={}}return MultiSelectSearchFilter.prototype.transform=function(options,str,limit,renderLimit){void 0===limit&&(limit=0),void 0===renderLimit&&(renderLimit=0),str=(str||"").toLowerCase(),options!==this._lastOptions&&(this._lastOptions=options,this._searchCache={},this._searchCacheInclusive={});var isUnderLimit=options.length<=limit;if(this._searchCache[str])return isUnderLimit?this._searchCache[str]:this._limitRenderedItems(this._searchCache[str],renderLimit);var prevStr=str.slice(0,-1),prevResults=this._searchCache[prevStr];if(prevResults){var prevInclusiveOrIdx=this._searchCacheInclusive[prevStr];prevInclusiveOrIdx===!0?options=prevResults:"number"==typeof prevInclusiveOrIdx&&(options=prevResults.concat(options.slice(prevInclusiveOrIdx)))}for(var optsLength=options.length,maxFound=limit>0?Math.min(limit,optsLength):optsLength,filteredOpts=[],regexp=new RegExp(this._escapeRegExp(str),"i"),matchPredicate=function(option){return regexp.test(option.name)},getChildren=function(option){return options.filter(function(child){return child.parentId===option.id})},getParent=function(option){return options.find(function(parent){return option.parentId===parent.id})},i=0,founded=0;optsLength>i&&maxFound>founded;++i){var option=options[i],directMatch=regexp.test(option.name);if(directMatch)filteredOpts.push(option),founded++;else{if("undefined"==typeof option.parentId){var childrenMatch=getChildren(option).some(matchPredicate);if(childrenMatch){filteredOpts.push(option),founded++;continue}}if("undefined"!=typeof option.parentId){var parentMatch=matchPredicate(getParent(option));if(parentMatch){filteredOpts.push(option),founded++;continue}}}}return this._searchCache[str]=filteredOpts,this._searchCacheInclusive[str]=i===optsLength||i+1,isUnderLimit?filteredOpts:this._limitRenderedItems(filteredOpts,renderLimit)},MultiSelectSearchFilter.prototype._limitRenderedItems=function(items,limit){return items.length>limit&&limit>0?items.slice(0,limit):items},MultiSelectSearchFilter.prototype._escapeRegExp=function(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},MultiSelectSearchFilter}();MultiSelectSearchFilter.decorators=[{type:_angular_core.Pipe,args:[{name:"searchFilter"}]}],MultiSelectSearchFilter.ctorParameters=function(){return[]};var MULTISELECT_VALUE_ACCESSOR={provide:_angular_forms.NG_VALUE_ACCESSOR,useExisting:_angular_core.forwardRef(function(){return MultiselectDropdown}),multi:!0},MultiselectDropdown=function(){function MultiselectDropdown(element,fb,searchFilter,differs){this.element=element,this.fb=fb,this.searchFilter=searchFilter,this.filterControl=this.fb.control(""),this.disabled=!1,this.disabledSelection=!1,this.selectionLimitReached=new _angular_core.EventEmitter,this.dropdownClosed=new _angular_core.EventEmitter,this.dropdownOpened=new _angular_core.EventEmitter,this.onAdded=new _angular_core.EventEmitter,this.onRemoved=new _angular_core.EventEmitter,this.onLazyLoad=new _angular_core.EventEmitter,this.onFilter=this.filterControl.valueChanges,this.destroyed$=new rxjs_Subject.Subject,this.filteredOptions=[],this.lazyLoadOptions=[],this.renderFilteredOptions=[],this.model=[],this.prevModel=[],this.numSelected=0,this.renderItems=!0,this.checkAllSearchRegister=new Set,this.checkAllStatus=!1,this.loadedValueIds=[],this.defaultSettings={closeOnClickOutside:!0,pullRight:!1,enableSearch:!1,searchRenderLimit:0,searchRenderAfter:1,searchMaxLimit:0,searchMaxRenderedItems:0,checkedStyle:"checkboxes",buttonClasses:"btn btn-default btn-secondary",containerClasses:"dropdown-inline",selectionLimit:0,minSelectionLimit:0,closeOnSelect:!1,autoUnselect:!1,showCheckAll:!1,showUncheckAll:!1,fixedTitle:!1,dynamicTitleMaxItems:3,maxHeight:"300px",isLazyLoad:!1,stopScrollPropagation:!1,loadViewDistance:1,selectAddedValues:!1},this.defaultTexts={checkAll:"Check all",uncheckAll:"Uncheck all",checked:"checked",checkedPlural:"checked",searchPlaceholder:"Search...",searchEmptyResult:"Nothing found...",searchNoRenderText:"Type in search box to see results...",defaultTitle:"Select",allSelected:"All selected"},this._isVisible=!1,this._workerDocClicked=!1,this.onModelChange=function(){},this.onModelTouched=function(){},this.differ=differs.find([]).create(null),this.settings=this.defaultSettings,this.texts=this.defaultTexts}return MultiselectDropdown.prototype.onClick=function(target){if(this.isVisible&&this.settings.closeOnClickOutside){for(var parentFound=!1;null!=target&&!parentFound;)target===this.element.nativeElement&&(parentFound=!0),target=target.parentElement;parentFound||(this.isVisible=!1,this.dropdownClosed.emit())}},Object.defineProperty(MultiselectDropdown.prototype,"isVisible",{get:function(){return this._isVisible},set:function(val){this._isVisible=val,this._workerDocClicked=val?!1:this._workerDocClicked},enumerable:!0,configurable:!0}),Object.defineProperty(MultiselectDropdown.prototype,"searchLimit",{get:function(){return this.settings.searchRenderLimit},enumerable:!0,configurable:!0}),Object.defineProperty(MultiselectDropdown.prototype,"searchRenderAfter",{get:function(){return this.settings.searchRenderAfter},enumerable:!0,configurable:!0}),Object.defineProperty(MultiselectDropdown.prototype,"searchLimitApplied",{get:function(){return this.searchLimit>0&&this.options.length>this.searchLimit},enumerable:!0,configurable:!0}),MultiselectDropdown.prototype.getItemStyle=function(option){return option.isLabel?void 0:{cursor:"pointer"}},MultiselectDropdown.prototype.getItemStyleSelectionDisabled=function(){return this.disabledSelection?{cursor:"default"}:void 0},MultiselectDropdown.prototype.ngOnInit=function(){this.settings=Object.assign(this.defaultSettings,this.settings),this.texts=Object.assign(this.defaultTexts,this.texts),this.title=this.texts.defaultTitle||"",this.filterControl.valueChanges.takeUntil(this.destroyed$).subscribe(function(){this.updateRenderItems(),this.settings.isLazyLoad&&this.load()}.bind(this))},MultiselectDropdown.prototype.ngOnChanges=function(changes){var _this=this;if(changes.options){if(this.options=this.options||[],this.parents=this.options.filter(function(option){return"number"==typeof option.parentId}).map(function(option){return option.parentId}),this.updateRenderItems(),this.settings.isLazyLoad&&this.settings.selectAddedValues&&0===this.loadedValueIds.length&&(this.loadedValueIds=this.loadedValueIds.concat(changes.options.currentValue.map(function(value){return value.id}))),this.settings.isLazyLoad&&this.settings.selectAddedValues&&changes.options.previousValue){var addedValues_1=changes.options.currentValue.filter(function(value){return-1===_this.loadedValueIds.indexOf(value.id)});this.loadedValueIds.concat(addedValues_1.map(function(value){return value.id})),this.checkAllStatus?this.addChecks(addedValues_1):this.checkAllSearchRegister.size>0&&this.checkAllSearchRegister.forEach(function(searchValue){return _this.addChecks(_this.applyFilters(addedValues_1,searchValue))})}this.texts&&this.updateTitle(),this.fireModelChange()}changes.texts&&!changes.texts.isFirstChange()&&this.updateTitle()},MultiselectDropdown.prototype.ngOnDestroy=function(){this.destroyed$.next()},MultiselectDropdown.prototype.updateRenderItems=function(){this.renderItems=!this.searchLimitApplied||this.filterControl.value.length>=this.searchRenderAfter,this.filteredOptions=this.applyFilters(this.options,this.settings.isLazyLoad?"":this.filterControl.value),this.renderFilteredOptions=this.renderItems?this.filteredOptions:[]},MultiselectDropdown.prototype.applyFilters=function(options,value){return this.searchFilter.transform(options,value,this.settings.searchMaxLimit,this.settings.searchMaxRenderedItems)},MultiselectDropdown.prototype.fireModelChange=function(){this.model!=this.prevModel&&(this.prevModel=this.model,this.onModelChange(this.model),this.onModelTouched())},MultiselectDropdown.prototype.writeValue=function(value){this.model=void 0!==value&&null!==value?Array.isArray(value)?value:[value]:[]},MultiselectDropdown.prototype.registerOnChange=function(fn){this.onModelChange=fn},MultiselectDropdown.prototype.registerOnTouched=function(fn){this.onModelTouched=fn},MultiselectDropdown.prototype.setDisabledState=function(isDisabled){this.disabled=isDisabled},MultiselectDropdown.prototype.ngDoCheck=function(){var changes=this.differ.diff(this.model);changes&&(this.updateNumSelected(),this.updateTitle())},MultiselectDropdown.prototype.validate=function(){return this.model&&this.model.length?null:{required:{valid:!1}}},MultiselectDropdown.prototype.registerOnValidatorChange=function(){throw new Error("Method not implemented.")},MultiselectDropdown.prototype.clearSearch=function(event){event.stopPropagation&&event.stopPropagation(),this.filterControl.setValue("")},MultiselectDropdown.prototype.toggleDropdown=function(){this.isVisible=!this.isVisible,this.isVisible?this.dropdownOpened.emit():this.dropdownClosed.emit()},MultiselectDropdown.prototype.isSelected=function(option){return this.model&&this.model.indexOf(option.id)>-1},MultiselectDropdown.prototype.setSelected=function(_event,option){var _this=this;if(!option.isLabel&&!this.disabledSelection){_event.stopPropagation&&_event.stopPropagation();var index=this.model.indexOf(option.id),isAtSelectionLimit=this.settings.selectionLimit>0&&this.model.length>=this.settings.selectionLimit,removeItem_1=function(idx,id){_this.model.splice(idx,1),_this.onRemoved.emit(id),_this.settings.isLazyLoad&&_this.lazyLoadOptions.some(function(val){return val.id===id})&&_this.lazyLoadOptions.splice(_this.lazyLoadOptions.indexOf(_this.lazyLoadOptions.find(function(val){return val.id===id})),1)};if(index>-1){(void 0===this.settings.minSelectionLimit||this.numSelected>this.settings.minSelectionLimit)&&removeItem_1(index,option.id);var parentIndex=option.parentId&&this.model.indexOf(option.parentId);parentIndex>-1?removeItem_1(parentIndex,option.parentId):this.parents.indexOf(option.id)>-1&&this.options.filter(function(child){return _this.model.indexOf(child.id)>-1&&child.parentId===option.id}).forEach(function(child){return removeItem_1(_this.model.indexOf(child.id),child.id)})}else{if(isAtSelectionLimit&&!this.settings.autoUnselect)return void this.selectionLimitReached.emit(this.model.length);var addItem_1=function(id){_this.model.push(id),_this.onAdded.emit(id),_this.settings.isLazyLoad&&!_this.lazyLoadOptions.some(function(val){return val.id===id})&&_this.lazyLoadOptions.push(option)};if(addItem_1(option.id),isAtSelectionLimit)removeItem_1(0,this.model[0]);else if(option.parentId){var children=this.options.filter(function(child){return child.id!==option.id&&child.parentId===option.parentId});children.every(function(child){return _this.model.indexOf(child.id)>-1})&&addItem_1(option.parentId)}else if(this.parents.indexOf(option.id)>-1){var children=this.options.filter(function(child){return _this.model.indexOf(child.id)<0&&child.parentId===option.id});children.forEach(function(child){return addItem_1(child.id)})}}this.settings.closeOnSelect&&this.toggleDropdown(),this.model=this.model.slice(),this.fireModelChange()}},MultiselectDropdown.prototype.updateNumSelected=function(){var _this=this;this.numSelected=this.model.filter(function(id){return _this.parents.indexOf(id)<0}).length||0},MultiselectDropdown.prototype.updateTitle=function(){var _this=this;if(0===this.numSelected||this.settings.fixedTitle)this.title=this.texts?this.texts.defaultTitle:"";else if(this.settings.displayAllSelectedText&&this.model.length===this.options.length)this.title=this.texts?this.texts.allSelected:"";else if(this.settings.dynamicTitleMaxItems&&this.settings.dynamicTitleMaxItems>=this.numSelected){var useOptions=this.settings.isLazyLoad?this.lazyLoadOptions:this.options;this.title=useOptions.filter(function(option){return _this.model.indexOf(option.id)>-1}).map(function(option){return option.name}).join(", ")}else this.title=this.numSelected+" "+(1===this.numSelected?this.texts.checked:this.texts.checkedPlural)},MultiselectDropdown.prototype.searchFilterApplied=function(){return this.settings.enableSearch&&this.filterControl.value&&this.filterControl.value.length>0},MultiselectDropdown.prototype.addChecks=function(options){var checkedOptions=options.filter(function(option){return-1===this.model.indexOf(option.id)?(this.onAdded.emit(option.id),!0):!1}.bind(this)).map(function(option){return option.id});this.model=this.model.concat(checkedOptions)},MultiselectDropdown.prototype.checkAll=function(){this.disabledSelection||(this.addChecks(this.searchFilterApplied()?this.filteredOptions:this.options),this.settings.isLazyLoad&&this.settings.selectAddedValues&&(this.searchFilterApplied()&&!this.checkAllStatus?this.checkAllSearchRegister.add(this.filterControl.value):(this.checkAllSearchRegister.clear(),this.checkAllStatus=!0),this.load()),this.fireModelChange())},MultiselectDropdown.prototype.uncheckAll=function(){var _this=this;if(!this.disabledSelection){var checkedOptions=this.model,unCheckedOptions_1=this.searchFilterApplied()?this.filteredOptions.map(function(option){return option.id}):this.model;unCheckedOptions_1=checkedOptions.filter(function(item){return _this.model.includes(item)}),this.model=this.model.filter(function(id){return unCheckedOptions_1.indexOf(id)<0&&void 0===_this.settings.minSelectionLimit||unCheckedOptions_1.indexOf(id)<_this.settings.minSelectionLimit?!0:(_this.onRemoved.emit(id),!1)}),this.settings.isLazyLoad&&this.settings.selectAddedValues&&(this.searchFilterApplied()?this.checkAllSearchRegister.has(this.filterControl.value)&&(this.checkAllSearchRegister.delete(this.filterControl.value),this.checkAllSearchRegister.forEach(function(searchTerm){var filterOptions=this.applyFilters(this.options.filter(function(option){return unCheckedOptions_1.includes(option.id)}),searchTerm);this.addChecks(filterOptions)}.bind(this))):(this.checkAllSearchRegister.clear(),this.checkAllStatus=!1),this.load()),this.fireModelChange()}},MultiselectDropdown.prototype.preventCheckboxCheck=function(event,option){this.settings.selectionLimit&&!this.settings.autoUnselect&&this.model.length>=this.settings.selectionLimit&&-1===this.model.indexOf(option.id)&&event.preventDefault&&event.preventDefault()},MultiselectDropdown.prototype.isCheckboxDisabled=function(){return this.disabledSelection},MultiselectDropdown.prototype.checkScrollPosition=function(ev){var scrollTop=ev.target.scrollTop,scrollHeight=ev.target.scrollHeight,scrollElementHeight=ev.target.clientHeight,roundingPixel=1,gutterPixel=1;scrollTop>=scrollHeight-(1+this.settings.loadViewDistance)*scrollElementHeight-roundingPixel-gutterPixel&&this.load()},MultiselectDropdown.prototype.checkScrollPropagation=function(ev,element){var scrollTop=element.scrollTop,scrollHeight=element.scrollHeight,scrollElementHeight=element.clientHeight;(ev.deltaY>0&&scrollTop+scrollElementHeight>=scrollHeight||ev.deltaY<0&&0>=scrollTop)&&(ev=ev||window.event,ev.preventDefault&&ev.preventDefault(),ev.returnValue=!1)},MultiselectDropdown.prototype.load=function(){this.onLazyLoad.emit({length:this.options.length,filter:this.filterControl.value,checkAllSearches:this.checkAllSearchRegister,checkAllStatus:this.checkAllStatus})},MultiselectDropdown}();MultiselectDropdown.decorators=[{type:_angular_core.Component,args:[{selector:"ss-multiselect-dropdown",template:'<div class="dropdown" [ngClass]="settings.containerClasses" [class.open]="isVisible"><button type="button" class="dropdown-toggle" [ngClass]="settings.buttonClasses" (click)="toggleDropdown()" [disabled]="disabled">{{ title }}<span class="caret"></span></button><ul #scroller *ngIf="isVisible" class="dropdown-menu" (scroll)="settings.isLazyLoad ? checkScrollPosition($event) : null" (wheel)="settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null" [class.pull-right]="settings.pullRight" [class.dropdown-menu-right]="settings.pullRight" [style.max-height]="settings.maxHeight" style="display: block; height: auto; overflow-y: auto"><li class="dropdown-item search" *ngIf="settings.enableSearch"><div class="input-group input-group-sm"><span class="input-group-addon" id="sizing-addon3"><i class="fa fa-search"></i></span> <input type="text" class="form-control" placeholder="{{ texts.searchPlaceholder }}" aria-describedby="sizing-addon3" [formControl]="filterControl" autofocus> <span class="input-group-btn" *ngIf="filterControl.value.length > 0"><button class="btn btn-default btn-secondary" type="button" (click)="clearSearch($event)"><i class="fa fa-times"></i></button></span></div></li><li class="dropdown-divider divider" *ngIf="settings.enableSearch"></li><li class="dropdown-item check-control check-control-check" *ngIf="settings.showCheckAll && !disabledSelection" (click)="checkAll()"><a href="javascript:;" role="menuitem" tabindex="-1"><span style="width: 16px" [ngClass]="{\'glyphicon glyphicon-ok\': settings.checkedStyle !== \'fontawesome\',\'fa fa-check\': settings.checkedStyle === \'fontawesome\'}"></span> {{ texts.checkAll }}</a></li><li class="dropdown-item check-control check-control-uncheck" *ngIf="settings.showUncheckAll && !disabledSelection" (click)="uncheckAll()"><a href="javascript:;" role="menuitem" tabindex="-1"><span style="width: 16px" [ngClass]="{\'glyphicon glyphicon-remove\': settings.checkedStyle !== \'fontawesome\',\'fa fa-times\': settings.checkedStyle === \'fontawesome\'}"></span> {{ texts.uncheckAll }}</a></li><li *ngIf="settings.showCheckAll || settings.showUncheckAll" class="dropdown-divider divider"></li><li *ngIf="!renderItems" class="dropdown-item empty">{{ texts.searchNoRenderText }}</li><li *ngIf="renderItems && !renderFilteredOptions.length" class="dropdown-item empty">{{ texts.searchEmptyResult }}</li><li class="dropdown-item" *ngFor="let option of renderFilteredOptions" (click)="setSelected($event, option)" [ngStyle]="getItemStyle(option)" [ngClass]="option.classes" [class.dropdown-header]="option.isLabel"><a *ngIf="!option.isLabel; else label" href="javascript:;" role="menuitem" tabindex="-1" [style.padding-left]="this.parents.length>0&&this.parents.indexOf(option.id)<0&&\'30px\'" [ngStyle]="getItemStyleSelectionDisabled()"><ng-container [ngSwitch]="settings.checkedStyle"><input *ngSwitchCase="\'checkboxes\'" type="checkbox" [checked]="isSelected(option)" (click)="preventCheckboxCheck($event, option)" [disabled]="isCheckboxDisabled()" [ngStyle]="getItemStyleSelectionDisabled()" > <span *ngSwitchCase="\'glyphicon\'" style="width: 16px" class="glyphicon" [class.glyphicon-ok]="isSelected(option)"></span> <span *ngSwitchCase="\'fontawesome\'" style="width: 16px;display: inline-block"><i *ngIf="isSelected(option)" class="fa fa-check" aria-hidden="true"></i></span></ng-container><span [ngClass]="settings.itemClasses" [style.font-weight]="this.parents.indexOf(option.id)>=0?\'bold\':\'normal\'">{{ option.name }}</span></a><ng-template #label>{{ option.name }}</ng-template></li></ul></div>',styles:["a { outline: none !important;}.dropdown-inline { display: inline-block;}.dropdown-toggle .caret { margin-left: 4px; white-space: nowrap; display: inline-block;}"],providers:[MULTISELECT_VALUE_ACCESSOR,MultiSelectSearchFilter]}]}],MultiselectDropdown.ctorParameters=function(){return[{type:_angular_core.ElementRef},{type:_angular_forms.FormBuilder},{type:MultiSelectSearchFilter},{type:_angular_core.IterableDiffers}]},MultiselectDropdown.propDecorators={options:[{type:_angular_core.Input}],settings:[{type:_angular_core.Input}],texts:[{type:_angular_core.Input}],disabled:[{type:_angular_core.Input}],disabledSelection:[{type:_angular_core.Input}],selectionLimitReached:[{type:_angular_core.Output}],dropdownClosed:[{type:_angular_core.Output}],dropdownOpened:[{type:_angular_core.Output}],onAdded:[{type:_angular_core.Output}],onRemoved:[{type:_angular_core.Output}],onLazyLoad:[{type:_angular_core.Output}],onFilter:[{type:_angular_core.Output}],onClick:[{type:_angular_core.HostListener,args:["document: click",["$event.target"]]}]};var MultiselectDropdownModule=function(){function MultiselectDropdownModule(){}return MultiselectDropdownModule}();MultiselectDropdownModule.decorators=[{type:_angular_core.NgModule,args:[{imports:[_angular_common.CommonModule,_angular_forms.ReactiveFormsModule],exports:[MultiselectDropdown,MultiSelectSearchFilter],declarations:[MultiselectDropdown,MultiSelectSearchFilter]}]}],MultiselectDropdownModule.ctorParameters=function(){return[]},exports.MultiSelectSearchFilter=MultiSelectSearchFilter,exports.MultiselectDropdownModule=MultiselectDropdownModule,exports.MultiselectDropdown=MultiselectDropdown,Object.defineProperty(exports,"__esModule",{value:!0})});
!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports,require("@angular/core"),require("rxjs/add/operator/takeUntil"),require("@angular/forms"),require("rxjs/Subject"),require("@angular/common")):"function"==typeof define&&define.amd?define(["exports","@angular/core","rxjs/add/operator/takeUntil","@angular/forms","rxjs/Subject","@angular/common"],factory):factory(global.dropdown=global.dropdown||{},global.ng.core,global.Rx.Observable.prototype,global.ng.forms,global.Rx,global.ng.common)}(this,function(exports,_angular_core,rxjs_add_operator_takeUntil,_angular_forms,rxjs_Subject,_angular_common){"use strict";var MultiSelectSearchFilter=function(){function MultiSelectSearchFilter(){this._searchCache={},this._searchCacheInclusive={}}return MultiSelectSearchFilter.prototype.transform=function(options,str,limit,renderLimit){void 0===limit&&(limit=0),void 0===renderLimit&&(renderLimit=0),str=(str||"").toLowerCase(),options!==this._lastOptions&&(this._lastOptions=options,this._searchCache={},this._searchCacheInclusive={});var isUnderLimit=options.length<=limit;if(this._searchCache.hasOwnProperty(str))return isUnderLimit?this._searchCache[str]:this._limitRenderedItems(this._searchCache[str],renderLimit);var prevStr=str.slice(0,-1),prevResults=this._searchCache[prevStr];if(prevResults){var prevInclusiveOrIdx=this._searchCacheInclusive[prevStr];prevInclusiveOrIdx===!0?options=prevResults:"number"==typeof prevInclusiveOrIdx&&(options=prevResults.concat(options.slice(prevInclusiveOrIdx)))}for(var optsLength=options.length,maxFound=limit>0?Math.min(limit,optsLength):optsLength,filteredOpts=[],regexp=new RegExp(this._escapeRegExp(str),"i"),matchPredicate=function(option){return regexp.test(option.name)},getChildren=function(option){return options.filter(function(child){return child.parentId===option.id})},getParent=function(option){return options.find(function(parent){return option.parentId===parent.id})},i=0,founded=0;optsLength>i&&maxFound>founded;++i){var option=options[i],directMatch=regexp.test(option.name);if(directMatch)filteredOpts.push(option),founded++;else{if("undefined"==typeof option.parentId){var childrenMatch=getChildren(option).some(matchPredicate);if(childrenMatch){filteredOpts.push(option),founded++;continue}}if("undefined"!=typeof option.parentId){var parentMatch=matchPredicate(getParent(option));if(parentMatch){filteredOpts.push(option),founded++;continue}}}}return this._searchCache[str]=filteredOpts,this._searchCacheInclusive[str]=i===optsLength||i+1,isUnderLimit?filteredOpts:this._limitRenderedItems(filteredOpts,renderLimit)},MultiSelectSearchFilter.prototype._limitRenderedItems=function(items,limit){return items.length>limit&&limit>0?items.slice(0,limit):items},MultiSelectSearchFilter.prototype._escapeRegExp=function(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},MultiSelectSearchFilter}();MultiSelectSearchFilter.decorators=[{type:_angular_core.Pipe,args:[{name:"searchFilter"}]}],MultiSelectSearchFilter.ctorParameters=function(){return[]};var MULTISELECT_VALUE_ACCESSOR={provide:_angular_forms.NG_VALUE_ACCESSOR,useExisting:_angular_core.forwardRef(function(){return MultiselectDropdown}),multi:!0},MultiselectDropdown=function(){function MultiselectDropdown(element,fb,searchFilter,differs){this.element=element,this.fb=fb,this.searchFilter=searchFilter,this.filterControl=this.fb.control(""),this.disabled=!1,this.disabledSelection=!1,this.selectionLimitReached=new _angular_core.EventEmitter,this.dropdownClosed=new _angular_core.EventEmitter,this.dropdownOpened=new _angular_core.EventEmitter,this.onAdded=new _angular_core.EventEmitter,this.onRemoved=new _angular_core.EventEmitter,this.onLazyLoad=new _angular_core.EventEmitter,this.onFilter=this.filterControl.valueChanges,this.destroyed$=new rxjs_Subject.Subject,this.filteredOptions=[],this.lazyLoadOptions=[],this.renderFilteredOptions=[],this.model=[],this.prevModel=[],this.numSelected=0,this.renderItems=!0,this.checkAllSearchRegister=new Set,this.checkAllStatus=!1,this.loadedValueIds=[],this.defaultSettings={closeOnClickOutside:!0,pullRight:!1,enableSearch:!1,searchRenderLimit:0,searchRenderAfter:1,searchMaxLimit:0,searchMaxRenderedItems:0,checkedStyle:"checkboxes",buttonClasses:"btn btn-default btn-secondary",containerClasses:"dropdown-inline",selectionLimit:0,minSelectionLimit:0,closeOnSelect:!1,autoUnselect:!1,showCheckAll:!1,showUncheckAll:!1,fixedTitle:!1,dynamicTitleMaxItems:3,maxHeight:"300px",isLazyLoad:!1,stopScrollPropagation:!1,loadViewDistance:1,selectAddedValues:!1,ignoreLabels:!1},this.defaultTexts={checkAll:"Check all",uncheckAll:"Uncheck all",checked:"checked",checkedPlural:"checked",searchPlaceholder:"Search...",searchEmptyResult:"Nothing found...",searchNoRenderText:"Type in search box to see results...",defaultTitle:"Select",allSelected:"All selected"},this._isVisible=!1,this._workerDocClicked=!1,this.onModelChange=function(){},this.onModelTouched=function(){},this.differ=differs.find([]).create(null),this.settings=this.defaultSettings,this.texts=this.defaultTexts}return MultiselectDropdown.prototype.onClick=function(target){if(this.isVisible&&this.settings.closeOnClickOutside){for(var parentFound=!1;null!=target&&!parentFound;)target===this.element.nativeElement&&(parentFound=!0),target=target.parentElement;parentFound||(this.isVisible=!1,this.dropdownClosed.emit())}},Object.defineProperty(MultiselectDropdown.prototype,"isVisible",{get:function(){return this._isVisible},set:function(val){this._isVisible=val,this._workerDocClicked=val?!1:this._workerDocClicked},enumerable:!0,configurable:!0}),Object.defineProperty(MultiselectDropdown.prototype,"searchLimit",{get:function(){return this.settings.searchRenderLimit},enumerable:!0,configurable:!0}),Object.defineProperty(MultiselectDropdown.prototype,"searchRenderAfter",{get:function(){return this.settings.searchRenderAfter},enumerable:!0,configurable:!0}),Object.defineProperty(MultiselectDropdown.prototype,"searchLimitApplied",{get:function(){return this.searchLimit>0&&this.options.length>this.searchLimit},enumerable:!0,configurable:!0}),MultiselectDropdown.prototype.getItemStyle=function(option){return option.isLabel?void 0:{cursor:"pointer"}},MultiselectDropdown.prototype.getItemStyleSelectionDisabled=function(){return this.disabledSelection?{cursor:"default"}:void 0},MultiselectDropdown.prototype.ngOnInit=function(){this.settings=Object.assign(this.defaultSettings,this.settings),this.texts=Object.assign(this.defaultTexts,this.texts),this.title=this.texts.defaultTitle||"",this.filterControl.valueChanges.takeUntil(this.destroyed$).subscribe(function(){this.updateRenderItems(),this.settings.isLazyLoad&&this.load()}.bind(this))},MultiselectDropdown.prototype.ngOnChanges=function(changes){var _this=this;if(changes.options){if(this.options=this.options||[],this.parents=this.options.filter(function(option){return"number"==typeof option.parentId}).map(function(option){return option.parentId}),this.updateRenderItems(),this.settings.isLazyLoad&&this.settings.selectAddedValues&&0===this.loadedValueIds.length&&(this.loadedValueIds=this.loadedValueIds.concat(changes.options.currentValue.map(function(value){return value.id}))),this.settings.isLazyLoad&&this.settings.selectAddedValues&&changes.options.previousValue){var addedValues_1=changes.options.currentValue.filter(function(value){return-1===_this.loadedValueIds.indexOf(value.id)});this.loadedValueIds.concat(addedValues_1.map(function(value){return value.id})),this.checkAllStatus?this.addChecks(addedValues_1):this.checkAllSearchRegister.size>0&&this.checkAllSearchRegister.forEach(function(searchValue){return _this.addChecks(_this.applyFilters(addedValues_1,searchValue))})}this.texts&&this.updateTitle(),this.fireModelChange()}changes.texts&&!changes.texts.isFirstChange()&&this.updateTitle()},MultiselectDropdown.prototype.ngOnDestroy=function(){this.destroyed$.next()},MultiselectDropdown.prototype.updateRenderItems=function(){this.renderItems=!this.searchLimitApplied||this.filterControl.value.length>=this.searchRenderAfter,this.filteredOptions=this.applyFilters(this.options,this.settings.isLazyLoad?"":this.filterControl.value),this.renderFilteredOptions=this.renderItems?this.filteredOptions:[]},MultiselectDropdown.prototype.applyFilters=function(options,value){return this.searchFilter.transform(options,value,this.settings.searchMaxLimit,this.settings.searchMaxRenderedItems)},MultiselectDropdown.prototype.fireModelChange=function(){this.model!=this.prevModel&&(this.prevModel=this.model,this.onModelChange(this.model),this.onModelTouched())},MultiselectDropdown.prototype.writeValue=function(value){this.model=void 0!==value&&null!==value?Array.isArray(value)?value:[value]:[]},MultiselectDropdown.prototype.registerOnChange=function(fn){this.onModelChange=fn},MultiselectDropdown.prototype.registerOnTouched=function(fn){this.onModelTouched=fn},MultiselectDropdown.prototype.setDisabledState=function(isDisabled){this.disabled=isDisabled},MultiselectDropdown.prototype.ngDoCheck=function(){var changes=this.differ.diff(this.model);changes&&(this.updateNumSelected(),this.updateTitle())},MultiselectDropdown.prototype.validate=function(){return this.model&&this.model.length?null:{required:{valid:!1}}},MultiselectDropdown.prototype.registerOnValidatorChange=function(){throw new Error("Method not implemented.")},MultiselectDropdown.prototype.clearSearch=function(event){event.stopPropagation&&event.stopPropagation(),this.filterControl.setValue("")},MultiselectDropdown.prototype.toggleDropdown=function(){this.isVisible=!this.isVisible,this.isVisible?this.dropdownOpened.emit():this.dropdownClosed.emit()},MultiselectDropdown.prototype.isSelected=function(option){return this.model&&this.model.indexOf(option.id)>-1},MultiselectDropdown.prototype.setSelected=function(_event,option){var _this=this;if(!option.isLabel&&!this.disabledSelection){_event.stopPropagation&&_event.stopPropagation();var index=this.model.indexOf(option.id),isAtSelectionLimit=this.settings.selectionLimit>0&&this.model.length>=this.settings.selectionLimit,removeItem_1=function(idx,id){_this.model.splice(idx,1),_this.onRemoved.emit(id),_this.settings.isLazyLoad&&_this.lazyLoadOptions.some(function(val){return val.id===id})&&_this.lazyLoadOptions.splice(_this.lazyLoadOptions.indexOf(_this.lazyLoadOptions.find(function(val){return val.id===id})),1)};if(index>-1){(void 0===this.settings.minSelectionLimit||this.numSelected>this.settings.minSelectionLimit)&&removeItem_1(index,option.id);var parentIndex=option.parentId&&this.model.indexOf(option.parentId);parentIndex>-1?removeItem_1(parentIndex,option.parentId):this.parents.indexOf(option.id)>-1&&this.options.filter(function(child){return _this.model.indexOf(child.id)>-1&&child.parentId===option.id}).forEach(function(child){return removeItem_1(_this.model.indexOf(child.id),child.id)})}else{if(isAtSelectionLimit&&!this.settings.autoUnselect)return void this.selectionLimitReached.emit(this.model.length);var addItem_1=function(id){_this.model.push(id),_this.onAdded.emit(id),_this.settings.isLazyLoad&&!_this.lazyLoadOptions.some(function(val){return val.id===id})&&_this.lazyLoadOptions.push(option)};if(addItem_1(option.id),isAtSelectionLimit)removeItem_1(0,this.model[0]);else if(option.parentId&&!this.settings.ignoreLabels){var children=this.options.filter(function(child){return child.id!==option.id&&child.parentId===option.parentId});children.every(function(child){return _this.model.indexOf(child.id)>-1})&&addItem_1(option.parentId)}else if(this.parents.indexOf(option.id)>-1){var children=this.options.filter(function(child){return _this.model.indexOf(child.id)<0&&child.parentId===option.id});children.forEach(function(child){return addItem_1(child.id)})}}this.settings.closeOnSelect&&this.toggleDropdown(),this.model=this.model.slice(),this.fireModelChange()}},MultiselectDropdown.prototype.updateNumSelected=function(){var _this=this;this.numSelected=this.model.filter(function(id){return _this.parents.indexOf(id)<0}).length||0},MultiselectDropdown.prototype.updateTitle=function(){var _this=this,numSelectedOptions=this.options.length;if(this.settings.ignoreLabels&&(numSelectedOptions=this.options.filter(function(option){return!option.isLabel}).length),0===this.numSelected||this.settings.fixedTitle)this.title=this.texts?this.texts.defaultTitle:"";else if(this.settings.displayAllSelectedText&&this.model.length===numSelectedOptions)this.title=this.texts?this.texts.allSelected:"";else if(this.settings.dynamicTitleMaxItems&&this.settings.dynamicTitleMaxItems>=this.numSelected){var useOptions=this.settings.isLazyLoad&&this.lazyLoadOptions?this.lazyLoadOptions:this.options;this.title=useOptions.filter(function(option){return _this.model.indexOf(option.id)>-1}).map(function(option){return option.name}).join(", ")}else this.title=this.numSelected+" "+(1===this.numSelected?this.texts.checked:this.texts.checkedPlural)},MultiselectDropdown.prototype.searchFilterApplied=function(){return this.settings.enableSearch&&this.filterControl.value&&this.filterControl.value.length>0},MultiselectDropdown.prototype.addChecks=function(options){var checkedOptions=options.filter(function(option){return-1!==this.model.indexOf(option.id)||this.settings.ignoreLabels&&option.isLabel?!1:(this.onAdded.emit(option.id),!0)}.bind(this)).map(function(option){return option.id});this.model=this.model.concat(checkedOptions)},MultiselectDropdown.prototype.checkAll=function(){this.disabledSelection||(this.addChecks(this.searchFilterApplied()?this.filteredOptions:this.options),this.settings.isLazyLoad&&this.settings.selectAddedValues&&(this.searchFilterApplied()&&!this.checkAllStatus?this.checkAllSearchRegister.add(this.filterControl.value):(this.checkAllSearchRegister.clear(),this.checkAllStatus=!0),this.load()),this.fireModelChange())},MultiselectDropdown.prototype.uncheckAll=function(){var _this=this;if(!this.disabledSelection){var checkedOptions=this.model,unCheckedOptions_1=this.searchFilterApplied()?this.filteredOptions.map(function(option){return option.id}):this.model;unCheckedOptions_1=checkedOptions.filter(function(item){return _this.model.includes(item)}),this.model=this.model.filter(function(id){return unCheckedOptions_1.indexOf(id)<0&&void 0===_this.settings.minSelectionLimit||unCheckedOptions_1.indexOf(id)<_this.settings.minSelectionLimit?!0:(_this.onRemoved.emit(id),!1)}),this.settings.isLazyLoad&&this.settings.selectAddedValues&&(this.searchFilterApplied()?this.checkAllSearchRegister.has(this.filterControl.value)&&(this.checkAllSearchRegister.delete(this.filterControl.value),this.checkAllSearchRegister.forEach(function(searchTerm){var filterOptions=this.applyFilters(this.options.filter(function(option){return unCheckedOptions_1.includes(option.id)}),searchTerm);this.addChecks(filterOptions)}.bind(this))):(this.checkAllSearchRegister.clear(),this.checkAllStatus=!1),this.load()),this.fireModelChange()}},MultiselectDropdown.prototype.preventCheckboxCheck=function(event,option){this.settings.selectionLimit&&!this.settings.autoUnselect&&this.model.length>=this.settings.selectionLimit&&-1===this.model.indexOf(option.id)&&event.preventDefault&&event.preventDefault()},MultiselectDropdown.prototype.isCheckboxDisabled=function(){return this.disabledSelection},MultiselectDropdown.prototype.checkScrollPosition=function(ev){var scrollTop=ev.target.scrollTop,scrollHeight=ev.target.scrollHeight,scrollElementHeight=ev.target.clientHeight,roundingPixel=1,gutterPixel=1;scrollTop>=scrollHeight-(1+this.settings.loadViewDistance)*scrollElementHeight-roundingPixel-gutterPixel&&this.load()},MultiselectDropdown.prototype.checkScrollPropagation=function(ev,element){var scrollTop=element.scrollTop,scrollHeight=element.scrollHeight,scrollElementHeight=element.clientHeight;(ev.deltaY>0&&scrollTop+scrollElementHeight>=scrollHeight||ev.deltaY<0&&0>=scrollTop)&&(ev=ev||window.event,ev.preventDefault&&ev.preventDefault(),ev.returnValue=!1)},MultiselectDropdown.prototype.load=function(){this.onLazyLoad.emit({length:this.options.length,filter:this.filterControl.value,checkAllSearches:this.checkAllSearchRegister,checkAllStatus:this.checkAllStatus})},MultiselectDropdown}();MultiselectDropdown.decorators=[{type:_angular_core.Component,args:[{selector:"ss-multiselect-dropdown",template:'<div class="dropdown" [ngClass]="settings.containerClasses" [class.open]="isVisible"><button type="button" class="dropdown-toggle" [ngClass]="settings.buttonClasses" (click)="toggleDropdown()" [disabled]="disabled">{{ title }}<span class="caret"></span></button><ul #scroller *ngIf="isVisible" class="dropdown-menu" (scroll)="settings.isLazyLoad ? checkScrollPosition($event) : null" (wheel)="settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null" [class.pull-right]="settings.pullRight" [class.dropdown-menu-right]="settings.pullRight" [style.max-height]="settings.maxHeight" style="display: block; height: auto; overflow-y: auto"><li class="dropdown-item search" *ngIf="settings.enableSearch"><div class="input-group input-group-sm"><span class="input-group-addon" id="sizing-addon3"><i class="fa fa-search"></i></span> <input type="text" class="form-control" placeholder="{{ texts.searchPlaceholder }}" aria-describedby="sizing-addon3" [formControl]="filterControl" autofocus> <span class="input-group-btn" *ngIf="filterControl.value.length > 0"><button class="btn btn-default btn-secondary" type="button" (click)="clearSearch($event)"><i class="fa fa-times"></i></button></span></div></li><li class="dropdown-divider divider" *ngIf="settings.enableSearch"></li><li class="dropdown-item check-control check-control-check" *ngIf="settings.showCheckAll && !disabledSelection" (click)="checkAll()"><a href="javascript:;" role="menuitem" tabindex="-1"><span style="width: 16px" [ngClass]="{\'glyphicon glyphicon-ok\': settings.checkedStyle !== \'fontawesome\',\'fa fa-check\': settings.checkedStyle === \'fontawesome\'}"></span> {{ texts.checkAll }}</a></li><li class="dropdown-item check-control check-control-uncheck" *ngIf="settings.showUncheckAll && !disabledSelection" (click)="uncheckAll()"><a href="javascript:;" role="menuitem" tabindex="-1"><span style="width: 16px" [ngClass]="{\'glyphicon glyphicon-remove\': settings.checkedStyle !== \'fontawesome\',\'fa fa-times\': settings.checkedStyle === \'fontawesome\'}"></span> {{ texts.uncheckAll }}</a></li><li *ngIf="settings.showCheckAll || settings.showUncheckAll" class="dropdown-divider divider"></li><li *ngIf="!renderItems" class="dropdown-item empty">{{ texts.searchNoRenderText }}</li><li *ngIf="renderItems && !renderFilteredOptions.length" class="dropdown-item empty">{{ texts.searchEmptyResult }}</li><li class="dropdown-item" *ngFor="let option of renderFilteredOptions" (click)="setSelected($event, option)" [ngStyle]="getItemStyle(option)" [ngClass]="option.classes" [class.dropdown-header]="option.isLabel"><a *ngIf="!option.isLabel; else label" href="javascript:;" role="menuitem" tabindex="-1" [style.padding-left]="this.parents.length>0&&this.parents.indexOf(option.id)<0&&\'30px\'" [ngStyle]="getItemStyleSelectionDisabled()"><ng-container [ngSwitch]="settings.checkedStyle"><input *ngSwitchCase="\'checkboxes\'" type="checkbox" [checked]="isSelected(option)" (click)="preventCheckboxCheck($event, option)" [disabled]="isCheckboxDisabled()" [ngStyle]="getItemStyleSelectionDisabled()" > <span *ngSwitchCase="\'glyphicon\'" style="width: 16px" class="glyphicon" [class.glyphicon-ok]="isSelected(option)"></span> <span *ngSwitchCase="\'fontawesome\'" style="width: 16px;display: inline-block"><i *ngIf="isSelected(option)" class="fa fa-check" aria-hidden="true"></i></span></ng-container><span [ngClass]="settings.itemClasses" [style.font-weight]="this.parents.indexOf(option.id)>=0?\'bold\':\'normal\'">{{ option.name }}</span></a><ng-template #label>{{ option.name }}</ng-template></li></ul></div>',styles:["a { outline: none !important;}.dropdown-inline { display: inline-block;}.dropdown-toggle .caret { margin-left: 4px; white-space: nowrap; display: inline-block;}"],providers:[MULTISELECT_VALUE_ACCESSOR,MultiSelectSearchFilter]}]}],MultiselectDropdown.ctorParameters=function(){return[{type:_angular_core.ElementRef},{type:_angular_forms.FormBuilder},{type:MultiSelectSearchFilter},{type:_angular_core.IterableDiffers}]},MultiselectDropdown.propDecorators={options:[{type:_angular_core.Input}],settings:[{type:_angular_core.Input}],texts:[{type:_angular_core.Input}],disabled:[{type:_angular_core.Input}],disabledSelection:[{type:_angular_core.Input}],selectionLimitReached:[{type:_angular_core.Output}],dropdownClosed:[{type:_angular_core.Output}],dropdownOpened:[{type:_angular_core.Output}],onAdded:[{type:_angular_core.Output}],onRemoved:[{type:_angular_core.Output}],onLazyLoad:[{type:_angular_core.Output}],onFilter:[{type:_angular_core.Output}],onClick:[{type:_angular_core.HostListener,args:["document: click",["$event.target"]]},{type:_angular_core.HostListener,args:["document: touchstart",["$event.target"]]}]};var MultiselectDropdownModule=function(){function MultiselectDropdownModule(){}return MultiselectDropdownModule}();MultiselectDropdownModule.decorators=[{type:_angular_core.NgModule,args:[{imports:[_angular_common.CommonModule,_angular_forms.ReactiveFormsModule],exports:[MultiselectDropdown,MultiSelectSearchFilter],declarations:[MultiselectDropdown,MultiSelectSearchFilter]}]}],MultiselectDropdownModule.ctorParameters=function(){return[]},exports.MultiSelectSearchFilter=MultiSelectSearchFilter,exports.MultiselectDropdownModule=MultiselectDropdownModule,exports.MultiselectDropdown=MultiselectDropdown,Object.defineProperty(exports,"__esModule",{value:!0})});

@@ -67,3 +67,4 @@ import 'rxjs/add/operator/takeUntil';

loadViewDistance: 1,
selectAddedValues: false
selectAddedValues: false,
ignoreLabels: false
};

@@ -299,3 +300,3 @@ this.defaultTexts = {

if (!isAtSelectionLimit) {
if (option.parentId) {
if (option.parentId && !this.settings.ignoreLabels) {
var children = this.options.filter(function (child) { return child.id !== option.id && child.parentId === option.parentId; });

@@ -328,10 +329,14 @@ if (children.every(function (child) { return _this.model.indexOf(child.id) > -1; })) {

var _this = this;
var numSelectedOptions = this.options.length;
if (this.settings.ignoreLabels) {
numSelectedOptions = this.options.filter(function (option) { return !option.isLabel; }).length;
}
if (this.numSelected === 0 || this.settings.fixedTitle) {
this.title = (this.texts) ? this.texts.defaultTitle : '';
}
else if (this.settings.displayAllSelectedText && this.model.length === this.options.length) {
else if (this.settings.displayAllSelectedText && this.model.length === numSelectedOptions) {
this.title = (this.texts) ? this.texts.allSelected : '';
}
else if (this.settings.dynamicTitleMaxItems && this.settings.dynamicTitleMaxItems >= this.numSelected) {
var useOptions = this.settings.isLazyLoad ? this.lazyLoadOptions : this.options;
var useOptions = this.settings.isLazyLoad && this.lazyLoadOptions ? this.lazyLoadOptions : this.options;
this.title = useOptions

@@ -356,3 +361,3 @@ .filter(function (option) {

.filter(function (option) {
if (this.model.indexOf(option.id) === -1) {
if (this.model.indexOf(option.id) === -1 && !(this.settings.ignoreLabels && option.isLabel)) {
this.onAdded.emit(option.id);

@@ -487,4 +492,4 @@ return true;

'onFilter': [{ type: Output },],
'onClick': [{ type: HostListener, args: ['document: click', ['$event.target'],] },],
'onClick': [{ type: HostListener, args: ['document: click', ['$event.target'],] }, { type: HostListener, args: ['document: touchstart', ['$event.target'],] },],
};
//# sourceMappingURL=dropdown.component.js.map

@@ -1,1 +0,1 @@

[{"__symbolic":"module","version":3,"metadata":{"MultiselectDropdown":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ss-multiselect-dropdown","template":"<div class=\"dropdown\" [ngClass]=\"settings.containerClasses\" [class.open]=\"isVisible\"><button type=\"button\" class=\"dropdown-toggle\" [ngClass]=\"settings.buttonClasses\" (click)=\"toggleDropdown()\" [disabled]=\"disabled\">{{ title }}<span class=\"caret\"></span></button><ul #scroller *ngIf=\"isVisible\" class=\"dropdown-menu\" (scroll)=\"settings.isLazyLoad ? checkScrollPosition($event) : null\" (wheel)=\"settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null\" [class.pull-right]=\"settings.pullRight\" [class.dropdown-menu-right]=\"settings.pullRight\" [style.max-height]=\"settings.maxHeight\" style=\"display: block; height: auto; overflow-y: auto\"><li class=\"dropdown-item search\" *ngIf=\"settings.enableSearch\"><div class=\"input-group input-group-sm\"><span class=\"input-group-addon\" id=\"sizing-addon3\"><i class=\"fa fa-search\"></i></span> <input type=\"text\" class=\"form-control\" placeholder=\"{{ texts.searchPlaceholder }}\" aria-describedby=\"sizing-addon3\" [formControl]=\"filterControl\" autofocus> <span class=\"input-group-btn\" *ngIf=\"filterControl.value.length > 0\"><button class=\"btn btn-default btn-secondary\" type=\"button\" (click)=\"clearSearch($event)\"><i class=\"fa fa-times\"></i></button></span></div></li><li class=\"dropdown-divider divider\" *ngIf=\"settings.enableSearch\"></li><li class=\"dropdown-item check-control check-control-check\" *ngIf=\"settings.showCheckAll && !disabledSelection\" (click)=\"checkAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-ok': settings.checkedStyle !== 'fontawesome','fa fa-check': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.checkAll }}</a></li><li class=\"dropdown-item check-control check-control-uncheck\" *ngIf=\"settings.showUncheckAll && !disabledSelection\" (click)=\"uncheckAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-remove': settings.checkedStyle !== 'fontawesome','fa fa-times': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.uncheckAll }}</a></li><li *ngIf=\"settings.showCheckAll || settings.showUncheckAll\" class=\"dropdown-divider divider\"></li><li *ngIf=\"!renderItems\" class=\"dropdown-item empty\">{{ texts.searchNoRenderText }}</li><li *ngIf=\"renderItems && !renderFilteredOptions.length\" class=\"dropdown-item empty\">{{ texts.searchEmptyResult }}</li><li class=\"dropdown-item\" *ngFor=\"let option of renderFilteredOptions\" (click)=\"setSelected($event, option)\" [ngStyle]=\"getItemStyle(option)\" [ngClass]=\"option.classes\" [class.dropdown-header]=\"option.isLabel\"><a *ngIf=\"!option.isLabel; else label\" href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\" [style.padding-left]=\"this.parents.length>0&&this.parents.indexOf(option.id)<0&&'30px'\" [ngStyle]=\"getItemStyleSelectionDisabled()\"><ng-container [ngSwitch]=\"settings.checkedStyle\"><input *ngSwitchCase=\"'checkboxes'\" type=\"checkbox\" [checked]=\"isSelected(option)\" (click)=\"preventCheckboxCheck($event, option)\" [disabled]=\"isCheckboxDisabled()\" [ngStyle]=\"getItemStyleSelectionDisabled()\" > <span *ngSwitchCase=\"'glyphicon'\" style=\"width: 16px\" class=\"glyphicon\" [class.glyphicon-ok]=\"isSelected(option)\"></span> <span *ngSwitchCase=\"'fontawesome'\" style=\"width: 16px;display: inline-block\"><i *ngIf=\"isSelected(option)\" class=\"fa fa-check\" aria-hidden=\"true\"></i></span></ng-container><span [ngClass]=\"settings.itemClasses\" [style.font-weight]=\"this.parents.indexOf(option.id)>=0?'bold':'normal'\">{{ option.name }}</span></a><ng-template #label>{{ option.name }}</ng-template></li></ul></div>","styles":["a { outline: none !important;}.dropdown-inline { display: inline-block;}.dropdown-toggle .caret { margin-left: 4px; white-space: nowrap; display: inline-block;}"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR"},"useExisting":{"__symbolic":"reference","name":"MultiselectDropdown"},"multi":true},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"}]}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"texts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabledSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectionLimitReached":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownClosed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownOpened":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onAdded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onRemoved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onLazyLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["document: click",["$event.target"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder"},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers"}]}],"getItemStyle":[{"__symbolic":"method"}],"getItemStyleSelectionDisabled":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateRenderItems":[{"__symbolic":"method"}],"applyFilters":[{"__symbolic":"method"}],"fireModelChange":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"clearSearch":[{"__symbolic":"method"}],"toggleDropdown":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}],"setSelected":[{"__symbolic":"method"}],"updateNumSelected":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"searchFilterApplied":[{"__symbolic":"method"}],"addChecks":[{"__symbolic":"method"}],"checkAll":[{"__symbolic":"method"}],"uncheckAll":[{"__symbolic":"method"}],"preventCheckboxCheck":[{"__symbolic":"method"}],"isCheckboxDisabled":[{"__symbolic":"method"}],"checkScrollPosition":[{"__symbolic":"method"}],"checkScrollPropagation":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"MultiselectDropdown":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ss-multiselect-dropdown","template":"<div class=\"dropdown\" [ngClass]=\"settings.containerClasses\" [class.open]=\"isVisible\"><button type=\"button\" class=\"dropdown-toggle\" [ngClass]=\"settings.buttonClasses\" (click)=\"toggleDropdown()\" [disabled]=\"disabled\">{{ title }}<span class=\"caret\"></span></button><ul #scroller *ngIf=\"isVisible\" class=\"dropdown-menu\" (scroll)=\"settings.isLazyLoad ? checkScrollPosition($event) : null\" (wheel)=\"settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null\" [class.pull-right]=\"settings.pullRight\" [class.dropdown-menu-right]=\"settings.pullRight\" [style.max-height]=\"settings.maxHeight\" style=\"display: block; height: auto; overflow-y: auto\"><li class=\"dropdown-item search\" *ngIf=\"settings.enableSearch\"><div class=\"input-group input-group-sm\"><span class=\"input-group-addon\" id=\"sizing-addon3\"><i class=\"fa fa-search\"></i></span> <input type=\"text\" class=\"form-control\" placeholder=\"{{ texts.searchPlaceholder }}\" aria-describedby=\"sizing-addon3\" [formControl]=\"filterControl\" autofocus> <span class=\"input-group-btn\" *ngIf=\"filterControl.value.length > 0\"><button class=\"btn btn-default btn-secondary\" type=\"button\" (click)=\"clearSearch($event)\"><i class=\"fa fa-times\"></i></button></span></div></li><li class=\"dropdown-divider divider\" *ngIf=\"settings.enableSearch\"></li><li class=\"dropdown-item check-control check-control-check\" *ngIf=\"settings.showCheckAll && !disabledSelection\" (click)=\"checkAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-ok': settings.checkedStyle !== 'fontawesome','fa fa-check': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.checkAll }}</a></li><li class=\"dropdown-item check-control check-control-uncheck\" *ngIf=\"settings.showUncheckAll && !disabledSelection\" (click)=\"uncheckAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-remove': settings.checkedStyle !== 'fontawesome','fa fa-times': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.uncheckAll }}</a></li><li *ngIf=\"settings.showCheckAll || settings.showUncheckAll\" class=\"dropdown-divider divider\"></li><li *ngIf=\"!renderItems\" class=\"dropdown-item empty\">{{ texts.searchNoRenderText }}</li><li *ngIf=\"renderItems && !renderFilteredOptions.length\" class=\"dropdown-item empty\">{{ texts.searchEmptyResult }}</li><li class=\"dropdown-item\" *ngFor=\"let option of renderFilteredOptions\" (click)=\"setSelected($event, option)\" [ngStyle]=\"getItemStyle(option)\" [ngClass]=\"option.classes\" [class.dropdown-header]=\"option.isLabel\"><a *ngIf=\"!option.isLabel; else label\" href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\" [style.padding-left]=\"this.parents.length>0&&this.parents.indexOf(option.id)<0&&'30px'\" [ngStyle]=\"getItemStyleSelectionDisabled()\"><ng-container [ngSwitch]=\"settings.checkedStyle\"><input *ngSwitchCase=\"'checkboxes'\" type=\"checkbox\" [checked]=\"isSelected(option)\" (click)=\"preventCheckboxCheck($event, option)\" [disabled]=\"isCheckboxDisabled()\" [ngStyle]=\"getItemStyleSelectionDisabled()\" > <span *ngSwitchCase=\"'glyphicon'\" style=\"width: 16px\" class=\"glyphicon\" [class.glyphicon-ok]=\"isSelected(option)\"></span> <span *ngSwitchCase=\"'fontawesome'\" style=\"width: 16px;display: inline-block\"><i *ngIf=\"isSelected(option)\" class=\"fa fa-check\" aria-hidden=\"true\"></i></span></ng-container><span [ngClass]=\"settings.itemClasses\" [style.font-weight]=\"this.parents.indexOf(option.id)>=0?'bold':'normal'\">{{ option.name }}</span></a><ng-template #label>{{ option.name }}</ng-template></li></ul></div>","styles":["a { outline: none !important;}.dropdown-inline { display: inline-block;}.dropdown-toggle .caret { margin-left: 4px; white-space: nowrap; display: inline-block;}"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR"},"useExisting":{"__symbolic":"reference","name":"MultiselectDropdown"},"multi":true},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"}]}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"texts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabledSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectionLimitReached":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownClosed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownOpened":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onAdded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onRemoved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onLazyLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["document: click",["$event.target"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder"},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers"}]}],"getItemStyle":[{"__symbolic":"method"}],"getItemStyleSelectionDisabled":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateRenderItems":[{"__symbolic":"method"}],"applyFilters":[{"__symbolic":"method"}],"fireModelChange":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"clearSearch":[{"__symbolic":"method"}],"toggleDropdown":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}],"setSelected":[{"__symbolic":"method"}],"updateNumSelected":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"searchFilterApplied":[{"__symbolic":"method"}],"addChecks":[{"__symbolic":"method"}],"checkAll":[{"__symbolic":"method"}],"uncheckAll":[{"__symbolic":"method"}],"preventCheckboxCheck":[{"__symbolic":"method"}],"isCheckboxDisabled":[{"__symbolic":"method"}],"checkScrollPosition":[{"__symbolic":"method"}],"checkScrollPropagation":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}]}}}}]
[{"__symbolic":"module","version":3,"metadata":{"MultiselectDropdown":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ss-multiselect-dropdown","template":"<div class=\"dropdown\" [ngClass]=\"settings.containerClasses\" [class.open]=\"isVisible\"><button type=\"button\" class=\"dropdown-toggle\" [ngClass]=\"settings.buttonClasses\" (click)=\"toggleDropdown()\" [disabled]=\"disabled\">{{ title }}<span class=\"caret\"></span></button><ul #scroller *ngIf=\"isVisible\" class=\"dropdown-menu\" (scroll)=\"settings.isLazyLoad ? checkScrollPosition($event) : null\" (wheel)=\"settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null\" [class.pull-right]=\"settings.pullRight\" [class.dropdown-menu-right]=\"settings.pullRight\" [style.max-height]=\"settings.maxHeight\" style=\"display: block; height: auto; overflow-y: auto\"><li class=\"dropdown-item search\" *ngIf=\"settings.enableSearch\"><div class=\"input-group input-group-sm\"><span class=\"input-group-addon\" id=\"sizing-addon3\"><i class=\"fa fa-search\"></i></span> <input type=\"text\" class=\"form-control\" placeholder=\"{{ texts.searchPlaceholder }}\" aria-describedby=\"sizing-addon3\" [formControl]=\"filterControl\" autofocus> <span class=\"input-group-btn\" *ngIf=\"filterControl.value.length > 0\"><button class=\"btn btn-default btn-secondary\" type=\"button\" (click)=\"clearSearch($event)\"><i class=\"fa fa-times\"></i></button></span></div></li><li class=\"dropdown-divider divider\" *ngIf=\"settings.enableSearch\"></li><li class=\"dropdown-item check-control check-control-check\" *ngIf=\"settings.showCheckAll && !disabledSelection\" (click)=\"checkAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-ok': settings.checkedStyle !== 'fontawesome','fa fa-check': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.checkAll }}</a></li><li class=\"dropdown-item check-control check-control-uncheck\" *ngIf=\"settings.showUncheckAll && !disabledSelection\" (click)=\"uncheckAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-remove': settings.checkedStyle !== 'fontawesome','fa fa-times': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.uncheckAll }}</a></li><li *ngIf=\"settings.showCheckAll || settings.showUncheckAll\" class=\"dropdown-divider divider\"></li><li *ngIf=\"!renderItems\" class=\"dropdown-item empty\">{{ texts.searchNoRenderText }}</li><li *ngIf=\"renderItems && !renderFilteredOptions.length\" class=\"dropdown-item empty\">{{ texts.searchEmptyResult }}</li><li class=\"dropdown-item\" *ngFor=\"let option of renderFilteredOptions\" (click)=\"setSelected($event, option)\" [ngStyle]=\"getItemStyle(option)\" [ngClass]=\"option.classes\" [class.dropdown-header]=\"option.isLabel\"><a *ngIf=\"!option.isLabel; else label\" href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\" [style.padding-left]=\"this.parents.length>0&&this.parents.indexOf(option.id)<0&&'30px'\" [ngStyle]=\"getItemStyleSelectionDisabled()\"><ng-container [ngSwitch]=\"settings.checkedStyle\"><input *ngSwitchCase=\"'checkboxes'\" type=\"checkbox\" [checked]=\"isSelected(option)\" (click)=\"preventCheckboxCheck($event, option)\" [disabled]=\"isCheckboxDisabled()\" [ngStyle]=\"getItemStyleSelectionDisabled()\" > <span *ngSwitchCase=\"'glyphicon'\" style=\"width: 16px\" class=\"glyphicon\" [class.glyphicon-ok]=\"isSelected(option)\"></span> <span *ngSwitchCase=\"'fontawesome'\" style=\"width: 16px;display: inline-block\"><i *ngIf=\"isSelected(option)\" class=\"fa fa-check\" aria-hidden=\"true\"></i></span></ng-container><span [ngClass]=\"settings.itemClasses\" [style.font-weight]=\"this.parents.indexOf(option.id)>=0?'bold':'normal'\">{{ option.name }}</span></a><ng-template #label>{{ option.name }}</ng-template></li></ul></div>","styles":["a { outline: none !important;}.dropdown-inline { display: inline-block;}.dropdown-toggle .caret { margin-left: 4px; white-space: nowrap; display: inline-block;}"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR"},"useExisting":{"__symbolic":"reference","name":"MultiselectDropdown"},"multi":true},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"}]}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"texts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabledSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectionLimitReached":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownClosed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownOpened":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onAdded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onRemoved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onLazyLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["document: click",["$event.target"]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["document: touchstart",["$event.target"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder"},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers"}]}],"getItemStyle":[{"__symbolic":"method"}],"getItemStyleSelectionDisabled":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateRenderItems":[{"__symbolic":"method"}],"applyFilters":[{"__symbolic":"method"}],"fireModelChange":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"clearSearch":[{"__symbolic":"method"}],"toggleDropdown":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}],"setSelected":[{"__symbolic":"method"}],"updateNumSelected":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"searchFilterApplied":[{"__symbolic":"method"}],"addChecks":[{"__symbolic":"method"}],"checkAll":[{"__symbolic":"method"}],"uncheckAll":[{"__symbolic":"method"}],"preventCheckboxCheck":[{"__symbolic":"method"}],"isCheckboxDisabled":[{"__symbolic":"method"}],"checkScrollPosition":[{"__symbolic":"method"}],"checkScrollPropagation":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}]}}}},{"__symbolic":"module","version":1,"metadata":{"MultiselectDropdown":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ss-multiselect-dropdown","template":"<div class=\"dropdown\" [ngClass]=\"settings.containerClasses\" [class.open]=\"isVisible\"><button type=\"button\" class=\"dropdown-toggle\" [ngClass]=\"settings.buttonClasses\" (click)=\"toggleDropdown()\" [disabled]=\"disabled\">{{ title }}<span class=\"caret\"></span></button><ul #scroller *ngIf=\"isVisible\" class=\"dropdown-menu\" (scroll)=\"settings.isLazyLoad ? checkScrollPosition($event) : null\" (wheel)=\"settings.stopScrollPropagation ? checkScrollPropagation($event, scroller) : null\" [class.pull-right]=\"settings.pullRight\" [class.dropdown-menu-right]=\"settings.pullRight\" [style.max-height]=\"settings.maxHeight\" style=\"display: block; height: auto; overflow-y: auto\"><li class=\"dropdown-item search\" *ngIf=\"settings.enableSearch\"><div class=\"input-group input-group-sm\"><span class=\"input-group-addon\" id=\"sizing-addon3\"><i class=\"fa fa-search\"></i></span> <input type=\"text\" class=\"form-control\" placeholder=\"{{ texts.searchPlaceholder }}\" aria-describedby=\"sizing-addon3\" [formControl]=\"filterControl\" autofocus> <span class=\"input-group-btn\" *ngIf=\"filterControl.value.length > 0\"><button class=\"btn btn-default btn-secondary\" type=\"button\" (click)=\"clearSearch($event)\"><i class=\"fa fa-times\"></i></button></span></div></li><li class=\"dropdown-divider divider\" *ngIf=\"settings.enableSearch\"></li><li class=\"dropdown-item check-control check-control-check\" *ngIf=\"settings.showCheckAll && !disabledSelection\" (click)=\"checkAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-ok': settings.checkedStyle !== 'fontawesome','fa fa-check': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.checkAll }}</a></li><li class=\"dropdown-item check-control check-control-uncheck\" *ngIf=\"settings.showUncheckAll && !disabledSelection\" (click)=\"uncheckAll()\"><a href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\"><span style=\"width: 16px\" [ngClass]=\"{'glyphicon glyphicon-remove': settings.checkedStyle !== 'fontawesome','fa fa-times': settings.checkedStyle === 'fontawesome'}\"></span> {{ texts.uncheckAll }}</a></li><li *ngIf=\"settings.showCheckAll || settings.showUncheckAll\" class=\"dropdown-divider divider\"></li><li *ngIf=\"!renderItems\" class=\"dropdown-item empty\">{{ texts.searchNoRenderText }}</li><li *ngIf=\"renderItems && !renderFilteredOptions.length\" class=\"dropdown-item empty\">{{ texts.searchEmptyResult }}</li><li class=\"dropdown-item\" *ngFor=\"let option of renderFilteredOptions\" (click)=\"setSelected($event, option)\" [ngStyle]=\"getItemStyle(option)\" [ngClass]=\"option.classes\" [class.dropdown-header]=\"option.isLabel\"><a *ngIf=\"!option.isLabel; else label\" href=\"javascript:;\" role=\"menuitem\" tabindex=\"-1\" [style.padding-left]=\"this.parents.length>0&&this.parents.indexOf(option.id)<0&&'30px'\" [ngStyle]=\"getItemStyleSelectionDisabled()\"><ng-container [ngSwitch]=\"settings.checkedStyle\"><input *ngSwitchCase=\"'checkboxes'\" type=\"checkbox\" [checked]=\"isSelected(option)\" (click)=\"preventCheckboxCheck($event, option)\" [disabled]=\"isCheckboxDisabled()\" [ngStyle]=\"getItemStyleSelectionDisabled()\" > <span *ngSwitchCase=\"'glyphicon'\" style=\"width: 16px\" class=\"glyphicon\" [class.glyphicon-ok]=\"isSelected(option)\"></span> <span *ngSwitchCase=\"'fontawesome'\" style=\"width: 16px;display: inline-block\"><i *ngIf=\"isSelected(option)\" class=\"fa fa-check\" aria-hidden=\"true\"></i></span></ng-container><span [ngClass]=\"settings.itemClasses\" [style.font-weight]=\"this.parents.indexOf(option.id)>=0?'bold':'normal'\">{{ option.name }}</span></a><ng-template #label>{{ option.name }}</ng-template></li></ul></div>","styles":["a { outline: none !important;}.dropdown-inline { display: inline-block;}.dropdown-toggle .caret { margin-left: 4px; white-space: nowrap; display: inline-block;}"],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR"},"useExisting":{"__symbolic":"reference","name":"MultiselectDropdown"},"multi":true},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"}]}]}],"members":{"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"settings":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"texts":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabledSelection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"selectionLimitReached":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownClosed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dropdownOpened":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onAdded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onRemoved":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onLazyLoad":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["document: click",["$event.target"]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["document: touchstart",["$event.target"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder"},{"__symbolic":"reference","module":"./search-filter.pipe","name":"MultiSelectSearchFilter"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers"}]}],"getItemStyle":[{"__symbolic":"method"}],"getItemStyleSelectionDisabled":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"updateRenderItems":[{"__symbolic":"method"}],"applyFilters":[{"__symbolic":"method"}],"fireModelChange":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"clearSearch":[{"__symbolic":"method"}],"toggleDropdown":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}],"setSelected":[{"__symbolic":"method"}],"updateNumSelected":[{"__symbolic":"method"}],"updateTitle":[{"__symbolic":"method"}],"searchFilterApplied":[{"__symbolic":"method"}],"addChecks":[{"__symbolic":"method"}],"checkAll":[{"__symbolic":"method"}],"uncheckAll":[{"__symbolic":"method"}],"preventCheckboxCheck":[{"__symbolic":"method"}],"isCheckboxDisabled":[{"__symbolic":"method"}],"checkScrollPosition":[{"__symbolic":"method"}],"checkScrollPropagation":[{"__symbolic":"method"}],"load":[{"__symbolic":"method"}]}}}}]

@@ -18,3 +18,3 @@ import { Pipe } from '@angular/core';

var isUnderLimit = options.length <= limit;
if (this._searchCache[str]) {
if (this._searchCache.hasOwnProperty(str)) {
return isUnderLimit ? this._searchCache[str] : this._limitRenderedItems(this._searchCache[str], renderLimit);

@@ -21,0 +21,0 @@ }

@@ -52,2 +52,7 @@ export interface IMultiSelectOption {

selectAddedValues?: boolean;
/**
* false - By default
* If activated label IDs don't count and won't be written to the model.
*/
ignoreLabels?: boolean;
}

@@ -54,0 +59,0 @@ export interface IMultiSelectTexts {

{
"name": "angular-2-dropdown-multiselect",
"version": "1.6.1",
"version": "1.6.2",
"description": "Customizable dropdown multiselect in Angular 2 with bootstrap css.",

@@ -5,0 +5,0 @@ "main": "bundles/dropdown.umd.js",

@@ -137,3 +137,4 @@ # AngularX Dropdown Multiselect for Bootstrap CSS

| stopScrollPropagation | Scrolling the dropdown will not overflow to document | false |
| SelectAddedValues | Additional lazy loaded ```Select All``` values are checked when added on scrolling | false |
| selectAddedValues | Additional lazy loaded ```Select All``` values are checked when added on scrolling | false |
| ignoreLabels | Ignore label options when counting selected options | false |

@@ -140,0 +141,0 @@ ### Texts

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc