UNPKG

ignite-ui

Version:

Ignite UI for jQuery by Infragistics

1 lines 109 kB
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else{return factory(jQuery)}})(function($){$.ig=$.ig||{};$.ig.locale=$.ig.locale||{};$.ig.locale.en=$.ig.locale.en||{};$.ig.Combo=$.ig.Combo||{};$.ig.locale.en.Combo={noMatchFoundText:"No matches found",dropDownButtonTitle:"Show drop-down",clearButtonTitle:"Clear value",placeHolder:"select...",notSuported:"Operation is not supported.",errorNoSupportedTextsType:"A different filtering text is required. Provide a value that is either a string or an array of strings.",errorUnrecognizedHighlightMatchesMode:"A different highlight matches mode is required. Choose a value between 'multi', 'contains', 'startsWith', 'full' and 'null'.",errorIncorrectGroupingKey:"Grouping key is not correct."};$.ig.Combo.locale=$.ig.Combo.locale||$.ig.locale.en.Combo;return $.ig.locale.en.Combo});"use strict";(function(factory){if(typeof define==="function"&&define.amd){define(["./infragistics.ui.widget","./infragistics.templating","./infragistics.datasource","./infragistics.ui.scroll","./infragistics.ui.validator"],factory)}else{return factory(jQuery)}})(function($){$.widget("ui.igCombo",$.ui.igWidget,{options:{width:null,height:null,dropDownWidth:null,dataSource:null,dataSourceType:null,dataSourceUrl:null,responseTotalRecCountKey:null,responseDataKey:null,responseDataType:null,responseContentType:null,requestType:"GET",valueKey:null,textKey:null,itemTemplate:null,headerTemplate:null,footerTemplate:null,inputName:null,animationShowDuration:100,animationHideDuration:100,dropDownAttachedToBody:true,filteringType:"local",filterExprUrlKey:null,filteringCondition:"contains",filteringLogic:"OR",noMatchFoundText:undefined,dropDownButtonTitle:undefined,clearButtonTitle:undefined,placeHolder:undefined,locale:{noMatchFoundText:undefined,dropDownButtonTitle:undefined,clearButtonTitle:undefined,placeHolder:undefined},loadOnDemandSettings:{enabled:false,pageSize:16},visibleItemsCount:15,mode:"editable",virtualization:false,multiSelection:{enabled:false,addWithKeyModifier:false,showCheckboxes:false,itemSeparator:", "},grouping:{key:null,dir:"asc"},validatorOptions:null,highlightMatchesMode:"multi",caseSensitive:false,autoSelectFirstMatch:true,autoComplete:false,allowCustomValue:false,closeDropDownOnBlur:true,delayInputChangeProcessing:250,tabIndex:null,dropDownOnFocus:false,closeDropDownOnSelect:true,selectItemBySpaceKey:false,initialSelectedItems:[{index:-1,value:null}],preventSubmitOnEnter:true,format:"auto",suppressKeyboard:false,enableClearButton:true,dropDownOrientation:"auto"},events:{rendered:"rendered",dataBinding:"dataBinding",dataBound:"dataBound",filtering:"filtering",filtered:"filtered",itemsRendering:"itemsRendering",itemsRendered:"itemsRendered",dropDownOpening:"dropDownOpening",dropDownOpened:"dropDownOpened",dropDownClosing:"dropDownClosing",dropDownClosed:"dropDownClosed",selectionChanging:"selectionChanging",selectionChanged:"selectionChanged"},css:{comboWrapper:"ui-igcombo-wrapper",combo:"ui-igcombo ui-widget ui-state-default ui-corner-all ui-unselectable",dropDownMode:"ui-igcombo-mode-dropdown",readOnlyMode:"ui-igcombo-mode-readonly",readOnlyListMode:"ui-igcombo-mode-readonlylist",textBox:"ui-igcombo-textbox ui-state-default ui-corner-all",field:"ui-igcombo-field ui-corner-all",fieldHolder:"ui-igcombo-fieldholder",fieldHolderLTR:"ui-igcombo-fieldholder-ltr ui-corner-left",fieldHolderRTL:"ui-igcombo-fieldholder-rtl ui-corner-right",dropDownListRTL:"ig-rtl",button:"ui-igcombo-button ui-state-default ui-unselectable",buttonIcon:"ui-igcombo-buttonicon ui-icon-triangle-1-s ui-icon",buttonLTR:"ui-igcombo-button-ltr ui-corner-right",buttonRTL:"ui-igcombo-button-rtl ui-corner-left",clear:"ui-igcombo-clear ui-unselectable",clearRTL:"ui-igcombo-clear-rtl ui-unselectable",clearHover:"ui-igcombo-clear-hover ui-state-hover",clearIcon:"ui-igcombo-clearicon ui-icon-circle-close ui-icon",dropDown:"ui-igcombo-dropdown ui-widget ui-widget-content ui-corner-all",list:"ui-igcombo-list",listOverflow:"ui-igcombo-list-overflow",listItemHolder:"ui-igcombo-listitemholder",listItem:"ui-igcombo-listitem ui-state-default ui-unselectable",header:"ui-igcombo-header",footer:"ui-igcombo-footer",group:"ui-igcombo-group",groupHeader:"ui-igcombo-group-header ui-state-default ui-unselectable",itemInFocus:"ui-igcombo-item-in-focus",listItemHighlighted:"ui-igcombo-highlight",noMatchFound:"ui-igcombo-nomatchfound",listItemTextWithCheckbox:"ui-igcombo-listitemtextwithcheckbox",checkbox:"ui-igcombo-checkbox ui-state-default ui-corner-all ui-igcheckbox-small",checkboxOff:"ui-icon ui-igcombo-checkbox-off ui-igcheckbox-small-off",checkboxOn:"ui-icon ui-icon-check ui-igcombo-checkbox-on ui-igcheckbox-small-on",hiddenField:"ui-igcombo-hidden-field",hover:"ui-state-hover",active:"ui-state-active",unselectable:"ui-unselectable",noBorder:"ui-igcombo-no-border",scrollHolder:"ui-igcombo-scrollholder ui-unselectable",scroll:"ui-igcombo-scroll ui-unselectable",recordsView:"ui-igcombo-records-view",recordsData:"ui-igcombo-records-data",recordsServer:"ui-igcombo-records-server",recordsServerTotal:"ui-igcombo-records-server-total",loading:"ui-igcombo-loading",hidden:"ui-helper-hidden",disabled:"ui-state-disabled",orientationTop:"ui-igcombo-orientation-top",orientationBottom:"ui-igcombo-orientation-bottom"},RECORDS_VIEW:"{0}",RECORDS_DATA:"{1}",RECORDS_SERVER:"{2}",RECORDS_SERVER_TOTAL:"{3}",_createWidget:function(options){var mode;this._options={$window:$(window),$comboWrapper:null,$combo:null,$input:null,$hiddenInput:null,$fieldCont:null,$clearCont:null,$clearIcon:null,$dropDownBtnCont:null,$dropDownBtnIcon:null,$dropDownCont:null,$dropDownListCont:null,$dropDownList:null,$header:undefined,$footer:undefined,$dropDownScrollCont:null,$dropDownScroll:null,$loading:null,$noMatchFound:null,$itemsToSelectOnShiftUpDown:$(),$itemsToSelectOnShiftClick:$(),selectedData:[],keyNavItemData:null,autoSelectedItemData:null,autoCompleteItemData:null,inputVal:"",highlightElement:"span",ltr:true,dropDownOpened:false,deltaItemsForLoadOnDemand:5,dataBinding:false,shiftKeyCode:16,validator:null,shiftDown:false,nameAttribute:"",internalSelChangeSubs:[],initialDataBinding:true,remoteFilteringTriggerEvt:null,preventInputBlur:false,mouseDownStartedFromListItem:false,cachedData:[],strDataSource:null,updateInputValuesOnRemoteFilter:false,hasFooterVariables:false,hadInputSelectionOnKeydown:false,expression:null,preventItemSeparatorOnFocus:false,preventDropDownOnFocus:false,keyUpTimeout:null,repositionInterval:null,disableScroll:false,cachedGroupLength:null,dropDownModeSearchBy:"",dropDownModeSearchByResetTimeout:null,dropDownModeSearchByResetDelay:1e3,originalOptions:options,checkboxItemTemplate:"<span class='{css.checkbox}'>"+"<span class='{css.checkboxOff}''></span></span>"+"<div class='{css.listItemTextWithCheckbox}'>{innerMarkup}</div>",scrollCallback:null,closingDropDownOnBlur:false,composition:null};if(options){mode=options.mode;if(options.multiSelection&&options.multiSelection.enabled&&options.closeDropDownOnSelect===undefined){options.closeDropDownOnSelect=false}if(mode==="readonly"||mode==="readonlylist"||mode==="dropdown"&&!(options.multiSelection&&options.multiSelection.enabled)&&options.enableClearButton===undefined){options.enableClearButton=false}}this._superApply(arguments)},_create:function(){this._handlers={windowResize:this._windowResize.bind(this),documentMouseUp:this._documentMouseUp.bind(this),inputFocus:this._inputFocus.bind(this),inputBlur:this._inputBlur.bind(this),inputClick:this._inputClick.bind(this),inputKeyDown:this._inputKeyDown.bind(this),inputPaste:this._inputPaste.bind(this),inputKeyUp:this._inputKeyUp.bind(this),inputKeyPress:this._inputKeyPress.bind(this),inputMouseDown:this._inputMouseDown.bind(this),inputCompositionUpdate:this._inputCompositionUpdate.bind(this),inputCompositionEnd:this._inputCompositionEnd.bind(this),inputInput:this._inputInputHandler.bind(this)};this._analyzeOptions();this._analyzeInitialElem();this._render();this.validator();this._attachEvents();this.dataBind();this._initCompositionObject()},_analyzeOptions:function(){var key,firstDataItem,options=this.options,$combo=$(this.element),lod=options.loadOnDemandSettings;if(this.options.dataSource){if(Array.isArray(this.options.dataSource)){firstDataItem=this.options.dataSource[0]}else if(this.options.dataSource&&typeof this.options.dataSource._xmlToArray==="function"&&typeof this.options.dataSource._encodePkParams==="function"){firstDataItem=this.options.dataSource.data()[0]}}if(options.mode!=="editable"&&options.mode!=="dropdown"&&options.mode!=="readonly"&&options.mode!=="readonlylist"){options.mode="editable"}if(lod&&lod.enabled&&lod.pageSize&&options.loadOnDemandSettings.pageSize<5){lod.pageSize=5}else if(lod&&lod.enabled&&!lod.pageSize){lod.pageSize=this.options.visibleItemsCount+1}if(!options.textKey){if(options.valueKey){options.textKey=options.valueKey}else if(firstDataItem&&$.ig.util.getType(firstDataItem)==="object"){for(key in firstDataItem){if(firstDataItem.hasOwnProperty(key)){options.textKey=key;break}}}}if(!options.valueKey){options.valueKey=options.textKey}if(!options.textKey&&!options.valueKey){options.textKey="text";options.valueKey="value"}if(options.filteringType!=="local"&&options.filteringType!=="remote"&&options.filteringType!=="none"){options.filteringType="none"}if($combo.attr("name")&&this._options.originalOptions.inputName===undefined){options.inputName=$combo.attr("name")}if($combo.attr("multiple")==="multiple"&&(this._options.originalOptions.multiSelection===undefined||this._options.originalOptions.multiSelection.enabled===undefined)){this.options.multiSelection.enabled=true}if($combo.attr("dir")==="rtl"){this._options.ltr=false}if(this.options.grouping.key&&firstDataItem&&firstDataItem[this.options.grouping.key]===undefined){throw new Error(this._getLocaleValue("errorIncorrectGroupingKey"))}},_analyzeInitialElem:function(){var element=this.element,_options=this._options;if(element.is("div")||element.is("span")){_options.$comboWrapper=element}else if(element.is("input")){_options.$input=element;_options.nameAttribute=element.attr("name");element.removeAttr("name")}else if(element.is("select")){element.hide();_options.nameAttribute=element.attr("name");element.removeAttr("name")}},_setupInput:function(){var _options=this._options;_options.$input.attr({placeholder:this._getLocaleValue("placeHolder"),"data-localeid":"placeHolder","data-localeattr":"placeholder"});if(this.options.mode!=="editable"){_options.$input.attr({readonly:true,unselectable:"on"}).addClass(this.css.unselectable)}},_renderHeaderTemplate:function(css,options,parent){var $header,headerClass,$existingHeader;headerClass="."+css.header;$existingHeader=parent.find(headerClass);if($existingHeader.length){if(typeof options.headerTemplate==="string"){$existingHeader.remove()}}$header=$("<div>").addClass(css.header).html(options.headerTemplate);$header.prependTo(parent);this._options.$header=$header},_renderFooterTemplate:function(css,options,parent,combo){var $footer,footerMarkup,footerClass,$existingFooter;footerClass="."+css.footer;$existingFooter=parent.find(footerClass);if($existingFooter.length){if(typeof options.footerTemplate==="string"){$existingFooter.remove()}}footerMarkup=options.footerTemplate.replace(combo.RECORDS_VIEW,"<span class="+css.recordsView+"></span>").replace(combo.RECORDS_DATA,"<span class="+css.recordsData+"></span>").replace(combo.RECORDS_SERVER,"<span class="+css.recordsServer+"></span>").replace(combo.RECORDS_SERVER_TOTAL,"<span class="+css.recordsServerTotal+"></span>");combo._options.hasFooterVariables=footerMarkup!==options.footerTemplate;if(combo._options.hasFooterVariables){$footer=$("<div>").addClass(css.footer).html(footerMarkup);$footer.appendTo(parent);combo._options.$footer=$footer;return}$footer=$("<div>").addClass(css.footer).html(footerMarkup);$footer.appendTo(parent);this._options.$footer=$footer},_render:function(){var css=this.css,options=this.options,_options=this._options,$comboWrapper=(_options.$comboWrapper||$("<div>")).addClass(css.comboWrapper),$combo=$("<div>").addClass(css.combo).attr("unselectable","on"),$input=(_options.$input||$("<input type='text'>")).addClass(css.field).attr({tabIndex:options.tabIndex,autocomplete:"off"}),$hiddenInput=$("<input type='hidden'>").addClass(css.hiddenField),$fieldCont=$("<div>").addClass(css.fieldHolder),$clearCont=$("<div>").addClass(css.clear).attr({unselectable:"on",title:this._getLocaleValue("clearButtonTitle"),"data-localeid":"clearButtonTitle","data-localeattr":"title"}),$clearIcon=$("<div>").addClass(css.clearIcon),$dropDownBtnCont=$("<div>").addClass(css.button).attr({unselectable:"on",title:this._getLocaleValue("dropDownButtonTitle"),"data-localeid":"dropDownButtonTitle","data-localeattr":"title"}),$dropDownBtnIcon=$("<div>").addClass(css.buttonIcon),$dropDownCont=$("<div>").addClass(css.dropDown).width(options.dropDownWidth),$dropDownListCont=$("<div>").addClass(css.list),$dropDownList=$("<ul>").addClass(css.listItemHolder),$dropDownScrollCont=$("<div>").addClass(css.scrollHolder).attr("unselectable","on"),$dropDownScroll=$("<div>").addClass(css.scroll).attr("unselectable","on"),$loading=$("<div>").addClass(css.loading);switch(options.mode){case"dropdown":$combo.addClass(css.dropDownMode);break;case"readonlylist":$combo.addClass(css.readOnlyListMode);break;case"readonly":$combo.addClass(css.readOnlyMode);$comboWrapper.addClass(css.disabled);break}$fieldCont.addClass(css.fieldHolderLTR);if(!_options.ltr){$dropDownList.addClass(css.dropDownListRTL);$dropDownBtnCont.addClass(css.buttonRTL);$clearCont.addClass(css.clearRTL)}else{$dropDownBtnCont.addClass(css.buttonLTR)}if(options.grouping.key){$dropDownList.addClass(css.group)}$clearIcon.appendTo($clearCont);$dropDownBtnIcon.appendTo($dropDownBtnCont);$dropDownList.appendTo($dropDownListCont);$dropDownListCont.appendTo($dropDownCont);if(typeof options.headerTemplate==="string"){this._renderHeaderTemplate(css,options,$dropDownCont)}if(typeof options.footerTemplate==="string"){this._renderFooterTemplate(this.css,this.options,$dropDownCont,this)}if(options.virtualization){$dropDownListCont.addClass(css.listOverflow);$dropDownScrollCont.insertBefore($dropDownList);$dropDownScroll.appendTo($dropDownScrollCont)}if(this.element.is("input")){$input.wrap($fieldCont);$fieldCont=$input.parent();$fieldCont.wrap($combo);$combo=$fieldCont.parent();$combo.wrap($comboWrapper);$comboWrapper=$combo.parent();$clearCont.prependTo($combo);$dropDownBtnCont.prependTo($combo)}else{$input.appendTo($fieldCont);$dropDownBtnCont.appendTo($combo);$clearCont.appendTo($combo);$fieldCont.appendTo($combo);$combo.appendTo($comboWrapper)}$clearCont.hide();$hiddenInput.attr("name",options.inputName).appendTo($combo);$dropDownCont.css({height:0,top:-99999,left:-99999,overflow:"hidden"}).addClass(css.noBorder);if(options.dropDownAttachedToBody){$dropDownCont.appendTo($("body"))}else{$dropDownCont.appendTo($comboWrapper)}if(this.element.is("select")){$comboWrapper.insertBefore(this.element)}$comboWrapper.outerWidth(options.width);$comboWrapper.outerHeight(options.height);_options.$comboWrapper=$comboWrapper;_options.$combo=$combo;_options.$input=$input;_options.$hiddenInput=$hiddenInput;_options.$fieldCont=$fieldCont;_options.$clearCont=$clearCont;_options.$clearIcon=$clearIcon;_options.$dropDownBtnCont=$dropDownBtnCont;_options.$dropDownBtnIcon=$dropDownBtnIcon;_options.$dropDownCont=$dropDownCont;_options.$dropDownListCont=$dropDownListCont;_options.$dropDownList=$dropDownList;_options.$loading=$loading;this._setInputVal($input.val());if(options.virtualization){_options.$dropDownScrollCont=$dropDownScrollCont;_options.$dropDownScroll=$dropDownScroll}this._setupInput();if(options.disabled){this._disableCombo(true)}this._triggerRendered()},_itemInnerMarkup:function(data){var unwrappedData,dataItem,unwrappedDataItem;unwrappedData=this._unwrapData(data);dataItem=unwrappedData[this.options.textKey];unwrappedDataItem=this._unwrapData(dataItem);unwrappedDataItem=this._formatItem(unwrappedDataItem);unwrappedDataItem=$.ig.encode(unwrappedDataItem);return this.options.itemTemplate?$.ig.tmpl(this.options.itemTemplate,data):unwrappedDataItem},_formatItem:function(item){if($.ig&&$.ig.formatter){if(this.options.format==="auto"&&($.ig.util.getType(item)==="date"||$.ig.util.getType(item)==="number")){item=$.ig.formatter({val:item,reg:$.ig.regional[this.options.regional]})}else if(this._formatEnabled()){item=$.ig.formatter({val:item,format:this.options.format,reg:$.ig.regional[this.options.regional]})}}return item},_formatEnabled:function(){return!(this.options.format===""||this.options.format===null||this.options.format==="none")},_itemsToRenderCount:function(){return this._isPossibleToVirtualize()?this.options.visibleItemsCount:this.options.dataSource.dataView().length},_sortDataSource:function(){var options=this.options;options.dataSource.sort([{fieldName:options.grouping.key}],options.grouping.dir)},_groups:function(data){var prevGroup,curGroup,curData,len,i,options=this.options,groupKey=options.grouping.key,groups=[];data=data||options.dataSource.dataView();for(i=0,len=data.length;i<len;i++){curData=data[i];if(curData[groupKey]===undefined){throw new Error(this._getLocaleValue("errorIncorrectGroupingKey"))}curGroup=curData[groupKey];if(prevGroup===curGroup){groups[groups.length-1].members.push(curData)}else{prevGroup=curGroup;groups[groups.length]={name:curGroup,members:[curData]}}}return groups},_itemMarkup:function(data){var css=this.css,value=this._unwrapData(this._unwrapData(data)[this.options.valueKey]),innerMarkup=this._itemInnerMarkup(data),markup,escapedValue;escapedValue=$.ig.encode(value);markup='<li class="'+css.listItem+'" data-value="'+escapedValue+'" unselectable="on">';if(this._checkBoxesEnabled()){markup+=this._options.checkboxItemTemplate.replace("{css.checkbox}",css.checkbox).replace("{css.checkboxOff}",css.checkboxOff).replace("{css.listItemTextWithCheckbox}",css.listItemTextWithCheckbox).replace("{innerMarkup}",innerMarkup)}else{markup+=innerMarkup}markup+="</li>";return markup},_itemsMarkup:function(){var i,dataView=this.options.dataSource.dataView(),dataLen=this._itemsToRenderCount(),markup="";for(i=0;i<dataLen;i++){markup+=this._itemMarkup(dataView[i])}return markup},_groupHeaderMarkup:function(groupName){return'<li class="'+this.css.groupHeader+'">'+groupName+"</li>"},_groupMarkup:function(group){var len,i,members=group.members,itemsMarkup="";for(i=0,len=members.length;i<len;i++){itemsMarkup+=this._itemMarkup(members[i])}return this._groupHeaderMarkup(group.name)+itemsMarkup},_groupsMarkup:function(){var groups,groupsLen,i,dataView,dataLen=this._itemsToRenderCount(),headers=1,markup="";this._sortDataSource();dataView=this.options.dataSource.dataView();if(this.options.virtualization&&!this._options.cachedGroupLength){this._options.cachedGroupLength=this._groups(dataView).length}dataView=dataView.slice(0,dataLen);groups=this._groups(dataView);if(this._isPossibleToVirtualize()){for(i=0;i<dataLen;i++){if(this._isBoundaryOfGroups(dataView,i)){headers++;i++}}dataView=dataView.slice(0,dataLen-headers);groups=this._groups(dataView)}for(i=0,groupsLen=groups.length;i<groupsLen;i++){markup+=this._groupMarkup(groups[i])}return markup},_noMatchMarkup:function(){return'<li unselectable="on" class="'+this.css.noMatchFound+" "+this.css.unselectable+'" data-localeid="noMatchFoundText">'+this._getLocaleValue("noMatchFoundText")+"</li>"},_renderItems:function(success,msg,data){var markup,dropDownScrollHeight,schema,noCancel,options=this.options,_options=this._options,lod=this.options.loadOnDemandSettings,dataView=data.dataView(),dataLen=this._itemsToRenderCount();if(success!==null){this._triggerDataBound(success,msg)}this._convertToArrayOfObjects(options);if(!options.dataSource.settings.schema&&options.dataSource&&dataView.length>0){schema=this._initSchema(this._unwrapData(dataView)[0]);options.dataSource.settings.schema=schema;options.dataSource._initSchema()}noCancel=this._triggerItemsRendering();if(noCancel){if(dataLen>0){if(options.grouping.key){markup=this._groupsMarkup()}else{markup=this._itemsMarkup()}}else{markup=this._noMatchMarkup()}_options.$dropDownList.html(markup);if(dataLen>0){this._setListContMaxHeight()}if(options.virtualization){dropDownScrollHeight=data.totalLocalRecordsCount()*this._itemHeight();_options.$dropDownScroll.height(dropDownScrollHeight);_options.$dropDownScrollCont.width($.ig.util.getScrollWidth()+1);this._updateVirtualScrollVisibility();if(lod&&lod.enabled&&lod.pageSize<=options.visibleItemsCount){_options.$dropDownScroll.height(dropDownScrollHeight+this._itemHeight());_options.$dropDownScrollCont.removeClass(this.css.hidden)}}this._updateFooterVariables();if(_options.initialDataBinding){this._handleInitialSelection();_options.initialDataBinding=false}this._triggerItemsRendered()}},_handleRemoteFiltering:function(success,msg,data){var $items,selectedData,_options=this._options,event=_options.remoteFilteringTriggerEvt;this._renderItems(success,msg,data);this.positionDropDown();$items=this._$items();selectedData=_options.selectedData;_options.selectedData=[];this._selectData(selectedData,{focusCombo:true,keepFiltering:true,keepInputText:true,keepNavItem:true});this._updateSelection(event);this._updateAutoComplete();if(_options.keyNavItemData&&!this._isDataSelected(_options.keyNavItemData)){this._setKeyNavigationItem({data:_options.keyNavItemData,addStyles:true,resetDataOnNonFound:true})}if(_options.updateInputValuesOnRemoteFilter){this._updateInputValues();this._updateHighlighting();_options.updateInputValuesOnRemoteFilter=false}if(_options.inputVal){this._showClearButton()}else{this._hideClearButton()}this._updateFooterVariables();if(_options.validator){_options.validator._validateInternal(this.element,event)}if(event){this._triggerFiltered(event);_options.remoteFilteringTriggerEvt=null}},_handleLocalFilteringWithVirt:function(data){var $items,selectedData,_options=this._options;this._renderItems(null,null,data);this.positionDropDown();$items=this._$items();selectedData=_options.selectedData;_options.selectedData=[];this._selectData(selectedData,{focusCombo:true,keepFiltering:true,keepInputText:true});this._updateHighlighting()},_handleLoadOnDemand:function(err,success,data){var $items,selectedData,_options=this._options;this._renderItems(err,success,data);this.positionDropDown();$items=this._$items();selectedData=_options.selectedData;_options.selectedData=[];this._selectData(selectedData,{focusCombo:true,keepFiltering:true,keepInputText:true,keepScrollPosition:true});this._updateHighlighting();if(this.options.multiSelection.enabled&&_options.keyNavItemData&&!this._isDataSelected(_options.keyNavItemData)){this._setKeyNavigationItem({data:_options.keyNavItemData,addStyles:true})}if(this.options.filteringType!=="remote"&&_options.expression){this._updateFiltering()}this._updateFooterVariables()},_updateGroupHeader:function($item,data){if(this.options.grouping.key&&this._isItem($item)){this._setVisualStylesToGroupHeader($item)}this._updateMarkupForGroupHeader($item,data);$item.attr("data-value",null);return this},_updateItem:function($item,data){var unwrappedDataItem,unwrappedDataValue,innerMarkup=this._itemInnerMarkup(data);if(this.options.grouping.key&&this._isGroupHeader($item)){this._setVisualStylesToItem($item);if(this._checkBoxesEnabled()){$item.html(this._options.checkboxItemTemplate.replace("{css.checkbox}",this.css.checkbox).replace("{css.checkboxOff}",this.css.checkboxOff).replace("{css.listItemTextWithCheckbox}",this.css.listItemTextWithCheckbox).replace("{innerMarkup}",""))}}this._updateMarkupForItem($item,innerMarkup);unwrappedDataItem=this._unwrapData(data);unwrappedDataValue=this._unwrapData(unwrappedDataItem[this.options.valueKey]);$item.attr("data-value",unwrappedDataValue);return this},_removePlaceholderOnEmptyTextVal:function(){var _options=this._options,placeholderAttr=_options.$input.attr("placeholder");if(_options.inputVal===""&&_options.selectedData.length>0&&(typeof placeholderAttr!==typeof undefined||placeholderAttr!==false)){_options.$input.removeAttr("placeholder")}},_addPlaceholderWhenEmptyTextVal:function(){var _options=this._options,placeholderAttr=_options.$input.attr("placeholder");if(_options.inputVal===""&&_options.selectedData.length===0&&(typeof placeholderAttr===typeof undefined||placeholderAttr===false)){_options.$input.attr({placeholder:this.options.placeHolder,"data-localeid":"placeHolder","data-localeattr":"placeholder"})}},_convertToArrayOfObjects:function(options){var curData,len,i,ds;if($.ig.util.getType(options.dataSource)==="object"&&(options.dataSource._data!==null&&options.dataSource._data!==undefined)){ds=options.dataSource._data}else{ds=options.dataSource}if($.ig.util.getType(ds)==="array"&&($.ig.util.getType(ds[0])==="number"||$.ig.util.getType(ds[0])==="string"||$.ig.util.getType(ds[0])==="date")){for(i=0,len=ds.length;i<len;i++){curData=ds[i];ds[i]={};ds[i][options.textKey]=curData;ds[i][options.valueKey]=curData}}},_isGroupHeader:function($item){return $item.hasClass(this.css.groupHeader)},_isItem:function($item){return $item.hasClass(this.css.listItem)},_setVisualStylesToGroupHeader:function($item){$item.removeClass(this.css.listItem);$item.addClass(this.css.groupHeader)},_setVisualStylesToItem:function($item){$item.removeClass(this.css.groupHeader);$item.addClass(this.css.listItem)},_updateMarkupForGroupHeader:function($item,data){if(this.options.grouping.key&&data[this.options.grouping.key]!==undefined){$item.html(data[this.options.grouping.key])}},_updateMarkupForItem:function($item,innerMarkup){var $listItem=$item;if(this._checkBoxesEnabled()){$listItem=$item.find("."+this.css.listItemTextWithCheckbox)}var templateItems=jQuery.parseHTML(innerMarkup);if(templateItems[0].nodeName!=="#text"){this._setItemHTML(templateItems,$listItem)}else{$listItem.html(innerMarkup)}},_setItemHTML:function(templateItems,$listItem){for(var i=0;i<templateItems.length;i++){var item=templateItems[i];if(item.childElementCount>0){this._setItemHTML(item.children,$listItem.children())}else{$listItem[0].children[i].defaultValue=item.defaultValue;$listItem[0].children[i].innerHTML=item.innerHTML}}},_$items:function(includeGroupHeaders){var selector="."+this.css.listItem.split(" ",1)[0];if(this.options.grouping.key&&includeGroupHeaders){selector+=",."+this.css.groupHeader.split(" ",1)[0]}return this._options.$dropDownList.children(selector)},_$noMatchFoundItem:function(){var selector="."+this.css.noMatchFound;return this._options.$dropDownList.children(selector)},_$filteredItems:function(){return this._$items().not("."+this.css.hidden)},_$elementFromData:function(data,$items){var curData,i,len,valueKey=this.options.valueKey,values=[];$items=$items||this._$items();if($.ig.util.getType(data)!=="array"){data=[data]}for(i=0,len=data.length;i<len;i++){curData=data[i];if(curData!==null&&curData!==undefined){values.push(curData[valueKey])}}return this._$elementFromValue(values,$items)},_$elementFromValue:function(value,$items){var i,currentValue,result=$();$items=$items||this._$items();if($.ig.util.getType(value)!=="array"){value=[value]}for(i=0;i<value.length;i++){currentValue=value[i];if(value[i]){currentValue=$.ig.util.escapeStr(value[i].toString())}result=result.add($items.filter("[ data-value='"+currentValue+"' ]"))}return result},_$elementsFromItems:function(items){var i,result=$();if($.ig.util.getType(items)!=="array"){items=[items]}for(i=0;i<items.length;i++){result=result.add(items[i].element)}return result},_$selectedItems:function(){var i,selItems=this.selectedItems(),$selItems=$(),len=selItems.length;for(i=0;i<len;i++){$selItems=$selItems.add(selItems[i].element)}return $selItems},_isDataEqual:function(data1,data2){var data1Value,data2Value;if(data1!==null&&data1!==undefined&&data2!==null&&data2!==undefined){data1Value=this._unwrapData(this._unwrapData(data1)[this.options.valueKey]);data2Value=this._unwrapData(this._unwrapData(data2)[this.options.valueKey]);return data1Value===data2Value}return false},_isDataSelected:function(data){return this.isValueSelected(data[this.options.valueKey])},_filterData:function(data1,data2){var data2Len,self=this;if($.ig.util.getType(data1)!=="array"){data1=[data1]}if($.ig.util.getType(data2)!=="array"){data2=[data2]}data2Len=data2.length;return data1.filter(function(data){var i;for(i=0;i<data2Len;i++){if(self._isDataEqual(data,data2[i])){return false}}return true})},_filterItems:function(items1,items2){var result,valKey=this.options.valueKey,self=this;result=items1.filter(function(item){var i,unwrappedDataItem,unwrappedDataValue,unwrappedDataItemToCompare,unwrappedDataValueToCompare,matchFound=false;unwrappedDataItem=self._unwrapData(item.data);unwrappedDataValue=self._unwrapData(unwrappedDataItem[valKey]);for(i=0;i<items2.length&&!matchFound;i++){unwrappedDataItemToCompare=self._unwrapData(items2[i].data);unwrappedDataValueToCompare=self._unwrapData(unwrappedDataItemToCompare[valKey]);if(unwrappedDataValue===unwrappedDataValueToCompare){matchFound=true}}return!matchFound});return result},_valuesFromData:function(data){var unwrappedDataItem,unwrappedDataValue,i,len=data.length,valKey=this.options.valueKey,values=[];for(i=0;i<len;i++){unwrappedDataItem=this._unwrapData(data[i]);unwrappedDataValue=this._unwrapData(unwrappedDataItem[valKey]);values.push(unwrappedDataValue)}return values},_valuesFromElements:function($items){var i,values=[];for(i=0;i<$items.length;i++){values.push($items.eq(i).attr("data-value"))}return values},_valuesFromItems:function(item){var i,unwrappedDataItem,unwrappedDataValue,values=[],valueKey=this.options.valueKey;if(!item){return}if($.ig.util.getType(item)!=="array"){item=[item]}for(i=0;i<item.length;i++){unwrappedDataItem=this._unwrapData(item[i].data);unwrappedDataValue=this._unwrapData(unwrappedDataItem[valueKey]);values.push(unwrappedDataValue)}return values},_dataFromItems:function(items){var len,i,data=[];for(i=0,len=items.length;i<len;i++){data.push(items[i].data)}return data},_dataFromIndex:function(index){var data=this.options.dataSource.data();return data.length>index?data[index]:null},_dataForValues:function(value){var data,i,len,result=[];if($.ig.util.getType(value)!=="array"){value=[value]}for(i=0,len=value.length;i<len;i++){data=this.dataForValue(value[i]);if(data!==null){result.push(data)}}return result},_dataIndexByValue:function(value,searchDataViewOnly){var unwrappedDataItem,unwrappedDataValue,i,result=-1,data=searchDataViewOnly?this.options.dataSource.dataView():this.options.dataSource.data(),len=data.length,valKey=this.options.valueKey;for(i=0;i<len;i++){unwrappedDataItem=this._unwrapData(data[i]);unwrappedDataValue=this._unwrapData(unwrappedDataItem[valKey]);if(this._areValuesEqual(unwrappedDataValue,value)){result=i;break}}return result},_itemsFromData:function(data){var curData,len,i,$items=this._$items(),result=[];if($.ig.util.getType(data)!=="array"){data=[data]}for(i=0,len=data.length;i<len;i++){curData=data[i];if(curData!==null&&curData!==undefined){result.push({element:this._$elementFromData(curData,$items),data:curData})}}return result.length>0?result:null},_$keyNavItem:function(){return this._$elementFromData(this._options.keyNavItemData)},_updateFooterVariables:function(){var ds,recordsView,recordsData,recordsServer,recordsServerTotal;if(this._options.hasFooterVariables){ds=this.options.dataSource;recordsView=ds.dataView().length;recordsData=ds.data().length;recordsServer=Math.max(ds.totalRecordsCount(),recordsData);recordsServerTotal=Math.max(recordsServer,parseInt(this._options.totalAll||0,10));this._options.$footer.find("."+this.css.recordsView).html(recordsView);this._options.$footer.find("."+this.css.recordsData).html(recordsData);this._options.$footer.find("."+this.css.recordsServer).html(recordsServer);this._options.$footer.find("."+this.css.recordsServerTotal).html(recordsServerTotal)}},_moveCaretToInputEnd:function(preventItemSeparatorOnFocus){var range,input=this._options.$input[0],readonly=this._options.$input.attr("readonly");if(document.activeElement===input){return}if(readonly&&!($.ig.util.isEdge||$.ig.util.isIE)){this._options.$input.prop("readonly",false)}this._safeFocusInput(preventItemSeparatorOnFocus);if(typeof input.selectionStart==="number"&&!$.ig.util.isIE&&!$.ig.util.isEdge){if(!this._options.ltr&&this._options.selectedData.length>0){input.selectionStart=input.selectionEnd=this._options.selectedData[this._options.selectedData.length-1][this.options.textKey].length}else{input.selectionStart=input.selectionEnd=input.value.length}}else if(typeof input.createTextRange!=="undefined"&&$(input).is(":visible")&&!readonly){range=input.createTextRange();range.collapse(false);range.trigger("select")}if(readonly){this._options.$input.attr("readonly",readonly)}},_refreshVisualStylesForItem:function($item,data){var isSelected=this._isDataSelected(data);if(isSelected){this._addItemSelectionStyles($item)}else{this._removeItemSelectionStyles($item)}if(this.options.multiSelection.enabled){if(this._isDataEqual(this._options.keyNavItemData,data)&&!isSelected){$item.addClass(this.css.itemInFocus)}else{$item.removeClass(this.css.itemInFocus)}}},_handleInitialSelection:function(){var curSelItem,selectOptions,selectedOptions,curIndex,i,curDataItem,selItems=this.options.initialSelectedItems,data=this.options.dataSource.data(),dataToSel=[],mode=this.options.mode;if($.ig.util.getType(selItems)==="array"){for(i=0;i<selItems.length;i++){curSelItem=selItems[i];curIndex=curSelItem.index;if(curIndex>=0&&data.length>=curIndex){curDataItem=data[curIndex]}else if(curSelItem.value!==undefined&&curSelItem.value!==null){curDataItem=this.dataForValue(curSelItem.value)}if(curDataItem&&dataToSel.indexOf(curDataItem)===-1){dataToSel.push(curDataItem)}}}if(this.element.is("select")){selectOptions=this.element.find("option");selectedOptions=selectOptions.filter(":selected");for(i=0;i<selectedOptions.length;i++){dataToSel.push(data[selectOptions.index(selectedOptions.eq(i))])}}this._selectFirstItemInNonEditableModes(mode,dataToSel,data)},_selectFirstItemInNonEditableModes:function(mode,dataToSel,data){if((mode==="dropdown"&&!this.options.multiSelection.enabled||mode==="readonly"||mode==="readonlylist")&&dataToSel.length===0){if(data[0]!==null&&data[0]!==undefined){dataToSel.push(data[0])}}if(dataToSel.length>0){this._selectData(dataToSel,{additive:true,keepScrollPosition:true})}},_checkBoxesEnabled:function(){return this.options.multiSelection.enabled&&this.options.multiSelection.showCheckboxes},_isPossibleToVirtualize:function(){return this.options.virtualization&&this.options.dataSource.dataView().length>this.options.visibleItemsCount},_areItemsLowerInVir:function(){return this.options.virtualization&&this.options.dataSource.dataView().length<=this.options.visibleItemsCount},_itemHeight:function(){return this._$items().first().outerHeight()},_isFilteringEnabled:function(){return this.options.filteringType!=="none"},_updateItems:function(offset){var elementIndex,lengthOfElements,itemIndex,$this,curData,self=this,options=this.options,dataView=options.dataSource.dataView(),$items=this._$items(true),realOffset=0;offset=offset>0?offset:0;this._unhighlight();for(elementIndex=0,itemIndex=0,lengthOfElements=$items.length;elementIndex<lengthOfElements;elementIndex++){$this=$items.eq(elementIndex);realOffset=itemIndex+offset;curData=dataView[realOffset];if(curData&&this.options.grouping.key&&(self._isBoundaryOfGroups(dataView,realOffset)||self._isFirstItem(dataView,realOffset))){this._updateGroupHeader($this,curData)._refreshVisualStylesForItem($this,curData[options.grouping.key]);elementIndex++;$this=$items.eq(elementIndex)}if($this){this._updateItem($this,curData)._refreshVisualStylesForItem($this,curData)}itemIndex++}this._updateHighlighting()},_isFirstItem:function(data,itemIndex){if(!data[itemIndex-1]){return true}return false},_isBoundaryOfGroups:function(data,itemIndex){if(this.options.grouping.key&&data[itemIndex-1]&&data[itemIndex-1][this.options.grouping.key]!==data[itemIndex][this.options.grouping.key]){return true}return false},_toggleDropDownState:function(event){if(this._options.dropDownOpened){this.closeDropDown(null,event)}else{this.openDropDown(null,this._focusInInputWhenUsingTouchDevice(),event)}},_lastValAfterItemSep:function(){return this._options.inputVal.split(this.options.multiSelection.itemSeparator).pop()},_startsWith:function(text,fragment){return fragment!==""&&text.indexOf(fragment)===0},_endsPartialyWithItemSep:function(text){var separator=this.options.multiSelection.itemSeparator,i=separator.length,matchFound=0;for(;i>0&&!matchFound;i--){if(text.endsWith(separator.slice(0,i))){matchFound=i}}return matchFound},_filterItemSeparator:function(text){return text.slice(0,text.length-this._endsPartialyWithItemSep(text))},_separatedInputTexts:function(){var result=this._options.inputVal.split(this.options.multiSelection.itemSeparator);result[result.length-1]=this._filterItemSeparator(result[result.length-1]);return result},_updateSelection:function(event){var textsLen,dataLen,curText,curData,curDataValue,curDataText,setAsKeyNav,matchFound,isLastText,unwrappedData,i,j,options=this.options,_options=this._options,texts=_options.inputVal,data=options.dataSource.data(),textKey=options.textKey,valueKey=options.valueKey,justSelectedData=[],multiSelect=options.multiSelection.enabled;if(options.filteringType==="remote"){data=this._filterData(_options.cachedData,data).concat(data)}dataLen=data.length;if(multiSelect){texts=this._separatedInputTexts(texts)}else{texts=[texts]}if(options.autoSelectFirstMatch){_options.autoSelectedItemData=null}unwrappedData=this._unwrapData(data);for(i=0,textsLen=texts.length;i<textsLen;i++){curText=texts[i];matchFound=false;isLastText=i===textsLen-1;if(!options.caseSensitive){curText=curText.toLowerCase()}for(j=0;j<dataLen&&!matchFound;j++){curData=this._unwrapData(unwrappedData[j]);curDataText=this._unwrapData(curData[textKey]).toString();curDataValue=this._unwrapData(curData[valueKey]);setAsKeyNav=isLastText&&!this.isValueSelected(curDataValue);if(!options.caseSensitive){curDataText=curDataText.toLowerCase()}if(options.autoSelectFirstMatch){if(this._startsWith(curDataText,curText)){if(multiSelect){if(this._filterData(curData,justSelectedData).length===1){if(setAsKeyNav){this._setKeyNavigationItem({data:curData,addStyles:true,clearPrevItem:true,scrollToItem:true})}else{this._selectData(curData,{additive:true,focusCombo:true,keepInputText:true,keepHighlighting:true,keepFiltering:true},event)}matchFound=true;if(curDataText!==curText){_options.autoSelectedItemData=curData}}if(!setAsKeyNav){justSelectedData.push(curData)}}else{this._selectData(curData,{focusCombo:true,keepInputText:true,keepHighlighting:true,keepFiltering:true},event);_options.autoSelectedItemData=curData;matchFound=true;justSelectedData.push(curData)}}}else if(curDataText===curText){if(multiSelect){if(this._filterData(curData,justSelectedData).length===1){if(setAsKeyNav){this._setKeyNavigationItem({data:curData,addStyles:true,clearPrevItem:true,scrollToItem:true})}else{this._selectData(curData,{additive:true,focusCombo:true,keepInputText:true,keepHighlighting:true,keepFiltering:true},event)}matchFound=true}if(!setAsKeyNav){justSelectedData.push(curData)}}else{this._selectData(curData,{additive:true,focusCombo:true,keepInputText:true,keepHighlighting:true,keepFiltering:true},event);matchFound=true;justSelectedData.push(curData)}}}}this._deselectData(this._filterData(_options.selectedData,justSelectedData),{focusCombo:true,keepInputText:true},event);if(multiSelect&&_options.inputVal.endsWith(options.multiSelection.itemSeparator)){this._updateInputValues(false)}this._updateHighlighting()},_updateAutoComplete:function(){var text,curData,curDataText,unwrappedData,i,options=this.options,_options=this._options,texts=_options.inputVal,data=options.dataSource.data(),dataLen=data.length,textKey=options.textKey,multiSelect=options.multiSelection.enabled;if(multiSelect){texts=this._options.inputVal.split(options.multiSelection.itemSeparator)}else{texts=[texts]}if(texts.length>this._fullySelectedItemsLen()){text=texts[texts.length-1];if(multiSelect&&this._endsPartialyWithItemSep(text)){return}if(!options.caseSensitive){text=text.toLowerCase()}if(_options.autoSelectedItemData){_options.autoCompleteItemData=_options.autoSelectedItemData;this._autoComplete(_options.autoCompleteItemData[textKey].toString().slice(text.length))}else{for(i=0;i<dataLen;i++){unwrappedData=this._unwrapData(data);curData=this._unwrapData(unwrappedData[i]);curDataText=this._unwrapData(curData[textKey]).toString();if(!options.caseSensitive){curDataText=curDataText.toLowerCase()}if(!(curData!==_options.autoSelectedItemData&&this._isDataSelected(curData))&&this._startsWith(curDataText,text)){_options.autoCompleteItemData=curData;this._autoComplete(this._unwrapData(curData[textKey]).toString().slice(text.length));break}}}}},_autoComplete:function(autoCompleteText){var oldInputVal,newInputVal;if(this.options.autoComplete&&this._options.composition.isAutocompleteNeeded()){oldInputVal=this._options.inputVal;newInputVal=oldInputVal+autoCompleteText;this._options.composition.autocompleteText=autoCompleteText;this._options.composition.inputVal=oldInputVal;this._options.$input.val(newInputVal);this._setInputSelection(oldInputVal.length,newInputVal.length)}},_setInputSelection:function(start,end){var selRange,field=this._options.$input[0];if(field.createTextRange){selRange=field.createTextRange();selRange.collapse(true);selRange.moveStart("character",start);selRange.moveEnd("character",end);selRange.trigger("select");field.focus()}else if(field.setSelectionRange){field.focus();field.setSelectionRange(start,end)}else if(typeof field.selectionStart!=="undefined"){field.selectionStart=start;field.selectionEnd=end;field.focus()}},_hasInputSelection:function(){var field=this._options.$input[0],result=false;if(typeof field.selectionStart!=="undefined"){result=field.selectionStart!==field.selectionEnd}return result},_scrollToItem:function(data){var listContHeight,listContTop,listContScrollTop,itemTop,itemHeight,itemIndex,$item=this._$elementFromData(data);if(this._options.dropDownOpened){if($item.length>0){listContHeight=this._options.$dropDownListCont.height();listContTop=this._options.$dropDownListCont.igOffset().top;listContScrollTop=this.listScrollTop();itemTop=$item.igOffset().top;itemHeight=$item.outerHeight();if(!(itemTop>listContTop&&itemTop+itemHeight<listContHeight+listContTop)){this.listScrollTop(itemTop+listContScrollTop+itemHeight-listContTop-listContHeight)}}else if(this.options.virtualization){itemIndex=this._dataIndexByValue(data[this.options.valueKey]);this.listScrollTop((itemIndex-this.options.visibleItemsCount+2)*this._itemHeight())}}},_scrollToLastSelItem:function(){if(this._options.keyNavItemData!==null){this._scrollToItem(this._options.keyNavItemData)}else if(this._options.selectedData.length>0){this._scrollToItem(this._options.selectedData[this._options.selectedData.length-1])}},_positionItemInVisibleArea:function($item){var $listCont=this._options.$dropDownListCont,listContHeight=$listCont.height(),listContTop=$listCont.igOffset().top,listContScrollTop=this.listScrollTop(),itemTop=$item.igOffset().top,itemHeight=$item.outerHeight(true);if(listContTop>itemTop){this.listScrollTop(this._$items().filter(":visible").index($item)*itemHeight)}if(itemTop+itemHeight>listContHeight+listContTop){this.listScrollTop(itemTop+itemHeight+listContScrollTop-listContHeight-listContTop)}},_setKeyNavigationItem:function(options){var $item,$prevKeyNavItem,data=options.data,addStyles=options.addStyles,clearPrevItem=options.clearPrevItem,scrollToItem=options.scrollToItem,resetDataOnNonFound=options.resetDataOnNonFound;if(data instanceof $){$item=data;data=this.dataForValue($item.attr("data-value"))}else{$item=this._$elementFromData(data)}if(clearPrevItem){$prevKeyNavItem=this._$elementFromData(this._options.keyNavItemData);if($prevKeyNavItem.length>0){$prevKeyNavItem.removeClass(this.css.itemInFocus)}}if(addStyles&&$item.length>0){$item.addClass(this.css.itemInFocus)}if($item.length===0&&resetDataOnNonFound){this._options.keyNavItemData=null}else{this._options.keyNavItemData=data}if(scrollToItem){this._scrollToItem(data)}},_navigateToItem:function($item,addStyles,clearPrevItem,event,keepScrollPosition){if($item.length===0){return}if(!this.options.multiSelection.enabled){this.select($item,{focusCombo:true,keepFiltering:true,keepScrollPosition:keepScrollPosition},event)}else{this._setKeyNavigationItem({data:$item,addStyles:addStyles,clearPrevItem:clearPrevItem})}this._positionItemInVisibleArea($item)},_prevVisibleItem:function($item){do{$item=$item.prev()}while($item.length>0&&(!$item.is("."+this.css.listItem.split(" ",1)[0])||!$item.is(":visible")));return $item},_nextVisibleItem:function($item){do{$item=$item.next()}while($item.length>0&&(!$item.is("."+this.css.listItem.split(" ",1)[0])||!$item.is(":visible")));return $item},_visibleItemByIndex:function(index){return this._$items().filter(":visible").eq(index)},_handleInputChange:function(openDropDown,event){var options=this.options,_options=this._options,curVal=_options.$input.val();if(options.autoComplete&&event&&event.which===8&&_options.hadInputSelectionOnKeydown){curVal=curVal.slice(0,curVal.length-1);_options.$input.val(curVal)}if(options.autoComplete&&this._hasInputSelection()){return}if(curVal!==_options.inputVal){this._setInputVal(curVal);if(options.filteringType==="remote"){this._updateFiltering(event)}else{if(options.filteringType==="local"){_options.disableScroll=true;this._updateFiltering(event);setTimeout(function(){_options.disableScroll=false},0)}if(curVal){this._showClearButton()}else{this._hideClearButton()}this._updateSelection(event);this._updateAutoComplete();if(_options.validator){_options.validator._validateInternal(this.element,event)}}if(openDropDown){this.openDropDown(null,false,event)}}},_handleShiftNavigation:function($itemToNavigate,event){var _options=this._options,$keyNavItem=this._$keyNavItem();if($itemToNavigate.is(_options.$itemsToSelectOnShiftUpDown)){$keyNavItem.removeClass(this.css.itemInFocus);_options.$itemsToSelectOnShiftUpDown=_options.$itemsToSelectOnShiftUpDown.not($keyNavItem)}else{$itemToNavigate.addClass(this.css.itemInFocus);_options.$itemsToSelectOnShiftUpDown=_options.$itemsToSelectOnShiftUpDown.add($itemToNavigate)}this._navigateToItem($itemToNavigate,false,false,event)},_handleShiftUp:function(event){var _options=this._options;if(_options.$itemsToSelectOnShiftUpDown.length>1){this.select(_options.$itemsToSelectOnShiftUpDown,{additive:true,focusCombo:true,keepNavItem:true,keepFiltering:true},event);_options.$itemsToSelectOnShiftUpDown.removeClass(this.css.itemInFocus)}_options.$itemsToSelectOnShiftUpDown=$();_options.shiftDown=false},_handleShiftClick:function(event){var _options=this._options;if(_options.$itemsToSelectOnShiftClick.length>1){this.select(_options.$itemsToSelectOnShiftClick,{additive:true,focusCombo:true,keepNavItem:true,keepFiltering:true},event);_options.$itemsToSelectOnShiftClick.removeClass(this.css.itemInFocus);this._setKeyNavigationItem({data:$(event.target),clearPrevItem:true})}_options.$itemsToSelectOnShiftClick=$()},_groupHeaderClass:function(){return"."+this.css.groupHeader.split(" ",1)[0]},_$groupHeaders:function(){return this._$items(true).filter(this._groupHeaderClass())},_handleKeyNavigation:function(event){var $item,index,multiSelect,closeDropDown,isAutoSelectedActive,$lastSelectedItem,visibleItemsCount,self=this,options=this.options,_options=this._options,lod=this.options.loadOnDemandSettings,multiSelection=options.multiSelection.enabled,$keyNavItem=this._$keyNavItem(),$visibleItems=this._$items().filter(":visible"),currentScrollTop=this.listScrollTop(),activeIndex=this.activeIndex(),itemHeight=this._itemHeight(),addScrollCallback=false;if(event.keyCode===$.ui.keyCode.ESCAPE){if(options.multiSelection.enabled){if(this._lastValAfterItemSep().length===0){this.closeDropDown(null,event)}else{this._updateInputValues();this.clearFiltering(event);this._unhighlight()}}else{if(_options.inputVal.length===0){this.closeDropDown(null,event)}else if(_options.selectedData.length===0){this._updateInputValues();this.clearFiltering(event);this._unhighlight()}else if(_options.autoSelectedItemData){this._deselectData(_options.autoSelectedItemData,null,event);this.clearFiltering(event);this._unhighlight()}else{this.closeDropDown(null,event)}}event.preventDefault()}if(event.keyCode===$.ui.keyCode.DOWN){if(event.altKey||!_options.dropDownOpened){this.openDropDown(null,true,event)}else{$item=$keyNavItem.length>0?this._nextVisibleItem($keyNavItem):$visibleItems.eq(0);if(event.shiftKey&&multiSelection&&_options.dropDownOpened){this._handleShiftNavigation($item,event)}else{this._navigateToItem($item,true,true,event)}visibleItemsCount=options.visibleItemsCount-1;if(options.grouping){visibleItemsCount-=this._$groupHeaders().length}if(options.virtualization&&activeIndex>=visibleItemsCount){this.listScrollTop(currentScrollTop+itemHeight+1)}if(options.virtualization&&lod&&lod.enabled&&this.activeIndex()+1===this.listItems().length&&this.listItems().length<options.visibleItemsCount){self._callNextChunk(_options.$dropDownListCont,self._itemHeight())}}event.preventDefault()}if(event.keyCode===$.ui.keyCode.UP){if(_options.dropDownOpened){if(event.altKey||$keyNavItem.length===0||this._isDataEqual(_options.keyNavItemData,options.dataSource.dataView()[0])){this.closeDropDown(null,event)}else{$item=this._prevVisibleItem($keyNavItem);if(event.shiftKey&&multiSelection&&_options.dropDownOpened){this._handleShiftNavigation($item,event)}else{this._navigateToItem($item,true,true,event)}if(options.virtualization&&activeIndex-1<0){this.listScrollTop(currentScrollTop-itemHeight-1)}}}event.preventDefault()}if(event.keyCode===$.ui.keyCode.ENTER||options.selectItemBySpaceKey&&event.keyCode===$.ui.keyCode.SPACE)