Socket
Socket
Sign inDemoInstall

ionic-selectable-v3

Package Overview
Dependencies
5
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.4.21 to 3.4.22

2

bundles/ionic-selectable-v3.umd.min.js

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

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms"),require("ionic-angular"),require("rxjs"),require("@angular/common")):"function"==typeof define&&define.amd?define("ionic-selectable-v3",["exports","@angular/core","@angular/forms","ionic-angular","rxjs","@angular/common"],t):t(e["ionic-selectable-v3"]={},e.ng.core,e.ng.forms,e.ionicAngular,null,e.ng.common)}(this,function(e,l,t,n,i,o){"use strict";function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,o,s=n.call(e),l=[];try{for(;(void 0===t||0<t--)&&!(i=s.next()).done;)l.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(n=s["return"])&&n.call(s)}finally{if(o)throw o.error}}return l}function a(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}var r=function P(){};r.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableAddItemTemplate]"}]}],r.ctorParameters=function(){return[]};var c=function B(){};c.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableCloseButtonTemplate]"}]}],c.ctorParameters=function(){return[]};var m=function F(){};m.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableFooterTemplate]"}]}],m.ctorParameters=function(){return[]};var p=function D(){};p.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableGroupEndTemplate]"}]}],p.ctorParameters=function(){return[]};var u=function A(){};u.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableGroupTemplate]"}]}],u.ctorParameters=function(){return[]};var h=function M(){};h.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableHeaderTemplate]"}]}],h.ctorParameters=function(){return[]};var d=function H(){};d.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableItemEndTemplate]"}]}],d.ctorParameters=function(){return[]};var f=function w(){};f.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableItemIconTemplate]"}]}],f.ctorParameters=function(){return[]};var I=function k(){};I.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableItemTemplate]"}]}],I.ctorParameters=function(){return[]};var _=function j(){};_.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableMessageTemplate]"}]}],_.ctorParameters=function(){return[]};var g=function R(){};g.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectablePlaceholderTemplate]"}]}],g.ctorParameters=function(){return[]};var C=function G(){};C.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableSearchFailTemplate]"}]}],C.ctorParameters=function(){return[]};var b=function L(){};b.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableTitleTemplate]"}]}],b.ctorParameters=function(){return[]};var v=function W(){};v.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableValueTemplate]"}]}],v.ctorParameters=function(){return[]};var y=(Object.defineProperty(T.prototype,"_isMultipleCssClass",{get:function(){return this.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"_hasValueCssClass",{get:function(){return this.hasValue()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"_hasPlaceholderCssClass",{get:function(){return this._hasPlaceholder},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"_shouldStoreItemValue",{get:function(){return this.shouldStoreItemValue&&this._hasObjects},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"searchText",{get:function(){return this._searchText},set:function(e){this._searchText=e,this._setHasSearchText()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isSearching",{get:function(){return this._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"hasSearchText",{get:function(){return this._hasSearchText},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._valueItems.splice(0,this._valueItems.length),this.isMultiple?e&&e.length&&Array.prototype.push.apply(this._valueItems,e):this._isNullOrWhiteSpace(e)||this._valueItems.push(e),this._setIonItemHasValue(),this._setHasPlaceholder()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isEnabled",{get:function(){return this._isEnabled},set:function(e){this._isEnabled=!!e,this.enableIonItem(this._isEnabled)},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"shouldBackdropClose",{get:function(){return this._shouldBackdropClose},set:function(e){this._shouldBackdropClose=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isOpened",{get:function(){return this._isOpened},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"hasConfirmButton",{get:function(){return this._hasConfirmButton},set:function(e){this._hasConfirmButton=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isOnSearchEnabled",{get:function(){return this._isOnSearchEnabled},set:function(e){this._isOnSearchEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"canClear",{get:function(){return this._canClear},set:function(e){this._canClear=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isMultiple",{get:function(){return this._isMultiple},set:function(e){this._isMultiple=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"itemsToConfirm",{get:function(){return this._itemsToConfirm},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"canAddItem",{get:function(){return this._canAddItem},set:function(e){this._canAddItem=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),T.prototype.initFocus=function(){},T.prototype.enableIonItem=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-disabled",!e)},T.prototype._click=function(e){var t=this;this.isEnabled&&0!==e.detail&&(this._label=this._getLabelText(),e.preventDefault(),e.stopPropagation(),this.open().then(function(){t.onOpen.emit({component:t})}))},T.prototype._isNullOrWhiteSpace=function(e){return null===e||e===undefined||e.toString().replace(/\s/g,"").length<1},T.prototype._setHasSearchText=function(){this._hasSearchText=!this._isNullOrWhiteSpace(this._searchText)},T.prototype._hasOnSearch=function(){return this.isOnSearchEnabled&&0<this.onSearch.observers.length},T.prototype._hasOnSaveItem=function(){return this.canSaveItem&&0<this.onSaveItem.observers.length},T.prototype._hasOnAddItem=function(){return this.canAddItem&&0<this.onAddItem.observers.length},T.prototype._hasOnDeleteItem=function(){return this.canDeleteItem&&0<this.onDeleteItem.observers.length},T.prototype._emitValueChange=function(){this.propagateOnChange(this.value),this._setIonItemValidityClasses(),this.onChange.emit({component:this,value:this.value})},T.prototype._emitSearch=function(){this.canSearch&&this.onSearch.emit({component:this,text:this._searchText})},T.prototype._emitOnSelect=function(e,t){this.onSelect.emit({component:this,item:e,isSelected:t})},T.prototype._emitOnClear=function(e){this.onClear.emit({component:this,items:e})},T.prototype._emitOnSearchSuccessOrFail=function(e){var t={component:this,text:this._searchText};e?this.onSearchSuccess.emit(t):this.onSearchFail.emit(t)},T.prototype._formatItem=function(e){return this._isNullOrWhiteSpace(e)?null:this.itemTextField?e[this.itemTextField]:e.toString()},T.prototype._formatValueItem=function(t){var n=this;if(this._shouldStoreItemValue){var e=this.items.find(function(e){return e[n.itemValueField]===t});return this._formatItem(e)}return this._formatItem(t)},T.prototype._getItemValue=function(e){return this._hasObjects?e[this.itemValueField]:e},T.prototype._getStoredItemValue=function(e){return this._hasObjects?this._shouldStoreItemValue?e:e[this.itemValueField]:e},T.prototype._filterItems=function(){var n=this;if(this._setHasSearchText(),this._hasOnSearch())this._emitSearch();else{var i=[];if(this._searchText&&this._searchText.trim()){var o=this._searchText.trim().toLowerCase();this._groups.forEach(function(e){var t=e.items.filter(function(e){return-1!==(n.itemTextField?e[n.itemTextField]:e).toString().toLowerCase().indexOf(o)});t.length&&i.push({value:e.value,text:e.text,items:t})}),i.length||i.push({items:[]})}else i=this._groups;this._filteredGroups=i,this._hasFilteredItems=!this._areGroupsEmpty(i),this._emitOnSearchSuccessOrFail(this._hasFilteredItems)}},T.prototype._isItemDisabled=function(t){var n=this;if(this.disabledItems)return this.disabledItems.some(function(e){return n._getItemValue(e)===n._getItemValue(t)})},T.prototype._isItemSelected=function(t){var n=this;return this._selectedItems.find(function(e){return n._getItemValue(t)===n._getStoredItemValue(e)})!==undefined},T.prototype._addSelectedItem=function(e){this._shouldStoreItemValue?this._selectedItems.push(this._getItemValue(e)):this._selectedItems.push(e)},T.prototype._deleteSelectedItem=function(n){var i,o=this;this._selectedItems.forEach(function(e,t){o._getItemValue(n)===o._getStoredItemValue(e)&&(i=t)}),this._selectedItems.splice(i,1)},T.prototype._saveItem=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnSaveItem()?this.onSaveItem.emit({component:this,item:this._itemToAdd}):this.showAddItemTemplate()},T.prototype._deleteItemClick=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnDeleteItem()?this.onDeleteItem.emit({component:this,item:this._itemToAdd}):this.deleteItem(this._itemToAdd)},T.prototype._addItemClick=function(){this._itemToAdd=null,this._hasOnAddItem()?this.onAddItem.emit({component:this}):this.showAddItemTemplate()},T.prototype._close=function(){var e=this;this._modalComponent._searchbarComponent&&this._modalComponent._searchbarComponent._fireBlur(),setTimeout(function(){e.close().then(function(){e.onClose.emit({component:e})}),e._hasOnSearch()||(e._searchText="",e._setHasSearchText())})},T.prototype._clear=function(){var e=this,t=this._selectedItems;this.clear(),this._emitValueChange(),this._emitOnClear(t),this.close().then(function(){e.onClose.emit({component:e})})},T.prototype._getMoreItems=function(e){this._infiniteScroll=e,this.onInfiniteScroll.emit({component:this,text:this._searchText})},T.prototype._setItemsToConfirm=function(e){this._itemsToConfirm=[].concat(e)},T.prototype._doSelect=function(e){this.value=e,this._emitValueChange()},T.prototype._select=function(e){var t=this._isItemSelected(e);this.isMultiple?(t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):this.hasConfirmButton||this.footerTemplate?(this._selectedItems=[],t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):(t||(this._selectedItems=[],this._addSelectedItem(e),this._emitOnSelect(e,!0),this._shouldStoreItemValue?this._doSelect(this._getItemValue(e)):this._doSelect(e)),this._close())},T.prototype._confirm=function(){this.confirm(),this._close()},T.prototype._getLabelText=function(){var e=this.ionItem?this.ionItem.getNativeElement().querySelector("ion-label"):null;return e?e.textContent:null},T.prototype._areGroupsEmpty=function(e){return 0===e.length||e.every(function(e){return!e.items||0===e.items.length})},T.prototype._countFooterButtons=function(){var e=0;this.canClear&&e++,(this.isMultiple||this._hasConfirmButton)&&e++,this.canAddItem&&e++,this._footerButtonsCount=e},T.prototype._setItems=function(e){var i=this,o=[{items:e||[]}];e&&e.length&&this._hasGroups&&(o=[],e.forEach(function(e){var t=i._getPropertyValue(e,i.groupValueField),n=o.find(function(e){return e.value===t});n?n.items.push(e):o.push({value:t,text:i._getPropertyValue(e,i.groupTextField),items:[e]})})),this._groups=o,this._filteredGroups=this._groups,this._hasFilteredItems=!this._areGroupsEmpty(this._filteredGroups)},T.prototype._getPropertyValue=function(e,t){return t?t.split(".").reduce(function(e,t){return e?e[t]:null},e):null},T.prototype._setIonItemHasFocus=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-has-focus",e)},T.prototype._setIonItemHasValue=function(){this.ionItem&&this.ionItem.setElementClass("item-input-has-value",this.hasValue())},T.prototype._setHasPlaceholder=function(){this._hasPlaceholder=!(this.hasValue()||this._isNullOrWhiteSpace(this.placeholder)&&!this.placeholderTemplate)},T.prototype._setIonItemValidityClasses=function(){var t=this;this.ionItem&&requestAnimationFrame(function(){var e=t.element.nativeElement.classList;t.ionItem.setElementClass("ng-invalid",!1),t.ionItem.setElementClass("ng-valid",!1),t.ionItem.setElementClass("ng-touched",!1),t.ionItem.setElementClass("ng-untouched",!1),t.ionItem.setElementClass("ng-dirty",!1),t.ionItem.setElementClass("ng-pristine",!1),e.forEach(function(e){"ng-invalid"===e&&t.ionItem.setElementClass("ng-invalid",!0),"ng-valid"===e&&t.ionItem.setElementClass("ng-valid",!0),"ng-touched"===e&&t.ionItem.setElementClass("ng-touched",!0),"ng-untouched"===e&&t.ionItem.setElementClass("ng-untouched",!0),"ng-dirty"===e&&t.ionItem.setElementClass("ng-dirty",!0),"ng-pristine"===e&&t.ionItem.setElementClass("ng-pristine",!0)})})},T.prototype._toggleAddItemTemplate=function(e){this.addItemTemplate&&(this._isAddItemTemplateVisible=e,this._isFooterVisible=!e)},T.prototype.writeValue=function(e){this.value=e,this._setIonItemValidityClasses()},T.prototype.registerOnChange=function(e){this.propagateOnChange=e},T.prototype.registerOnTouched=function(e){this.propagateOnTouched=e},T.prototype.setDisabledState=function(e){this.isEnabled=!e},T.prototype.ngOnInit=function(){this._isIos=this._platform.is("ios"),this._isMD=!this._isIos,this._hasObjects=!this._isNullOrWhiteSpace(this.itemValueField),this._hasGroups=Boolean(this._hasObjects&&this.groupValueField&&!this.hasVirtualScroll),this.ionForm.register(this),this.ionItem&&(this.ionItem.setElementClass("item-input",!0),this.ionItem.setElementClass("item-ionic-selectable",!0)),this.enableIonItem(this.isEnabled)},T.prototype.ngOnDestroy=function(){this.ionForm.deregister(this)},T.prototype.ngDoCheck=function(){this._itemsDiffer.diff(this.items)&&(this._setItems(this.items),this.value=this.value,this.onItemsChange.emit({component:this}))},T.prototype.addItem=function(e){var n=this;return this.items.unshift(e),this._addItemObservable&&this._addItemObservable.unsubscribe(),new Promise(function(e,t){n._addItemObservable=n.onItemsChange.asObservable().subscribe(function(){n._addItemObservable.unsubscribe(),e()},function(){n._addItemObservable.unsubscribe(),t()})})},T.prototype.deleteItem=function(t){var n=this,i=this,e=!1;if(this._selectedItems&&(this._selectedItems=this._selectedItems.filter(function(e){return n._getItemValue(t)!==n._getStoredItemValue(e)})),this.value)if(this.isMultiple){var o=this.value.filter(function(e){return e.id!==t.id});o.length!==this.value.length&&(this.value=o,e=!0)}else t===this.value&&(e=!(this.value=null));e&&this._emitValueChange();var s=this.items.filter(function(e){return e.id!==t.id});return this.itemsChange.emit(s),this._setItems(s),this.onItemsChange.emit({component:this}),this._deleteItemObservable&&this._deleteItemObservable.unsubscribe(),new Promise(function(e,t){i._deleteItemObservable=i.onItemsChange.asObservable().subscribe(function(){i._deleteItemObservable.unsubscribe(),e()},function(){i._deleteItemObservable.unsubscribe(),t()})})},T.prototype.hasValue=function(){return this.isMultiple?0!==this._valueItems.length:0!==this._valueItems.length&&!this._isNullOrWhiteSpace(this._valueItems[0])},T.prototype.open=function(){var i=this;return new Promise(function(e,t){if(i._isEnabled&&!i._isOpened){i._filterItems(),i._isOpened=!0;var n={enableBackdropDismiss:i._shouldBackdropClose};i.modalCssClass&&(n.cssClass=i.modalCssClass),i.modalEnterAnimation&&(n.enterAnimation=i.modalEnterAnimation),i.modalLeaveAnimation&&(n.leaveAnimation=i.modalLeaveAnimation),i._modal=i._modalController.create(S,{selectComponent:i},n),i._modal.present({animate:!1}).then(function(){i._setIonItemHasFocus(!0),e()}),i._modal.onWillDismiss(function(){i._setIonItemHasFocus(!1)}),i._modal.onDidDismiss(function(e,t){i._isOpened=!1,i._itemsToConfirm=[],"backdrop"===t&&i.onClose.emit({component:i})})}else t("IonicSelectable is disabled or already opened.")})},T.prototype.close=function(){var n=this;return new Promise(function(e,t){n._isEnabled&&n._isOpened?(n.propagateOnTouched(),n._setIonItemValidityClasses(),n._infiniteScroll=null,n._isOpened=!1,n._itemToAdd=null,n._modal.dismiss().then(function(){n._setIonItemHasFocus(!1),n.hideAddItemTemplate(),e()})):t("IonicSelectable is disabled or already closed.")})},T.prototype.clear=function(){this.value=this.isMultiple?[]:null,this._itemsToConfirm=[],this.propagateOnChange(this.value),this._setIonItemValidityClasses()},T.prototype.confirm=function(){this.isMultiple?this._doSelect(this._selectedItems):(this.hasConfirmButton||this.footerTemplate)&&this._doSelect(this._selectedItems[0]||null)},T.prototype.toggleItems=function(e,n){var i=this;if(e){var t=n&&n.length,o=this._groups.reduce(function(e,t){return e.concat(t.items)},[]);this.isMultiple||t||(o=[]),t&&(o=o.filter(function(t){return n.find(function(e){return i._getItemValue(t)===i._getItemValue(e)})!==undefined}),this.isMultiple||o.splice(0,1)),o.forEach(function(e){i._addSelectedItem(e)})}else this._selectedItems=[];this._setItemsToConfirm(this._selectedItems)},T.prototype.scrollToTop=function(){var n=this;return new Promise(function(e,t){n._isOpened?n._modalComponent._content.scrollToTop().then(function(){e()}):t("IonicSelectable content cannot be scrolled.")})},T.prototype.scrollToBottom=function(){var n=this;return new Promise(function(e,t){n._isOpened?n._modalComponent._content.scrollToBottom().then(function(){e()}):t("IonicSelectable content cannot be scrolled.")})},T.prototype.startSearch=function(){this._isEnabled&&this.showLoading()},T.prototype.endSearch=function(){this._isEnabled&&(this.hideLoading(),this._setItems(this.items),this._emitOnSearchSuccessOrFail(this._hasFilteredItems))},T.prototype.enableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!0)},T.prototype.disableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!1)},T.prototype.endInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&(this._infiniteScroll.complete(),this._setItems(this.items))},T.prototype.search=function(e){this._isEnabled&&this._isOpened&&this.canSearch&&(this._searchText=e,this._setHasSearchText(),this._filterItems())},T.prototype.showLoading=function(){this._isEnabled&&(this._isSearching=!0)},T.prototype.hideLoading=function(){this._isEnabled&&(this._isSearching=!1)},T.prototype.showAddItemTemplate=function(){this._toggleAddItemTemplate(!0)},T.prototype.hideAddItemTemplate=function(){this._toggleAddItemTemplate(!1)},T);function T(e,t,n,i,o,s){this._modalController=e,this.ionForm=t,this._platform=n,this.ionItem=i,this._iterableDiffers=o,this.element=s,this._cssClass=!0,this._isOnSearchEnabled=!0,this._isEnabled=!0,this._shouldBackdropClose=!0,this._isOpened=!1,this._value=null,this._canClear=!1,this._hasConfirmButton=!1,this._isMultiple=!1,this._canAddItem=!1,this.onItemsChange=new l.EventEmitter,this._label=null,this._valueItems=[],this._searchText="",this._hasSearchText=!1,this._groups=[],this._itemsToConfirm=[],this._selectedItems=[],this._filteredGroups=[],this._isAddItemTemplateVisible=!1,this._isFooterVisible=!0,this._itemToAdd=null,this._footerButtonsCount=0,this._hasFilteredItems=!1,this.items=[],this.itemsChange=new l.EventEmitter,this.modalCssClass=null,this.modalEnterAnimation=null,this.modalLeaveAnimation=null,this.isConfirmButtonEnabled=!0,this.itemValueField=null,this.itemTextField=null,this.groupValueField=null,this.groupTextField=null,this.canSearch=!1,this.hasInfiniteScroll=!1,this.hasVirtualScroll=!1,this.virtualScrollApproxItemHeight="40px",this.virtualScrollApproxItemWidth="100%",this.virtualScrollBufferRatio=3,this.virtualScrollHeaderFn=function(){return null},this.searchPlaceholder="Search",this.placeholder=null,this.searchFailText="No items found.",this.clearButtonText="Clear",this.addButtonText="Add",this.confirmButtonText="OK",this.closeButtonText="Cancel",this.focusSearchbar=!1,this.headerColor=null,this.groupColor=null,this.onChange=new l.EventEmitter,this.onSearch=new l.EventEmitter,this.onSearchFail=new l.EventEmitter,this.onSearchSuccess=new l.EventEmitter,this.onInfiniteScroll=new l.EventEmitter,this.onOpen=new l.EventEmitter,this.onClose=new l.EventEmitter,this.onSelect=new l.EventEmitter,this.onClear=new l.EventEmitter,this.searchDebounce=250,this.disabledItems=[],this.shouldStoreItemValue=!1,this.canSaveItem=!1,this.canDeleteItem=!1,this.onSaveItem=new l.EventEmitter,this.onDeleteItem=new l.EventEmitter,this.onAddItem=new l.EventEmitter,this.propagateOnChange=function(e){},this.propagateOnTouched=function(){},this.items&&this.items.length||(this.items=[]),this._itemsDiffer=this._iterableDiffers.find(this.items).create()}y.decorators=[{type:l.Component,args:[{selector:"ionic-selectable",template:'<div class="ionic-selectable-value">\n <div *ngIf="valueTemplate && _valueItems.length && isMultiple"\n [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems }">\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="valueTemplate && _valueItems.length && !isMultiple">\n <div [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems[0] }">\n </div>\n </div>\n <span *ngIf="!valueTemplate && _valueItems.length">\n <div class="ionic-selectable-value-item"\n *ngFor="let valueItem of _valueItems">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf="_hasPlaceholder && placeholderTemplate"\n class="ionic-selectable-value-item">\n <div [ngTemplateOutlet]="placeholderTemplate">\n </div>\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="_hasPlaceholder && !placeholderTemplate">\n {{placeholder}}\n </div>\n</div>\n<div class="ionic-selectable-icon">\n <div class="ionic-selectable-icon-inner"></div>\n</div>\n<button aria-haspopup="true" ion-button="item-cover" class="item-cover"\n [disabled]="!isEnabled">\n</button>\n',providers:[{provide:t.NG_VALUE_ACCESSOR,useExisting:l.forwardRef(function(){return y}),multi:!0}]}]}],y.ctorParameters=function(){return[{type:n.ModalController},{type:n.Form},{type:n.Platform},{type:n.Item,decorators:[{type:l.Optional}]},{type:l.IterableDiffers},{type:l.ElementRef}]},y.propDecorators={_cssClass:[{type:l.HostBinding,args:["class.ionic-selectable"]}],_isIos:[{type:l.HostBinding,args:["class.ionic-selectable-ios"]}],_isMD:[{type:l.HostBinding,args:["class.ionic-selectable-md"]}],_isMultipleCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-is-multiple"]}],_hasValueCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-has-value"]}],_hasPlaceholderCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-has-placeholder"]}],items:[{type:l.Input}],itemsChange:[{type:l.Output}],isEnabled:[{type:l.HostBinding,args:["class.ionic-selectable-is-enabled"]},{type:l.Input,args:["isEnabled"]}],shouldBackdropClose:[{type:l.Input,args:["shouldBackdropClose"]}],modalCssClass:[{type:l.Input}],modalEnterAnimation:[{type:l.Input}],modalLeaveAnimation:[{type:l.Input}],isConfirmButtonEnabled:[{type:l.Input,args:["isConfirmButtonEnabled"]}],hasConfirmButton:[{type:l.Input,args:["hasConfirmButton"]}],itemValueField:[{type:l.Input}],itemTextField:[{type:l.Input}],groupValueField:[{type:l.Input}],groupTextField:[{type:l.Input}],canSearch:[{type:l.Input}],isOnSearchEnabled:[{type:l.Input,args:["isOnSearchEnabled"]}],canClear:[{type:l.HostBinding,args:["class.ionic-selectable-can-clear"]},{type:l.Input,args:["canClear"]}],hasInfiniteScroll:[{type:l.Input}],hasVirtualScroll:[{type:l.Input}],virtualScrollApproxItemHeight:[{type:l.Input}],virtualScrollApproxItemWidth:[{type:l.Input}],virtualScrollBufferRatio:[{type:l.Input}],virtualScrollHeaderFn:[{type:l.Input}],searchPlaceholder:[{type:l.Input}],placeholder:[{type:l.Input}],isMultiple:[{type:l.Input,args:["isMultiple"]}],searchFailText:[{type:l.Input}],clearButtonText:[{type:l.Input}],addButtonText:[{type:l.Input}],confirmButtonText:[{type:l.Input}],closeButtonText:[{type:l.Input}],focusSearchbar:[{type:l.Input}],headerColor:[{type:l.Input}],groupColor:[{type:l.Input}],onChange:[{type:l.Output}],onSearch:[{type:l.Output}],onSearchFail:[{type:l.Output}],onSearchSuccess:[{type:l.Output}],onInfiniteScroll:[{type:l.Output}],onOpen:[{type:l.Output}],onClose:[{type:l.Output}],onSelect:[{type:l.Output}],onClear:[{type:l.Output}],valueTemplate:[{type:l.ContentChild,args:[v,{read:l.TemplateRef}]}],itemTemplate:[{type:l.ContentChild,args:[I,{read:l.TemplateRef}]}],itemEndTemplate:[{type:l.ContentChild,args:[d,{read:l.TemplateRef}]}],titleTemplate:[{type:l.ContentChild,args:[b,{read:l.TemplateRef}]}],placeholderTemplate:[{type:l.ContentChild,args:[g,{read:l.TemplateRef}]}],messageTemplate:[{type:l.ContentChild,args:[_,{read:l.TemplateRef}]}],groupTemplate:[{type:l.ContentChild,args:[u,{read:l.TemplateRef}]}],groupEndTemplate:[{type:l.ContentChild,args:[p,{read:l.TemplateRef}]}],closeButtonTemplate:[{type:l.ContentChild,args:[c,{read:l.TemplateRef}]}],searchFailTemplate:[{type:l.ContentChild,args:[C,{read:l.TemplateRef}]}],addItemTemplate:[{type:l.ContentChild,args:[r,{read:l.TemplateRef}]}],footerTemplate:[{type:l.ContentChild,args:[m,{read:l.TemplateRef}]}],headerTemplate:[{type:l.ContentChild,args:[h,{read:l.TemplateRef}]}],itemIconTemplate:[{type:l.ContentChild,args:[f,{read:l.TemplateRef}]}],searchDebounce:[{type:l.Input}],disabledItems:[{type:l.Input}],shouldStoreItemValue:[{type:l.Input}],canSaveItem:[{type:l.Input}],canDeleteItem:[{type:l.Input}],canAddItem:[{type:l.Input,args:["canAddItem"]}],onSaveItem:[{type:l.Output}],onDeleteItem:[{type:l.Output}],onAddItem:[{type:l.Output}],_click:[{type:l.HostListener,args:["click",["$event"]]}]};var S=(Object.defineProperty(O.prototype,"_canClearCssClass",{get:function(){return this.selectComponent.canClear},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isMultipleCssClass",{get:function(){return this.selectComponent.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isSearchingCssClass",{get:function(){return this.selectComponent._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isAddItemTemplateVisibleCssClass",{get:function(){return this.selectComponent._isAddItemTemplateVisible},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isIos",{get:function(){return this.selectComponent._isIos},enumerable:!0,configurable:!0}),O.prototype._isMD=function(){return this.selectComponent._isMD},O.prototype.ngAfterViewInit=function(){var e=this;this._header=this._element.nativeElement.querySelector("ion-header"),this._searchbarComponent&&this.selectComponent.focusSearchbar&&setTimeout(function(){e._searchbarComponent.setFocus()},500)},O);function O(e,t){var n=this;this.navParams=e,this._element=t,this._cssClass=!0,this.selectComponent=this.navParams.get("selectComponent"),(this.selectComponent._modalComponent=this).selectComponent._selectedItems=[],this.selectComponent._isNullOrWhiteSpace(this.selectComponent.value)||(this.selectComponent.isMultiple?this.selectComponent.value.forEach(function(e){n.selectComponent._selectedItems.push(e)}):this.selectComponent._selectedItems.push(this.selectComponent.value)),this.selectComponent._setItemsToConfirm(this.selectComponent._selectedItems)}S.decorators=[{type:l.Component,args:[{selector:"ionic-selectable-modal",template:'<ion-header>\n <ion-navbar *ngIf="!selectComponent.headerTemplate"\n [color]="selectComponent.headerColor ? selectComponent.headerColor : null">\n <ion-title>\n \x3c!-- Use span for titleTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.titleTemplate"\n [ngTemplateOutlet]="selectComponent.titleTemplate">\n </span>\n <span *ngIf="!selectComponent.titleTemplate">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)="selectComponent._close()">\n <span *ngIf="selectComponent.closeButtonTemplate"\n [ngTemplateOutlet]="selectComponent.closeButtonTemplate">\n </span>\n <span *ngIf="!selectComponent.closeButtonTemplate" ion-text\n showWhen="ios">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf="!selectComponent.closeButtonTemplate" name="md-close"\n hideWhen="ios">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf="selectComponent.headerTemplate"\n [ngTemplateOutlet]="selectComponent.headerTemplate">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]="selectComponent._searchText"\n (ionInput)="selectComponent._filterItems()"\n [placeholder]="selectComponent.searchPlaceholder"\n [debounce]="selectComponent.searchDebounce">\n </ion-searchbar>\n <div class="ionic-selectable-message"\n *ngIf="selectComponent.messageTemplate">\n <div [ngTemplateOutlet]="selectComponent.messageTemplate">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class="ionic-selectable-spinner" *ngIf="selectComponent._isSearching">\n <div class="ionic-selectable-spinner-background"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf="selectComponent._searchText"\n (click)="selectComponent._select(selectComponent._searchText)"\n class="ionic-selectable-item searchTextItem"\n [ngClass]="{ \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(selectComponent._searchText) }">\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(selectComponent._searchText)}}\n </span>\n <ion-icon name="add-circle" style="color: green; padding-left: 10px; padding-top: 5px"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf="!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems">\n <ion-item-group *ngFor="let group of selectComponent._filteredGroups"\n class="ionic-selectable-group">\n <ion-item-divider *ngIf="selectComponent._hasGroups"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n \x3c!-- Use span for groupTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.groupTemplate"\n [ngTemplateOutlet]="selectComponent.groupTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </span>\n <span *ngIf="!selectComponent.groupTemplate">\n {{group.text}}\n </span>\n <div *ngIf="selectComponent.groupEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.groupEndTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor="let item of group.items"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n \x3c!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. --\x3e\n <div *ngIf="!selectComponent._hasFilteredItems">\n <span *ngIf="selectComponent.searchFailTemplate"\n [ngTemplateOutlet]="selectComponent.searchFailTemplate">\n </span>\n <div *ngIf="!selectComponent.searchFailTemplate" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf="!selectComponent.hasVirtualScroll"\n [enabled]="selectComponent.hasInfiniteScroll"\n (ionInfinite)="selectComponent._getMoreItems($event)">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf="selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems"\n [virtualScroll]="selectComponent._filteredGroups[0].items"\n [approxItemHeight]="selectComponent.virtualScrollApproxItemHeight"\n [approxItemWidth]="selectComponent.virtualScrollApproxItemWidth"\n [bufferRatio]="selectComponent.virtualScrollBufferRatio"\n [headerFn]="selectComponent.virtualScrollHeaderFn">\n <ion-item-divider *virtualHeader="let header"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem="let item"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class="ionic-selectable-add-item-template"\n *ngIf="selectComponent._isAddItemTemplateVisible"\n [ngStyle]="{ \'top.px\': _header.offsetHeight }">\n <span [ngTemplateOutlet]="selectComponent.addItemTemplate"\n [ngTemplateOutletContext]="{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }">\n </span>\n</div>\n<ion-footer\n *ngIf="selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate"\n [ngStyle]="{ \'visibility\': selectComponent._isFooterVisible ? \'initial\' : \'hidden\' }">\n <ion-toolbar *ngIf="!selectComponent.footerTemplate">\n <ion-row>\n <ion-col *ngIf="selectComponent.canClear">\n <button ion-button full no-margin (click)="selectComponent._clear()"\n [disabled]="!selectComponent._selectedItems.length">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf="selectComponent.canAddItem">\n <button ion-button full no-margin\n (click)="selectComponent._addItemClick()">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf="selectComponent.isMultiple || selectComponent.hasConfirmButton">\n <button ion-button full no-margin (click)="selectComponent._confirm()"\n [disabled]="!selectComponent.isConfirmButtonEnabled">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf="selectComponent.footerTemplate"\n [ngTemplateOutlet]="selectComponent.footerTemplate">\n </div>\n</ion-footer>\n'}]}],S.ctorParameters=function(){return[{type:n.NavParams},{type:l.ElementRef}]},S.propDecorators={_cssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal"]}],_canClearCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-can-clear"]}],_isMultipleCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-is-multiple"]}],_isSearchingCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-is-searching"]}],_isAddItemTemplateVisibleCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-is-add-item-template-visible"]}],_isIos:[{type:l.HostBinding,args:["class.ionic-selectable-modal-ios"]}],_isMD:[{type:l.HostBinding,args:["class.ionic-selectable-modal-md"]}],_searchbarComponent:[{type:l.ViewChild,args:["searchbarComponent"]}],_content:[{type:l.ViewChild,args:[n.Content]}]};var E=[y,S],x=[v,I,d,b,g,_,u,p,c,C,r,m,h,f],V=function N(){};V.decorators=[{type:l.NgModule,args:[{imports:[o.CommonModule,n.IonicPageModule.forChild(y),n.IonicPageModule.forChild(S)],declarations:a(E,x),exports:a(E,x),entryComponents:E}]}],V.ctorParameters=function(){return[]},e.IonicSelectableAddItemTemplateDirective=r,e.IonicSelectableCloseButtonTemplateDirective=c,e.IonicSelectableFooterTemplateDirective=m,e.IonicSelectableGroupEndTemplateDirective=p,e.IonicSelectableGroupTemplateDirective=u,e.IonicSelectableHeaderTemplateDirective=h,e.IonicSelectableItemEndTemplateDirective=d,e.IonicSelectableItemIconTemplateDirective=f,e.IonicSelectableItemTemplateDirective=I,e.IonicSelectableMessageTemplateDirective=_,e.IonicSelectableModalComponent=S,e.IonicSelectablePlaceholderTemplateDirective=g,e.IonicSelectableSearchFailTemplateDirective=C,e.IonicSelectableTitleTemplateDirective=b,e.IonicSelectableValueTemplateDirective=v,e.IonicSelectableComponent=y,e.IonicSelectableModule=V,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms"),require("ionic-angular"),require("rxjs"),require("@angular/common")):"function"==typeof define&&define.amd?define("ionic-selectable-v3",["exports","@angular/core","@angular/forms","ionic-angular","rxjs","@angular/common"],t):t(e["ionic-selectable-v3"]={},e.ng.core,e.ng.forms,e.ionicAngular,null,e.ng.common)}(this,function(e,l,t,n,i,o){"use strict";function s(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,o,s=n.call(e),l=[];try{for(;(void 0===t||0<t--)&&!(i=s.next()).done;)l.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(n=s["return"])&&n.call(s)}finally{if(o)throw o.error}}return l}function a(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}var r=function P(){};r.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableAddItemTemplate]"}]}],r.ctorParameters=function(){return[]};var c=function B(){};c.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableCloseButtonTemplate]"}]}],c.ctorParameters=function(){return[]};var m=function F(){};m.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableFooterTemplate]"}]}],m.ctorParameters=function(){return[]};var p=function D(){};p.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableGroupEndTemplate]"}]}],p.ctorParameters=function(){return[]};var u=function A(){};u.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableGroupTemplate]"}]}],u.ctorParameters=function(){return[]};var h=function M(){};h.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableHeaderTemplate]"}]}],h.ctorParameters=function(){return[]};var d=function H(){};d.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableItemEndTemplate]"}]}],d.ctorParameters=function(){return[]};var f=function w(){};f.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableItemIconTemplate]"}]}],f.ctorParameters=function(){return[]};var I=function k(){};I.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableItemTemplate]"}]}],I.ctorParameters=function(){return[]};var _=function j(){};_.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableMessageTemplate]"}]}],_.ctorParameters=function(){return[]};var g=function R(){};g.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectablePlaceholderTemplate]"}]}],g.ctorParameters=function(){return[]};var C=function G(){};C.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableSearchFailTemplate]"}]}],C.ctorParameters=function(){return[]};var b=function L(){};b.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableTitleTemplate]"}]}],b.ctorParameters=function(){return[]};var v=function W(){};v.decorators=[{type:l.Directive,args:[{selector:"[ionicSelectableValueTemplate]"}]}],v.ctorParameters=function(){return[]};var y=(Object.defineProperty(T.prototype,"_isMultipleCssClass",{get:function(){return this.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"_hasValueCssClass",{get:function(){return this.hasValue()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"_hasPlaceholderCssClass",{get:function(){return this._hasPlaceholder},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"_shouldStoreItemValue",{get:function(){return this.shouldStoreItemValue&&this._hasObjects},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"searchText",{get:function(){return this._searchText},set:function(e){this._searchText=e,this._setHasSearchText()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isSearching",{get:function(){return this._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"hasSearchText",{get:function(){return this._hasSearchText},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._valueItems.splice(0,this._valueItems.length),this.isMultiple?e&&e.length&&Array.prototype.push.apply(this._valueItems,e):this._isNullOrWhiteSpace(e)||this._valueItems.push(e),this._setIonItemHasValue(),this._setHasPlaceholder()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isEnabled",{get:function(){return this._isEnabled},set:function(e){this._isEnabled=!!e,this.enableIonItem(this._isEnabled)},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"shouldBackdropClose",{get:function(){return this._shouldBackdropClose},set:function(e){this._shouldBackdropClose=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isOpened",{get:function(){return this._isOpened},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"hasConfirmButton",{get:function(){return this._hasConfirmButton},set:function(e){this._hasConfirmButton=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isOnSearchEnabled",{get:function(){return this._isOnSearchEnabled},set:function(e){this._isOnSearchEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"canClear",{get:function(){return this._canClear},set:function(e){this._canClear=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"isMultiple",{get:function(){return this._isMultiple},set:function(e){this._isMultiple=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"itemsToConfirm",{get:function(){return this._itemsToConfirm},enumerable:!0,configurable:!0}),Object.defineProperty(T.prototype,"canAddItem",{get:function(){return this._canAddItem},set:function(e){this._canAddItem=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),T.prototype.initFocus=function(){},T.prototype.enableIonItem=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-disabled",!e)},T.prototype._click=function(e){var t=this;this.isEnabled&&0!==e.detail&&(this._label=this._getLabelText(),e.preventDefault(),e.stopPropagation(),this.open().then(function(){t.onOpen.emit({component:t})}))},T.prototype._isNullOrWhiteSpace=function(e){return null===e||e===undefined||e.toString().replace(/\s/g,"").length<1},T.prototype._setHasSearchText=function(){this._hasSearchText=!this._isNullOrWhiteSpace(this._searchText)},T.prototype._hasOnSearch=function(){return this.isOnSearchEnabled&&0<this.onSearch.observers.length},T.prototype._hasOnSaveItem=function(){return this.canSaveItem&&0<this.onSaveItem.observers.length},T.prototype._hasOnAddItem=function(){return this.canAddItem&&0<this.onAddItem.observers.length},T.prototype._hasOnDeleteItem=function(){return this.canDeleteItem&&0<this.onDeleteItem.observers.length},T.prototype._emitValueChange=function(){this.propagateOnChange(this.value),this._setIonItemValidityClasses(),this.onChange.emit({component:this,value:this.value})},T.prototype._emitSearch=function(){this.canSearch&&this.onSearch.emit({component:this,text:this._searchText})},T.prototype._emitOnSelect=function(e,t){this.onSelect.emit({component:this,item:e,isSelected:t})},T.prototype._emitOnClear=function(e){this.onClear.emit({component:this,items:e})},T.prototype._emitOnSearchSuccessOrFail=function(e){var t={component:this,text:this._searchText};e?this.onSearchSuccess.emit(t):this.onSearchFail.emit(t)},T.prototype._formatItem=function(e){return this._isNullOrWhiteSpace(e)?null:this.itemTextField?e[this.itemTextField]:e.toString()},T.prototype._formatValueItem=function(t){var n=this;if(this._shouldStoreItemValue){var e=this.items.find(function(e){return e[n.itemValueField]===t});return this._formatItem(e)}return this._formatItem(t)},T.prototype._getItemValue=function(e){return this._hasObjects?e[this.itemValueField]:e},T.prototype._getStoredItemValue=function(e){return this._hasObjects?this._shouldStoreItemValue?e:e[this.itemValueField]:e},T.prototype._filterItems=function(){var n=this;if(this._setHasSearchText(),this._hasOnSearch())this._emitSearch();else{var i=[];if(this._searchText&&this._searchText.trim()){var o=this._searchText.trim().toLowerCase();this._groups.forEach(function(e){var t=e.items.filter(function(e){return-1!==(n.itemTextField?e[n.itemTextField]:e).toString().toLowerCase().indexOf(o)});t.length&&i.push({value:e.value,text:e.text,items:t})}),i.length||i.push({items:[]})}else i=this._groups;this._filteredGroups=i,this._hasFilteredItems=!this._areGroupsEmpty(i),this._emitOnSearchSuccessOrFail(this._hasFilteredItems)}},T.prototype._isItemDisabled=function(t){var n=this;if(this.disabledItems)return this.disabledItems.some(function(e){return n._getItemValue(e)===n._getItemValue(t)})},T.prototype._isItemSelected=function(t){var n=this;return this._selectedItems.find(function(e){return n._getItemValue(t)===n._getStoredItemValue(e)})!==undefined},T.prototype._addSelectedItem=function(e){this._shouldStoreItemValue?this._selectedItems.push(this._getItemValue(e)):this._selectedItems.push(e)},T.prototype._deleteSelectedItem=function(n){var i,o=this;this._selectedItems.forEach(function(e,t){o._getItemValue(n)===o._getStoredItemValue(e)&&(i=t)}),this._selectedItems.splice(i,1)},T.prototype._saveItem=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnSaveItem()?this.onSaveItem.emit({component:this,item:this._itemToAdd}):this.showAddItemTemplate()},T.prototype._deleteItemClick=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnDeleteItem()?this.onDeleteItem.emit({component:this,item:this._itemToAdd}):this.deleteItem(this._itemToAdd)},T.prototype._addItemClick=function(){this._itemToAdd=null,this._hasOnAddItem()?this.onAddItem.emit({component:this}):this.showAddItemTemplate()},T.prototype._close=function(){var e=this;this._modalComponent._searchbarComponent&&this._modalComponent._searchbarComponent._fireBlur(),setTimeout(function(){e.close().then(function(){e.onClose.emit({component:e})}),e._hasOnSearch()||(e._searchText="",e._setHasSearchText())})},T.prototype._clear=function(){var e=this,t=this._selectedItems;this.clear(),this._emitValueChange(),this._emitOnClear(t),this.close().then(function(){e.onClose.emit({component:e})})},T.prototype._getMoreItems=function(e){this._infiniteScroll=e,this.onInfiniteScroll.emit({component:this,text:this._searchText})},T.prototype._setItemsToConfirm=function(e){this._itemsToConfirm=[].concat(e)},T.prototype._doSelect=function(e){this.value=e,this._emitValueChange()},T.prototype._select=function(e){var t=this._isItemSelected(e);this.isMultiple?(t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):this.hasConfirmButton||this.footerTemplate?(this._selectedItems=[],t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):(t||(this._selectedItems=[],this._addSelectedItem(e),this._emitOnSelect(e,!0),this._shouldStoreItemValue?this._doSelect(this._getItemValue(e)):this._doSelect(e)),this._close())},T.prototype._confirm=function(){this.confirm(),this._close()},T.prototype._getLabelText=function(){var e=this.ionItem?this.ionItem.getNativeElement().querySelector("ion-label"):null;return e?e.textContent:null},T.prototype._areGroupsEmpty=function(e){return 0===e.length||e.every(function(e){return!e.items||0===e.items.length})},T.prototype._countFooterButtons=function(){var e=0;this.canClear&&e++,(this.isMultiple||this._hasConfirmButton)&&e++,this.canAddItem&&e++,this._footerButtonsCount=e},T.prototype._setItems=function(e){var i=this,o=[{items:e||[]}];e&&e.length&&this._hasGroups&&(o=[],e.forEach(function(e){var t=i._getPropertyValue(e,i.groupValueField),n=o.find(function(e){return e.value===t});n?n.items.push(e):o.push({value:t,text:i._getPropertyValue(e,i.groupTextField),items:[e]})})),this._groups=o,this._filteredGroups=this._groups,this._hasFilteredItems=!this._areGroupsEmpty(this._filteredGroups)},T.prototype._getPropertyValue=function(e,t){return t?t.split(".").reduce(function(e,t){return e?e[t]:null},e):null},T.prototype._setIonItemHasFocus=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-has-focus",e)},T.prototype._setIonItemHasValue=function(){this.ionItem&&this.ionItem.setElementClass("item-input-has-value",this.hasValue())},T.prototype._setHasPlaceholder=function(){this._hasPlaceholder=!(this.hasValue()||this._isNullOrWhiteSpace(this.placeholder)&&!this.placeholderTemplate)},T.prototype._setIonItemValidityClasses=function(){var t=this;this.ionItem&&requestAnimationFrame(function(){var e=t.element.nativeElement.classList;t.ionItem.setElementClass("ng-invalid",!1),t.ionItem.setElementClass("ng-valid",!1),t.ionItem.setElementClass("ng-touched",!1),t.ionItem.setElementClass("ng-untouched",!1),t.ionItem.setElementClass("ng-dirty",!1),t.ionItem.setElementClass("ng-pristine",!1),e.forEach(function(e){"ng-invalid"===e&&t.ionItem.setElementClass("ng-invalid",!0),"ng-valid"===e&&t.ionItem.setElementClass("ng-valid",!0),"ng-touched"===e&&t.ionItem.setElementClass("ng-touched",!0),"ng-untouched"===e&&t.ionItem.setElementClass("ng-untouched",!0),"ng-dirty"===e&&t.ionItem.setElementClass("ng-dirty",!0),"ng-pristine"===e&&t.ionItem.setElementClass("ng-pristine",!0)})})},T.prototype._toggleAddItemTemplate=function(e){this.addItemTemplate&&(this._isAddItemTemplateVisible=e,this._isFooterVisible=!e)},T.prototype.writeValue=function(e){this.value=e,this._setIonItemValidityClasses()},T.prototype.registerOnChange=function(e){this.propagateOnChange=e},T.prototype.registerOnTouched=function(e){this.propagateOnTouched=e},T.prototype.setDisabledState=function(e){this.isEnabled=!e},T.prototype.ngOnInit=function(){this._isIos=this._platform.is("ios"),this._isMD=!this._isIos,this._hasObjects=!this._isNullOrWhiteSpace(this.itemValueField),this._hasGroups=Boolean(this._hasObjects&&this.groupValueField&&!this.hasVirtualScroll),this.ionForm.register(this),this.ionItem&&(this.ionItem.setElementClass("item-input",!0),this.ionItem.setElementClass("item-ionic-selectable",!0)),this.enableIonItem(this.isEnabled)},T.prototype.ngOnDestroy=function(){this.ionForm.deregister(this)},T.prototype.ngDoCheck=function(){this._itemsDiffer.diff(this.items)&&(this._setItems(this.items),this.value=this.value,this.onItemsChange.emit({component:this}))},T.prototype.addItem=function(e){var n=this;return this.items.unshift(e),this._addItemObservable&&this._addItemObservable.unsubscribe(),new Promise(function(e,t){n._addItemObservable=n.onItemsChange.asObservable().subscribe(function(){n._addItemObservable.unsubscribe(),e()},function(){n._addItemObservable.unsubscribe(),t()})})},T.prototype.deleteItem=function(t){var n=this,i=this,e=!1;if(this._selectedItems&&(this._selectedItems=this._selectedItems.filter(function(e){return n._getItemValue(t)!==n._getStoredItemValue(e)})),this.value)if(this.isMultiple){var o=this.value.filter(function(e){return e.id!==t.id});o.length!==this.value.length&&(this.value=o,e=!0)}else t===this.value&&(e=!(this.value=null));e&&this._emitValueChange();var s=this.items.filter(function(e){return e.id!==t.id});return this.itemsChange.emit(s),this._setItems(s),this.onItemsChange.emit({component:this}),this._deleteItemObservable&&this._deleteItemObservable.unsubscribe(),new Promise(function(e,t){i._deleteItemObservable=i.onItemsChange.asObservable().subscribe(function(){i._deleteItemObservable.unsubscribe(),e()},function(){i._deleteItemObservable.unsubscribe(),t()})})},T.prototype.hasValue=function(){return this.isMultiple?0!==this._valueItems.length:0!==this._valueItems.length&&!this._isNullOrWhiteSpace(this._valueItems[0])},T.prototype.open=function(){var i=this;return new Promise(function(e,t){if(i._isEnabled&&!i._isOpened){i._filterItems(),i._isOpened=!0;var n={enableBackdropDismiss:i._shouldBackdropClose};i.modalCssClass&&(n.cssClass=i.modalCssClass),i.modalEnterAnimation&&(n.enterAnimation=i.modalEnterAnimation),i.modalLeaveAnimation&&(n.leaveAnimation=i.modalLeaveAnimation),i._modal=i._modalController.create(S,{selectComponent:i},n),i._modal.present({animate:!1}).then(function(){i._setIonItemHasFocus(!0),e()}),i._modal.onWillDismiss(function(){i._setIonItemHasFocus(!1)}),i._modal.onDidDismiss(function(e,t){i._isOpened=!1,i._itemsToConfirm=[],"backdrop"===t&&i.onClose.emit({component:i})})}else t("IonicSelectable is disabled or already opened.")})},T.prototype.close=function(){var n=this;return new Promise(function(e,t){n._isEnabled&&n._isOpened?(n.propagateOnTouched(),n._setIonItemValidityClasses(),n._infiniteScroll=null,n._isOpened=!1,n._itemToAdd=null,n._modal.dismiss().then(function(){n._setIonItemHasFocus(!1),n.hideAddItemTemplate(),e()})):t("IonicSelectable is disabled or already closed.")})},T.prototype.clear=function(){this.value=this.isMultiple?[]:null,this._itemsToConfirm=[],this.propagateOnChange(this.value),this._setIonItemValidityClasses()},T.prototype.confirm=function(){this.isMultiple?this._doSelect(this._selectedItems):(this.hasConfirmButton||this.footerTemplate)&&this._doSelect(this._selectedItems[0]||null)},T.prototype.toggleItems=function(e,n){var i=this;if(e){var t=n&&n.length,o=this._groups.reduce(function(e,t){return e.concat(t.items)},[]);this.isMultiple||t||(o=[]),t&&(o=o.filter(function(t){return n.find(function(e){return i._getItemValue(t)===i._getItemValue(e)})!==undefined}),this.isMultiple||o.splice(0,1)),o.forEach(function(e){i._addSelectedItem(e)})}else this._selectedItems=[];this._setItemsToConfirm(this._selectedItems)},T.prototype.scrollToTop=function(){var n=this;return new Promise(function(e,t){n._isOpened?n._modalComponent._content.scrollToTop().then(function(){e()}):t("IonicSelectable content cannot be scrolled.")})},T.prototype.scrollToBottom=function(){var n=this;return new Promise(function(e,t){n._isOpened?n._modalComponent._content.scrollToBottom().then(function(){e()}):t("IonicSelectable content cannot be scrolled.")})},T.prototype.startSearch=function(){this._isEnabled&&this.showLoading()},T.prototype.endSearch=function(){this._isEnabled&&(this.hideLoading(),this._setItems(this.items),this._emitOnSearchSuccessOrFail(this._hasFilteredItems))},T.prototype.enableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!0)},T.prototype.disableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!1)},T.prototype.endInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&(this._infiniteScroll.complete(),this._setItems(this.items))},T.prototype.search=function(e){this._isEnabled&&this._isOpened&&this.canSearch&&(this._searchText=e,this._setHasSearchText(),this._filterItems())},T.prototype.showLoading=function(){this._isEnabled&&(this._isSearching=!0)},T.prototype.hideLoading=function(){this._isEnabled&&(this._isSearching=!1)},T.prototype.showAddItemTemplate=function(){this._toggleAddItemTemplate(!0)},T.prototype.hideAddItemTemplate=function(){this._toggleAddItemTemplate(!1)},T);function T(e,t,n,i,o,s){this._modalController=e,this.ionForm=t,this._platform=n,this.ionItem=i,this._iterableDiffers=o,this.element=s,this._cssClass=!0,this._isOnSearchEnabled=!0,this._isEnabled=!0,this._shouldBackdropClose=!0,this._isOpened=!1,this._value=null,this._canClear=!1,this._hasConfirmButton=!1,this._isMultiple=!1,this._canAddItem=!1,this.onItemsChange=new l.EventEmitter,this._label=null,this._valueItems=[],this._searchText="",this._hasSearchText=!1,this._groups=[],this._itemsToConfirm=[],this._selectedItems=[],this._filteredGroups=[],this._isAddItemTemplateVisible=!1,this._isFooterVisible=!0,this._itemToAdd=null,this._footerButtonsCount=0,this._hasFilteredItems=!1,this.items=[],this.itemsChange=new l.EventEmitter,this.modalCssClass=null,this.modalEnterAnimation=null,this.modalLeaveAnimation=null,this.isConfirmButtonEnabled=!0,this.itemValueField=null,this.itemTextField=null,this.groupValueField=null,this.groupTextField=null,this.canSearch=!1,this.hasInfiniteScroll=!1,this.hasVirtualScroll=!1,this.virtualScrollApproxItemHeight="40px",this.virtualScrollApproxItemWidth="100%",this.virtualScrollBufferRatio=3,this.virtualScrollHeaderFn=function(){return null},this.searchPlaceholder="Search",this.placeholder=null,this.searchFailText="No items found.",this.clearButtonText="Clear",this.addButtonText="Add",this.confirmButtonText="OK",this.closeButtonText="Cancel",this.focusSearchbar=!1,this.headerColor=null,this.groupColor=null,this.onChange=new l.EventEmitter,this.onSearch=new l.EventEmitter,this.onSearchFail=new l.EventEmitter,this.onSearchSuccess=new l.EventEmitter,this.onInfiniteScroll=new l.EventEmitter,this.onOpen=new l.EventEmitter,this.onClose=new l.EventEmitter,this.onSelect=new l.EventEmitter,this.onClear=new l.EventEmitter,this.searchDebounce=250,this.disabledItems=[],this.shouldStoreItemValue=!1,this.canSaveItem=!1,this.canDeleteItem=!1,this.onSaveItem=new l.EventEmitter,this.onDeleteItem=new l.EventEmitter,this.onAddItem=new l.EventEmitter,this.propagateOnChange=function(e){},this.propagateOnTouched=function(){},this.items&&this.items.length||(this.items=[]),this._itemsDiffer=this._iterableDiffers.find(this.items).create()}y.decorators=[{type:l.Component,args:[{selector:"ionic-selectable",template:'<div class="ionic-selectable-value">\n <div *ngIf="valueTemplate && _valueItems.length && isMultiple"\n [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems }">\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="valueTemplate && _valueItems.length && !isMultiple">\n <div [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems[0] }">\n </div>\n </div>\n <span *ngIf="!valueTemplate && _valueItems.length">\n <div class="ionic-selectable-value-item"\n *ngFor="let valueItem of _valueItems">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf="_hasPlaceholder && placeholderTemplate"\n class="ionic-selectable-value-item">\n <div [ngTemplateOutlet]="placeholderTemplate">\n </div>\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="_hasPlaceholder && !placeholderTemplate">\n {{placeholder}}\n </div>\n</div>\n<div class="ionic-selectable-icon">\n <div class="ionic-selectable-icon-inner"></div>\n</div>\n<button aria-haspopup="true" ion-button="item-cover" class="item-cover"\n [disabled]="!isEnabled">\n</button>\n',providers:[{provide:t.NG_VALUE_ACCESSOR,useExisting:l.forwardRef(function(){return y}),multi:!0}]}]}],y.ctorParameters=function(){return[{type:n.ModalController},{type:n.Form},{type:n.Platform},{type:n.Item,decorators:[{type:l.Optional}]},{type:l.IterableDiffers},{type:l.ElementRef}]},y.propDecorators={_cssClass:[{type:l.HostBinding,args:["class.ionic-selectable"]}],_isIos:[{type:l.HostBinding,args:["class.ionic-selectable-ios"]}],_isMD:[{type:l.HostBinding,args:["class.ionic-selectable-md"]}],_isMultipleCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-is-multiple"]}],_hasValueCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-has-value"]}],_hasPlaceholderCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-has-placeholder"]}],items:[{type:l.Input}],itemsChange:[{type:l.Output}],isEnabled:[{type:l.HostBinding,args:["class.ionic-selectable-is-enabled"]},{type:l.Input,args:["isEnabled"]}],shouldBackdropClose:[{type:l.Input,args:["shouldBackdropClose"]}],modalCssClass:[{type:l.Input}],modalEnterAnimation:[{type:l.Input}],modalLeaveAnimation:[{type:l.Input}],isConfirmButtonEnabled:[{type:l.Input,args:["isConfirmButtonEnabled"]}],hasConfirmButton:[{type:l.Input,args:["hasConfirmButton"]}],itemValueField:[{type:l.Input}],itemTextField:[{type:l.Input}],groupValueField:[{type:l.Input}],groupTextField:[{type:l.Input}],canSearch:[{type:l.Input}],isOnSearchEnabled:[{type:l.Input,args:["isOnSearchEnabled"]}],canClear:[{type:l.HostBinding,args:["class.ionic-selectable-can-clear"]},{type:l.Input,args:["canClear"]}],hasInfiniteScroll:[{type:l.Input}],hasVirtualScroll:[{type:l.Input}],virtualScrollApproxItemHeight:[{type:l.Input}],virtualScrollApproxItemWidth:[{type:l.Input}],virtualScrollBufferRatio:[{type:l.Input}],virtualScrollHeaderFn:[{type:l.Input}],searchPlaceholder:[{type:l.Input}],placeholder:[{type:l.Input}],isMultiple:[{type:l.Input,args:["isMultiple"]}],searchFailText:[{type:l.Input}],clearButtonText:[{type:l.Input}],addButtonText:[{type:l.Input}],confirmButtonText:[{type:l.Input}],closeButtonText:[{type:l.Input}],focusSearchbar:[{type:l.Input}],headerColor:[{type:l.Input}],groupColor:[{type:l.Input}],onChange:[{type:l.Output}],onSearch:[{type:l.Output}],onSearchFail:[{type:l.Output}],onSearchSuccess:[{type:l.Output}],onInfiniteScroll:[{type:l.Output}],onOpen:[{type:l.Output}],onClose:[{type:l.Output}],onSelect:[{type:l.Output}],onClear:[{type:l.Output}],valueTemplate:[{type:l.ContentChild,args:[v,{read:l.TemplateRef}]}],itemTemplate:[{type:l.ContentChild,args:[I,{read:l.TemplateRef}]}],itemEndTemplate:[{type:l.ContentChild,args:[d,{read:l.TemplateRef}]}],titleTemplate:[{type:l.ContentChild,args:[b,{read:l.TemplateRef}]}],placeholderTemplate:[{type:l.ContentChild,args:[g,{read:l.TemplateRef}]}],messageTemplate:[{type:l.ContentChild,args:[_,{read:l.TemplateRef}]}],groupTemplate:[{type:l.ContentChild,args:[u,{read:l.TemplateRef}]}],groupEndTemplate:[{type:l.ContentChild,args:[p,{read:l.TemplateRef}]}],closeButtonTemplate:[{type:l.ContentChild,args:[c,{read:l.TemplateRef}]}],searchFailTemplate:[{type:l.ContentChild,args:[C,{read:l.TemplateRef}]}],addItemTemplate:[{type:l.ContentChild,args:[r,{read:l.TemplateRef}]}],footerTemplate:[{type:l.ContentChild,args:[m,{read:l.TemplateRef}]}],headerTemplate:[{type:l.ContentChild,args:[h,{read:l.TemplateRef}]}],itemIconTemplate:[{type:l.ContentChild,args:[f,{read:l.TemplateRef}]}],searchDebounce:[{type:l.Input}],disabledItems:[{type:l.Input}],shouldStoreItemValue:[{type:l.Input}],canSaveItem:[{type:l.Input}],canDeleteItem:[{type:l.Input}],canAddItem:[{type:l.Input,args:["canAddItem"]}],onSaveItem:[{type:l.Output}],onDeleteItem:[{type:l.Output}],onAddItem:[{type:l.Output}],_click:[{type:l.HostListener,args:["click",["$event"]]}]};var S=(Object.defineProperty(O.prototype,"_canClearCssClass",{get:function(){return this.selectComponent.canClear},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isMultipleCssClass",{get:function(){return this.selectComponent.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isSearchingCssClass",{get:function(){return this.selectComponent._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isAddItemTemplateVisibleCssClass",{get:function(){return this.selectComponent._isAddItemTemplateVisible},enumerable:!0,configurable:!0}),Object.defineProperty(O.prototype,"_isIos",{get:function(){return this.selectComponent._isIos},enumerable:!0,configurable:!0}),O.prototype._isMD=function(){return this.selectComponent._isMD},O.prototype.ngAfterViewInit=function(){var e=this;this._header=this._element.nativeElement.querySelector("ion-header"),this._searchbarComponent&&this.selectComponent.focusSearchbar&&setTimeout(function(){e._searchbarComponent.setFocus()},500)},O);function O(e,t){var n=this;this.navParams=e,this._element=t,this._cssClass=!0,this.selectComponent=this.navParams.get("selectComponent"),(this.selectComponent._modalComponent=this).selectComponent._selectedItems=[],this.selectComponent._isNullOrWhiteSpace(this.selectComponent.value)||(this.selectComponent.isMultiple?this.selectComponent.value.forEach(function(e){n.selectComponent._selectedItems.push(e)}):this.selectComponent._selectedItems.push(this.selectComponent.value)),this.selectComponent._setItemsToConfirm(this.selectComponent._selectedItems)}S.decorators=[{type:l.Component,args:[{selector:"ionic-selectable-modal",template:'<ion-header>\n <ion-navbar *ngIf="!selectComponent.headerTemplate"\n [color]="selectComponent.headerColor ? selectComponent.headerColor : null">\n <ion-title>\n \x3c!-- Use span for titleTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.titleTemplate"\n [ngTemplateOutlet]="selectComponent.titleTemplate">\n </span>\n <span *ngIf="!selectComponent.titleTemplate">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)="selectComponent._close()">\n <span *ngIf="selectComponent.closeButtonTemplate"\n [ngTemplateOutlet]="selectComponent.closeButtonTemplate">\n </span>\n <span *ngIf="!selectComponent.closeButtonTemplate" ion-text\n showWhen="ios">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf="!selectComponent.closeButtonTemplate" name="md-close"\n hideWhen="ios">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf="selectComponent.headerTemplate"\n [ngTemplateOutlet]="selectComponent.headerTemplate">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]="selectComponent._searchText"\n (ionInput)="selectComponent._filterItems()"\n [placeholder]="selectComponent.searchPlaceholder"\n [debounce]="selectComponent.searchDebounce">\n </ion-searchbar>\n <div class="ionic-selectable-message"\n *ngIf="selectComponent.messageTemplate">\n <div [ngTemplateOutlet]="selectComponent.messageTemplate">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class="ionic-selectable-spinner" *ngIf="selectComponent._isSearching">\n <div class="ionic-selectable-spinner-background"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf="selectComponent._searchText"\n (click)="selectComponent._select(selectComponent._searchText)"\n class="ionic-selectable-item searchTextItem"\n [ngClass]="{ \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(selectComponent._searchText) }">\n <span *ngIf="!selectComponent.itemTemplate">\n Use typed text\n </span>\n <ion-icon class="addCustomItemIcon" name="add-circle"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf="!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems">\n <ion-item-group *ngFor="let group of selectComponent._filteredGroups"\n class="ionic-selectable-group">\n <ion-item-divider *ngIf="selectComponent._hasGroups"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n \x3c!-- Use span for groupTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.groupTemplate"\n [ngTemplateOutlet]="selectComponent.groupTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </span>\n <span *ngIf="!selectComponent.groupTemplate">\n {{group.text}}\n </span>\n <div *ngIf="selectComponent.groupEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.groupEndTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor="let item of group.items"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n \x3c!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. --\x3e\n <div *ngIf="!selectComponent._hasFilteredItems">\n <span *ngIf="selectComponent.searchFailTemplate"\n [ngTemplateOutlet]="selectComponent.searchFailTemplate">\n </span>\n <div *ngIf="!selectComponent.searchFailTemplate" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf="!selectComponent.hasVirtualScroll"\n [enabled]="selectComponent.hasInfiniteScroll"\n (ionInfinite)="selectComponent._getMoreItems($event)">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf="selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems"\n [virtualScroll]="selectComponent._filteredGroups[0].items"\n [approxItemHeight]="selectComponent.virtualScrollApproxItemHeight"\n [approxItemWidth]="selectComponent.virtualScrollApproxItemWidth"\n [bufferRatio]="selectComponent.virtualScrollBufferRatio"\n [headerFn]="selectComponent.virtualScrollHeaderFn">\n <ion-item-divider *virtualHeader="let header"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem="let item"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class="ionic-selectable-add-item-template"\n *ngIf="selectComponent._isAddItemTemplateVisible"\n [ngStyle]="{ \'top.px\': _header.offsetHeight }">\n <span [ngTemplateOutlet]="selectComponent.addItemTemplate"\n [ngTemplateOutletContext]="{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }">\n </span>\n</div>\n<ion-footer\n *ngIf="selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate"\n [ngStyle]="{ \'visibility\': selectComponent._isFooterVisible ? \'initial\' : \'hidden\' }">\n <ion-toolbar *ngIf="!selectComponent.footerTemplate">\n <ion-row>\n <ion-col *ngIf="selectComponent.canClear">\n <button ion-button full no-margin (click)="selectComponent._clear()"\n [disabled]="!selectComponent._selectedItems.length">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf="selectComponent.canAddItem">\n <button ion-button full no-margin\n (click)="selectComponent._addItemClick()">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf="selectComponent.isMultiple || selectComponent.hasConfirmButton">\n <button ion-button full no-margin (click)="selectComponent._confirm()"\n [disabled]="!selectComponent.isConfirmButtonEnabled">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf="selectComponent.footerTemplate"\n [ngTemplateOutlet]="selectComponent.footerTemplate">\n </div>\n</ion-footer>\n'}]}],S.ctorParameters=function(){return[{type:n.NavParams},{type:l.ElementRef}]},S.propDecorators={_cssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal"]}],_canClearCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-can-clear"]}],_isMultipleCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-is-multiple"]}],_isSearchingCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-is-searching"]}],_isAddItemTemplateVisibleCssClass:[{type:l.HostBinding,args:["class.ionic-selectable-modal-is-add-item-template-visible"]}],_isIos:[{type:l.HostBinding,args:["class.ionic-selectable-modal-ios"]}],_isMD:[{type:l.HostBinding,args:["class.ionic-selectable-modal-md"]}],_searchbarComponent:[{type:l.ViewChild,args:["searchbarComponent"]}],_content:[{type:l.ViewChild,args:[n.Content]}]};var E=[y,S],x=[v,I,d,b,g,_,u,p,c,C,r,m,h,f],V=function N(){};V.decorators=[{type:l.NgModule,args:[{imports:[o.CommonModule,n.IonicPageModule.forChild(y),n.IonicPageModule.forChild(S)],declarations:a(E,x),exports:a(E,x),entryComponents:E}]}],V.ctorParameters=function(){return[]},e.IonicSelectableAddItemTemplateDirective=r,e.IonicSelectableCloseButtonTemplateDirective=c,e.IonicSelectableFooterTemplateDirective=m,e.IonicSelectableGroupEndTemplateDirective=p,e.IonicSelectableGroupTemplateDirective=u,e.IonicSelectableHeaderTemplateDirective=h,e.IonicSelectableItemEndTemplateDirective=d,e.IonicSelectableItemIconTemplateDirective=f,e.IonicSelectableItemTemplateDirective=I,e.IonicSelectableMessageTemplateDirective=_,e.IonicSelectableModalComponent=S,e.IonicSelectablePlaceholderTemplateDirective=g,e.IonicSelectableSearchFailTemplateDirective=C,e.IonicSelectableTitleTemplateDirective=b,e.IonicSelectableValueTemplateDirective=v,e.IonicSelectableComponent=y,e.IonicSelectableModule=V,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ionic-selectable-v3.umd.min.js.map

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

import{Directive,Component,ContentChild,ElementRef,EventEmitter,forwardRef,HostBinding,HostListener,Input,IterableDiffers,Optional,Output,TemplateRef,ViewChild,NgModule}from"@angular/core";import{NG_VALUE_ACCESSOR}from"@angular/forms";import{Form,Item,ModalController,Platform,Content,NavParams,IonicPageModule}from"ionic-angular";import"rxjs";import{CommonModule}from"@angular/common";class IonicSelectableAddItemTemplateDirective{}IonicSelectableAddItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableAddItemTemplate]"}]}],IonicSelectableAddItemTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableCloseButtonTemplateDirective{}IonicSelectableCloseButtonTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableCloseButtonTemplate]"}]}],IonicSelectableCloseButtonTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableFooterTemplateDirective{}IonicSelectableFooterTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableFooterTemplate]"}]}],IonicSelectableFooterTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableGroupEndTemplateDirective{}IonicSelectableGroupEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupEndTemplate]"}]}],IonicSelectableGroupEndTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableGroupTemplateDirective{}IonicSelectableGroupTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupTemplate]"}]}],IonicSelectableGroupTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableHeaderTemplateDirective{}IonicSelectableHeaderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableHeaderTemplate]"}]}],IonicSelectableHeaderTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableItemEndTemplateDirective{}IonicSelectableItemEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemEndTemplate]"}]}],IonicSelectableItemEndTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableItemIconTemplateDirective{}IonicSelectableItemIconTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemIconTemplate]"}]}],IonicSelectableItemIconTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableItemTemplateDirective{}IonicSelectableItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemTemplate]"}]}],IonicSelectableItemTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableMessageTemplateDirective{}IonicSelectableMessageTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableMessageTemplate]"}]}],IonicSelectableMessageTemplateDirective.ctorParameters=(()=>[]);class IonicSelectablePlaceholderTemplateDirective{}IonicSelectablePlaceholderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectablePlaceholderTemplate]"}]}],IonicSelectablePlaceholderTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableSearchFailTemplateDirective{}IonicSelectableSearchFailTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableSearchFailTemplate]"}]}],IonicSelectableSearchFailTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableTitleTemplateDirective{}IonicSelectableTitleTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableTitleTemplate]"}]}],IonicSelectableTitleTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableValueTemplateDirective{}IonicSelectableValueTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableValueTemplate]"}]}],IonicSelectableValueTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableComponent{constructor(e,t,i,n,l,s){this._modalController=e,this.ionForm=t,this._platform=i,this.ionItem=n,this._iterableDiffers=l,this.element=s,this._cssClass=!0,this._isOnSearchEnabled=!0,this._isEnabled=!0,this._shouldBackdropClose=!0,this._isOpened=!1,this._value=null,this._canClear=!1,this._hasConfirmButton=!1,this._isMultiple=!1,this._canAddItem=!1,this.onItemsChange=new EventEmitter,this._label=null,this._valueItems=[],this._searchText="",this._hasSearchText=!1,this._groups=[],this._itemsToConfirm=[],this._selectedItems=[],this._filteredGroups=[],this._isAddItemTemplateVisible=!1,this._isFooterVisible=!0,this._itemToAdd=null,this._footerButtonsCount=0,this._hasFilteredItems=!1,this.items=[],this.itemsChange=new EventEmitter,this.modalCssClass=null,this.modalEnterAnimation=null,this.modalLeaveAnimation=null,this.isConfirmButtonEnabled=!0,this.itemValueField=null,this.itemTextField=null,this.groupValueField=null,this.groupTextField=null,this.canSearch=!1,this.hasInfiniteScroll=!1,this.hasVirtualScroll=!1,this.virtualScrollApproxItemHeight="40px",this.virtualScrollApproxItemWidth="100%",this.virtualScrollBufferRatio=3,this.virtualScrollHeaderFn=(()=>null),this.searchPlaceholder="Search",this.placeholder=null,this.searchFailText="No items found.",this.clearButtonText="Clear",this.addButtonText="Add",this.confirmButtonText="OK",this.closeButtonText="Cancel",this.focusSearchbar=!1,this.headerColor=null,this.groupColor=null,this.onChange=new EventEmitter,this.onSearch=new EventEmitter,this.onSearchFail=new EventEmitter,this.onSearchSuccess=new EventEmitter,this.onInfiniteScroll=new EventEmitter,this.onOpen=new EventEmitter,this.onClose=new EventEmitter,this.onSelect=new EventEmitter,this.onClear=new EventEmitter,this.searchDebounce=250,this.disabledItems=[],this.shouldStoreItemValue=!1,this.canSaveItem=!1,this.canDeleteItem=!1,this.onSaveItem=new EventEmitter,this.onDeleteItem=new EventEmitter,this.onAddItem=new EventEmitter,this.propagateOnChange=(e=>{}),this.propagateOnTouched=(()=>{}),this.items&&this.items.length||(this.items=[]),this._itemsDiffer=this._iterableDiffers.find(this.items).create()}get _isMultipleCssClass(){return this.isMultiple}get _hasValueCssClass(){return this.hasValue()}get _hasPlaceholderCssClass(){return this._hasPlaceholder}get _shouldStoreItemValue(){return this.shouldStoreItemValue&&this._hasObjects}get label(){return this._label}get searchText(){return this._searchText}set searchText(e){this._searchText=e,this._setHasSearchText()}get isSearching(){return this._isSearching}get hasSearchText(){return this._hasSearchText}get value(){return this._value}set value(e){this._value=e,this._valueItems.splice(0,this._valueItems.length),this.isMultiple?e&&e.length&&Array.prototype.push.apply(this._valueItems,e):this._isNullOrWhiteSpace(e)||this._valueItems.push(e),this._setIonItemHasValue(),this._setHasPlaceholder()}get isEnabled(){return this._isEnabled}set isEnabled(e){this._isEnabled=!!e,this.enableIonItem(this._isEnabled)}get shouldBackdropClose(){return this._shouldBackdropClose}set shouldBackdropClose(e){this._shouldBackdropClose=!!e}get isOpened(){return this._isOpened}get hasConfirmButton(){return this._hasConfirmButton}set hasConfirmButton(e){this._hasConfirmButton=!!e,this._countFooterButtons()}get isOnSearchEnabled(){return this._isOnSearchEnabled}set isOnSearchEnabled(e){this._isOnSearchEnabled=!!e}get canClear(){return this._canClear}set canClear(e){this._canClear=!!e,this._countFooterButtons()}get isMultiple(){return this._isMultiple}set isMultiple(e){this._isMultiple=!!e,this._countFooterButtons()}get itemsToConfirm(){return this._itemsToConfirm}get canAddItem(){return this._canAddItem}set canAddItem(e){this._canAddItem=!!e,this._countFooterButtons()}initFocus(){}enableIonItem(e){this.ionItem&&this.ionItem.setElementClass("item-input-disabled",!e)}_click(e){this.isEnabled&&0!==e.detail&&(this._label=this._getLabelText(),e.preventDefault(),e.stopPropagation(),this.open().then(()=>{this.onOpen.emit({component:this})}))}_isNullOrWhiteSpace(e){return null==e||e.toString().replace(/\s/g,"").length<1}_setHasSearchText(){this._hasSearchText=!this._isNullOrWhiteSpace(this._searchText)}_hasOnSearch(){return this.isOnSearchEnabled&&this.onSearch.observers.length>0}_hasOnSaveItem(){return this.canSaveItem&&this.onSaveItem.observers.length>0}_hasOnAddItem(){return this.canAddItem&&this.onAddItem.observers.length>0}_hasOnDeleteItem(){return this.canDeleteItem&&this.onDeleteItem.observers.length>0}_emitValueChange(){this.propagateOnChange(this.value),this._setIonItemValidityClasses(),this.onChange.emit({component:this,value:this.value})}_emitSearch(){this.canSearch&&this.onSearch.emit({component:this,text:this._searchText})}_emitOnSelect(e,t){this.onSelect.emit({component:this,item:e,isSelected:t})}_emitOnClear(e){this.onClear.emit({component:this,items:e})}_emitOnSearchSuccessOrFail(e){const t={component:this,text:this._searchText};e?this.onSearchSuccess.emit(t):this.onSearchFail.emit(t)}_formatItem(e){return this._isNullOrWhiteSpace(e)?null:this.itemTextField?e[this.itemTextField]:e.toString()}_formatValueItem(e){if(this._shouldStoreItemValue){let t=this.items.find(t=>t[this.itemValueField]===e);return this._formatItem(t)}return this._formatItem(e)}_getItemValue(e){return this._hasObjects?e[this.itemValueField]:e}_getStoredItemValue(e){return this._hasObjects?this._shouldStoreItemValue?e:e[this.itemValueField]:e}_filterItems(){if(this._setHasSearchText(),this._hasOnSearch())this._emitSearch();else{let e=[];if(this._searchText&&this._searchText.trim()){let t=this._searchText.trim().toLowerCase();this._groups.forEach(i=>{let n=i.items.filter(e=>{return-1!==(this.itemTextField?e[this.itemTextField]:e).toString().toLowerCase().indexOf(t)});n.length&&e.push({value:i.value,text:i.text,items:n})}),e.length||e.push({items:[]})}else e=this._groups;this._filteredGroups=e,this._hasFilteredItems=!this._areGroupsEmpty(e),this._emitOnSearchSuccessOrFail(this._hasFilteredItems)}}_isItemDisabled(e){if(this.disabledItems)return this.disabledItems.some(t=>this._getItemValue(t)===this._getItemValue(e))}_isItemSelected(e){return void 0!==this._selectedItems.find(t=>this._getItemValue(e)===this._getStoredItemValue(t))}_addSelectedItem(e){this._shouldStoreItemValue?this._selectedItems.push(this._getItemValue(e)):this._selectedItems.push(e)}_deleteSelectedItem(e){let t;this._selectedItems.forEach((i,n)=>{this._getItemValue(e)===this._getStoredItemValue(i)&&(t=n)}),this._selectedItems.splice(t,1)}_saveItem(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnSaveItem()?this.onSaveItem.emit({component:this,item:this._itemToAdd}):this.showAddItemTemplate()}_deleteItemClick(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnDeleteItem()?this.onDeleteItem.emit({component:this,item:this._itemToAdd}):this.deleteItem(this._itemToAdd)}_addItemClick(){this._itemToAdd=null,this._hasOnAddItem()?this.onAddItem.emit({component:this}):this.showAddItemTemplate()}_close(){this._modalComponent._searchbarComponent&&this._modalComponent._searchbarComponent._fireBlur(),setTimeout(()=>{this.close().then(()=>{this.onClose.emit({component:this})}),this._hasOnSearch()||(this._searchText="",this._setHasSearchText())})}_clear(){const e=this._selectedItems;this.clear(),this._emitValueChange(),this._emitOnClear(e),this.close().then(()=>{this.onClose.emit({component:this})})}_getMoreItems(e){this._infiniteScroll=e,this.onInfiniteScroll.emit({component:this,text:this._searchText})}_setItemsToConfirm(e){this._itemsToConfirm=[].concat(e)}_doSelect(e){this.value=e,this._emitValueChange()}_select(e){const t=this._isItemSelected(e);this.isMultiple?(t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):this.hasConfirmButton||this.footerTemplate?(this._selectedItems=[],t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):(t||(this._selectedItems=[],this._addSelectedItem(e),this._emitOnSelect(e,!0),this._shouldStoreItemValue?this._doSelect(this._getItemValue(e)):this._doSelect(e)),this._close())}_confirm(){this.confirm(),this._close()}_getLabelText(){let e=this.ionItem?this.ionItem.getNativeElement().querySelector("ion-label"):null;return e?e.textContent:null}_areGroupsEmpty(e){return 0===e.length||e.every(e=>!e.items||0===e.items.length)}_countFooterButtons(){let e=0;this.canClear&&e++,(this.isMultiple||this._hasConfirmButton)&&e++,this.canAddItem&&e++,this._footerButtonsCount=e}_setItems(e){let t=[{items:e||[]}];e&&e.length&&this._hasGroups&&(t=[],e.forEach(e=>{let i=this._getPropertyValue(e,this.groupValueField),n=t.find(e=>e.value===i);n?n.items.push(e):t.push({value:i,text:this._getPropertyValue(e,this.groupTextField),items:[e]})})),this._groups=t,this._filteredGroups=this._groups,this._hasFilteredItems=!this._areGroupsEmpty(this._filteredGroups)}_getPropertyValue(e,t){return t?t.split(".").reduce((e,t)=>e?e[t]:null,e):null}_setIonItemHasFocus(e){this.ionItem&&this.ionItem.setElementClass("item-input-has-focus",e)}_setIonItemHasValue(){this.ionItem&&this.ionItem.setElementClass("item-input-has-value",this.hasValue())}_setHasPlaceholder(){this._hasPlaceholder=!(this.hasValue()||this._isNullOrWhiteSpace(this.placeholder)&&!this.placeholderTemplate)}_setIonItemValidityClasses(){this.ionItem&&requestAnimationFrame(()=>{let e=this.element.nativeElement.classList;this.ionItem.setElementClass("ng-invalid",!1),this.ionItem.setElementClass("ng-valid",!1),this.ionItem.setElementClass("ng-touched",!1),this.ionItem.setElementClass("ng-untouched",!1),this.ionItem.setElementClass("ng-dirty",!1),this.ionItem.setElementClass("ng-pristine",!1),e.forEach(e=>{"ng-invalid"===e&&this.ionItem.setElementClass("ng-invalid",!0),"ng-valid"===e&&this.ionItem.setElementClass("ng-valid",!0),"ng-touched"===e&&this.ionItem.setElementClass("ng-touched",!0),"ng-untouched"===e&&this.ionItem.setElementClass("ng-untouched",!0),"ng-dirty"===e&&this.ionItem.setElementClass("ng-dirty",!0),"ng-pristine"===e&&this.ionItem.setElementClass("ng-pristine",!0)})})}_toggleAddItemTemplate(e){this.addItemTemplate&&(this._isAddItemTemplateVisible=e,this._isFooterVisible=!e)}writeValue(e){this.value=e,this._setIonItemValidityClasses()}registerOnChange(e){this.propagateOnChange=e}registerOnTouched(e){this.propagateOnTouched=e}setDisabledState(e){this.isEnabled=!e}ngOnInit(){this._isIos=this._platform.is("ios"),this._isMD=!this._isIos,this._hasObjects=!this._isNullOrWhiteSpace(this.itemValueField),this._hasGroups=Boolean(this._hasObjects&&this.groupValueField&&!this.hasVirtualScroll),this.ionForm.register(this),this.ionItem&&(this.ionItem.setElementClass("item-input",!0),this.ionItem.setElementClass("item-ionic-selectable",!0)),this.enableIonItem(this.isEnabled)}ngOnDestroy(){this.ionForm.deregister(this)}ngDoCheck(){this._itemsDiffer.diff(this.items)&&(this._setItems(this.items),this.value=this.value,this.onItemsChange.emit({component:this}))}addItem(e){let t=this;return this.items.unshift(e),this._addItemObservable&&this._addItemObservable.unsubscribe(),new Promise(function(e,i){t._addItemObservable=t.onItemsChange.asObservable().subscribe(()=>{t._addItemObservable.unsubscribe(),e()},()=>{t._addItemObservable.unsubscribe(),i()})})}deleteItem(e){let t=this,i=!1;if(this._selectedItems&&(this._selectedItems=this._selectedItems.filter(t=>this._getItemValue(e)!==this._getStoredItemValue(t))),this.value)if(this.isMultiple){let t=this.value.filter(t=>t.id!==e.id);t.length!==this.value.length&&(this.value=t,i=!0)}else e===this.value&&(this.value=null,i=!0);i&&this._emitValueChange();let n=this.items.filter(t=>t.id!==e.id);return this.itemsChange.emit(n),this._setItems(n),this.onItemsChange.emit({component:this}),this._deleteItemObservable&&this._deleteItemObservable.unsubscribe(),new Promise(function(e,i){t._deleteItemObservable=t.onItemsChange.asObservable().subscribe(()=>{t._deleteItemObservable.unsubscribe(),e()},()=>{t._deleteItemObservable.unsubscribe(),i()})})}hasValue(){return this.isMultiple?0!==this._valueItems.length:0!==this._valueItems.length&&!this._isNullOrWhiteSpace(this._valueItems[0])}open(){let e=this;return new Promise(function(t,i){if(!e._isEnabled||e._isOpened)return void i("IonicSelectable is disabled or already opened.");e._filterItems(),e._isOpened=!0;const n={enableBackdropDismiss:e._shouldBackdropClose};e.modalCssClass&&(n.cssClass=e.modalCssClass),e.modalEnterAnimation&&(n.enterAnimation=e.modalEnterAnimation),e.modalLeaveAnimation&&(n.leaveAnimation=e.modalLeaveAnimation),e._modal=e._modalController.create(IonicSelectableModalComponent,{selectComponent:e},n),e._modal.present({animate:!1}).then(()=>{e._setIonItemHasFocus(!0),t()}),e._modal.onWillDismiss(()=>{e._setIonItemHasFocus(!1)}),e._modal.onDidDismiss((t,i)=>{e._isOpened=!1,e._itemsToConfirm=[],"backdrop"===i&&e.onClose.emit({component:e})})})}close(){let e=this;return new Promise(function(t,i){e._isEnabled&&e._isOpened?(e.propagateOnTouched(),e._setIonItemValidityClasses(),e._infiniteScroll=null,e._isOpened=!1,e._itemToAdd=null,e._modal.dismiss().then(()=>{e._setIonItemHasFocus(!1),e.hideAddItemTemplate(),t()})):i("IonicSelectable is disabled or already closed.")})}clear(){this.value=this.isMultiple?[]:null,this._itemsToConfirm=[],this.propagateOnChange(this.value),this._setIonItemValidityClasses()}confirm(){this.isMultiple?this._doSelect(this._selectedItems):(this.hasConfirmButton||this.footerTemplate)&&this._doSelect(this._selectedItems[0]||null)}toggleItems(e,t){if(e){const e=t&&t.length;let i=this._groups.reduce((e,t)=>e.concat(t.items),[]);this.isMultiple||e||(i=[]),e&&(i=i.filter(e=>void 0!==t.find(t=>this._getItemValue(e)===this._getItemValue(t))),this.isMultiple||i.splice(0,1)),i.forEach(e=>{this._addSelectedItem(e)})}else this._selectedItems=[];this._setItemsToConfirm(this._selectedItems)}scrollToTop(){let e=this;return new Promise(function(t,i){e._isOpened?e._modalComponent._content.scrollToTop().then(()=>{t()}):i("IonicSelectable content cannot be scrolled.")})}scrollToBottom(){let e=this;return new Promise(function(t,i){e._isOpened?e._modalComponent._content.scrollToBottom().then(()=>{t()}):i("IonicSelectable content cannot be scrolled.")})}startSearch(){this._isEnabled&&this.showLoading()}endSearch(){this._isEnabled&&(this.hideLoading(),this._setItems(this.items),this._emitOnSearchSuccessOrFail(this._hasFilteredItems))}enableInfiniteScroll(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!0)}disableInfiniteScroll(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!1)}endInfiniteScroll(){this._isEnabled&&this._infiniteScroll&&(this._infiniteScroll.complete(),this._setItems(this.items))}search(e){this._isEnabled&&this._isOpened&&this.canSearch&&(this._searchText=e,this._setHasSearchText(),this._filterItems())}showLoading(){this._isEnabled&&(this._isSearching=!0)}hideLoading(){this._isEnabled&&(this._isSearching=!1)}showAddItemTemplate(){this._toggleAddItemTemplate(!0)}hideAddItemTemplate(){this._toggleAddItemTemplate(!1)}}IonicSelectableComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable",template:'<div class="ionic-selectable-value">\n <div *ngIf="valueTemplate && _valueItems.length && isMultiple"\n [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems }">\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="valueTemplate && _valueItems.length && !isMultiple">\n <div [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems[0] }">\n </div>\n </div>\n <span *ngIf="!valueTemplate && _valueItems.length">\n <div class="ionic-selectable-value-item"\n *ngFor="let valueItem of _valueItems">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf="_hasPlaceholder && placeholderTemplate"\n class="ionic-selectable-value-item">\n <div [ngTemplateOutlet]="placeholderTemplate">\n </div>\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="_hasPlaceholder && !placeholderTemplate">\n {{placeholder}}\n </div>\n</div>\n<div class="ionic-selectable-icon">\n <div class="ionic-selectable-icon-inner"></div>\n</div>\n<button aria-haspopup="true" ion-button="item-cover" class="item-cover"\n [disabled]="!isEnabled">\n</button>\n',providers:[{provide:NG_VALUE_ACCESSOR,useExisting:forwardRef(()=>IonicSelectableComponent),multi:!0}]}]}],IonicSelectableComponent.ctorParameters=(()=>[{type:ModalController},{type:Form},{type:Platform},{type:Item,decorators:[{type:Optional}]},{type:IterableDiffers},{type:ElementRef}]),IonicSelectableComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-md"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-is-multiple"]}],_hasValueCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-value"]}],_hasPlaceholderCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-placeholder"]}],items:[{type:Input}],itemsChange:[{type:Output}],isEnabled:[{type:HostBinding,args:["class.ionic-selectable-is-enabled"]},{type:Input,args:["isEnabled"]}],shouldBackdropClose:[{type:Input,args:["shouldBackdropClose"]}],modalCssClass:[{type:Input}],modalEnterAnimation:[{type:Input}],modalLeaveAnimation:[{type:Input}],isConfirmButtonEnabled:[{type:Input,args:["isConfirmButtonEnabled"]}],hasConfirmButton:[{type:Input,args:["hasConfirmButton"]}],itemValueField:[{type:Input}],itemTextField:[{type:Input}],groupValueField:[{type:Input}],groupTextField:[{type:Input}],canSearch:[{type:Input}],isOnSearchEnabled:[{type:Input,args:["isOnSearchEnabled"]}],canClear:[{type:HostBinding,args:["class.ionic-selectable-can-clear"]},{type:Input,args:["canClear"]}],hasInfiniteScroll:[{type:Input}],hasVirtualScroll:[{type:Input}],virtualScrollApproxItemHeight:[{type:Input}],virtualScrollApproxItemWidth:[{type:Input}],virtualScrollBufferRatio:[{type:Input}],virtualScrollHeaderFn:[{type:Input}],searchPlaceholder:[{type:Input}],placeholder:[{type:Input}],isMultiple:[{type:Input,args:["isMultiple"]}],searchFailText:[{type:Input}],clearButtonText:[{type:Input}],addButtonText:[{type:Input}],confirmButtonText:[{type:Input}],closeButtonText:[{type:Input}],focusSearchbar:[{type:Input}],headerColor:[{type:Input}],groupColor:[{type:Input}],onChange:[{type:Output}],onSearch:[{type:Output}],onSearchFail:[{type:Output}],onSearchSuccess:[{type:Output}],onInfiniteScroll:[{type:Output}],onOpen:[{type:Output}],onClose:[{type:Output}],onSelect:[{type:Output}],onClear:[{type:Output}],valueTemplate:[{type:ContentChild,args:[IonicSelectableValueTemplateDirective,{read:TemplateRef}]}],itemTemplate:[{type:ContentChild,args:[IonicSelectableItemTemplateDirective,{read:TemplateRef}]}],itemEndTemplate:[{type:ContentChild,args:[IonicSelectableItemEndTemplateDirective,{read:TemplateRef}]}],titleTemplate:[{type:ContentChild,args:[IonicSelectableTitleTemplateDirective,{read:TemplateRef}]}],placeholderTemplate:[{type:ContentChild,args:[IonicSelectablePlaceholderTemplateDirective,{read:TemplateRef}]}],messageTemplate:[{type:ContentChild,args:[IonicSelectableMessageTemplateDirective,{read:TemplateRef}]}],groupTemplate:[{type:ContentChild,args:[IonicSelectableGroupTemplateDirective,{read:TemplateRef}]}],groupEndTemplate:[{type:ContentChild,args:[IonicSelectableGroupEndTemplateDirective,{read:TemplateRef}]}],closeButtonTemplate:[{type:ContentChild,args:[IonicSelectableCloseButtonTemplateDirective,{read:TemplateRef}]}],searchFailTemplate:[{type:ContentChild,args:[IonicSelectableSearchFailTemplateDirective,{read:TemplateRef}]}],addItemTemplate:[{type:ContentChild,args:[IonicSelectableAddItemTemplateDirective,{read:TemplateRef}]}],footerTemplate:[{type:ContentChild,args:[IonicSelectableFooterTemplateDirective,{read:TemplateRef}]}],headerTemplate:[{type:ContentChild,args:[IonicSelectableHeaderTemplateDirective,{read:TemplateRef}]}],itemIconTemplate:[{type:ContentChild,args:[IonicSelectableItemIconTemplateDirective,{read:TemplateRef}]}],searchDebounce:[{type:Input}],disabledItems:[{type:Input}],shouldStoreItemValue:[{type:Input}],canSaveItem:[{type:Input}],canDeleteItem:[{type:Input}],canAddItem:[{type:Input,args:["canAddItem"]}],onSaveItem:[{type:Output}],onDeleteItem:[{type:Output}],onAddItem:[{type:Output}],_click:[{type:HostListener,args:["click",["$event"]]}]};class IonicSelectableModalComponent{constructor(e,t){this.navParams=e,this._element=t,this._cssClass=!0,this.selectComponent=this.navParams.get("selectComponent"),this.selectComponent._modalComponent=this,this.selectComponent._selectedItems=[],this.selectComponent._isNullOrWhiteSpace(this.selectComponent.value)||(this.selectComponent.isMultiple?this.selectComponent.value.forEach(e=>{this.selectComponent._selectedItems.push(e)}):this.selectComponent._selectedItems.push(this.selectComponent.value)),this.selectComponent._setItemsToConfirm(this.selectComponent._selectedItems)}get _canClearCssClass(){return this.selectComponent.canClear}get _isMultipleCssClass(){return this.selectComponent.isMultiple}get _isSearchingCssClass(){return this.selectComponent._isSearching}get _isAddItemTemplateVisibleCssClass(){return this.selectComponent._isAddItemTemplateVisible}get _isIos(){return this.selectComponent._isIos}_isMD(){return this.selectComponent._isMD}ngAfterViewInit(){this._header=this._element.nativeElement.querySelector("ion-header"),this._searchbarComponent&&this.selectComponent.focusSearchbar&&setTimeout(()=>{this._searchbarComponent.setFocus()},500)}}IonicSelectableModalComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable-modal",template:'<ion-header>\n <ion-navbar *ngIf="!selectComponent.headerTemplate"\n [color]="selectComponent.headerColor ? selectComponent.headerColor : null">\n <ion-title>\n \x3c!-- Use span for titleTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.titleTemplate"\n [ngTemplateOutlet]="selectComponent.titleTemplate">\n </span>\n <span *ngIf="!selectComponent.titleTemplate">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)="selectComponent._close()">\n <span *ngIf="selectComponent.closeButtonTemplate"\n [ngTemplateOutlet]="selectComponent.closeButtonTemplate">\n </span>\n <span *ngIf="!selectComponent.closeButtonTemplate" ion-text\n showWhen="ios">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf="!selectComponent.closeButtonTemplate" name="md-close"\n hideWhen="ios">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf="selectComponent.headerTemplate"\n [ngTemplateOutlet]="selectComponent.headerTemplate">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]="selectComponent._searchText"\n (ionInput)="selectComponent._filterItems()"\n [placeholder]="selectComponent.searchPlaceholder"\n [debounce]="selectComponent.searchDebounce">\n </ion-searchbar>\n <div class="ionic-selectable-message"\n *ngIf="selectComponent.messageTemplate">\n <div [ngTemplateOutlet]="selectComponent.messageTemplate">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class="ionic-selectable-spinner" *ngIf="selectComponent._isSearching">\n <div class="ionic-selectable-spinner-background"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf="selectComponent._searchText"\n (click)="selectComponent._select(selectComponent._searchText)"\n class="ionic-selectable-item searchTextItem"\n [ngClass]="{ \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(selectComponent._searchText) }">\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(selectComponent._searchText)}}\n </span>\n <ion-icon name="add-circle" style="color: green; padding-left: 10px; padding-top: 5px"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf="!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems">\n <ion-item-group *ngFor="let group of selectComponent._filteredGroups"\n class="ionic-selectable-group">\n <ion-item-divider *ngIf="selectComponent._hasGroups"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n \x3c!-- Use span for groupTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.groupTemplate"\n [ngTemplateOutlet]="selectComponent.groupTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </span>\n <span *ngIf="!selectComponent.groupTemplate">\n {{group.text}}\n </span>\n <div *ngIf="selectComponent.groupEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.groupEndTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor="let item of group.items"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n \x3c!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. --\x3e\n <div *ngIf="!selectComponent._hasFilteredItems">\n <span *ngIf="selectComponent.searchFailTemplate"\n [ngTemplateOutlet]="selectComponent.searchFailTemplate">\n </span>\n <div *ngIf="!selectComponent.searchFailTemplate" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf="!selectComponent.hasVirtualScroll"\n [enabled]="selectComponent.hasInfiniteScroll"\n (ionInfinite)="selectComponent._getMoreItems($event)">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf="selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems"\n [virtualScroll]="selectComponent._filteredGroups[0].items"\n [approxItemHeight]="selectComponent.virtualScrollApproxItemHeight"\n [approxItemWidth]="selectComponent.virtualScrollApproxItemWidth"\n [bufferRatio]="selectComponent.virtualScrollBufferRatio"\n [headerFn]="selectComponent.virtualScrollHeaderFn">\n <ion-item-divider *virtualHeader="let header"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem="let item"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class="ionic-selectable-add-item-template"\n *ngIf="selectComponent._isAddItemTemplateVisible"\n [ngStyle]="{ \'top.px\': _header.offsetHeight }">\n <span [ngTemplateOutlet]="selectComponent.addItemTemplate"\n [ngTemplateOutletContext]="{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }">\n </span>\n</div>\n<ion-footer\n *ngIf="selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate"\n [ngStyle]="{ \'visibility\': selectComponent._isFooterVisible ? \'initial\' : \'hidden\' }">\n <ion-toolbar *ngIf="!selectComponent.footerTemplate">\n <ion-row>\n <ion-col *ngIf="selectComponent.canClear">\n <button ion-button full no-margin (click)="selectComponent._clear()"\n [disabled]="!selectComponent._selectedItems.length">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf="selectComponent.canAddItem">\n <button ion-button full no-margin\n (click)="selectComponent._addItemClick()">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf="selectComponent.isMultiple || selectComponent.hasConfirmButton">\n <button ion-button full no-margin (click)="selectComponent._confirm()"\n [disabled]="!selectComponent.isConfirmButtonEnabled">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf="selectComponent.footerTemplate"\n [ngTemplateOutlet]="selectComponent.footerTemplate">\n </div>\n</ion-footer>\n'}]}],IonicSelectableModalComponent.ctorParameters=(()=>[{type:NavParams},{type:ElementRef}]),IonicSelectableModalComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable-modal"]}],_canClearCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-can-clear"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-multiple"]}],_isSearchingCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-searching"]}],_isAddItemTemplateVisibleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-add-item-template-visible"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-modal-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-modal-md"]}],_searchbarComponent:[{type:ViewChild,args:["searchbarComponent"]}],_content:[{type:ViewChild,args:[Content]}]};const components=[IonicSelectableComponent,IonicSelectableModalComponent],directives=[IonicSelectableValueTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectablePlaceholderTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableAddItemTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemIconTemplateDirective];class IonicSelectableModule{}IonicSelectableModule.decorators=[{type:NgModule,args:[{imports:[CommonModule,IonicPageModule.forChild(IonicSelectableComponent),IonicPageModule.forChild(IonicSelectableModalComponent)],declarations:[...components,...directives],exports:[...components,...directives],entryComponents:components}]}],IonicSelectableModule.ctorParameters=(()=>[]);export{IonicSelectableAddItemTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableItemIconTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableModalComponent,IonicSelectablePlaceholderTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectableValueTemplateDirective,IonicSelectableComponent,IonicSelectableModule};
import{Directive,Component,ContentChild,ElementRef,EventEmitter,forwardRef,HostBinding,HostListener,Input,IterableDiffers,Optional,Output,TemplateRef,ViewChild,NgModule}from"@angular/core";import{NG_VALUE_ACCESSOR}from"@angular/forms";import{Form,Item,ModalController,Platform,Content,NavParams,IonicPageModule}from"ionic-angular";import"rxjs";import{CommonModule}from"@angular/common";class IonicSelectableAddItemTemplateDirective{}IonicSelectableAddItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableAddItemTemplate]"}]}],IonicSelectableAddItemTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableCloseButtonTemplateDirective{}IonicSelectableCloseButtonTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableCloseButtonTemplate]"}]}],IonicSelectableCloseButtonTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableFooterTemplateDirective{}IonicSelectableFooterTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableFooterTemplate]"}]}],IonicSelectableFooterTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableGroupEndTemplateDirective{}IonicSelectableGroupEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupEndTemplate]"}]}],IonicSelectableGroupEndTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableGroupTemplateDirective{}IonicSelectableGroupTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupTemplate]"}]}],IonicSelectableGroupTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableHeaderTemplateDirective{}IonicSelectableHeaderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableHeaderTemplate]"}]}],IonicSelectableHeaderTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableItemEndTemplateDirective{}IonicSelectableItemEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemEndTemplate]"}]}],IonicSelectableItemEndTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableItemIconTemplateDirective{}IonicSelectableItemIconTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemIconTemplate]"}]}],IonicSelectableItemIconTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableItemTemplateDirective{}IonicSelectableItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemTemplate]"}]}],IonicSelectableItemTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableMessageTemplateDirective{}IonicSelectableMessageTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableMessageTemplate]"}]}],IonicSelectableMessageTemplateDirective.ctorParameters=(()=>[]);class IonicSelectablePlaceholderTemplateDirective{}IonicSelectablePlaceholderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectablePlaceholderTemplate]"}]}],IonicSelectablePlaceholderTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableSearchFailTemplateDirective{}IonicSelectableSearchFailTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableSearchFailTemplate]"}]}],IonicSelectableSearchFailTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableTitleTemplateDirective{}IonicSelectableTitleTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableTitleTemplate]"}]}],IonicSelectableTitleTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableValueTemplateDirective{}IonicSelectableValueTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableValueTemplate]"}]}],IonicSelectableValueTemplateDirective.ctorParameters=(()=>[]);class IonicSelectableComponent{constructor(e,t,i,n,l,s){this._modalController=e,this.ionForm=t,this._platform=i,this.ionItem=n,this._iterableDiffers=l,this.element=s,this._cssClass=!0,this._isOnSearchEnabled=!0,this._isEnabled=!0,this._shouldBackdropClose=!0,this._isOpened=!1,this._value=null,this._canClear=!1,this._hasConfirmButton=!1,this._isMultiple=!1,this._canAddItem=!1,this.onItemsChange=new EventEmitter,this._label=null,this._valueItems=[],this._searchText="",this._hasSearchText=!1,this._groups=[],this._itemsToConfirm=[],this._selectedItems=[],this._filteredGroups=[],this._isAddItemTemplateVisible=!1,this._isFooterVisible=!0,this._itemToAdd=null,this._footerButtonsCount=0,this._hasFilteredItems=!1,this.items=[],this.itemsChange=new EventEmitter,this.modalCssClass=null,this.modalEnterAnimation=null,this.modalLeaveAnimation=null,this.isConfirmButtonEnabled=!0,this.itemValueField=null,this.itemTextField=null,this.groupValueField=null,this.groupTextField=null,this.canSearch=!1,this.hasInfiniteScroll=!1,this.hasVirtualScroll=!1,this.virtualScrollApproxItemHeight="40px",this.virtualScrollApproxItemWidth="100%",this.virtualScrollBufferRatio=3,this.virtualScrollHeaderFn=(()=>null),this.searchPlaceholder="Search",this.placeholder=null,this.searchFailText="No items found.",this.clearButtonText="Clear",this.addButtonText="Add",this.confirmButtonText="OK",this.closeButtonText="Cancel",this.focusSearchbar=!1,this.headerColor=null,this.groupColor=null,this.onChange=new EventEmitter,this.onSearch=new EventEmitter,this.onSearchFail=new EventEmitter,this.onSearchSuccess=new EventEmitter,this.onInfiniteScroll=new EventEmitter,this.onOpen=new EventEmitter,this.onClose=new EventEmitter,this.onSelect=new EventEmitter,this.onClear=new EventEmitter,this.searchDebounce=250,this.disabledItems=[],this.shouldStoreItemValue=!1,this.canSaveItem=!1,this.canDeleteItem=!1,this.onSaveItem=new EventEmitter,this.onDeleteItem=new EventEmitter,this.onAddItem=new EventEmitter,this.propagateOnChange=(e=>{}),this.propagateOnTouched=(()=>{}),this.items&&this.items.length||(this.items=[]),this._itemsDiffer=this._iterableDiffers.find(this.items).create()}get _isMultipleCssClass(){return this.isMultiple}get _hasValueCssClass(){return this.hasValue()}get _hasPlaceholderCssClass(){return this._hasPlaceholder}get _shouldStoreItemValue(){return this.shouldStoreItemValue&&this._hasObjects}get label(){return this._label}get searchText(){return this._searchText}set searchText(e){this._searchText=e,this._setHasSearchText()}get isSearching(){return this._isSearching}get hasSearchText(){return this._hasSearchText}get value(){return this._value}set value(e){this._value=e,this._valueItems.splice(0,this._valueItems.length),this.isMultiple?e&&e.length&&Array.prototype.push.apply(this._valueItems,e):this._isNullOrWhiteSpace(e)||this._valueItems.push(e),this._setIonItemHasValue(),this._setHasPlaceholder()}get isEnabled(){return this._isEnabled}set isEnabled(e){this._isEnabled=!!e,this.enableIonItem(this._isEnabled)}get shouldBackdropClose(){return this._shouldBackdropClose}set shouldBackdropClose(e){this._shouldBackdropClose=!!e}get isOpened(){return this._isOpened}get hasConfirmButton(){return this._hasConfirmButton}set hasConfirmButton(e){this._hasConfirmButton=!!e,this._countFooterButtons()}get isOnSearchEnabled(){return this._isOnSearchEnabled}set isOnSearchEnabled(e){this._isOnSearchEnabled=!!e}get canClear(){return this._canClear}set canClear(e){this._canClear=!!e,this._countFooterButtons()}get isMultiple(){return this._isMultiple}set isMultiple(e){this._isMultiple=!!e,this._countFooterButtons()}get itemsToConfirm(){return this._itemsToConfirm}get canAddItem(){return this._canAddItem}set canAddItem(e){this._canAddItem=!!e,this._countFooterButtons()}initFocus(){}enableIonItem(e){this.ionItem&&this.ionItem.setElementClass("item-input-disabled",!e)}_click(e){this.isEnabled&&0!==e.detail&&(this._label=this._getLabelText(),e.preventDefault(),e.stopPropagation(),this.open().then(()=>{this.onOpen.emit({component:this})}))}_isNullOrWhiteSpace(e){return null==e||e.toString().replace(/\s/g,"").length<1}_setHasSearchText(){this._hasSearchText=!this._isNullOrWhiteSpace(this._searchText)}_hasOnSearch(){return this.isOnSearchEnabled&&this.onSearch.observers.length>0}_hasOnSaveItem(){return this.canSaveItem&&this.onSaveItem.observers.length>0}_hasOnAddItem(){return this.canAddItem&&this.onAddItem.observers.length>0}_hasOnDeleteItem(){return this.canDeleteItem&&this.onDeleteItem.observers.length>0}_emitValueChange(){this.propagateOnChange(this.value),this._setIonItemValidityClasses(),this.onChange.emit({component:this,value:this.value})}_emitSearch(){this.canSearch&&this.onSearch.emit({component:this,text:this._searchText})}_emitOnSelect(e,t){this.onSelect.emit({component:this,item:e,isSelected:t})}_emitOnClear(e){this.onClear.emit({component:this,items:e})}_emitOnSearchSuccessOrFail(e){const t={component:this,text:this._searchText};e?this.onSearchSuccess.emit(t):this.onSearchFail.emit(t)}_formatItem(e){return this._isNullOrWhiteSpace(e)?null:this.itemTextField?e[this.itemTextField]:e.toString()}_formatValueItem(e){if(this._shouldStoreItemValue){let t=this.items.find(t=>t[this.itemValueField]===e);return this._formatItem(t)}return this._formatItem(e)}_getItemValue(e){return this._hasObjects?e[this.itemValueField]:e}_getStoredItemValue(e){return this._hasObjects?this._shouldStoreItemValue?e:e[this.itemValueField]:e}_filterItems(){if(this._setHasSearchText(),this._hasOnSearch())this._emitSearch();else{let e=[];if(this._searchText&&this._searchText.trim()){let t=this._searchText.trim().toLowerCase();this._groups.forEach(i=>{let n=i.items.filter(e=>{return-1!==(this.itemTextField?e[this.itemTextField]:e).toString().toLowerCase().indexOf(t)});n.length&&e.push({value:i.value,text:i.text,items:n})}),e.length||e.push({items:[]})}else e=this._groups;this._filteredGroups=e,this._hasFilteredItems=!this._areGroupsEmpty(e),this._emitOnSearchSuccessOrFail(this._hasFilteredItems)}}_isItemDisabled(e){if(this.disabledItems)return this.disabledItems.some(t=>this._getItemValue(t)===this._getItemValue(e))}_isItemSelected(e){return void 0!==this._selectedItems.find(t=>this._getItemValue(e)===this._getStoredItemValue(t))}_addSelectedItem(e){this._shouldStoreItemValue?this._selectedItems.push(this._getItemValue(e)):this._selectedItems.push(e)}_deleteSelectedItem(e){let t;this._selectedItems.forEach((i,n)=>{this._getItemValue(e)===this._getStoredItemValue(i)&&(t=n)}),this._selectedItems.splice(t,1)}_saveItem(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnSaveItem()?this.onSaveItem.emit({component:this,item:this._itemToAdd}):this.showAddItemTemplate()}_deleteItemClick(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnDeleteItem()?this.onDeleteItem.emit({component:this,item:this._itemToAdd}):this.deleteItem(this._itemToAdd)}_addItemClick(){this._itemToAdd=null,this._hasOnAddItem()?this.onAddItem.emit({component:this}):this.showAddItemTemplate()}_close(){this._modalComponent._searchbarComponent&&this._modalComponent._searchbarComponent._fireBlur(),setTimeout(()=>{this.close().then(()=>{this.onClose.emit({component:this})}),this._hasOnSearch()||(this._searchText="",this._setHasSearchText())})}_clear(){const e=this._selectedItems;this.clear(),this._emitValueChange(),this._emitOnClear(e),this.close().then(()=>{this.onClose.emit({component:this})})}_getMoreItems(e){this._infiniteScroll=e,this.onInfiniteScroll.emit({component:this,text:this._searchText})}_setItemsToConfirm(e){this._itemsToConfirm=[].concat(e)}_doSelect(e){this.value=e,this._emitValueChange()}_select(e){const t=this._isItemSelected(e);this.isMultiple?(t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):this.hasConfirmButton||this.footerTemplate?(this._selectedItems=[],t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):(t||(this._selectedItems=[],this._addSelectedItem(e),this._emitOnSelect(e,!0),this._shouldStoreItemValue?this._doSelect(this._getItemValue(e)):this._doSelect(e)),this._close())}_confirm(){this.confirm(),this._close()}_getLabelText(){let e=this.ionItem?this.ionItem.getNativeElement().querySelector("ion-label"):null;return e?e.textContent:null}_areGroupsEmpty(e){return 0===e.length||e.every(e=>!e.items||0===e.items.length)}_countFooterButtons(){let e=0;this.canClear&&e++,(this.isMultiple||this._hasConfirmButton)&&e++,this.canAddItem&&e++,this._footerButtonsCount=e}_setItems(e){let t=[{items:e||[]}];e&&e.length&&this._hasGroups&&(t=[],e.forEach(e=>{let i=this._getPropertyValue(e,this.groupValueField),n=t.find(e=>e.value===i);n?n.items.push(e):t.push({value:i,text:this._getPropertyValue(e,this.groupTextField),items:[e]})})),this._groups=t,this._filteredGroups=this._groups,this._hasFilteredItems=!this._areGroupsEmpty(this._filteredGroups)}_getPropertyValue(e,t){return t?t.split(".").reduce((e,t)=>e?e[t]:null,e):null}_setIonItemHasFocus(e){this.ionItem&&this.ionItem.setElementClass("item-input-has-focus",e)}_setIonItemHasValue(){this.ionItem&&this.ionItem.setElementClass("item-input-has-value",this.hasValue())}_setHasPlaceholder(){this._hasPlaceholder=!(this.hasValue()||this._isNullOrWhiteSpace(this.placeholder)&&!this.placeholderTemplate)}_setIonItemValidityClasses(){this.ionItem&&requestAnimationFrame(()=>{let e=this.element.nativeElement.classList;this.ionItem.setElementClass("ng-invalid",!1),this.ionItem.setElementClass("ng-valid",!1),this.ionItem.setElementClass("ng-touched",!1),this.ionItem.setElementClass("ng-untouched",!1),this.ionItem.setElementClass("ng-dirty",!1),this.ionItem.setElementClass("ng-pristine",!1),e.forEach(e=>{"ng-invalid"===e&&this.ionItem.setElementClass("ng-invalid",!0),"ng-valid"===e&&this.ionItem.setElementClass("ng-valid",!0),"ng-touched"===e&&this.ionItem.setElementClass("ng-touched",!0),"ng-untouched"===e&&this.ionItem.setElementClass("ng-untouched",!0),"ng-dirty"===e&&this.ionItem.setElementClass("ng-dirty",!0),"ng-pristine"===e&&this.ionItem.setElementClass("ng-pristine",!0)})})}_toggleAddItemTemplate(e){this.addItemTemplate&&(this._isAddItemTemplateVisible=e,this._isFooterVisible=!e)}writeValue(e){this.value=e,this._setIonItemValidityClasses()}registerOnChange(e){this.propagateOnChange=e}registerOnTouched(e){this.propagateOnTouched=e}setDisabledState(e){this.isEnabled=!e}ngOnInit(){this._isIos=this._platform.is("ios"),this._isMD=!this._isIos,this._hasObjects=!this._isNullOrWhiteSpace(this.itemValueField),this._hasGroups=Boolean(this._hasObjects&&this.groupValueField&&!this.hasVirtualScroll),this.ionForm.register(this),this.ionItem&&(this.ionItem.setElementClass("item-input",!0),this.ionItem.setElementClass("item-ionic-selectable",!0)),this.enableIonItem(this.isEnabled)}ngOnDestroy(){this.ionForm.deregister(this)}ngDoCheck(){this._itemsDiffer.diff(this.items)&&(this._setItems(this.items),this.value=this.value,this.onItemsChange.emit({component:this}))}addItem(e){let t=this;return this.items.unshift(e),this._addItemObservable&&this._addItemObservable.unsubscribe(),new Promise(function(e,i){t._addItemObservable=t.onItemsChange.asObservable().subscribe(()=>{t._addItemObservable.unsubscribe(),e()},()=>{t._addItemObservable.unsubscribe(),i()})})}deleteItem(e){let t=this,i=!1;if(this._selectedItems&&(this._selectedItems=this._selectedItems.filter(t=>this._getItemValue(e)!==this._getStoredItemValue(t))),this.value)if(this.isMultiple){let t=this.value.filter(t=>t.id!==e.id);t.length!==this.value.length&&(this.value=t,i=!0)}else e===this.value&&(this.value=null,i=!0);i&&this._emitValueChange();let n=this.items.filter(t=>t.id!==e.id);return this.itemsChange.emit(n),this._setItems(n),this.onItemsChange.emit({component:this}),this._deleteItemObservable&&this._deleteItemObservable.unsubscribe(),new Promise(function(e,i){t._deleteItemObservable=t.onItemsChange.asObservable().subscribe(()=>{t._deleteItemObservable.unsubscribe(),e()},()=>{t._deleteItemObservable.unsubscribe(),i()})})}hasValue(){return this.isMultiple?0!==this._valueItems.length:0!==this._valueItems.length&&!this._isNullOrWhiteSpace(this._valueItems[0])}open(){let e=this;return new Promise(function(t,i){if(!e._isEnabled||e._isOpened)return void i("IonicSelectable is disabled or already opened.");e._filterItems(),e._isOpened=!0;const n={enableBackdropDismiss:e._shouldBackdropClose};e.modalCssClass&&(n.cssClass=e.modalCssClass),e.modalEnterAnimation&&(n.enterAnimation=e.modalEnterAnimation),e.modalLeaveAnimation&&(n.leaveAnimation=e.modalLeaveAnimation),e._modal=e._modalController.create(IonicSelectableModalComponent,{selectComponent:e},n),e._modal.present({animate:!1}).then(()=>{e._setIonItemHasFocus(!0),t()}),e._modal.onWillDismiss(()=>{e._setIonItemHasFocus(!1)}),e._modal.onDidDismiss((t,i)=>{e._isOpened=!1,e._itemsToConfirm=[],"backdrop"===i&&e.onClose.emit({component:e})})})}close(){let e=this;return new Promise(function(t,i){e._isEnabled&&e._isOpened?(e.propagateOnTouched(),e._setIonItemValidityClasses(),e._infiniteScroll=null,e._isOpened=!1,e._itemToAdd=null,e._modal.dismiss().then(()=>{e._setIonItemHasFocus(!1),e.hideAddItemTemplate(),t()})):i("IonicSelectable is disabled or already closed.")})}clear(){this.value=this.isMultiple?[]:null,this._itemsToConfirm=[],this.propagateOnChange(this.value),this._setIonItemValidityClasses()}confirm(){this.isMultiple?this._doSelect(this._selectedItems):(this.hasConfirmButton||this.footerTemplate)&&this._doSelect(this._selectedItems[0]||null)}toggleItems(e,t){if(e){const e=t&&t.length;let i=this._groups.reduce((e,t)=>e.concat(t.items),[]);this.isMultiple||e||(i=[]),e&&(i=i.filter(e=>void 0!==t.find(t=>this._getItemValue(e)===this._getItemValue(t))),this.isMultiple||i.splice(0,1)),i.forEach(e=>{this._addSelectedItem(e)})}else this._selectedItems=[];this._setItemsToConfirm(this._selectedItems)}scrollToTop(){let e=this;return new Promise(function(t,i){e._isOpened?e._modalComponent._content.scrollToTop().then(()=>{t()}):i("IonicSelectable content cannot be scrolled.")})}scrollToBottom(){let e=this;return new Promise(function(t,i){e._isOpened?e._modalComponent._content.scrollToBottom().then(()=>{t()}):i("IonicSelectable content cannot be scrolled.")})}startSearch(){this._isEnabled&&this.showLoading()}endSearch(){this._isEnabled&&(this.hideLoading(),this._setItems(this.items),this._emitOnSearchSuccessOrFail(this._hasFilteredItems))}enableInfiniteScroll(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!0)}disableInfiniteScroll(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!1)}endInfiniteScroll(){this._isEnabled&&this._infiniteScroll&&(this._infiniteScroll.complete(),this._setItems(this.items))}search(e){this._isEnabled&&this._isOpened&&this.canSearch&&(this._searchText=e,this._setHasSearchText(),this._filterItems())}showLoading(){this._isEnabled&&(this._isSearching=!0)}hideLoading(){this._isEnabled&&(this._isSearching=!1)}showAddItemTemplate(){this._toggleAddItemTemplate(!0)}hideAddItemTemplate(){this._toggleAddItemTemplate(!1)}}IonicSelectableComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable",template:'<div class="ionic-selectable-value">\n <div *ngIf="valueTemplate && _valueItems.length && isMultiple"\n [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems }">\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="valueTemplate && _valueItems.length && !isMultiple">\n <div [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems[0] }">\n </div>\n </div>\n <span *ngIf="!valueTemplate && _valueItems.length">\n <div class="ionic-selectable-value-item"\n *ngFor="let valueItem of _valueItems">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf="_hasPlaceholder && placeholderTemplate"\n class="ionic-selectable-value-item">\n <div [ngTemplateOutlet]="placeholderTemplate">\n </div>\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="_hasPlaceholder && !placeholderTemplate">\n {{placeholder}}\n </div>\n</div>\n<div class="ionic-selectable-icon">\n <div class="ionic-selectable-icon-inner"></div>\n</div>\n<button aria-haspopup="true" ion-button="item-cover" class="item-cover"\n [disabled]="!isEnabled">\n</button>\n',providers:[{provide:NG_VALUE_ACCESSOR,useExisting:forwardRef(()=>IonicSelectableComponent),multi:!0}]}]}],IonicSelectableComponent.ctorParameters=(()=>[{type:ModalController},{type:Form},{type:Platform},{type:Item,decorators:[{type:Optional}]},{type:IterableDiffers},{type:ElementRef}]),IonicSelectableComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-md"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-is-multiple"]}],_hasValueCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-value"]}],_hasPlaceholderCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-placeholder"]}],items:[{type:Input}],itemsChange:[{type:Output}],isEnabled:[{type:HostBinding,args:["class.ionic-selectable-is-enabled"]},{type:Input,args:["isEnabled"]}],shouldBackdropClose:[{type:Input,args:["shouldBackdropClose"]}],modalCssClass:[{type:Input}],modalEnterAnimation:[{type:Input}],modalLeaveAnimation:[{type:Input}],isConfirmButtonEnabled:[{type:Input,args:["isConfirmButtonEnabled"]}],hasConfirmButton:[{type:Input,args:["hasConfirmButton"]}],itemValueField:[{type:Input}],itemTextField:[{type:Input}],groupValueField:[{type:Input}],groupTextField:[{type:Input}],canSearch:[{type:Input}],isOnSearchEnabled:[{type:Input,args:["isOnSearchEnabled"]}],canClear:[{type:HostBinding,args:["class.ionic-selectable-can-clear"]},{type:Input,args:["canClear"]}],hasInfiniteScroll:[{type:Input}],hasVirtualScroll:[{type:Input}],virtualScrollApproxItemHeight:[{type:Input}],virtualScrollApproxItemWidth:[{type:Input}],virtualScrollBufferRatio:[{type:Input}],virtualScrollHeaderFn:[{type:Input}],searchPlaceholder:[{type:Input}],placeholder:[{type:Input}],isMultiple:[{type:Input,args:["isMultiple"]}],searchFailText:[{type:Input}],clearButtonText:[{type:Input}],addButtonText:[{type:Input}],confirmButtonText:[{type:Input}],closeButtonText:[{type:Input}],focusSearchbar:[{type:Input}],headerColor:[{type:Input}],groupColor:[{type:Input}],onChange:[{type:Output}],onSearch:[{type:Output}],onSearchFail:[{type:Output}],onSearchSuccess:[{type:Output}],onInfiniteScroll:[{type:Output}],onOpen:[{type:Output}],onClose:[{type:Output}],onSelect:[{type:Output}],onClear:[{type:Output}],valueTemplate:[{type:ContentChild,args:[IonicSelectableValueTemplateDirective,{read:TemplateRef}]}],itemTemplate:[{type:ContentChild,args:[IonicSelectableItemTemplateDirective,{read:TemplateRef}]}],itemEndTemplate:[{type:ContentChild,args:[IonicSelectableItemEndTemplateDirective,{read:TemplateRef}]}],titleTemplate:[{type:ContentChild,args:[IonicSelectableTitleTemplateDirective,{read:TemplateRef}]}],placeholderTemplate:[{type:ContentChild,args:[IonicSelectablePlaceholderTemplateDirective,{read:TemplateRef}]}],messageTemplate:[{type:ContentChild,args:[IonicSelectableMessageTemplateDirective,{read:TemplateRef}]}],groupTemplate:[{type:ContentChild,args:[IonicSelectableGroupTemplateDirective,{read:TemplateRef}]}],groupEndTemplate:[{type:ContentChild,args:[IonicSelectableGroupEndTemplateDirective,{read:TemplateRef}]}],closeButtonTemplate:[{type:ContentChild,args:[IonicSelectableCloseButtonTemplateDirective,{read:TemplateRef}]}],searchFailTemplate:[{type:ContentChild,args:[IonicSelectableSearchFailTemplateDirective,{read:TemplateRef}]}],addItemTemplate:[{type:ContentChild,args:[IonicSelectableAddItemTemplateDirective,{read:TemplateRef}]}],footerTemplate:[{type:ContentChild,args:[IonicSelectableFooterTemplateDirective,{read:TemplateRef}]}],headerTemplate:[{type:ContentChild,args:[IonicSelectableHeaderTemplateDirective,{read:TemplateRef}]}],itemIconTemplate:[{type:ContentChild,args:[IonicSelectableItemIconTemplateDirective,{read:TemplateRef}]}],searchDebounce:[{type:Input}],disabledItems:[{type:Input}],shouldStoreItemValue:[{type:Input}],canSaveItem:[{type:Input}],canDeleteItem:[{type:Input}],canAddItem:[{type:Input,args:["canAddItem"]}],onSaveItem:[{type:Output}],onDeleteItem:[{type:Output}],onAddItem:[{type:Output}],_click:[{type:HostListener,args:["click",["$event"]]}]};class IonicSelectableModalComponent{constructor(e,t){this.navParams=e,this._element=t,this._cssClass=!0,this.selectComponent=this.navParams.get("selectComponent"),this.selectComponent._modalComponent=this,this.selectComponent._selectedItems=[],this.selectComponent._isNullOrWhiteSpace(this.selectComponent.value)||(this.selectComponent.isMultiple?this.selectComponent.value.forEach(e=>{this.selectComponent._selectedItems.push(e)}):this.selectComponent._selectedItems.push(this.selectComponent.value)),this.selectComponent._setItemsToConfirm(this.selectComponent._selectedItems)}get _canClearCssClass(){return this.selectComponent.canClear}get _isMultipleCssClass(){return this.selectComponent.isMultiple}get _isSearchingCssClass(){return this.selectComponent._isSearching}get _isAddItemTemplateVisibleCssClass(){return this.selectComponent._isAddItemTemplateVisible}get _isIos(){return this.selectComponent._isIos}_isMD(){return this.selectComponent._isMD}ngAfterViewInit(){this._header=this._element.nativeElement.querySelector("ion-header"),this._searchbarComponent&&this.selectComponent.focusSearchbar&&setTimeout(()=>{this._searchbarComponent.setFocus()},500)}}IonicSelectableModalComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable-modal",template:'<ion-header>\n <ion-navbar *ngIf="!selectComponent.headerTemplate"\n [color]="selectComponent.headerColor ? selectComponent.headerColor : null">\n <ion-title>\n \x3c!-- Use span for titleTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.titleTemplate"\n [ngTemplateOutlet]="selectComponent.titleTemplate">\n </span>\n <span *ngIf="!selectComponent.titleTemplate">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)="selectComponent._close()">\n <span *ngIf="selectComponent.closeButtonTemplate"\n [ngTemplateOutlet]="selectComponent.closeButtonTemplate">\n </span>\n <span *ngIf="!selectComponent.closeButtonTemplate" ion-text\n showWhen="ios">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf="!selectComponent.closeButtonTemplate" name="md-close"\n hideWhen="ios">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf="selectComponent.headerTemplate"\n [ngTemplateOutlet]="selectComponent.headerTemplate">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]="selectComponent._searchText"\n (ionInput)="selectComponent._filterItems()"\n [placeholder]="selectComponent.searchPlaceholder"\n [debounce]="selectComponent.searchDebounce">\n </ion-searchbar>\n <div class="ionic-selectable-message"\n *ngIf="selectComponent.messageTemplate">\n <div [ngTemplateOutlet]="selectComponent.messageTemplate">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class="ionic-selectable-spinner" *ngIf="selectComponent._isSearching">\n <div class="ionic-selectable-spinner-background"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf="selectComponent._searchText"\n (click)="selectComponent._select(selectComponent._searchText)"\n class="ionic-selectable-item searchTextItem"\n [ngClass]="{ \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(selectComponent._searchText) }">\n <span *ngIf="!selectComponent.itemTemplate">\n Use typed text\n </span>\n <ion-icon class="addCustomItemIcon" name="add-circle"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf="!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems">\n <ion-item-group *ngFor="let group of selectComponent._filteredGroups"\n class="ionic-selectable-group">\n <ion-item-divider *ngIf="selectComponent._hasGroups"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n \x3c!-- Use span for groupTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.groupTemplate"\n [ngTemplateOutlet]="selectComponent.groupTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </span>\n <span *ngIf="!selectComponent.groupTemplate">\n {{group.text}}\n </span>\n <div *ngIf="selectComponent.groupEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.groupEndTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor="let item of group.items"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n \x3c!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. --\x3e\n <div *ngIf="!selectComponent._hasFilteredItems">\n <span *ngIf="selectComponent.searchFailTemplate"\n [ngTemplateOutlet]="selectComponent.searchFailTemplate">\n </span>\n <div *ngIf="!selectComponent.searchFailTemplate" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf="!selectComponent.hasVirtualScroll"\n [enabled]="selectComponent.hasInfiniteScroll"\n (ionInfinite)="selectComponent._getMoreItems($event)">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf="selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems"\n [virtualScroll]="selectComponent._filteredGroups[0].items"\n [approxItemHeight]="selectComponent.virtualScrollApproxItemHeight"\n [approxItemWidth]="selectComponent.virtualScrollApproxItemWidth"\n [bufferRatio]="selectComponent.virtualScrollBufferRatio"\n [headerFn]="selectComponent.virtualScrollHeaderFn">\n <ion-item-divider *virtualHeader="let header"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem="let item"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class="ionic-selectable-add-item-template"\n *ngIf="selectComponent._isAddItemTemplateVisible"\n [ngStyle]="{ \'top.px\': _header.offsetHeight }">\n <span [ngTemplateOutlet]="selectComponent.addItemTemplate"\n [ngTemplateOutletContext]="{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }">\n </span>\n</div>\n<ion-footer\n *ngIf="selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate"\n [ngStyle]="{ \'visibility\': selectComponent._isFooterVisible ? \'initial\' : \'hidden\' }">\n <ion-toolbar *ngIf="!selectComponent.footerTemplate">\n <ion-row>\n <ion-col *ngIf="selectComponent.canClear">\n <button ion-button full no-margin (click)="selectComponent._clear()"\n [disabled]="!selectComponent._selectedItems.length">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf="selectComponent.canAddItem">\n <button ion-button full no-margin\n (click)="selectComponent._addItemClick()">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf="selectComponent.isMultiple || selectComponent.hasConfirmButton">\n <button ion-button full no-margin (click)="selectComponent._confirm()"\n [disabled]="!selectComponent.isConfirmButtonEnabled">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf="selectComponent.footerTemplate"\n [ngTemplateOutlet]="selectComponent.footerTemplate">\n </div>\n</ion-footer>\n'}]}],IonicSelectableModalComponent.ctorParameters=(()=>[{type:NavParams},{type:ElementRef}]),IonicSelectableModalComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable-modal"]}],_canClearCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-can-clear"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-multiple"]}],_isSearchingCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-searching"]}],_isAddItemTemplateVisibleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-add-item-template-visible"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-modal-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-modal-md"]}],_searchbarComponent:[{type:ViewChild,args:["searchbarComponent"]}],_content:[{type:ViewChild,args:[Content]}]};const components=[IonicSelectableComponent,IonicSelectableModalComponent],directives=[IonicSelectableValueTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectablePlaceholderTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableAddItemTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemIconTemplateDirective];class IonicSelectableModule{}IonicSelectableModule.decorators=[{type:NgModule,args:[{imports:[CommonModule,IonicPageModule.forChild(IonicSelectableComponent),IonicPageModule.forChild(IonicSelectableModalComponent)],declarations:[...components,...directives],exports:[...components,...directives],entryComponents:components}]}],IonicSelectableModule.ctorParameters=(()=>[]);export{IonicSelectableAddItemTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableItemIconTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableModalComponent,IonicSelectablePlaceholderTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectableValueTemplateDirective,IonicSelectableComponent,IonicSelectableModule};

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

import{__spread}from"tslib";import{Directive,Component,ContentChild,ElementRef,EventEmitter,forwardRef,HostBinding,HostListener,Input,IterableDiffers,Optional,Output,TemplateRef,ViewChild,NgModule}from"@angular/core";import{NG_VALUE_ACCESSOR}from"@angular/forms";import{Form,Item,ModalController,Platform,Content,NavParams,IonicPageModule}from"ionic-angular";import"rxjs";import{CommonModule}from"@angular/common";var IonicSelectableAddItemTemplateDirective=function(){return function(){}}();IonicSelectableAddItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableAddItemTemplate]"}]}],IonicSelectableAddItemTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableCloseButtonTemplateDirective=function(){return function(){}}();IonicSelectableCloseButtonTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableCloseButtonTemplate]"}]}],IonicSelectableCloseButtonTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableFooterTemplateDirective=function(){return function(){}}();IonicSelectableFooterTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableFooterTemplate]"}]}],IonicSelectableFooterTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableGroupEndTemplateDirective=function(){return function(){}}();IonicSelectableGroupEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupEndTemplate]"}]}],IonicSelectableGroupEndTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableGroupTemplateDirective=function(){return function(){}}();IonicSelectableGroupTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupTemplate]"}]}],IonicSelectableGroupTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableHeaderTemplateDirective=function(){return function(){}}();IonicSelectableHeaderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableHeaderTemplate]"}]}],IonicSelectableHeaderTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableItemEndTemplateDirective=function(){return function(){}}();IonicSelectableItemEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemEndTemplate]"}]}],IonicSelectableItemEndTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableItemIconTemplateDirective=function(){return function(){}}();IonicSelectableItemIconTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemIconTemplate]"}]}],IonicSelectableItemIconTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableItemTemplateDirective=function(){return function(){}}();IonicSelectableItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemTemplate]"}]}],IonicSelectableItemTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableMessageTemplateDirective=function(){return function(){}}();IonicSelectableMessageTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableMessageTemplate]"}]}],IonicSelectableMessageTemplateDirective.ctorParameters=function(){return[]};var IonicSelectablePlaceholderTemplateDirective=function(){return function(){}}();IonicSelectablePlaceholderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectablePlaceholderTemplate]"}]}],IonicSelectablePlaceholderTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableSearchFailTemplateDirective=function(){return function(){}}();IonicSelectableSearchFailTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableSearchFailTemplate]"}]}],IonicSelectableSearchFailTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableTitleTemplateDirective=function(){return function(){}}();IonicSelectableTitleTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableTitleTemplate]"}]}],IonicSelectableTitleTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableValueTemplateDirective=function(){return function(){}}();IonicSelectableValueTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableValueTemplate]"}]}],IonicSelectableValueTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableComponent=function(){function e(e,t,n,i,o,l){this._modalController=e,this.ionForm=t,this._platform=n,this.ionItem=i,this._iterableDiffers=o,this.element=l,this._cssClass=!0,this._isOnSearchEnabled=!0,this._isEnabled=!0,this._shouldBackdropClose=!0,this._isOpened=!1,this._value=null,this._canClear=!1,this._hasConfirmButton=!1,this._isMultiple=!1,this._canAddItem=!1,this.onItemsChange=new EventEmitter,this._label=null,this._valueItems=[],this._searchText="",this._hasSearchText=!1,this._groups=[],this._itemsToConfirm=[],this._selectedItems=[],this._filteredGroups=[],this._isAddItemTemplateVisible=!1,this._isFooterVisible=!0,this._itemToAdd=null,this._footerButtonsCount=0,this._hasFilteredItems=!1,this.items=[],this.itemsChange=new EventEmitter,this.modalCssClass=null,this.modalEnterAnimation=null,this.modalLeaveAnimation=null,this.isConfirmButtonEnabled=!0,this.itemValueField=null,this.itemTextField=null,this.groupValueField=null,this.groupTextField=null,this.canSearch=!1,this.hasInfiniteScroll=!1,this.hasVirtualScroll=!1,this.virtualScrollApproxItemHeight="40px",this.virtualScrollApproxItemWidth="100%",this.virtualScrollBufferRatio=3,this.virtualScrollHeaderFn=function(){return null},this.searchPlaceholder="Search",this.placeholder=null,this.searchFailText="No items found.",this.clearButtonText="Clear",this.addButtonText="Add",this.confirmButtonText="OK",this.closeButtonText="Cancel",this.focusSearchbar=!1,this.headerColor=null,this.groupColor=null,this.onChange=new EventEmitter,this.onSearch=new EventEmitter,this.onSearchFail=new EventEmitter,this.onSearchSuccess=new EventEmitter,this.onInfiniteScroll=new EventEmitter,this.onOpen=new EventEmitter,this.onClose=new EventEmitter,this.onSelect=new EventEmitter,this.onClear=new EventEmitter,this.searchDebounce=250,this.disabledItems=[],this.shouldStoreItemValue=!1,this.canSaveItem=!1,this.canDeleteItem=!1,this.onSaveItem=new EventEmitter,this.onDeleteItem=new EventEmitter,this.onAddItem=new EventEmitter,this.propagateOnChange=function(e){},this.propagateOnTouched=function(){},this.items&&this.items.length||(this.items=[]),this._itemsDiffer=this._iterableDiffers.find(this.items).create()}return Object.defineProperty(e.prototype,"_isMultipleCssClass",{get:function(){return this.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_hasValueCssClass",{get:function(){return this.hasValue()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_hasPlaceholderCssClass",{get:function(){return this._hasPlaceholder},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_shouldStoreItemValue",{get:function(){return this.shouldStoreItemValue&&this._hasObjects},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"searchText",{get:function(){return this._searchText},set:function(e){this._searchText=e,this._setHasSearchText()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isSearching",{get:function(){return this._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasSearchText",{get:function(){return this._hasSearchText},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._valueItems.splice(0,this._valueItems.length),this.isMultiple?e&&e.length&&Array.prototype.push.apply(this._valueItems,e):this._isNullOrWhiteSpace(e)||this._valueItems.push(e),this._setIonItemHasValue(),this._setHasPlaceholder()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isEnabled",{get:function(){return this._isEnabled},set:function(e){this._isEnabled=!!e,this.enableIonItem(this._isEnabled)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldBackdropClose",{get:function(){return this._shouldBackdropClose},set:function(e){this._shouldBackdropClose=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isOpened",{get:function(){return this._isOpened},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasConfirmButton",{get:function(){return this._hasConfirmButton},set:function(e){this._hasConfirmButton=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isOnSearchEnabled",{get:function(){return this._isOnSearchEnabled},set:function(e){this._isOnSearchEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"canClear",{get:function(){return this._canClear},set:function(e){this._canClear=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMultiple",{get:function(){return this._isMultiple},set:function(e){this._isMultiple=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"itemsToConfirm",{get:function(){return this._itemsToConfirm},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"canAddItem",{get:function(){return this._canAddItem},set:function(e){this._canAddItem=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),e.prototype.initFocus=function(){},e.prototype.enableIonItem=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-disabled",!e)},e.prototype._click=function(e){var t=this;this.isEnabled&&0!==e.detail&&(this._label=this._getLabelText(),e.preventDefault(),e.stopPropagation(),this.open().then(function(){t.onOpen.emit({component:t})}))},e.prototype._isNullOrWhiteSpace=function(e){return null==e||e.toString().replace(/\s/g,"").length<1},e.prototype._setHasSearchText=function(){this._hasSearchText=!this._isNullOrWhiteSpace(this._searchText)},e.prototype._hasOnSearch=function(){return this.isOnSearchEnabled&&this.onSearch.observers.length>0},e.prototype._hasOnSaveItem=function(){return this.canSaveItem&&this.onSaveItem.observers.length>0},e.prototype._hasOnAddItem=function(){return this.canAddItem&&this.onAddItem.observers.length>0},e.prototype._hasOnDeleteItem=function(){return this.canDeleteItem&&this.onDeleteItem.observers.length>0},e.prototype._emitValueChange=function(){this.propagateOnChange(this.value),this._setIonItemValidityClasses(),this.onChange.emit({component:this,value:this.value})},e.prototype._emitSearch=function(){this.canSearch&&this.onSearch.emit({component:this,text:this._searchText})},e.prototype._emitOnSelect=function(e,t){this.onSelect.emit({component:this,item:e,isSelected:t})},e.prototype._emitOnClear=function(e){this.onClear.emit({component:this,items:e})},e.prototype._emitOnSearchSuccessOrFail=function(e){var t={component:this,text:this._searchText};e?this.onSearchSuccess.emit(t):this.onSearchFail.emit(t)},e.prototype._formatItem=function(e){return this._isNullOrWhiteSpace(e)?null:this.itemTextField?e[this.itemTextField]:e.toString()},e.prototype._formatValueItem=function(e){var t=this;if(this._shouldStoreItemValue){var n=this.items.find(function(n){return n[t.itemValueField]===e});return this._formatItem(n)}return this._formatItem(e)},e.prototype._getItemValue=function(e){return this._hasObjects?e[this.itemValueField]:e},e.prototype._getStoredItemValue=function(e){return this._hasObjects?this._shouldStoreItemValue?e:e[this.itemValueField]:e},e.prototype._filterItems=function(){var e=this;if(this._setHasSearchText(),this._hasOnSearch())this._emitSearch();else{var t=[];if(this._searchText&&this._searchText.trim()){var n=this._searchText.trim().toLowerCase();this._groups.forEach(function(i){var o=i.items.filter(function(t){return-1!==(e.itemTextField?t[e.itemTextField]:t).toString().toLowerCase().indexOf(n)});o.length&&t.push({value:i.value,text:i.text,items:o})}),t.length||t.push({items:[]})}else t=this._groups;this._filteredGroups=t,this._hasFilteredItems=!this._areGroupsEmpty(t),this._emitOnSearchSuccessOrFail(this._hasFilteredItems)}},e.prototype._isItemDisabled=function(e){var t=this;if(this.disabledItems)return this.disabledItems.some(function(n){return t._getItemValue(n)===t._getItemValue(e)})},e.prototype._isItemSelected=function(e){var t=this;return void 0!==this._selectedItems.find(function(n){return t._getItemValue(e)===t._getStoredItemValue(n)})},e.prototype._addSelectedItem=function(e){this._shouldStoreItemValue?this._selectedItems.push(this._getItemValue(e)):this._selectedItems.push(e)},e.prototype._deleteSelectedItem=function(e){var t,n=this;this._selectedItems.forEach(function(i,o){n._getItemValue(e)===n._getStoredItemValue(i)&&(t=o)}),this._selectedItems.splice(t,1)},e.prototype._saveItem=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnSaveItem()?this.onSaveItem.emit({component:this,item:this._itemToAdd}):this.showAddItemTemplate()},e.prototype._deleteItemClick=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnDeleteItem()?this.onDeleteItem.emit({component:this,item:this._itemToAdd}):this.deleteItem(this._itemToAdd)},e.prototype._addItemClick=function(){this._itemToAdd=null,this._hasOnAddItem()?this.onAddItem.emit({component:this}):this.showAddItemTemplate()},e.prototype._close=function(){var e=this;this._modalComponent._searchbarComponent&&this._modalComponent._searchbarComponent._fireBlur(),setTimeout(function(){e.close().then(function(){e.onClose.emit({component:e})}),e._hasOnSearch()||(e._searchText="",e._setHasSearchText())})},e.prototype._clear=function(){var e=this,t=this._selectedItems;this.clear(),this._emitValueChange(),this._emitOnClear(t),this.close().then(function(){e.onClose.emit({component:e})})},e.prototype._getMoreItems=function(e){this._infiniteScroll=e,this.onInfiniteScroll.emit({component:this,text:this._searchText})},e.prototype._setItemsToConfirm=function(e){this._itemsToConfirm=[].concat(e)},e.prototype._doSelect=function(e){this.value=e,this._emitValueChange()},e.prototype._select=function(e){var t=this._isItemSelected(e);this.isMultiple?(t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):this.hasConfirmButton||this.footerTemplate?(this._selectedItems=[],t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):(t||(this._selectedItems=[],this._addSelectedItem(e),this._emitOnSelect(e,!0),this._shouldStoreItemValue?this._doSelect(this._getItemValue(e)):this._doSelect(e)),this._close())},e.prototype._confirm=function(){this.confirm(),this._close()},e.prototype._getLabelText=function(){var e=this.ionItem?this.ionItem.getNativeElement().querySelector("ion-label"):null;return e?e.textContent:null},e.prototype._areGroupsEmpty=function(e){return 0===e.length||e.every(function(e){return!e.items||0===e.items.length})},e.prototype._countFooterButtons=function(){var e=0;this.canClear&&e++,(this.isMultiple||this._hasConfirmButton)&&e++,this.canAddItem&&e++,this._footerButtonsCount=e},e.prototype._setItems=function(e){var t=this,n=[{items:e||[]}];e&&e.length&&this._hasGroups&&(n=[],e.forEach(function(e){var i=t._getPropertyValue(e,t.groupValueField),o=n.find(function(e){return e.value===i});o?o.items.push(e):n.push({value:i,text:t._getPropertyValue(e,t.groupTextField),items:[e]})})),this._groups=n,this._filteredGroups=this._groups,this._hasFilteredItems=!this._areGroupsEmpty(this._filteredGroups)},e.prototype._getPropertyValue=function(e,t){return t?t.split(".").reduce(function(e,t){return e?e[t]:null},e):null},e.prototype._setIonItemHasFocus=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-has-focus",e)},e.prototype._setIonItemHasValue=function(){this.ionItem&&this.ionItem.setElementClass("item-input-has-value",this.hasValue())},e.prototype._setHasPlaceholder=function(){this._hasPlaceholder=!(this.hasValue()||this._isNullOrWhiteSpace(this.placeholder)&&!this.placeholderTemplate)},e.prototype._setIonItemValidityClasses=function(){var e=this;this.ionItem&&requestAnimationFrame(function(){var t=e.element.nativeElement.classList;e.ionItem.setElementClass("ng-invalid",!1),e.ionItem.setElementClass("ng-valid",!1),e.ionItem.setElementClass("ng-touched",!1),e.ionItem.setElementClass("ng-untouched",!1),e.ionItem.setElementClass("ng-dirty",!1),e.ionItem.setElementClass("ng-pristine",!1),t.forEach(function(t){"ng-invalid"===t&&e.ionItem.setElementClass("ng-invalid",!0),"ng-valid"===t&&e.ionItem.setElementClass("ng-valid",!0),"ng-touched"===t&&e.ionItem.setElementClass("ng-touched",!0),"ng-untouched"===t&&e.ionItem.setElementClass("ng-untouched",!0),"ng-dirty"===t&&e.ionItem.setElementClass("ng-dirty",!0),"ng-pristine"===t&&e.ionItem.setElementClass("ng-pristine",!0)})})},e.prototype._toggleAddItemTemplate=function(e){this.addItemTemplate&&(this._isAddItemTemplateVisible=e,this._isFooterVisible=!e)},e.prototype.writeValue=function(e){this.value=e,this._setIonItemValidityClasses()},e.prototype.registerOnChange=function(e){this.propagateOnChange=e},e.prototype.registerOnTouched=function(e){this.propagateOnTouched=e},e.prototype.setDisabledState=function(e){this.isEnabled=!e},e.prototype.ngOnInit=function(){this._isIos=this._platform.is("ios"),this._isMD=!this._isIos,this._hasObjects=!this._isNullOrWhiteSpace(this.itemValueField),this._hasGroups=Boolean(this._hasObjects&&this.groupValueField&&!this.hasVirtualScroll),this.ionForm.register(this),this.ionItem&&(this.ionItem.setElementClass("item-input",!0),this.ionItem.setElementClass("item-ionic-selectable",!0)),this.enableIonItem(this.isEnabled)},e.prototype.ngOnDestroy=function(){this.ionForm.deregister(this)},e.prototype.ngDoCheck=function(){this._itemsDiffer.diff(this.items)&&(this._setItems(this.items),this.value=this.value,this.onItemsChange.emit({component:this}))},e.prototype.addItem=function(e){var t=this;return this.items.unshift(e),this._addItemObservable&&this._addItemObservable.unsubscribe(),new Promise(function(e,n){t._addItemObservable=t.onItemsChange.asObservable().subscribe(function(){t._addItemObservable.unsubscribe(),e()},function(){t._addItemObservable.unsubscribe(),n()})})},e.prototype.deleteItem=function(e){var t=this,n=this,i=!1;if(this._selectedItems&&(this._selectedItems=this._selectedItems.filter(function(n){return t._getItemValue(e)!==t._getStoredItemValue(n)})),this.value)if(this.isMultiple){var o=this.value.filter(function(t){return t.id!==e.id});o.length!==this.value.length&&(this.value=o,i=!0)}else e===this.value&&(this.value=null,i=!0);i&&this._emitValueChange();var l=this.items.filter(function(t){return t.id!==e.id});return this.itemsChange.emit(l),this._setItems(l),this.onItemsChange.emit({component:this}),this._deleteItemObservable&&this._deleteItemObservable.unsubscribe(),new Promise(function(e,t){n._deleteItemObservable=n.onItemsChange.asObservable().subscribe(function(){n._deleteItemObservable.unsubscribe(),e()},function(){n._deleteItemObservable.unsubscribe(),t()})})},e.prototype.hasValue=function(){return this.isMultiple?0!==this._valueItems.length:0!==this._valueItems.length&&!this._isNullOrWhiteSpace(this._valueItems[0])},e.prototype.open=function(){var e=this;return new Promise(function(t,n){if(e._isEnabled&&!e._isOpened){e._filterItems(),e._isOpened=!0;var i={enableBackdropDismiss:e._shouldBackdropClose};e.modalCssClass&&(i.cssClass=e.modalCssClass),e.modalEnterAnimation&&(i.enterAnimation=e.modalEnterAnimation),e.modalLeaveAnimation&&(i.leaveAnimation=e.modalLeaveAnimation),e._modal=e._modalController.create(IonicSelectableModalComponent,{selectComponent:e},i),e._modal.present({animate:!1}).then(function(){e._setIonItemHasFocus(!0),t()}),e._modal.onWillDismiss(function(){e._setIonItemHasFocus(!1)}),e._modal.onDidDismiss(function(t,n){e._isOpened=!1,e._itemsToConfirm=[],"backdrop"===n&&e.onClose.emit({component:e})})}else n("IonicSelectable is disabled or already opened.")})},e.prototype.close=function(){var e=this;return new Promise(function(t,n){e._isEnabled&&e._isOpened?(e.propagateOnTouched(),e._setIonItemValidityClasses(),e._infiniteScroll=null,e._isOpened=!1,e._itemToAdd=null,e._modal.dismiss().then(function(){e._setIonItemHasFocus(!1),e.hideAddItemTemplate(),t()})):n("IonicSelectable is disabled or already closed.")})},e.prototype.clear=function(){this.value=this.isMultiple?[]:null,this._itemsToConfirm=[],this.propagateOnChange(this.value),this._setIonItemValidityClasses()},e.prototype.confirm=function(){this.isMultiple?this._doSelect(this._selectedItems):(this.hasConfirmButton||this.footerTemplate)&&this._doSelect(this._selectedItems[0]||null)},e.prototype.toggleItems=function(e,t){var n=this;if(e){var i=t&&t.length,o=this._groups.reduce(function(e,t){return e.concat(t.items)},[]);this.isMultiple||i||(o=[]),i&&(o=o.filter(function(e){return void 0!==t.find(function(t){return n._getItemValue(e)===n._getItemValue(t)})}),this.isMultiple||o.splice(0,1)),o.forEach(function(e){n._addSelectedItem(e)})}else this._selectedItems=[];this._setItemsToConfirm(this._selectedItems)},e.prototype.scrollToTop=function(){var e=this;return new Promise(function(t,n){e._isOpened?e._modalComponent._content.scrollToTop().then(function(){t()}):n("IonicSelectable content cannot be scrolled.")})},e.prototype.scrollToBottom=function(){var e=this;return new Promise(function(t,n){e._isOpened?e._modalComponent._content.scrollToBottom().then(function(){t()}):n("IonicSelectable content cannot be scrolled.")})},e.prototype.startSearch=function(){this._isEnabled&&this.showLoading()},e.prototype.endSearch=function(){this._isEnabled&&(this.hideLoading(),this._setItems(this.items),this._emitOnSearchSuccessOrFail(this._hasFilteredItems))},e.prototype.enableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!0)},e.prototype.disableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!1)},e.prototype.endInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&(this._infiniteScroll.complete(),this._setItems(this.items))},e.prototype.search=function(e){this._isEnabled&&this._isOpened&&this.canSearch&&(this._searchText=e,this._setHasSearchText(),this._filterItems())},e.prototype.showLoading=function(){this._isEnabled&&(this._isSearching=!0)},e.prototype.hideLoading=function(){this._isEnabled&&(this._isSearching=!1)},e.prototype.showAddItemTemplate=function(){this._toggleAddItemTemplate(!0)},e.prototype.hideAddItemTemplate=function(){this._toggleAddItemTemplate(!1)},e}();IonicSelectableComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable",template:'<div class="ionic-selectable-value">\n <div *ngIf="valueTemplate && _valueItems.length && isMultiple"\n [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems }">\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="valueTemplate && _valueItems.length && !isMultiple">\n <div [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems[0] }">\n </div>\n </div>\n <span *ngIf="!valueTemplate && _valueItems.length">\n <div class="ionic-selectable-value-item"\n *ngFor="let valueItem of _valueItems">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf="_hasPlaceholder && placeholderTemplate"\n class="ionic-selectable-value-item">\n <div [ngTemplateOutlet]="placeholderTemplate">\n </div>\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="_hasPlaceholder && !placeholderTemplate">\n {{placeholder}}\n </div>\n</div>\n<div class="ionic-selectable-icon">\n <div class="ionic-selectable-icon-inner"></div>\n</div>\n<button aria-haspopup="true" ion-button="item-cover" class="item-cover"\n [disabled]="!isEnabled">\n</button>\n',providers:[{provide:NG_VALUE_ACCESSOR,useExisting:forwardRef(function(){return IonicSelectableComponent}),multi:!0}]}]}],IonicSelectableComponent.ctorParameters=function(){return[{type:ModalController},{type:Form},{type:Platform},{type:Item,decorators:[{type:Optional}]},{type:IterableDiffers},{type:ElementRef}]},IonicSelectableComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-md"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-is-multiple"]}],_hasValueCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-value"]}],_hasPlaceholderCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-placeholder"]}],items:[{type:Input}],itemsChange:[{type:Output}],isEnabled:[{type:HostBinding,args:["class.ionic-selectable-is-enabled"]},{type:Input,args:["isEnabled"]}],shouldBackdropClose:[{type:Input,args:["shouldBackdropClose"]}],modalCssClass:[{type:Input}],modalEnterAnimation:[{type:Input}],modalLeaveAnimation:[{type:Input}],isConfirmButtonEnabled:[{type:Input,args:["isConfirmButtonEnabled"]}],hasConfirmButton:[{type:Input,args:["hasConfirmButton"]}],itemValueField:[{type:Input}],itemTextField:[{type:Input}],groupValueField:[{type:Input}],groupTextField:[{type:Input}],canSearch:[{type:Input}],isOnSearchEnabled:[{type:Input,args:["isOnSearchEnabled"]}],canClear:[{type:HostBinding,args:["class.ionic-selectable-can-clear"]},{type:Input,args:["canClear"]}],hasInfiniteScroll:[{type:Input}],hasVirtualScroll:[{type:Input}],virtualScrollApproxItemHeight:[{type:Input}],virtualScrollApproxItemWidth:[{type:Input}],virtualScrollBufferRatio:[{type:Input}],virtualScrollHeaderFn:[{type:Input}],searchPlaceholder:[{type:Input}],placeholder:[{type:Input}],isMultiple:[{type:Input,args:["isMultiple"]}],searchFailText:[{type:Input}],clearButtonText:[{type:Input}],addButtonText:[{type:Input}],confirmButtonText:[{type:Input}],closeButtonText:[{type:Input}],focusSearchbar:[{type:Input}],headerColor:[{type:Input}],groupColor:[{type:Input}],onChange:[{type:Output}],onSearch:[{type:Output}],onSearchFail:[{type:Output}],onSearchSuccess:[{type:Output}],onInfiniteScroll:[{type:Output}],onOpen:[{type:Output}],onClose:[{type:Output}],onSelect:[{type:Output}],onClear:[{type:Output}],valueTemplate:[{type:ContentChild,args:[IonicSelectableValueTemplateDirective,{read:TemplateRef}]}],itemTemplate:[{type:ContentChild,args:[IonicSelectableItemTemplateDirective,{read:TemplateRef}]}],itemEndTemplate:[{type:ContentChild,args:[IonicSelectableItemEndTemplateDirective,{read:TemplateRef}]}],titleTemplate:[{type:ContentChild,args:[IonicSelectableTitleTemplateDirective,{read:TemplateRef}]}],placeholderTemplate:[{type:ContentChild,args:[IonicSelectablePlaceholderTemplateDirective,{read:TemplateRef}]}],messageTemplate:[{type:ContentChild,args:[IonicSelectableMessageTemplateDirective,{read:TemplateRef}]}],groupTemplate:[{type:ContentChild,args:[IonicSelectableGroupTemplateDirective,{read:TemplateRef}]}],groupEndTemplate:[{type:ContentChild,args:[IonicSelectableGroupEndTemplateDirective,{read:TemplateRef}]}],closeButtonTemplate:[{type:ContentChild,args:[IonicSelectableCloseButtonTemplateDirective,{read:TemplateRef}]}],searchFailTemplate:[{type:ContentChild,args:[IonicSelectableSearchFailTemplateDirective,{read:TemplateRef}]}],addItemTemplate:[{type:ContentChild,args:[IonicSelectableAddItemTemplateDirective,{read:TemplateRef}]}],footerTemplate:[{type:ContentChild,args:[IonicSelectableFooterTemplateDirective,{read:TemplateRef}]}],headerTemplate:[{type:ContentChild,args:[IonicSelectableHeaderTemplateDirective,{read:TemplateRef}]}],itemIconTemplate:[{type:ContentChild,args:[IonicSelectableItemIconTemplateDirective,{read:TemplateRef}]}],searchDebounce:[{type:Input}],disabledItems:[{type:Input}],shouldStoreItemValue:[{type:Input}],canSaveItem:[{type:Input}],canDeleteItem:[{type:Input}],canAddItem:[{type:Input,args:["canAddItem"]}],onSaveItem:[{type:Output}],onDeleteItem:[{type:Output}],onAddItem:[{type:Output}],_click:[{type:HostListener,args:["click",["$event"]]}]};var IonicSelectableModalComponent=function(){function e(e,t){var n=this;this.navParams=e,this._element=t,this._cssClass=!0,this.selectComponent=this.navParams.get("selectComponent"),this.selectComponent._modalComponent=this,this.selectComponent._selectedItems=[],this.selectComponent._isNullOrWhiteSpace(this.selectComponent.value)||(this.selectComponent.isMultiple?this.selectComponent.value.forEach(function(e){n.selectComponent._selectedItems.push(e)}):this.selectComponent._selectedItems.push(this.selectComponent.value)),this.selectComponent._setItemsToConfirm(this.selectComponent._selectedItems)}return Object.defineProperty(e.prototype,"_canClearCssClass",{get:function(){return this.selectComponent.canClear},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isMultipleCssClass",{get:function(){return this.selectComponent.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isSearchingCssClass",{get:function(){return this.selectComponent._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isAddItemTemplateVisibleCssClass",{get:function(){return this.selectComponent._isAddItemTemplateVisible},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isIos",{get:function(){return this.selectComponent._isIos},enumerable:!0,configurable:!0}),e.prototype._isMD=function(){return this.selectComponent._isMD},e.prototype.ngAfterViewInit=function(){var e=this;this._header=this._element.nativeElement.querySelector("ion-header"),this._searchbarComponent&&this.selectComponent.focusSearchbar&&setTimeout(function(){e._searchbarComponent.setFocus()},500)},e}();IonicSelectableModalComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable-modal",template:'<ion-header>\n <ion-navbar *ngIf="!selectComponent.headerTemplate"\n [color]="selectComponent.headerColor ? selectComponent.headerColor : null">\n <ion-title>\n \x3c!-- Use span for titleTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.titleTemplate"\n [ngTemplateOutlet]="selectComponent.titleTemplate">\n </span>\n <span *ngIf="!selectComponent.titleTemplate">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)="selectComponent._close()">\n <span *ngIf="selectComponent.closeButtonTemplate"\n [ngTemplateOutlet]="selectComponent.closeButtonTemplate">\n </span>\n <span *ngIf="!selectComponent.closeButtonTemplate" ion-text\n showWhen="ios">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf="!selectComponent.closeButtonTemplate" name="md-close"\n hideWhen="ios">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf="selectComponent.headerTemplate"\n [ngTemplateOutlet]="selectComponent.headerTemplate">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]="selectComponent._searchText"\n (ionInput)="selectComponent._filterItems()"\n [placeholder]="selectComponent.searchPlaceholder"\n [debounce]="selectComponent.searchDebounce">\n </ion-searchbar>\n <div class="ionic-selectable-message"\n *ngIf="selectComponent.messageTemplate">\n <div [ngTemplateOutlet]="selectComponent.messageTemplate">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class="ionic-selectable-spinner" *ngIf="selectComponent._isSearching">\n <div class="ionic-selectable-spinner-background"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf="selectComponent._searchText"\n (click)="selectComponent._select(selectComponent._searchText)"\n class="ionic-selectable-item searchTextItem"\n [ngClass]="{ \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(selectComponent._searchText) }">\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(selectComponent._searchText)}}\n </span>\n <ion-icon name="add-circle" style="color: green; padding-left: 10px; padding-top: 5px"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf="!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems">\n <ion-item-group *ngFor="let group of selectComponent._filteredGroups"\n class="ionic-selectable-group">\n <ion-item-divider *ngIf="selectComponent._hasGroups"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n \x3c!-- Use span for groupTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.groupTemplate"\n [ngTemplateOutlet]="selectComponent.groupTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </span>\n <span *ngIf="!selectComponent.groupTemplate">\n {{group.text}}\n </span>\n <div *ngIf="selectComponent.groupEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.groupEndTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor="let item of group.items"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n \x3c!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. --\x3e\n <div *ngIf="!selectComponent._hasFilteredItems">\n <span *ngIf="selectComponent.searchFailTemplate"\n [ngTemplateOutlet]="selectComponent.searchFailTemplate">\n </span>\n <div *ngIf="!selectComponent.searchFailTemplate" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf="!selectComponent.hasVirtualScroll"\n [enabled]="selectComponent.hasInfiniteScroll"\n (ionInfinite)="selectComponent._getMoreItems($event)">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf="selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems"\n [virtualScroll]="selectComponent._filteredGroups[0].items"\n [approxItemHeight]="selectComponent.virtualScrollApproxItemHeight"\n [approxItemWidth]="selectComponent.virtualScrollApproxItemWidth"\n [bufferRatio]="selectComponent.virtualScrollBufferRatio"\n [headerFn]="selectComponent.virtualScrollHeaderFn">\n <ion-item-divider *virtualHeader="let header"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem="let item"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class="ionic-selectable-add-item-template"\n *ngIf="selectComponent._isAddItemTemplateVisible"\n [ngStyle]="{ \'top.px\': _header.offsetHeight }">\n <span [ngTemplateOutlet]="selectComponent.addItemTemplate"\n [ngTemplateOutletContext]="{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }">\n </span>\n</div>\n<ion-footer\n *ngIf="selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate"\n [ngStyle]="{ \'visibility\': selectComponent._isFooterVisible ? \'initial\' : \'hidden\' }">\n <ion-toolbar *ngIf="!selectComponent.footerTemplate">\n <ion-row>\n <ion-col *ngIf="selectComponent.canClear">\n <button ion-button full no-margin (click)="selectComponent._clear()"\n [disabled]="!selectComponent._selectedItems.length">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf="selectComponent.canAddItem">\n <button ion-button full no-margin\n (click)="selectComponent._addItemClick()">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf="selectComponent.isMultiple || selectComponent.hasConfirmButton">\n <button ion-button full no-margin (click)="selectComponent._confirm()"\n [disabled]="!selectComponent.isConfirmButtonEnabled">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf="selectComponent.footerTemplate"\n [ngTemplateOutlet]="selectComponent.footerTemplate">\n </div>\n</ion-footer>\n'}]}],IonicSelectableModalComponent.ctorParameters=function(){return[{type:NavParams},{type:ElementRef}]},IonicSelectableModalComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable-modal"]}],_canClearCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-can-clear"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-multiple"]}],_isSearchingCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-searching"]}],_isAddItemTemplateVisibleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-add-item-template-visible"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-modal-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-modal-md"]}],_searchbarComponent:[{type:ViewChild,args:["searchbarComponent"]}],_content:[{type:ViewChild,args:[Content]}]};var components=[IonicSelectableComponent,IonicSelectableModalComponent],directives=[IonicSelectableValueTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectablePlaceholderTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableAddItemTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemIconTemplateDirective],IonicSelectableModule=function(){return function(){}}();IonicSelectableModule.decorators=[{type:NgModule,args:[{imports:[CommonModule,IonicPageModule.forChild(IonicSelectableComponent),IonicPageModule.forChild(IonicSelectableModalComponent)],declarations:__spread(components,directives),exports:__spread(components,directives),entryComponents:components}]}],IonicSelectableModule.ctorParameters=function(){return[]};export{IonicSelectableAddItemTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableItemIconTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableModalComponent,IonicSelectablePlaceholderTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectableValueTemplateDirective,IonicSelectableComponent,IonicSelectableModule};
import{__spread}from"tslib";import{Directive,Component,ContentChild,ElementRef,EventEmitter,forwardRef,HostBinding,HostListener,Input,IterableDiffers,Optional,Output,TemplateRef,ViewChild,NgModule}from"@angular/core";import{NG_VALUE_ACCESSOR}from"@angular/forms";import{Form,Item,ModalController,Platform,Content,NavParams,IonicPageModule}from"ionic-angular";import"rxjs";import{CommonModule}from"@angular/common";var IonicSelectableAddItemTemplateDirective=function(){return function(){}}();IonicSelectableAddItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableAddItemTemplate]"}]}],IonicSelectableAddItemTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableCloseButtonTemplateDirective=function(){return function(){}}();IonicSelectableCloseButtonTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableCloseButtonTemplate]"}]}],IonicSelectableCloseButtonTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableFooterTemplateDirective=function(){return function(){}}();IonicSelectableFooterTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableFooterTemplate]"}]}],IonicSelectableFooterTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableGroupEndTemplateDirective=function(){return function(){}}();IonicSelectableGroupEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupEndTemplate]"}]}],IonicSelectableGroupEndTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableGroupTemplateDirective=function(){return function(){}}();IonicSelectableGroupTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableGroupTemplate]"}]}],IonicSelectableGroupTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableHeaderTemplateDirective=function(){return function(){}}();IonicSelectableHeaderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableHeaderTemplate]"}]}],IonicSelectableHeaderTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableItemEndTemplateDirective=function(){return function(){}}();IonicSelectableItemEndTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemEndTemplate]"}]}],IonicSelectableItemEndTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableItemIconTemplateDirective=function(){return function(){}}();IonicSelectableItemIconTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemIconTemplate]"}]}],IonicSelectableItemIconTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableItemTemplateDirective=function(){return function(){}}();IonicSelectableItemTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableItemTemplate]"}]}],IonicSelectableItemTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableMessageTemplateDirective=function(){return function(){}}();IonicSelectableMessageTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableMessageTemplate]"}]}],IonicSelectableMessageTemplateDirective.ctorParameters=function(){return[]};var IonicSelectablePlaceholderTemplateDirective=function(){return function(){}}();IonicSelectablePlaceholderTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectablePlaceholderTemplate]"}]}],IonicSelectablePlaceholderTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableSearchFailTemplateDirective=function(){return function(){}}();IonicSelectableSearchFailTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableSearchFailTemplate]"}]}],IonicSelectableSearchFailTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableTitleTemplateDirective=function(){return function(){}}();IonicSelectableTitleTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableTitleTemplate]"}]}],IonicSelectableTitleTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableValueTemplateDirective=function(){return function(){}}();IonicSelectableValueTemplateDirective.decorators=[{type:Directive,args:[{selector:"[ionicSelectableValueTemplate]"}]}],IonicSelectableValueTemplateDirective.ctorParameters=function(){return[]};var IonicSelectableComponent=function(){function e(e,t,n,i,o,l){this._modalController=e,this.ionForm=t,this._platform=n,this.ionItem=i,this._iterableDiffers=o,this.element=l,this._cssClass=!0,this._isOnSearchEnabled=!0,this._isEnabled=!0,this._shouldBackdropClose=!0,this._isOpened=!1,this._value=null,this._canClear=!1,this._hasConfirmButton=!1,this._isMultiple=!1,this._canAddItem=!1,this.onItemsChange=new EventEmitter,this._label=null,this._valueItems=[],this._searchText="",this._hasSearchText=!1,this._groups=[],this._itemsToConfirm=[],this._selectedItems=[],this._filteredGroups=[],this._isAddItemTemplateVisible=!1,this._isFooterVisible=!0,this._itemToAdd=null,this._footerButtonsCount=0,this._hasFilteredItems=!1,this.items=[],this.itemsChange=new EventEmitter,this.modalCssClass=null,this.modalEnterAnimation=null,this.modalLeaveAnimation=null,this.isConfirmButtonEnabled=!0,this.itemValueField=null,this.itemTextField=null,this.groupValueField=null,this.groupTextField=null,this.canSearch=!1,this.hasInfiniteScroll=!1,this.hasVirtualScroll=!1,this.virtualScrollApproxItemHeight="40px",this.virtualScrollApproxItemWidth="100%",this.virtualScrollBufferRatio=3,this.virtualScrollHeaderFn=function(){return null},this.searchPlaceholder="Search",this.placeholder=null,this.searchFailText="No items found.",this.clearButtonText="Clear",this.addButtonText="Add",this.confirmButtonText="OK",this.closeButtonText="Cancel",this.focusSearchbar=!1,this.headerColor=null,this.groupColor=null,this.onChange=new EventEmitter,this.onSearch=new EventEmitter,this.onSearchFail=new EventEmitter,this.onSearchSuccess=new EventEmitter,this.onInfiniteScroll=new EventEmitter,this.onOpen=new EventEmitter,this.onClose=new EventEmitter,this.onSelect=new EventEmitter,this.onClear=new EventEmitter,this.searchDebounce=250,this.disabledItems=[],this.shouldStoreItemValue=!1,this.canSaveItem=!1,this.canDeleteItem=!1,this.onSaveItem=new EventEmitter,this.onDeleteItem=new EventEmitter,this.onAddItem=new EventEmitter,this.propagateOnChange=function(e){},this.propagateOnTouched=function(){},this.items&&this.items.length||(this.items=[]),this._itemsDiffer=this._iterableDiffers.find(this.items).create()}return Object.defineProperty(e.prototype,"_isMultipleCssClass",{get:function(){return this.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_hasValueCssClass",{get:function(){return this.hasValue()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_hasPlaceholderCssClass",{get:function(){return this._hasPlaceholder},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_shouldStoreItemValue",{get:function(){return this.shouldStoreItemValue&&this._hasObjects},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"searchText",{get:function(){return this._searchText},set:function(e){this._searchText=e,this._setHasSearchText()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isSearching",{get:function(){return this._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasSearchText",{get:function(){return this._hasSearchText},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this._valueItems.splice(0,this._valueItems.length),this.isMultiple?e&&e.length&&Array.prototype.push.apply(this._valueItems,e):this._isNullOrWhiteSpace(e)||this._valueItems.push(e),this._setIonItemHasValue(),this._setHasPlaceholder()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isEnabled",{get:function(){return this._isEnabled},set:function(e){this._isEnabled=!!e,this.enableIonItem(this._isEnabled)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldBackdropClose",{get:function(){return this._shouldBackdropClose},set:function(e){this._shouldBackdropClose=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isOpened",{get:function(){return this._isOpened},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasConfirmButton",{get:function(){return this._hasConfirmButton},set:function(e){this._hasConfirmButton=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isOnSearchEnabled",{get:function(){return this._isOnSearchEnabled},set:function(e){this._isOnSearchEnabled=!!e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"canClear",{get:function(){return this._canClear},set:function(e){this._canClear=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMultiple",{get:function(){return this._isMultiple},set:function(e){this._isMultiple=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"itemsToConfirm",{get:function(){return this._itemsToConfirm},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"canAddItem",{get:function(){return this._canAddItem},set:function(e){this._canAddItem=!!e,this._countFooterButtons()},enumerable:!0,configurable:!0}),e.prototype.initFocus=function(){},e.prototype.enableIonItem=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-disabled",!e)},e.prototype._click=function(e){var t=this;this.isEnabled&&0!==e.detail&&(this._label=this._getLabelText(),e.preventDefault(),e.stopPropagation(),this.open().then(function(){t.onOpen.emit({component:t})}))},e.prototype._isNullOrWhiteSpace=function(e){return null==e||e.toString().replace(/\s/g,"").length<1},e.prototype._setHasSearchText=function(){this._hasSearchText=!this._isNullOrWhiteSpace(this._searchText)},e.prototype._hasOnSearch=function(){return this.isOnSearchEnabled&&this.onSearch.observers.length>0},e.prototype._hasOnSaveItem=function(){return this.canSaveItem&&this.onSaveItem.observers.length>0},e.prototype._hasOnAddItem=function(){return this.canAddItem&&this.onAddItem.observers.length>0},e.prototype._hasOnDeleteItem=function(){return this.canDeleteItem&&this.onDeleteItem.observers.length>0},e.prototype._emitValueChange=function(){this.propagateOnChange(this.value),this._setIonItemValidityClasses(),this.onChange.emit({component:this,value:this.value})},e.prototype._emitSearch=function(){this.canSearch&&this.onSearch.emit({component:this,text:this._searchText})},e.prototype._emitOnSelect=function(e,t){this.onSelect.emit({component:this,item:e,isSelected:t})},e.prototype._emitOnClear=function(e){this.onClear.emit({component:this,items:e})},e.prototype._emitOnSearchSuccessOrFail=function(e){var t={component:this,text:this._searchText};e?this.onSearchSuccess.emit(t):this.onSearchFail.emit(t)},e.prototype._formatItem=function(e){return this._isNullOrWhiteSpace(e)?null:this.itemTextField?e[this.itemTextField]:e.toString()},e.prototype._formatValueItem=function(e){var t=this;if(this._shouldStoreItemValue){var n=this.items.find(function(n){return n[t.itemValueField]===e});return this._formatItem(n)}return this._formatItem(e)},e.prototype._getItemValue=function(e){return this._hasObjects?e[this.itemValueField]:e},e.prototype._getStoredItemValue=function(e){return this._hasObjects?this._shouldStoreItemValue?e:e[this.itemValueField]:e},e.prototype._filterItems=function(){var e=this;if(this._setHasSearchText(),this._hasOnSearch())this._emitSearch();else{var t=[];if(this._searchText&&this._searchText.trim()){var n=this._searchText.trim().toLowerCase();this._groups.forEach(function(i){var o=i.items.filter(function(t){return-1!==(e.itemTextField?t[e.itemTextField]:t).toString().toLowerCase().indexOf(n)});o.length&&t.push({value:i.value,text:i.text,items:o})}),t.length||t.push({items:[]})}else t=this._groups;this._filteredGroups=t,this._hasFilteredItems=!this._areGroupsEmpty(t),this._emitOnSearchSuccessOrFail(this._hasFilteredItems)}},e.prototype._isItemDisabled=function(e){var t=this;if(this.disabledItems)return this.disabledItems.some(function(n){return t._getItemValue(n)===t._getItemValue(e)})},e.prototype._isItemSelected=function(e){var t=this;return void 0!==this._selectedItems.find(function(n){return t._getItemValue(e)===t._getStoredItemValue(n)})},e.prototype._addSelectedItem=function(e){this._shouldStoreItemValue?this._selectedItems.push(this._getItemValue(e)):this._selectedItems.push(e)},e.prototype._deleteSelectedItem=function(e){var t,n=this;this._selectedItems.forEach(function(i,o){n._getItemValue(e)===n._getStoredItemValue(i)&&(t=o)}),this._selectedItems.splice(t,1)},e.prototype._saveItem=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnSaveItem()?this.onSaveItem.emit({component:this,item:this._itemToAdd}):this.showAddItemTemplate()},e.prototype._deleteItemClick=function(e,t){e.stopPropagation(),this._itemToAdd=t,this._hasOnDeleteItem()?this.onDeleteItem.emit({component:this,item:this._itemToAdd}):this.deleteItem(this._itemToAdd)},e.prototype._addItemClick=function(){this._itemToAdd=null,this._hasOnAddItem()?this.onAddItem.emit({component:this}):this.showAddItemTemplate()},e.prototype._close=function(){var e=this;this._modalComponent._searchbarComponent&&this._modalComponent._searchbarComponent._fireBlur(),setTimeout(function(){e.close().then(function(){e.onClose.emit({component:e})}),e._hasOnSearch()||(e._searchText="",e._setHasSearchText())})},e.prototype._clear=function(){var e=this,t=this._selectedItems;this.clear(),this._emitValueChange(),this._emitOnClear(t),this.close().then(function(){e.onClose.emit({component:e})})},e.prototype._getMoreItems=function(e){this._infiniteScroll=e,this.onInfiniteScroll.emit({component:this,text:this._searchText})},e.prototype._setItemsToConfirm=function(e){this._itemsToConfirm=[].concat(e)},e.prototype._doSelect=function(e){this.value=e,this._emitValueChange()},e.prototype._select=function(e){var t=this._isItemSelected(e);this.isMultiple?(t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):this.hasConfirmButton||this.footerTemplate?(this._selectedItems=[],t?this._deleteSelectedItem(e):this._addSelectedItem(e),this._setItemsToConfirm(this._selectedItems),this._emitOnSelect(e,!t)):(t||(this._selectedItems=[],this._addSelectedItem(e),this._emitOnSelect(e,!0),this._shouldStoreItemValue?this._doSelect(this._getItemValue(e)):this._doSelect(e)),this._close())},e.prototype._confirm=function(){this.confirm(),this._close()},e.prototype._getLabelText=function(){var e=this.ionItem?this.ionItem.getNativeElement().querySelector("ion-label"):null;return e?e.textContent:null},e.prototype._areGroupsEmpty=function(e){return 0===e.length||e.every(function(e){return!e.items||0===e.items.length})},e.prototype._countFooterButtons=function(){var e=0;this.canClear&&e++,(this.isMultiple||this._hasConfirmButton)&&e++,this.canAddItem&&e++,this._footerButtonsCount=e},e.prototype._setItems=function(e){var t=this,n=[{items:e||[]}];e&&e.length&&this._hasGroups&&(n=[],e.forEach(function(e){var i=t._getPropertyValue(e,t.groupValueField),o=n.find(function(e){return e.value===i});o?o.items.push(e):n.push({value:i,text:t._getPropertyValue(e,t.groupTextField),items:[e]})})),this._groups=n,this._filteredGroups=this._groups,this._hasFilteredItems=!this._areGroupsEmpty(this._filteredGroups)},e.prototype._getPropertyValue=function(e,t){return t?t.split(".").reduce(function(e,t){return e?e[t]:null},e):null},e.prototype._setIonItemHasFocus=function(e){this.ionItem&&this.ionItem.setElementClass("item-input-has-focus",e)},e.prototype._setIonItemHasValue=function(){this.ionItem&&this.ionItem.setElementClass("item-input-has-value",this.hasValue())},e.prototype._setHasPlaceholder=function(){this._hasPlaceholder=!(this.hasValue()||this._isNullOrWhiteSpace(this.placeholder)&&!this.placeholderTemplate)},e.prototype._setIonItemValidityClasses=function(){var e=this;this.ionItem&&requestAnimationFrame(function(){var t=e.element.nativeElement.classList;e.ionItem.setElementClass("ng-invalid",!1),e.ionItem.setElementClass("ng-valid",!1),e.ionItem.setElementClass("ng-touched",!1),e.ionItem.setElementClass("ng-untouched",!1),e.ionItem.setElementClass("ng-dirty",!1),e.ionItem.setElementClass("ng-pristine",!1),t.forEach(function(t){"ng-invalid"===t&&e.ionItem.setElementClass("ng-invalid",!0),"ng-valid"===t&&e.ionItem.setElementClass("ng-valid",!0),"ng-touched"===t&&e.ionItem.setElementClass("ng-touched",!0),"ng-untouched"===t&&e.ionItem.setElementClass("ng-untouched",!0),"ng-dirty"===t&&e.ionItem.setElementClass("ng-dirty",!0),"ng-pristine"===t&&e.ionItem.setElementClass("ng-pristine",!0)})})},e.prototype._toggleAddItemTemplate=function(e){this.addItemTemplate&&(this._isAddItemTemplateVisible=e,this._isFooterVisible=!e)},e.prototype.writeValue=function(e){this.value=e,this._setIonItemValidityClasses()},e.prototype.registerOnChange=function(e){this.propagateOnChange=e},e.prototype.registerOnTouched=function(e){this.propagateOnTouched=e},e.prototype.setDisabledState=function(e){this.isEnabled=!e},e.prototype.ngOnInit=function(){this._isIos=this._platform.is("ios"),this._isMD=!this._isIos,this._hasObjects=!this._isNullOrWhiteSpace(this.itemValueField),this._hasGroups=Boolean(this._hasObjects&&this.groupValueField&&!this.hasVirtualScroll),this.ionForm.register(this),this.ionItem&&(this.ionItem.setElementClass("item-input",!0),this.ionItem.setElementClass("item-ionic-selectable",!0)),this.enableIonItem(this.isEnabled)},e.prototype.ngOnDestroy=function(){this.ionForm.deregister(this)},e.prototype.ngDoCheck=function(){this._itemsDiffer.diff(this.items)&&(this._setItems(this.items),this.value=this.value,this.onItemsChange.emit({component:this}))},e.prototype.addItem=function(e){var t=this;return this.items.unshift(e),this._addItemObservable&&this._addItemObservable.unsubscribe(),new Promise(function(e,n){t._addItemObservable=t.onItemsChange.asObservable().subscribe(function(){t._addItemObservable.unsubscribe(),e()},function(){t._addItemObservable.unsubscribe(),n()})})},e.prototype.deleteItem=function(e){var t=this,n=this,i=!1;if(this._selectedItems&&(this._selectedItems=this._selectedItems.filter(function(n){return t._getItemValue(e)!==t._getStoredItemValue(n)})),this.value)if(this.isMultiple){var o=this.value.filter(function(t){return t.id!==e.id});o.length!==this.value.length&&(this.value=o,i=!0)}else e===this.value&&(this.value=null,i=!0);i&&this._emitValueChange();var l=this.items.filter(function(t){return t.id!==e.id});return this.itemsChange.emit(l),this._setItems(l),this.onItemsChange.emit({component:this}),this._deleteItemObservable&&this._deleteItemObservable.unsubscribe(),new Promise(function(e,t){n._deleteItemObservable=n.onItemsChange.asObservable().subscribe(function(){n._deleteItemObservable.unsubscribe(),e()},function(){n._deleteItemObservable.unsubscribe(),t()})})},e.prototype.hasValue=function(){return this.isMultiple?0!==this._valueItems.length:0!==this._valueItems.length&&!this._isNullOrWhiteSpace(this._valueItems[0])},e.prototype.open=function(){var e=this;return new Promise(function(t,n){if(e._isEnabled&&!e._isOpened){e._filterItems(),e._isOpened=!0;var i={enableBackdropDismiss:e._shouldBackdropClose};e.modalCssClass&&(i.cssClass=e.modalCssClass),e.modalEnterAnimation&&(i.enterAnimation=e.modalEnterAnimation),e.modalLeaveAnimation&&(i.leaveAnimation=e.modalLeaveAnimation),e._modal=e._modalController.create(IonicSelectableModalComponent,{selectComponent:e},i),e._modal.present({animate:!1}).then(function(){e._setIonItemHasFocus(!0),t()}),e._modal.onWillDismiss(function(){e._setIonItemHasFocus(!1)}),e._modal.onDidDismiss(function(t,n){e._isOpened=!1,e._itemsToConfirm=[],"backdrop"===n&&e.onClose.emit({component:e})})}else n("IonicSelectable is disabled or already opened.")})},e.prototype.close=function(){var e=this;return new Promise(function(t,n){e._isEnabled&&e._isOpened?(e.propagateOnTouched(),e._setIonItemValidityClasses(),e._infiniteScroll=null,e._isOpened=!1,e._itemToAdd=null,e._modal.dismiss().then(function(){e._setIonItemHasFocus(!1),e.hideAddItemTemplate(),t()})):n("IonicSelectable is disabled or already closed.")})},e.prototype.clear=function(){this.value=this.isMultiple?[]:null,this._itemsToConfirm=[],this.propagateOnChange(this.value),this._setIonItemValidityClasses()},e.prototype.confirm=function(){this.isMultiple?this._doSelect(this._selectedItems):(this.hasConfirmButton||this.footerTemplate)&&this._doSelect(this._selectedItems[0]||null)},e.prototype.toggleItems=function(e,t){var n=this;if(e){var i=t&&t.length,o=this._groups.reduce(function(e,t){return e.concat(t.items)},[]);this.isMultiple||i||(o=[]),i&&(o=o.filter(function(e){return void 0!==t.find(function(t){return n._getItemValue(e)===n._getItemValue(t)})}),this.isMultiple||o.splice(0,1)),o.forEach(function(e){n._addSelectedItem(e)})}else this._selectedItems=[];this._setItemsToConfirm(this._selectedItems)},e.prototype.scrollToTop=function(){var e=this;return new Promise(function(t,n){e._isOpened?e._modalComponent._content.scrollToTop().then(function(){t()}):n("IonicSelectable content cannot be scrolled.")})},e.prototype.scrollToBottom=function(){var e=this;return new Promise(function(t,n){e._isOpened?e._modalComponent._content.scrollToBottom().then(function(){t()}):n("IonicSelectable content cannot be scrolled.")})},e.prototype.startSearch=function(){this._isEnabled&&this.showLoading()},e.prototype.endSearch=function(){this._isEnabled&&(this.hideLoading(),this._setItems(this.items),this._emitOnSearchSuccessOrFail(this._hasFilteredItems))},e.prototype.enableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!0)},e.prototype.disableInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&this._infiniteScroll.enable(!1)},e.prototype.endInfiniteScroll=function(){this._isEnabled&&this._infiniteScroll&&(this._infiniteScroll.complete(),this._setItems(this.items))},e.prototype.search=function(e){this._isEnabled&&this._isOpened&&this.canSearch&&(this._searchText=e,this._setHasSearchText(),this._filterItems())},e.prototype.showLoading=function(){this._isEnabled&&(this._isSearching=!0)},e.prototype.hideLoading=function(){this._isEnabled&&(this._isSearching=!1)},e.prototype.showAddItemTemplate=function(){this._toggleAddItemTemplate(!0)},e.prototype.hideAddItemTemplate=function(){this._toggleAddItemTemplate(!1)},e}();IonicSelectableComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable",template:'<div class="ionic-selectable-value">\n <div *ngIf="valueTemplate && _valueItems.length && isMultiple"\n [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems }">\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="valueTemplate && _valueItems.length && !isMultiple">\n <div [ngTemplateOutlet]="valueTemplate"\n [ngTemplateOutletContext]="{ value: _valueItems[0] }">\n </div>\n </div>\n <span *ngIf="!valueTemplate && _valueItems.length">\n <div class="ionic-selectable-value-item"\n *ngFor="let valueItem of _valueItems">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf="_hasPlaceholder && placeholderTemplate"\n class="ionic-selectable-value-item">\n <div [ngTemplateOutlet]="placeholderTemplate">\n </div>\n </div>\n <div class="ionic-selectable-value-item"\n *ngIf="_hasPlaceholder && !placeholderTemplate">\n {{placeholder}}\n </div>\n</div>\n<div class="ionic-selectable-icon">\n <div class="ionic-selectable-icon-inner"></div>\n</div>\n<button aria-haspopup="true" ion-button="item-cover" class="item-cover"\n [disabled]="!isEnabled">\n</button>\n',providers:[{provide:NG_VALUE_ACCESSOR,useExisting:forwardRef(function(){return IonicSelectableComponent}),multi:!0}]}]}],IonicSelectableComponent.ctorParameters=function(){return[{type:ModalController},{type:Form},{type:Platform},{type:Item,decorators:[{type:Optional}]},{type:IterableDiffers},{type:ElementRef}]},IonicSelectableComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-md"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-is-multiple"]}],_hasValueCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-value"]}],_hasPlaceholderCssClass:[{type:HostBinding,args:["class.ionic-selectable-has-placeholder"]}],items:[{type:Input}],itemsChange:[{type:Output}],isEnabled:[{type:HostBinding,args:["class.ionic-selectable-is-enabled"]},{type:Input,args:["isEnabled"]}],shouldBackdropClose:[{type:Input,args:["shouldBackdropClose"]}],modalCssClass:[{type:Input}],modalEnterAnimation:[{type:Input}],modalLeaveAnimation:[{type:Input}],isConfirmButtonEnabled:[{type:Input,args:["isConfirmButtonEnabled"]}],hasConfirmButton:[{type:Input,args:["hasConfirmButton"]}],itemValueField:[{type:Input}],itemTextField:[{type:Input}],groupValueField:[{type:Input}],groupTextField:[{type:Input}],canSearch:[{type:Input}],isOnSearchEnabled:[{type:Input,args:["isOnSearchEnabled"]}],canClear:[{type:HostBinding,args:["class.ionic-selectable-can-clear"]},{type:Input,args:["canClear"]}],hasInfiniteScroll:[{type:Input}],hasVirtualScroll:[{type:Input}],virtualScrollApproxItemHeight:[{type:Input}],virtualScrollApproxItemWidth:[{type:Input}],virtualScrollBufferRatio:[{type:Input}],virtualScrollHeaderFn:[{type:Input}],searchPlaceholder:[{type:Input}],placeholder:[{type:Input}],isMultiple:[{type:Input,args:["isMultiple"]}],searchFailText:[{type:Input}],clearButtonText:[{type:Input}],addButtonText:[{type:Input}],confirmButtonText:[{type:Input}],closeButtonText:[{type:Input}],focusSearchbar:[{type:Input}],headerColor:[{type:Input}],groupColor:[{type:Input}],onChange:[{type:Output}],onSearch:[{type:Output}],onSearchFail:[{type:Output}],onSearchSuccess:[{type:Output}],onInfiniteScroll:[{type:Output}],onOpen:[{type:Output}],onClose:[{type:Output}],onSelect:[{type:Output}],onClear:[{type:Output}],valueTemplate:[{type:ContentChild,args:[IonicSelectableValueTemplateDirective,{read:TemplateRef}]}],itemTemplate:[{type:ContentChild,args:[IonicSelectableItemTemplateDirective,{read:TemplateRef}]}],itemEndTemplate:[{type:ContentChild,args:[IonicSelectableItemEndTemplateDirective,{read:TemplateRef}]}],titleTemplate:[{type:ContentChild,args:[IonicSelectableTitleTemplateDirective,{read:TemplateRef}]}],placeholderTemplate:[{type:ContentChild,args:[IonicSelectablePlaceholderTemplateDirective,{read:TemplateRef}]}],messageTemplate:[{type:ContentChild,args:[IonicSelectableMessageTemplateDirective,{read:TemplateRef}]}],groupTemplate:[{type:ContentChild,args:[IonicSelectableGroupTemplateDirective,{read:TemplateRef}]}],groupEndTemplate:[{type:ContentChild,args:[IonicSelectableGroupEndTemplateDirective,{read:TemplateRef}]}],closeButtonTemplate:[{type:ContentChild,args:[IonicSelectableCloseButtonTemplateDirective,{read:TemplateRef}]}],searchFailTemplate:[{type:ContentChild,args:[IonicSelectableSearchFailTemplateDirective,{read:TemplateRef}]}],addItemTemplate:[{type:ContentChild,args:[IonicSelectableAddItemTemplateDirective,{read:TemplateRef}]}],footerTemplate:[{type:ContentChild,args:[IonicSelectableFooterTemplateDirective,{read:TemplateRef}]}],headerTemplate:[{type:ContentChild,args:[IonicSelectableHeaderTemplateDirective,{read:TemplateRef}]}],itemIconTemplate:[{type:ContentChild,args:[IonicSelectableItemIconTemplateDirective,{read:TemplateRef}]}],searchDebounce:[{type:Input}],disabledItems:[{type:Input}],shouldStoreItemValue:[{type:Input}],canSaveItem:[{type:Input}],canDeleteItem:[{type:Input}],canAddItem:[{type:Input,args:["canAddItem"]}],onSaveItem:[{type:Output}],onDeleteItem:[{type:Output}],onAddItem:[{type:Output}],_click:[{type:HostListener,args:["click",["$event"]]}]};var IonicSelectableModalComponent=function(){function e(e,t){var n=this;this.navParams=e,this._element=t,this._cssClass=!0,this.selectComponent=this.navParams.get("selectComponent"),this.selectComponent._modalComponent=this,this.selectComponent._selectedItems=[],this.selectComponent._isNullOrWhiteSpace(this.selectComponent.value)||(this.selectComponent.isMultiple?this.selectComponent.value.forEach(function(e){n.selectComponent._selectedItems.push(e)}):this.selectComponent._selectedItems.push(this.selectComponent.value)),this.selectComponent._setItemsToConfirm(this.selectComponent._selectedItems)}return Object.defineProperty(e.prototype,"_canClearCssClass",{get:function(){return this.selectComponent.canClear},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isMultipleCssClass",{get:function(){return this.selectComponent.isMultiple},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isSearchingCssClass",{get:function(){return this.selectComponent._isSearching},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isAddItemTemplateVisibleCssClass",{get:function(){return this.selectComponent._isAddItemTemplateVisible},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"_isIos",{get:function(){return this.selectComponent._isIos},enumerable:!0,configurable:!0}),e.prototype._isMD=function(){return this.selectComponent._isMD},e.prototype.ngAfterViewInit=function(){var e=this;this._header=this._element.nativeElement.querySelector("ion-header"),this._searchbarComponent&&this.selectComponent.focusSearchbar&&setTimeout(function(){e._searchbarComponent.setFocus()},500)},e}();IonicSelectableModalComponent.decorators=[{type:Component,args:[{selector:"ionic-selectable-modal",template:'<ion-header>\n <ion-navbar *ngIf="!selectComponent.headerTemplate"\n [color]="selectComponent.headerColor ? selectComponent.headerColor : null">\n <ion-title>\n \x3c!-- Use span for titleTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.titleTemplate"\n [ngTemplateOutlet]="selectComponent.titleTemplate">\n </span>\n <span *ngIf="!selectComponent.titleTemplate">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)="selectComponent._close()">\n <span *ngIf="selectComponent.closeButtonTemplate"\n [ngTemplateOutlet]="selectComponent.closeButtonTemplate">\n </span>\n <span *ngIf="!selectComponent.closeButtonTemplate" ion-text\n showWhen="ios">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf="!selectComponent.closeButtonTemplate" name="md-close"\n hideWhen="ios">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf="selectComponent.headerTemplate"\n [ngTemplateOutlet]="selectComponent.headerTemplate">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]="selectComponent._searchText"\n (ionInput)="selectComponent._filterItems()"\n [placeholder]="selectComponent.searchPlaceholder"\n [debounce]="selectComponent.searchDebounce">\n </ion-searchbar>\n <div class="ionic-selectable-message"\n *ngIf="selectComponent.messageTemplate">\n <div [ngTemplateOutlet]="selectComponent.messageTemplate">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class="ionic-selectable-spinner" *ngIf="selectComponent._isSearching">\n <div class="ionic-selectable-spinner-background"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf="selectComponent._searchText"\n (click)="selectComponent._select(selectComponent._searchText)"\n class="ionic-selectable-item searchTextItem"\n [ngClass]="{ \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(selectComponent._searchText) }">\n <span *ngIf="!selectComponent.itemTemplate">\n Use typed text\n </span>\n <ion-icon class="addCustomItemIcon" name="add-circle"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf="!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems">\n <ion-item-group *ngFor="let group of selectComponent._filteredGroups"\n class="ionic-selectable-group">\n <ion-item-divider *ngIf="selectComponent._hasGroups"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n \x3c!-- Use span for groupTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.groupTemplate"\n [ngTemplateOutlet]="selectComponent.groupTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </span>\n <span *ngIf="!selectComponent.groupTemplate">\n {{group.text}}\n </span>\n <div *ngIf="selectComponent.groupEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.groupEndTemplate"\n [ngTemplateOutletContext]="{ group: group }">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor="let item of group.items"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n \x3c!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. --\x3e\n <div *ngIf="!selectComponent._hasFilteredItems">\n <span *ngIf="selectComponent.searchFailTemplate"\n [ngTemplateOutlet]="selectComponent.searchFailTemplate">\n </span>\n <div *ngIf="!selectComponent.searchFailTemplate" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf="!selectComponent.hasVirtualScroll"\n [enabled]="selectComponent.hasInfiniteScroll"\n (ionInfinite)="selectComponent._getMoreItems($event)">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf="selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems"\n [virtualScroll]="selectComponent._filteredGroups[0].items"\n [approxItemHeight]="selectComponent.virtualScrollApproxItemHeight"\n [approxItemWidth]="selectComponent.virtualScrollApproxItemWidth"\n [bufferRatio]="selectComponent.virtualScrollBufferRatio"\n [headerFn]="selectComponent.virtualScrollHeaderFn">\n <ion-item-divider *virtualHeader="let header"\n [color]="selectComponent.groupColor ? selectComponent.groupColor : null">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem="let item"\n (click)="selectComponent._select(item)" class="ionic-selectable-item"\n [ngClass]="{\n \'ionic-selectable-item-is-selected\': selectComponent._isItemSelected(item),\n \'ionic-selectable-item-is-disabled\': selectComponent._isItemDisabled(item)\n }" [disabled]="selectComponent._isItemDisabled(item)">\n \x3c!-- Use span for itemTemplate to preserve Ionic ellipsis styles. --\x3e\n <span *ngIf="selectComponent.itemTemplate"\n [ngTemplateOutlet]="selectComponent.itemTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <span *ngIf="!selectComponent.itemTemplate">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf="selectComponent.itemEndTemplate" item-right>\n <div [ngTemplateOutlet]="selectComponent.itemEndTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </div>\n </div>\n <span *ngIf="selectComponent.itemIconTemplate" item-left\n class="ionic-selectable-item-icon-template"\n [ngTemplateOutlet]="selectComponent.itemIconTemplate"\n [ngTemplateOutletContext]="{ item: item, isItemSelected: selectComponent._isItemSelected(item) }">\n </span>\n <ion-icon *ngIf="!selectComponent.itemIconTemplate"\n [name]="selectComponent._isItemSelected(item) ? \'checkmark-circle\' : \'radio-button-off\'"\n [color]="selectComponent._isItemSelected(item) ? \'primary\' : \'daek\'"\n item-left>\n </ion-icon>\n <button *ngIf="selectComponent.canSaveItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._saveItem($event, item)">\n <ion-icon name="md-create"></ion-icon>\n </button>\n <button *ngIf="selectComponent.canDeleteItem"\n class="ionic-selectable-item-button" ion-button icon-only item-end\n outline (click)="selectComponent._deleteItemClick($event, item)">\n <ion-icon name="md-trash"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class="ionic-selectable-add-item-template"\n *ngIf="selectComponent._isAddItemTemplateVisible"\n [ngStyle]="{ \'top.px\': _header.offsetHeight }">\n <span [ngTemplateOutlet]="selectComponent.addItemTemplate"\n [ngTemplateOutletContext]="{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }">\n </span>\n</div>\n<ion-footer\n *ngIf="selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate"\n [ngStyle]="{ \'visibility\': selectComponent._isFooterVisible ? \'initial\' : \'hidden\' }">\n <ion-toolbar *ngIf="!selectComponent.footerTemplate">\n <ion-row>\n <ion-col *ngIf="selectComponent.canClear">\n <button ion-button full no-margin (click)="selectComponent._clear()"\n [disabled]="!selectComponent._selectedItems.length">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf="selectComponent.canAddItem">\n <button ion-button full no-margin\n (click)="selectComponent._addItemClick()">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf="selectComponent.isMultiple || selectComponent.hasConfirmButton">\n <button ion-button full no-margin (click)="selectComponent._confirm()"\n [disabled]="!selectComponent.isConfirmButtonEnabled">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf="selectComponent.footerTemplate"\n [ngTemplateOutlet]="selectComponent.footerTemplate">\n </div>\n</ion-footer>\n'}]}],IonicSelectableModalComponent.ctorParameters=function(){return[{type:NavParams},{type:ElementRef}]},IonicSelectableModalComponent.propDecorators={_cssClass:[{type:HostBinding,args:["class.ionic-selectable-modal"]}],_canClearCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-can-clear"]}],_isMultipleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-multiple"]}],_isSearchingCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-searching"]}],_isAddItemTemplateVisibleCssClass:[{type:HostBinding,args:["class.ionic-selectable-modal-is-add-item-template-visible"]}],_isIos:[{type:HostBinding,args:["class.ionic-selectable-modal-ios"]}],_isMD:[{type:HostBinding,args:["class.ionic-selectable-modal-md"]}],_searchbarComponent:[{type:ViewChild,args:["searchbarComponent"]}],_content:[{type:ViewChild,args:[Content]}]};var components=[IonicSelectableComponent,IonicSelectableModalComponent],directives=[IonicSelectableValueTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectablePlaceholderTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableAddItemTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemIconTemplateDirective],IonicSelectableModule=function(){return function(){}}();IonicSelectableModule.decorators=[{type:NgModule,args:[{imports:[CommonModule,IonicPageModule.forChild(IonicSelectableComponent),IonicPageModule.forChild(IonicSelectableModalComponent)],declarations:__spread(components,directives),exports:__spread(components,directives),entryComponents:components}]}],IonicSelectableModule.ctorParameters=function(){return[]};export{IonicSelectableAddItemTemplateDirective,IonicSelectableCloseButtonTemplateDirective,IonicSelectableFooterTemplateDirective,IonicSelectableGroupEndTemplateDirective,IonicSelectableGroupTemplateDirective,IonicSelectableHeaderTemplateDirective,IonicSelectableItemEndTemplateDirective,IonicSelectableItemIconTemplateDirective,IonicSelectableItemTemplateDirective,IonicSelectableMessageTemplateDirective,IonicSelectableModalComponent,IonicSelectablePlaceholderTemplateDirective,IonicSelectableSearchFailTemplateDirective,IonicSelectableTitleTemplateDirective,IonicSelectableValueTemplateDirective,IonicSelectableComponent,IonicSelectableModule};

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

{"__symbolic":"module","version":4,"metadata":{"IonicSelectableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ionic-angular","name":"IonicPageModule"},"member":"forChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableComponent"}]},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ionic-angular","name":"IonicPageModule"},"member":"forChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableModalComponent"}]}],"declarations":[{"__symbolic":"reference","name":"IonicSelectableComponent"},{"__symbolic":"reference","name":"IonicSelectableModalComponent"},{"__symbolic":"reference","name":"IonicSelectableValueTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableTitleTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectablePlaceholderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableMessageTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableCloseButtonTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableSearchFailTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableAddItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableFooterTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableHeaderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemIconTemplateDirective"}],"exports":[{"__symbolic":"reference","name":"IonicSelectableComponent"},{"__symbolic":"reference","name":"IonicSelectableModalComponent"},{"__symbolic":"reference","name":"IonicSelectableValueTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableTitleTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectablePlaceholderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableMessageTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableCloseButtonTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableSearchFailTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableAddItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableFooterTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableHeaderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemIconTemplateDirective"}],"entryComponents":[{"__symbolic":"reference","name":"IonicSelectableComponent"},{"__symbolic":"reference","name":"IonicSelectableModalComponent"}]}]}],"members":{}},"IonicSelectableAddItemTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableAddItemTemplate]"}]}],"members":{}},"IonicSelectableCloseButtonTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableCloseButtonTemplate]"}]}],"members":{}},"IonicSelectableFooterTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableFooterTemplate]"}]}],"members":{}},"IonicSelectableGroupEndTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableGroupEndTemplate]"}]}],"members":{}},"IonicSelectableGroupTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableGroupTemplate]"}]}],"members":{}},"IonicSelectableHeaderTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableHeaderTemplate]"}]}],"members":{}},"IonicSelectableItemEndTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableItemEndTemplate]"}]}],"members":{}},"IonicSelectableItemIconTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableItemIconTemplate]"}]}],"members":{}},"IonicSelectableItemTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableItemTemplate]"}]}],"members":{}},"IonicSelectableMessageTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableMessageTemplate]"}]}],"members":{}},"IonicSelectableModalComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ionic-selectable-modal","template":"<ion-header>\n <ion-navbar *ngIf=\"!selectComponent.headerTemplate\"\n [color]=\"selectComponent.headerColor ? selectComponent.headerColor : null\">\n <ion-title>\n <!-- Use span for titleTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.titleTemplate\"\n [ngTemplateOutlet]=\"selectComponent.titleTemplate\">\n </span>\n <span *ngIf=\"!selectComponent.titleTemplate\">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)=\"selectComponent._close()\">\n <span *ngIf=\"selectComponent.closeButtonTemplate\"\n [ngTemplateOutlet]=\"selectComponent.closeButtonTemplate\">\n </span>\n <span *ngIf=\"!selectComponent.closeButtonTemplate\" ion-text\n showWhen=\"ios\">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf=\"!selectComponent.closeButtonTemplate\" name=\"md-close\"\n hideWhen=\"ios\">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf=\"selectComponent.headerTemplate\"\n [ngTemplateOutlet]=\"selectComponent.headerTemplate\">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]=\"selectComponent._searchText\"\n (ionInput)=\"selectComponent._filterItems()\"\n [placeholder]=\"selectComponent.searchPlaceholder\"\n [debounce]=\"selectComponent.searchDebounce\">\n </ion-searchbar>\n <div class=\"ionic-selectable-message\"\n *ngIf=\"selectComponent.messageTemplate\">\n <div [ngTemplateOutlet]=\"selectComponent.messageTemplate\">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"ionic-selectable-spinner\" *ngIf=\"selectComponent._isSearching\">\n <div class=\"ionic-selectable-spinner-background\"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf=\"selectComponent._searchText\"\n (click)=\"selectComponent._select(selectComponent._searchText)\"\n class=\"ionic-selectable-item searchTextItem\"\n [ngClass]=\"{ 'ionic-selectable-item-is-selected': selectComponent._isItemSelected(selectComponent._searchText) }\">\n <span *ngIf=\"!selectComponent.itemTemplate\">\n {{selectComponent._formatItem(selectComponent._searchText)}}\n </span>\n <ion-icon name=\"add-circle\" style=\"color: green; padding-left: 10px; padding-top: 5px\"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf=\"!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems\">\n <ion-item-group *ngFor=\"let group of selectComponent._filteredGroups\"\n class=\"ionic-selectable-group\">\n <ion-item-divider *ngIf=\"selectComponent._hasGroups\"\n [color]=\"selectComponent.groupColor ? selectComponent.groupColor : null\">\n <!-- Use span for groupTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.groupTemplate\"\n [ngTemplateOutlet]=\"selectComponent.groupTemplate\"\n [ngTemplateOutletContext]=\"{ group: group }\">\n </span>\n <span *ngIf=\"!selectComponent.groupTemplate\">\n {{group.text}}\n </span>\n <div *ngIf=\"selectComponent.groupEndTemplate\" item-right>\n <div [ngTemplateOutlet]=\"selectComponent.groupEndTemplate\"\n [ngTemplateOutletContext]=\"{ group: group }\">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor=\"let item of group.items\"\n (click)=\"selectComponent._select(item)\" class=\"ionic-selectable-item\"\n [ngClass]=\"{\n 'ionic-selectable-item-is-selected': selectComponent._isItemSelected(item),\n 'ionic-selectable-item-is-disabled': selectComponent._isItemDisabled(item)\n }\" [disabled]=\"selectComponent._isItemDisabled(item)\">\n <!-- Use span for itemTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.itemTemplate\"\n [ngTemplateOutlet]=\"selectComponent.itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <span *ngIf=\"!selectComponent.itemTemplate\">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf=\"selectComponent.itemEndTemplate\" item-right>\n <div [ngTemplateOutlet]=\"selectComponent.itemEndTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </div>\n </div>\n <span *ngIf=\"selectComponent.itemIconTemplate\" item-left\n class=\"ionic-selectable-item-icon-template\"\n [ngTemplateOutlet]=\"selectComponent.itemIconTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <ion-icon *ngIf=\"!selectComponent.itemIconTemplate\"\n [name]=\"selectComponent._isItemSelected(item) ? 'checkmark-circle' : 'radio-button-off'\"\n [color]=\"selectComponent._isItemSelected(item) ? 'primary' : 'daek'\"\n item-left>\n </ion-icon>\n <button *ngIf=\"selectComponent.canSaveItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._saveItem($event, item)\">\n <ion-icon name=\"md-create\"></ion-icon>\n </button>\n <button *ngIf=\"selectComponent.canDeleteItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._deleteItemClick($event, item)\">\n <ion-icon name=\"md-trash\"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n <!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. -->\n <div *ngIf=\"!selectComponent._hasFilteredItems\">\n <span *ngIf=\"selectComponent.searchFailTemplate\"\n [ngTemplateOutlet]=\"selectComponent.searchFailTemplate\">\n </span>\n <div *ngIf=\"!selectComponent.searchFailTemplate\" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf=\"!selectComponent.hasVirtualScroll\"\n [enabled]=\"selectComponent.hasInfiniteScroll\"\n (ionInfinite)=\"selectComponent._getMoreItems($event)\">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf=\"selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems\"\n [virtualScroll]=\"selectComponent._filteredGroups[0].items\"\n [approxItemHeight]=\"selectComponent.virtualScrollApproxItemHeight\"\n [approxItemWidth]=\"selectComponent.virtualScrollApproxItemWidth\"\n [bufferRatio]=\"selectComponent.virtualScrollBufferRatio\"\n [headerFn]=\"selectComponent.virtualScrollHeaderFn\">\n <ion-item-divider *virtualHeader=\"let header\"\n [color]=\"selectComponent.groupColor ? selectComponent.groupColor : null\">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem=\"let item\"\n (click)=\"selectComponent._select(item)\" class=\"ionic-selectable-item\"\n [ngClass]=\"{\n 'ionic-selectable-item-is-selected': selectComponent._isItemSelected(item),\n 'ionic-selectable-item-is-disabled': selectComponent._isItemDisabled(item)\n }\" [disabled]=\"selectComponent._isItemDisabled(item)\">\n <!-- Use span for itemTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.itemTemplate\"\n [ngTemplateOutlet]=\"selectComponent.itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <span *ngIf=\"!selectComponent.itemTemplate\">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf=\"selectComponent.itemEndTemplate\" item-right>\n <div [ngTemplateOutlet]=\"selectComponent.itemEndTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </div>\n </div>\n <span *ngIf=\"selectComponent.itemIconTemplate\" item-left\n class=\"ionic-selectable-item-icon-template\"\n [ngTemplateOutlet]=\"selectComponent.itemIconTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <ion-icon *ngIf=\"!selectComponent.itemIconTemplate\"\n [name]=\"selectComponent._isItemSelected(item) ? 'checkmark-circle' : 'radio-button-off'\"\n [color]=\"selectComponent._isItemSelected(item) ? 'primary' : 'daek'\"\n item-left>\n </ion-icon>\n <button *ngIf=\"selectComponent.canSaveItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._saveItem($event, item)\">\n <ion-icon name=\"md-create\"></ion-icon>\n </button>\n <button *ngIf=\"selectComponent.canDeleteItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._deleteItemClick($event, item)\">\n <ion-icon name=\"md-trash\"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class=\"ionic-selectable-add-item-template\"\n *ngIf=\"selectComponent._isAddItemTemplateVisible\"\n [ngStyle]=\"{ 'top.px': _header.offsetHeight }\">\n <span [ngTemplateOutlet]=\"selectComponent.addItemTemplate\"\n [ngTemplateOutletContext]=\"{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }\">\n </span>\n</div>\n<ion-footer\n *ngIf=\"selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate\"\n [ngStyle]=\"{ 'visibility': selectComponent._isFooterVisible ? 'initial' : 'hidden' }\">\n <ion-toolbar *ngIf=\"!selectComponent.footerTemplate\">\n <ion-row>\n <ion-col *ngIf=\"selectComponent.canClear\">\n <button ion-button full no-margin (click)=\"selectComponent._clear()\"\n [disabled]=\"!selectComponent._selectedItems.length\">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf=\"selectComponent.canAddItem\">\n <button ion-button full no-margin\n (click)=\"selectComponent._addItemClick()\">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf=\"selectComponent.isMultiple || selectComponent.hasConfirmButton\">\n <button ion-button full no-margin (click)=\"selectComponent._confirm()\"\n [disabled]=\"!selectComponent.isConfirmButtonEnabled\">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf=\"selectComponent.footerTemplate\"\n [ngTemplateOutlet]=\"selectComponent.footerTemplate\">\n </div>\n</ion-footer>\n"}]}],"members":{"_cssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal"]}]}],"_canClearCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-can-clear"]}]}],"_isMultipleCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-is-multiple"]}]}],"_isSearchingCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-is-searching"]}]}],"_isAddItemTemplateVisibleCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-is-add-item-template-visible"]}]}],"_isIos":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-ios"]}]}],"_isMD":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-md"]}]}],"_searchbarComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["searchbarComponent"]}]}],"_content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":[{"__symbolic":"reference","module":"ionic-angular","name":"Content"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ionic-angular","name":"NavParams"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"ngAfterViewInit":[{"__symbolic":"method"}]}},"IonicSelectablePlaceholderTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectablePlaceholderTemplate]"}]}],"members":{}},"IonicSelectableSearchFailTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableSearchFailTemplate]"}]}],"members":{}},"IonicSelectableTitleTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableTitleTemplate]"}]}],"members":{}},"IonicSelectableValueTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableValueTemplate]"}]}],"members":{}},"IonicSelectableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ionic-selectable","template":"<div class=\"ionic-selectable-value\">\n <div *ngIf=\"valueTemplate && _valueItems.length && isMultiple\"\n [ngTemplateOutlet]=\"valueTemplate\"\n [ngTemplateOutletContext]=\"{ value: _valueItems }\">\n </div>\n <div class=\"ionic-selectable-value-item\"\n *ngIf=\"valueTemplate && _valueItems.length && !isMultiple\">\n <div [ngTemplateOutlet]=\"valueTemplate\"\n [ngTemplateOutletContext]=\"{ value: _valueItems[0] }\">\n </div>\n </div>\n <span *ngIf=\"!valueTemplate && _valueItems.length\">\n <div class=\"ionic-selectable-value-item\"\n *ngFor=\"let valueItem of _valueItems\">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf=\"_hasPlaceholder && placeholderTemplate\"\n class=\"ionic-selectable-value-item\">\n <div [ngTemplateOutlet]=\"placeholderTemplate\">\n </div>\n </div>\n <div class=\"ionic-selectable-value-item\"\n *ngIf=\"_hasPlaceholder && !placeholderTemplate\">\n {{placeholder}}\n </div>\n</div>\n<div class=\"ionic-selectable-icon\">\n <div class=\"ionic-selectable-icon-inner\"></div>\n</div>\n<button aria-haspopup=\"true\" ion-button=\"item-cover\" class=\"item-cover\"\n [disabled]=\"!isEnabled\">\n</button>\n","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR"},"useExisting":{"__symbolic":"reference","name":"IonicSelectableComponent"},"multi":true}]}]}],"members":{"_cssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable"]}]}],"_isIos":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-ios"]}]}],"_isMD":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-md"]}]}],"_isMultipleCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-is-multiple"]}]}],"_hasValueCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-has-value"]}]}],"_hasPlaceholderCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-has-placeholder"]}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"itemsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"isEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-is-enabled"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isEnabled"]}]}],"shouldBackdropClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["shouldBackdropClose"]}]}],"modalCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"modalEnterAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"modalLeaveAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"isConfirmButtonEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isConfirmButtonEnabled"]}]}],"hasConfirmButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["hasConfirmButton"]}]}],"itemValueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"itemTextField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"groupValueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"groupTextField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"isOnSearchEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isOnSearchEnabled"]}]}],"canClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-can-clear"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["canClear"]}]}],"hasInfiniteScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hasVirtualScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollApproxItemHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollApproxItemWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollBufferRatio":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollHeaderFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"searchPlaceholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"isMultiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isMultiple"]}]}],"searchFailText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"clearButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"addButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"confirmButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"closeButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"focusSearchbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"groupColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"onChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSearchFail":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSearchSuccess":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onInfiniteScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onOpen":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"valueTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableValueTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"itemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableItemTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"itemEndTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableItemEndTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"titleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableTitleTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"placeholderTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectablePlaceholderTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"messageTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableMessageTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"groupTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableGroupTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"groupEndTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableGroupEndTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"closeButtonTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableCloseButtonTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"searchFailTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableSearchFailTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"addItemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableAddItemTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"footerTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableFooterTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"headerTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableHeaderTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"itemIconTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableItemIconTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"searchDebounce":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabledItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"shouldStoreItemValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canSaveItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canDeleteItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canAddItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["canAddItem"]}]}],"onSaveItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onDeleteItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onAddItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional"}}],null,null],"parameters":[{"__symbolic":"reference","module":"ionic-angular","name":"ModalController"},{"__symbolic":"reference","module":"ionic-angular","name":"Form"},{"__symbolic":"reference","module":"ionic-angular","name":"Platform"},{"__symbolic":"reference","module":"ionic-angular","name":"Item"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"initFocus":[{"__symbolic":"method"}],"enableIonItem":[{"__symbolic":"method"}],"_click":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["click",["$event"]]}]}],"_isNullOrWhiteSpace":[{"__symbolic":"method"}],"_setHasSearchText":[{"__symbolic":"method"}],"_hasOnSearch":[{"__symbolic":"method"}],"_hasOnSaveItem":[{"__symbolic":"method"}],"_hasOnAddItem":[{"__symbolic":"method"}],"_hasOnDeleteItem":[{"__symbolic":"method"}],"_emitValueChange":[{"__symbolic":"method"}],"_emitSearch":[{"__symbolic":"method"}],"_emitOnSelect":[{"__symbolic":"method"}],"_emitOnClear":[{"__symbolic":"method"}],"_emitOnSearchSuccessOrFail":[{"__symbolic":"method"}],"_formatItem":[{"__symbolic":"method"}],"_formatValueItem":[{"__symbolic":"method"}],"_getItemValue":[{"__symbolic":"method"}],"_getStoredItemValue":[{"__symbolic":"method"}],"_filterItems":[{"__symbolic":"method"}],"_isItemDisabled":[{"__symbolic":"method"}],"_isItemSelected":[{"__symbolic":"method"}],"_addSelectedItem":[{"__symbolic":"method"}],"_deleteSelectedItem":[{"__symbolic":"method"}],"_saveItem":[{"__symbolic":"method"}],"_deleteItemClick":[{"__symbolic":"method"}],"_addItemClick":[{"__symbolic":"method"}],"_close":[{"__symbolic":"method"}],"_clear":[{"__symbolic":"method"}],"_getMoreItems":[{"__symbolic":"method"}],"_setItemsToConfirm":[{"__symbolic":"method"}],"_doSelect":[{"__symbolic":"method"}],"_select":[{"__symbolic":"method"}],"_confirm":[{"__symbolic":"method"}],"_getLabelText":[{"__symbolic":"method"}],"_areGroupsEmpty":[{"__symbolic":"method"}],"_countFooterButtons":[{"__symbolic":"method"}],"_setItems":[{"__symbolic":"method"}],"_getPropertyValue":[{"__symbolic":"method"}],"_setIonItemHasFocus":[{"__symbolic":"method"}],"_setIonItemHasValue":[{"__symbolic":"method"}],"_setHasPlaceholder":[{"__symbolic":"method"}],"_setIonItemValidityClasses":[{"__symbolic":"method"}],"_toggleAddItemTemplate":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"addItem":[{"__symbolic":"method"}],"deleteItem":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"toggleItems":[{"__symbolic":"method"}],"scrollToTop":[{"__symbolic":"method"}],"scrollToBottom":[{"__symbolic":"method"}],"startSearch":[{"__symbolic":"method"}],"endSearch":[{"__symbolic":"method"}],"enableInfiniteScroll":[{"__symbolic":"method"}],"disableInfiniteScroll":[{"__symbolic":"method"}],"endInfiniteScroll":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"showLoading":[{"__symbolic":"method"}],"hideLoading":[{"__symbolic":"method"}],"showAddItemTemplate":[{"__symbolic":"method"}],"hideAddItemTemplate":[{"__symbolic":"method"}]}}},"origins":{"IonicSelectableModule":"./src/app/components/ionic-selectable/ionic-selectable.module","IonicSelectableAddItemTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-add-item-template.directive","IonicSelectableCloseButtonTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-close-button-template.directive","IonicSelectableFooterTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-footer-template.directive","IonicSelectableGroupEndTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-group-end-template.directive","IonicSelectableGroupTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-group-template.directive","IonicSelectableHeaderTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-header-template.directive","IonicSelectableItemEndTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-item-end-template.directive","IonicSelectableItemIconTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-item-icon-template.directive","IonicSelectableItemTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-item-template.directive","IonicSelectableMessageTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-message-template.directive","IonicSelectableModalComponent":"./src/app/components/ionic-selectable/ionic-selectable-modal.component","IonicSelectablePlaceholderTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-placeholder-template.directive","IonicSelectableSearchFailTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-search-fail-template.directive","IonicSelectableTitleTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-title-template.directive","IonicSelectableValueTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-value-template.directive","IonicSelectableComponent":"./src/app/components/ionic-selectable/ionic-selectable.component"},"importAs":"ionic-selectable-v3"}
{"__symbolic":"module","version":4,"metadata":{"IonicSelectableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ionic-angular","name":"IonicPageModule"},"member":"forChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableComponent"}]},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ionic-angular","name":"IonicPageModule"},"member":"forChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableModalComponent"}]}],"declarations":[{"__symbolic":"reference","name":"IonicSelectableComponent"},{"__symbolic":"reference","name":"IonicSelectableModalComponent"},{"__symbolic":"reference","name":"IonicSelectableValueTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableTitleTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectablePlaceholderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableMessageTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableCloseButtonTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableSearchFailTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableAddItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableFooterTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableHeaderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemIconTemplateDirective"}],"exports":[{"__symbolic":"reference","name":"IonicSelectableComponent"},{"__symbolic":"reference","name":"IonicSelectableModalComponent"},{"__symbolic":"reference","name":"IonicSelectableValueTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableTitleTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectablePlaceholderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableMessageTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableGroupEndTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableCloseButtonTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableSearchFailTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableAddItemTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableFooterTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableHeaderTemplateDirective"},{"__symbolic":"reference","name":"IonicSelectableItemIconTemplateDirective"}],"entryComponents":[{"__symbolic":"reference","name":"IonicSelectableComponent"},{"__symbolic":"reference","name":"IonicSelectableModalComponent"}]}]}],"members":{}},"IonicSelectableAddItemTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableAddItemTemplate]"}]}],"members":{}},"IonicSelectableCloseButtonTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableCloseButtonTemplate]"}]}],"members":{}},"IonicSelectableFooterTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableFooterTemplate]"}]}],"members":{}},"IonicSelectableGroupEndTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableGroupEndTemplate]"}]}],"members":{}},"IonicSelectableGroupTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableGroupTemplate]"}]}],"members":{}},"IonicSelectableHeaderTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableHeaderTemplate]"}]}],"members":{}},"IonicSelectableItemEndTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableItemEndTemplate]"}]}],"members":{}},"IonicSelectableItemIconTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableItemIconTemplate]"}]}],"members":{}},"IonicSelectableItemTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableItemTemplate]"}]}],"members":{}},"IonicSelectableMessageTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableMessageTemplate]"}]}],"members":{}},"IonicSelectableModalComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ionic-selectable-modal","template":"<ion-header>\n <ion-navbar *ngIf=\"!selectComponent.headerTemplate\"\n [color]=\"selectComponent.headerColor ? selectComponent.headerColor : null\">\n <ion-title>\n <!-- Use span for titleTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.titleTemplate\"\n [ngTemplateOutlet]=\"selectComponent.titleTemplate\">\n </span>\n <span *ngIf=\"!selectComponent.titleTemplate\">\n {{selectComponent.label}}\n </span>\n </ion-title>\n <ion-buttons start>\n <button ion-button (click)=\"selectComponent._close()\">\n <span *ngIf=\"selectComponent.closeButtonTemplate\"\n [ngTemplateOutlet]=\"selectComponent.closeButtonTemplate\">\n </span>\n <span *ngIf=\"!selectComponent.closeButtonTemplate\" ion-text\n showWhen=\"ios\">\n {{selectComponent.closeButtonText}}\n </span>\n <ion-icon *ngIf=\"!selectComponent.closeButtonTemplate\" name=\"md-close\"\n hideWhen=\"ios\">\n </ion-icon>\n </button>\n </ion-buttons>\n </ion-navbar>\n <div *ngIf=\"selectComponent.headerTemplate\"\n [ngTemplateOutlet]=\"selectComponent.headerTemplate\">\n </div>\n <ion-toolbar>\n <ion-searchbar #searchbarComponent\n [(ngModel)]=\"selectComponent._searchText\"\n (ionInput)=\"selectComponent._filterItems()\"\n [placeholder]=\"selectComponent.searchPlaceholder\"\n [debounce]=\"selectComponent.searchDebounce\">\n </ion-searchbar>\n <div class=\"ionic-selectable-message\"\n *ngIf=\"selectComponent.messageTemplate\">\n <div [ngTemplateOutlet]=\"selectComponent.messageTemplate\">\n </div>\n </div>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"ionic-selectable-spinner\" *ngIf=\"selectComponent._isSearching\">\n <div class=\"ionic-selectable-spinner-background\"></div>\n <ion-spinner></ion-spinner>\n </div>\n\n <button ion-item detail-none\n *ngIf=\"selectComponent._searchText\"\n (click)=\"selectComponent._select(selectComponent._searchText)\"\n class=\"ionic-selectable-item searchTextItem\"\n [ngClass]=\"{ 'ionic-selectable-item-is-selected': selectComponent._isItemSelected(selectComponent._searchText) }\">\n <span *ngIf=\"!selectComponent.itemTemplate\">\n Use typed text\n </span>\n <ion-icon class=\"addCustomItemIcon\" name=\"add-circle\"></ion-icon>\n </button>\n <ion-list no-margin\n *ngIf=\"!selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems\">\n <ion-item-group *ngFor=\"let group of selectComponent._filteredGroups\"\n class=\"ionic-selectable-group\">\n <ion-item-divider *ngIf=\"selectComponent._hasGroups\"\n [color]=\"selectComponent.groupColor ? selectComponent.groupColor : null\">\n <!-- Use span for groupTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.groupTemplate\"\n [ngTemplateOutlet]=\"selectComponent.groupTemplate\"\n [ngTemplateOutletContext]=\"{ group: group }\">\n </span>\n <span *ngIf=\"!selectComponent.groupTemplate\">\n {{group.text}}\n </span>\n <div *ngIf=\"selectComponent.groupEndTemplate\" item-right>\n <div [ngTemplateOutlet]=\"selectComponent.groupEndTemplate\"\n [ngTemplateOutletContext]=\"{ group: group }\">\n </div>\n </div>\n </ion-item-divider>\n <button ion-item detail-none *ngFor=\"let item of group.items\"\n (click)=\"selectComponent._select(item)\" class=\"ionic-selectable-item\"\n [ngClass]=\"{\n 'ionic-selectable-item-is-selected': selectComponent._isItemSelected(item),\n 'ionic-selectable-item-is-disabled': selectComponent._isItemDisabled(item)\n }\" [disabled]=\"selectComponent._isItemDisabled(item)\">\n <!-- Use span for itemTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.itemTemplate\"\n [ngTemplateOutlet]=\"selectComponent.itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <span *ngIf=\"!selectComponent.itemTemplate\">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf=\"selectComponent.itemEndTemplate\" item-right>\n <div [ngTemplateOutlet]=\"selectComponent.itemEndTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </div>\n </div>\n <span *ngIf=\"selectComponent.itemIconTemplate\" item-left\n class=\"ionic-selectable-item-icon-template\"\n [ngTemplateOutlet]=\"selectComponent.itemIconTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <ion-icon *ngIf=\"!selectComponent.itemIconTemplate\"\n [name]=\"selectComponent._isItemSelected(item) ? 'checkmark-circle' : 'radio-button-off'\"\n [color]=\"selectComponent._isItemSelected(item) ? 'primary' : 'daek'\"\n item-left>\n </ion-icon>\n <button *ngIf=\"selectComponent.canSaveItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._saveItem($event, item)\">\n <ion-icon name=\"md-create\"></ion-icon>\n </button>\n <button *ngIf=\"selectComponent.canDeleteItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._deleteItemClick($event, item)\">\n <ion-icon name=\"md-trash\"></ion-icon>\n </button>\n </button>\n </ion-item-group>\n </ion-list>\n <!-- Fail text should be above InfiniteScroll to avoid a gap when no items are found. -->\n <div *ngIf=\"!selectComponent._hasFilteredItems\">\n <span *ngIf=\"selectComponent.searchFailTemplate\"\n [ngTemplateOutlet]=\"selectComponent.searchFailTemplate\">\n </span>\n <div *ngIf=\"!selectComponent.searchFailTemplate\" margin>\n {{selectComponent.searchFailText}}\n </div>\n </div>\n <ion-infinite-scroll *ngIf=\"!selectComponent.hasVirtualScroll\"\n [enabled]=\"selectComponent.hasInfiniteScroll\"\n (ionInfinite)=\"selectComponent._getMoreItems($event)\">\n <ion-infinite-scroll-content></ion-infinite-scroll-content>\n </ion-infinite-scroll>\n <ion-list no-margin\n *ngIf=\"selectComponent.hasVirtualScroll && selectComponent._hasFilteredItems\"\n [virtualScroll]=\"selectComponent._filteredGroups[0].items\"\n [approxItemHeight]=\"selectComponent.virtualScrollApproxItemHeight\"\n [approxItemWidth]=\"selectComponent.virtualScrollApproxItemWidth\"\n [bufferRatio]=\"selectComponent.virtualScrollBufferRatio\"\n [headerFn]=\"selectComponent.virtualScrollHeaderFn\">\n <ion-item-divider *virtualHeader=\"let header\"\n [color]=\"selectComponent.groupColor ? selectComponent.groupColor : null\">\n {{header}}\n </ion-item-divider>\n <button ion-item detail-none *virtualItem=\"let item\"\n (click)=\"selectComponent._select(item)\" class=\"ionic-selectable-item\"\n [ngClass]=\"{\n 'ionic-selectable-item-is-selected': selectComponent._isItemSelected(item),\n 'ionic-selectable-item-is-disabled': selectComponent._isItemDisabled(item)\n }\" [disabled]=\"selectComponent._isItemDisabled(item)\">\n <!-- Use span for itemTemplate to preserve Ionic ellipsis styles. -->\n <span *ngIf=\"selectComponent.itemTemplate\"\n [ngTemplateOutlet]=\"selectComponent.itemTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <span *ngIf=\"!selectComponent.itemTemplate\">\n {{selectComponent._formatItem(item)}}\n </span>\n <div *ngIf=\"selectComponent.itemEndTemplate\" item-right>\n <div [ngTemplateOutlet]=\"selectComponent.itemEndTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </div>\n </div>\n <span *ngIf=\"selectComponent.itemIconTemplate\" item-left\n class=\"ionic-selectable-item-icon-template\"\n [ngTemplateOutlet]=\"selectComponent.itemIconTemplate\"\n [ngTemplateOutletContext]=\"{ item: item, isItemSelected: selectComponent._isItemSelected(item) }\">\n </span>\n <ion-icon *ngIf=\"!selectComponent.itemIconTemplate\"\n [name]=\"selectComponent._isItemSelected(item) ? 'checkmark-circle' : 'radio-button-off'\"\n [color]=\"selectComponent._isItemSelected(item) ? 'primary' : 'daek'\"\n item-left>\n </ion-icon>\n <button *ngIf=\"selectComponent.canSaveItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._saveItem($event, item)\">\n <ion-icon name=\"md-create\"></ion-icon>\n </button>\n <button *ngIf=\"selectComponent.canDeleteItem\"\n class=\"ionic-selectable-item-button\" ion-button icon-only item-end\n outline (click)=\"selectComponent._deleteItemClick($event, item)\">\n <ion-icon name=\"md-trash\"></ion-icon>\n </button>\n </button>\n </ion-list>\n</ion-content>\n<div class=\"ionic-selectable-add-item-template\"\n *ngIf=\"selectComponent._isAddItemTemplateVisible\"\n [ngStyle]=\"{ 'top.px': _header.offsetHeight }\">\n <span [ngTemplateOutlet]=\"selectComponent.addItemTemplate\"\n [ngTemplateOutletContext]=\"{ item: selectComponent._itemToAdd, isAdd: selectComponent._itemToAdd === null }\">\n </span>\n</div>\n<ion-footer\n *ngIf=\"selectComponent._footerButtonsCount > 0 || selectComponent.footerTemplate\"\n [ngStyle]=\"{ 'visibility': selectComponent._isFooterVisible ? 'initial' : 'hidden' }\">\n <ion-toolbar *ngIf=\"!selectComponent.footerTemplate\">\n <ion-row>\n <ion-col *ngIf=\"selectComponent.canClear\">\n <button ion-button full no-margin (click)=\"selectComponent._clear()\"\n [disabled]=\"!selectComponent._selectedItems.length\">\n {{selectComponent.clearButtonText}}\n </button>\n </ion-col>\n <ion-col *ngIf=\"selectComponent.canAddItem\">\n <button ion-button full no-margin\n (click)=\"selectComponent._addItemClick()\">\n {{selectComponent.addButtonText}}\n </button>\n </ion-col>\n <ion-col\n *ngIf=\"selectComponent.isMultiple || selectComponent.hasConfirmButton\">\n <button ion-button full no-margin (click)=\"selectComponent._confirm()\"\n [disabled]=\"!selectComponent.isConfirmButtonEnabled\">\n {{selectComponent.confirmButtonText}}\n </button>\n </ion-col>\n </ion-row>\n </ion-toolbar>\n <div *ngIf=\"selectComponent.footerTemplate\"\n [ngTemplateOutlet]=\"selectComponent.footerTemplate\">\n </div>\n</ion-footer>\n"}]}],"members":{"_cssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal"]}]}],"_canClearCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-can-clear"]}]}],"_isMultipleCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-is-multiple"]}]}],"_isSearchingCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-is-searching"]}]}],"_isAddItemTemplateVisibleCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-is-add-item-template-visible"]}]}],"_isIos":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-ios"]}]}],"_isMD":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-modal-md"]}]}],"_searchbarComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":["searchbarComponent"]}]}],"_content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild"},"arguments":[{"__symbolic":"reference","module":"ionic-angular","name":"Content"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ionic-angular","name":"NavParams"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"ngAfterViewInit":[{"__symbolic":"method"}]}},"IonicSelectablePlaceholderTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectablePlaceholderTemplate]"}]}],"members":{}},"IonicSelectableSearchFailTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableSearchFailTemplate]"}]}],"members":{}},"IonicSelectableTitleTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableTitleTemplate]"}]}],"members":{}},"IonicSelectableValueTemplateDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ionicSelectableValueTemplate]"}]}],"members":{}},"IonicSelectableComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ionic-selectable","template":"<div class=\"ionic-selectable-value\">\n <div *ngIf=\"valueTemplate && _valueItems.length && isMultiple\"\n [ngTemplateOutlet]=\"valueTemplate\"\n [ngTemplateOutletContext]=\"{ value: _valueItems }\">\n </div>\n <div class=\"ionic-selectable-value-item\"\n *ngIf=\"valueTemplate && _valueItems.length && !isMultiple\">\n <div [ngTemplateOutlet]=\"valueTemplate\"\n [ngTemplateOutletContext]=\"{ value: _valueItems[0] }\">\n </div>\n </div>\n <span *ngIf=\"!valueTemplate && _valueItems.length\">\n <div class=\"ionic-selectable-value-item\"\n *ngFor=\"let valueItem of _valueItems\">\n {{_formatValueItem(valueItem)}}\n </div>\n </span>\n <div *ngIf=\"_hasPlaceholder && placeholderTemplate\"\n class=\"ionic-selectable-value-item\">\n <div [ngTemplateOutlet]=\"placeholderTemplate\">\n </div>\n </div>\n <div class=\"ionic-selectable-value-item\"\n *ngIf=\"_hasPlaceholder && !placeholderTemplate\">\n {{placeholder}}\n </div>\n</div>\n<div class=\"ionic-selectable-icon\">\n <div class=\"ionic-selectable-icon-inner\"></div>\n</div>\n<button aria-haspopup=\"true\" ion-button=\"item-cover\" class=\"item-cover\"\n [disabled]=\"!isEnabled\">\n</button>\n","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR"},"useExisting":{"__symbolic":"reference","name":"IonicSelectableComponent"},"multi":true}]}]}],"members":{"_cssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable"]}]}],"_isIos":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-ios"]}]}],"_isMD":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-md"]}]}],"_isMultipleCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-is-multiple"]}]}],"_hasValueCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-has-value"]}]}],"_hasPlaceholderCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-has-placeholder"]}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"itemsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"isEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-is-enabled"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isEnabled"]}]}],"shouldBackdropClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["shouldBackdropClose"]}]}],"modalCssClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"modalEnterAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"modalLeaveAnimation":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"isConfirmButtonEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isConfirmButtonEnabled"]}]}],"hasConfirmButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["hasConfirmButton"]}]}],"itemValueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"itemTextField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"groupValueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"groupTextField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"isOnSearchEnabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isOnSearchEnabled"]}]}],"canClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding"},"arguments":["class.ionic-selectable-can-clear"]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["canClear"]}]}],"hasInfiniteScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"hasVirtualScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollApproxItemHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollApproxItemWidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollBufferRatio":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"virtualScrollHeaderFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"searchPlaceholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"isMultiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["isMultiple"]}]}],"searchFailText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"clearButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"addButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"confirmButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"closeButtonText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"focusSearchbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"headerColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"groupColor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"onChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSearchFail":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSearchSuccess":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onInfiniteScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onOpen":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClose":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onClear":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"valueTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableValueTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"itemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableItemTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"itemEndTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableItemEndTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"titleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableTitleTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"placeholderTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectablePlaceholderTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"messageTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableMessageTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"groupTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableGroupTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"groupEndTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableGroupEndTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"closeButtonTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableCloseButtonTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"searchFailTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableSearchFailTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"addItemTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableAddItemTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"footerTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableFooterTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"headerTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableHeaderTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"itemIconTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild"},"arguments":[{"__symbolic":"reference","name":"IonicSelectableItemIconTemplateDirective"},{"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef"}}]}]}],"searchDebounce":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"disabledItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"shouldStoreItemValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canSaveItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canDeleteItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"canAddItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"},"arguments":["canAddItem"]}]}],"onSaveItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onDeleteItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onAddItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional"}}],null,null],"parameters":[{"__symbolic":"reference","module":"ionic-angular","name":"ModalController"},{"__symbolic":"reference","module":"ionic-angular","name":"Form"},{"__symbolic":"reference","module":"ionic-angular","name":"Platform"},{"__symbolic":"reference","module":"ionic-angular","name":"Item"},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"initFocus":[{"__symbolic":"method"}],"enableIonItem":[{"__symbolic":"method"}],"_click":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["click",["$event"]]}]}],"_isNullOrWhiteSpace":[{"__symbolic":"method"}],"_setHasSearchText":[{"__symbolic":"method"}],"_hasOnSearch":[{"__symbolic":"method"}],"_hasOnSaveItem":[{"__symbolic":"method"}],"_hasOnAddItem":[{"__symbolic":"method"}],"_hasOnDeleteItem":[{"__symbolic":"method"}],"_emitValueChange":[{"__symbolic":"method"}],"_emitSearch":[{"__symbolic":"method"}],"_emitOnSelect":[{"__symbolic":"method"}],"_emitOnClear":[{"__symbolic":"method"}],"_emitOnSearchSuccessOrFail":[{"__symbolic":"method"}],"_formatItem":[{"__symbolic":"method"}],"_formatValueItem":[{"__symbolic":"method"}],"_getItemValue":[{"__symbolic":"method"}],"_getStoredItemValue":[{"__symbolic":"method"}],"_filterItems":[{"__symbolic":"method"}],"_isItemDisabled":[{"__symbolic":"method"}],"_isItemSelected":[{"__symbolic":"method"}],"_addSelectedItem":[{"__symbolic":"method"}],"_deleteSelectedItem":[{"__symbolic":"method"}],"_saveItem":[{"__symbolic":"method"}],"_deleteItemClick":[{"__symbolic":"method"}],"_addItemClick":[{"__symbolic":"method"}],"_close":[{"__symbolic":"method"}],"_clear":[{"__symbolic":"method"}],"_getMoreItems":[{"__symbolic":"method"}],"_setItemsToConfirm":[{"__symbolic":"method"}],"_doSelect":[{"__symbolic":"method"}],"_select":[{"__symbolic":"method"}],"_confirm":[{"__symbolic":"method"}],"_getLabelText":[{"__symbolic":"method"}],"_areGroupsEmpty":[{"__symbolic":"method"}],"_countFooterButtons":[{"__symbolic":"method"}],"_setItems":[{"__symbolic":"method"}],"_getPropertyValue":[{"__symbolic":"method"}],"_setIonItemHasFocus":[{"__symbolic":"method"}],"_setIonItemHasValue":[{"__symbolic":"method"}],"_setHasPlaceholder":[{"__symbolic":"method"}],"_setIonItemValidityClasses":[{"__symbolic":"method"}],"_toggleAddItemTemplate":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"addItem":[{"__symbolic":"method"}],"deleteItem":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}],"toggleItems":[{"__symbolic":"method"}],"scrollToTop":[{"__symbolic":"method"}],"scrollToBottom":[{"__symbolic":"method"}],"startSearch":[{"__symbolic":"method"}],"endSearch":[{"__symbolic":"method"}],"enableInfiniteScroll":[{"__symbolic":"method"}],"disableInfiniteScroll":[{"__symbolic":"method"}],"endInfiniteScroll":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"showLoading":[{"__symbolic":"method"}],"hideLoading":[{"__symbolic":"method"}],"showAddItemTemplate":[{"__symbolic":"method"}],"hideAddItemTemplate":[{"__symbolic":"method"}]}}},"origins":{"IonicSelectableModule":"./src/app/components/ionic-selectable/ionic-selectable.module","IonicSelectableAddItemTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-add-item-template.directive","IonicSelectableCloseButtonTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-close-button-template.directive","IonicSelectableFooterTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-footer-template.directive","IonicSelectableGroupEndTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-group-end-template.directive","IonicSelectableGroupTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-group-template.directive","IonicSelectableHeaderTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-header-template.directive","IonicSelectableItemEndTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-item-end-template.directive","IonicSelectableItemIconTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-item-icon-template.directive","IonicSelectableItemTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-item-template.directive","IonicSelectableMessageTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-message-template.directive","IonicSelectableModalComponent":"./src/app/components/ionic-selectable/ionic-selectable-modal.component","IonicSelectablePlaceholderTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-placeholder-template.directive","IonicSelectableSearchFailTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-search-fail-template.directive","IonicSelectableTitleTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-title-template.directive","IonicSelectableValueTemplateDirective":"./src/app/components/ionic-selectable/ionic-selectable-value-template.directive","IonicSelectableComponent":"./src/app/components/ionic-selectable/ionic-selectable.component"},"importAs":"ionic-selectable-v3"}
{
"version": "3.4.21",
"version": "3.4.22",
"name": "ionic-selectable-v3",

@@ -4,0 +4,0 @@ "title": "Ionic Selectable",

Sorry, the diff of this file is not supported yet

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc