www-thermferm/jqwidgets/jqxcombobox.js

Sun, 07 Jul 2019 14:31:10 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 07 Jul 2019 14:31:10 +0200
branch
stable
changeset 603
fcff55324b84
parent 511
2d1d43c3a2c2
child 617
b216f9d4b917
permissions
-rw-r--r--

Merged fix from default

117
7119ea8a5225 Initial setup of wqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /*
511
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
2 jQWidgets v4.5.2 (2017-May)
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
3 Copyright (c) 2011-2017 jQWidgets.
117
7119ea8a5225 Initial setup of wqwidgets
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 License: http://jqwidgets.com/license/
511
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
5 */
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
6 !function(a){a.jqx.jqxWidget("jqxComboBox","",{}),a.extend(a.jqx._jqxComboBox.prototype,{defineInstance:function(){var b={disabled:!1,width:200,height:25,items:new Array,selectedIndex:-1,selectedItems:new Array,_selectedItems:new Array,source:null,autoItemsHeight:!1,scrollBarSize:a.jqx.utilities.scrollBarSize,arrowSize:18,enableHover:!0,enableSelection:!0,visualItems:new Array,groups:new Array,equalItemsWidth:!0,itemHeight:-1,visibleItems:new Array,emptyGroupText:"Group",emptyString:"",ready:null,openDelay:250,closeDelay:300,animationType:"default",dropDownWidth:"auto",dropDownHeight:"200px",autoDropDownHeight:!1,enableBrowserBoundsDetection:!1,dropDownHorizontalAlignment:"left",dropDownVerticalAlignment:"bottom",dropDownContainer:"default",searchMode:"startswithignorecase",autoComplete:!1,remoteAutoComplete:!1,remoteAutoCompleteDelay:500,selectionMode:"default",minLength:2,displayMember:"",valueMember:"",groupMember:"",searchMember:"",keyboardSelection:!0,renderer:null,autoOpen:!1,template:"",checkboxes:!1,promptText:"",placeHolder:"",rtl:!1,listBox:null,validateSelection:null,showCloseButtons:!0,renderSelectedItem:null,search:null,popupZIndex:1e5,searchString:null,multiSelect:!1,showArrow:!0,_disabledItems:new Array,touchMode:"auto",autoBind:!0,aria:{"aria-disabled":{name:"disabled",type:"boolean"}},events:["open","close","select","unselect","change","checkChange","bindingComplete","itemAdd","itemRemove","itemUpdate"]};return this===a.jqx._jqxComboBox.prototype?b:(a.extend(!0,this,b),b)},createInstance:function(b){if(this.host.attr("role","combobox"),a.jqx.aria(this,"aria-autocomplete","both"),null==a.jqx._jqxListBox||void 0==a.jqx._jqxListBox)throw new Error("jqxComboBox: Missing reference to jqxlistbox.js.");a.jqx.aria(this),""!=this.promptText&&(this.placeHolder=this.promptText),this.render()},render:function(){var b=this,c=b.element.nodeName.toLowerCase();if("select"==c||"ul"==c||"ol"==c){b.field=b.element,b.field.className&&(b._className=b.field.className);var d={title:b.field.title};b.field.id.length?d.id=b.field.id.replace(/[^\w]/g,"_")+"_jqxComboBox":d.id=a.jqx.utilities.createId()+"_jqxComboBox";var e=a("<div></div>",d);b.width||(b.width=a(b.field).width()),b.height||(b.height=a(b.field).outerHeight()),b.element.style.cssText=b.field.style.cssText,a(b.field).hide().after(e);var f=b.host.data();if(b.host=e,b.host.data(f),b.element=e[0],b.element.id=b.field.id,b.field.id=d.id,b._className&&(b.host.addClass(b._className),a(b.field).removeClass(b._className)),b.field.tabIndex){var g=b.field.tabIndex;b.field.tabIndex=-1,b.element.tabIndex=g}if(""!=b.field.innerHTML){var h=a.jqx.parseSourceTag(b.field);b.source=h.items,b.selectedIndex==-1&&(b.selectedIndex=h.index)}}else if(b.host.find("li").length>0||b.host.find("option").length>0){var h=a.jqx.parseSourceTag(b.element);b.source=h.items}b.removeHandlers(),b.isanimating=!1,b.id=a.jqx.utilities.createId(),b.element.innerHTML="";var i=a("<div style='background-color: transparent; -webkit-appearance: none; outline: none; width:100%; height: 100%; padding: 0px; margin: 0px; border: 0px; position: relative;'><div id='dropdownlistWrapper' style='padding: 0; margin: 0; border: none; background-color: transparent; float: left; width:100%; height: 100%; position: relative;'><div id='dropdownlistContent' style='padding: 0; margin: 0; border-top: none; border-bottom: none; float: left; position: absolute;'/><div id='dropdownlistArrow' role='button' style='padding: 0; margin: 0; border-left-width: 1px; border-bottom-width: 0px; border-top-width: 0px; border-right-width: 0px; float: right; position: absolute;'/></div></div>");if(b.comboStructure=i,null==a.jqx._jqxListBox||void 0==a.jqx._jqxListBox)throw"jqxComboBox: Missing reference to jqxlistbox.js.";b.touch=a.jqx.mobile.isTouchDevice(),b.touchMode===!0&&(b.touch=!0),b.host.append(i),b.dropdownlistWrapper=b.host.find("#dropdownlistWrapper"),b.dropdownlistArrow=b.host.find("#dropdownlistArrow"),b.dropdownlistContent=b.host.find("#dropdownlistContent"),b.dropdownlistContent.addClass(b.toThemeProperty("jqx-combobox-content")),b.dropdownlistContent.addClass(b.toThemeProperty("jqx-widget-content")),b.dropdownlistWrapper[0].id="dropdownlistWrapper"+b.element.id,b.dropdownlistArrow[0].id="dropdownlistArrow"+b.element.id,b.dropdownlistContent[0].id="dropdownlistContent"+b.element.id,b.template&&b.dropdownlistArrow.addClass(b.toThemeProperty("jqx-"+b.template)),b.dropdownlistContent.append(a('<input autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" style="box-sizing: border-box; margin: 0; padding: 0; padding-left: 3px; padding-right: 3px; border: 0;" type="textarea"/>')),b.input=b.dropdownlistContent.find("input"),b.input.addClass(b.toThemeProperty("jqx-combobox-input")),b.input.addClass(b.toThemeProperty("jqx-widget-content")),b.host.attr("tabindex")&&(b.input.attr("tabindex",b.host.attr("tabindex")),b.host.removeAttr("tabindex")),b._addInput(),b.rtl&&(b.input.css({direction:"rtl"}),b.dropdownlistContent.addClass(b.toThemeProperty("jqx-combobox-content-rtl")));try{var j="listBox"+b.id,k=a(a.find("#"+j));k.length>0&&k.remove(),a.jqx.aria(this,"aria-owns",j),a.jqx.aria(this,"aria-haspopup",!0),a.jqx.aria(this,"aria-multiline",!1),b.listBoxContainer&&b.listBoxContainer.jqxListBox("destroy"),b.container&&b.container.remove();var l=a("<div style='overflow: hidden; border: none; background-color: transparent; position: absolute;' id='listBox"+b.id+"'><div id='innerListBox"+b.id+"'></div></div>");l.hide(),"element"==b.dropDownContainer?l.appendTo(b.host):l.appendTo(document.body),b.container=l,b.listBoxContainer=a(a.find("#innerListBox"+b.id));var m=b.width;"auto"!=b.dropDownWidth&&(m=b.dropDownWidth),null==b.dropDownHeight&&(b.dropDownHeight=200),b.container.width(parseInt(m)+25),b.container.height(parseInt(b.dropDownHeight)+25),b._ready=!1,b.addHandler(b.listBoxContainer,"bindingComplete",function(c){b.listBox||(b.listBox=a.data(b.listBoxContainer[0],"jqxListBox").instance),b._ready||(b.ready&&b.ready(),b._ready=!0),b._raiseEvent("6")}),b.addHandler(b.listBoxContainer,"itemAdd",function(a){b._raiseEvent("7",a.args)}),b.addHandler(b.listBoxContainer,"itemRemove",function(a){b._raiseEvent("8",a.args)}),b.addHandler(b.listBoxContainer,"itemUpdate",function(a){b._raiseEvent("9",a.args)});var n=!0;b.listBoxContainer.jqxListBox({autoItemsHeight:b.autoItemsHeight,_checkForHiddenParent:!1,allowDrop:!1,allowDrag:!1,checkboxes:b.checkboxes,emptyString:b.emptyString,autoBind:!b.remoteAutoComplete&&b.autoBind,renderer:b.renderer,rtl:b.rtl,itemHeight:b.itemHeight,selectedIndex:b.selectedIndex,incrementalSearch:!1,width:m,scrollBarSize:b.scrollBarSize,autoHeight:b.autoDropDownHeight,height:b.dropDownHeight,groupMember:b.groupMember,searchMember:b.searchMember,displayMember:b.displayMember,valueMember:b.valueMember,source:b.source,theme:b.theme,rendered:function(){if(b.listBox=a.data(b.listBoxContainer[0],"jqxListBox").instance,b.remoteAutoComplete)if(b.autoDropDownHeight?(b.container.height(b.listBox.virtualSize.height+25),b.listBoxContainer.height(b.listBox.virtualSize.height),b.listBox._arrange()):(b.listBox._arrange(),b.listBox.ensureVisible(0),b.listBox._renderItems(),b.container.height(b.listBoxContainer.height()+25)),void 0!=b.searchString&&b.searchString.length>=b.minLength){var c=b.listBoxContainer.jqxListBox("items");c&&c.length>0?b.isOpened()||b.open():b.close()}else b.close();else b.renderSelection("mouse"),b.multiSelect&&b.doMultiSelect(!1);b.rendered&&b.rendered()}}),"element"==b.dropDownContainer?b.listBoxContainer.css({position:"absolute",top:0,left:0}):b.listBoxContainer.css({position:"absolute",zIndex:b.popupZIndex,top:0,left:0}),b.listBoxContainer.css("border-top-width","1px"),b.listBoxContainer.addClass(b.toThemeProperty("jqx-popup")),a.jqx.browser.msie&&b.listBoxContainer.addClass(b.toThemeProperty("jqx-noshadow")),b.template&&b.listBoxContainer.addClass(b.toThemeProperty("jqx-"+b.template+"-item")),b.listBox=a.data(b.listBoxContainer[0],"jqxListBox").instance,b.listBox.enableSelection=b.enableSelection,b.listBox.enableHover=b.enableHover,b.listBox.equalItemsWidth=b.equalItemsWidth,b.listBox._arrange(),b.addHandler(b.listBoxContainer,"unselect",function(a){b.multiSelect||b._raiseEvent("3",{index:a.args.index,type:a.args.type,item:a.args.item})}),b.addHandler(b.listBoxContainer,"change",function(a){b.multiSelect||(b.selectedIndex=b.listBox.selectedIndex,b._raiseEvent("4",{index:a.args.index,type:a.args.type,item:a.args.item}))}),"none"==b.animationType?b.container.css("display","none"):b.container.hide(),n=!1}catch(a){throw a}var b=this;b.input.attr("disabled",b.disabled);var o=a.jqx.browser.msie&&a.jqx.browser.version<8;if(o||b.input.attr("placeholder",b.placeHolder),b.propertyChangeMap.disabled=function(c,d,e,f){f?(c.host.addClass(b.toThemeProperty("jqx-combobox-state-disabled")),c.host.addClass(b.toThemeProperty("jqx-fill-state-disabled")),c.dropdownlistContent.addClass(b.toThemeProperty("jqx-combobox-content-disabled"))):(c.host.removeClass(b.toThemeProperty("jqx-combobox-state-disabled")),c.host.removeClass(b.toThemeProperty("jqx-fill-state-disabled")),c.dropdownlistContent.removeClass(b.toThemeProperty("jqx-combobox-content-disabled"))),c.input.attr("disabled",c.disabled),a.jqx.aria(c,"aria-disabled",c.disabled),c.input.attr("disabled",c.disabled)},b.disabled&&(b.host.addClass(b.toThemeProperty("jqx-combobox-state-disabled")),b.host.addClass(b.toThemeProperty("jqx-fill-state-disabled")),b.dropdownlistContent.addClass(b.toThemeProperty("jqx-combobox-content-disabled"))),b.host.addClass(b.toThemeProperty("jqx-combobox-state-normal")),b.host.addClass(b.toThemeProperty("jqx-combobox")),b.host.addClass(b.toThemeProperty("jqx-rc-all")),b.host.addClass(b.toThemeProperty("jqx-widget")),b.host.addClass(b.toThemeProperty("jqx-widget-content")),b.dropdownlistArrowIcon=a("<div></div>"),"top"==b.dropDownVerticalAlignment?b.dropdownlistArrowIcon.addClass(b.toThemeProperty("jqx-icon-arrow-up")):b.dropdownlistArrowIcon.addClass(b.toThemeProperty("jqx-icon-arrow-down")),b.dropdownlistArrowIcon.addClass(b.toThemeProperty("jqx-icon")),b.dropdownlistArrow.append(b.dropdownlistArrowIcon),b.dropdownlistArrow.addClass(b.toThemeProperty("jqx-combobox-arrow-normal")),b.dropdownlistArrow.addClass(b.toThemeProperty("jqx-fill-state-normal")),b.rtl?b.dropdownlistArrow.addClass(b.toThemeProperty("jqx-rc-l")):b.dropdownlistArrow.addClass(b.toThemeProperty("jqx-rc-r")),b._setSize(),b._updateHandlers(),b.addHandler(b.input,"keyup.textchange",function(a){b._writeTimer&&clearTimeout(b._writeTimer),b._writeTimer=setTimeout(function(){b._search(a);b.cinput&&b.input&&(b.displayMember?b._updateInputSelection():b.cinput[0].value=b.input[0].value)},50)}),a.jqx.browser.msie&&a.jqx.browser.version<8&&b.host.parents(".jqx-window").length>0){var p=b.host.parents(".jqx-window").css("z-index");l.css("z-index",p+10),b.listBoxContainer.css("z-index",p+10)}b.checkboxes?(b.input.attr("readonly",!0),a.jqx.aria(this,"aria-readonly",!0)):a.jqx.aria(this,"aria-readonly",!1),b.remoteAutoComplete||(b.searchString="")},_addInput:function(){var b=this.host.attr("name");this.cinput=a("<input type='hidden'/>"),this.host.append(this.cinput),b&&this.cinput.attr("name",b)},_updateInputSelection:function(){if(this.cinput){var b=new Array;if(this.selectedIndex==-1)this.cinput.val("");else{var c=this.getSelectedItem();null!=c?(this.cinput.val(c.value),b.push(c.value)):this.cinput.val(this.dropdownlistContent.text())}if(this.checkboxes||this.multiSelect){if(this.multiSelect)var d=this.getSelectedItems();else var d=this.getCheckedItems();var e="";if(null!=d)for(var f=0;f<d.length;f++)e+=f==d.length-1?d[f].value:d[f].value+",",b.push(d[f].value);this.cinput.val(e)}this.field&&this.cinput&&("select"==this.field.nodeName.toLowerCase()?a.each(this.field,function(c,d){a(this).removeAttr("selected"),this.selected=b.indexOf(this.value)>=0,this.selected&&a(this).attr("selected",!0)}):a.each(this.items,function(c,d){a(this.originalItem.originalItem).removeAttr("data-selected"),this.selected=b.indexOf(this.value)>=0,this.selected&&a(this.originalItem.originalItem).attr("data-selected",!0)}))}},_search:function(b){var c=this;if(9!=b.keyCode&&"none"!=c.searchMode&&null!=c.searchMode&&"undefined"!=c.searchMode&&16!=b.keyCode&&17!=b.keyCode&&20!=b.keyCode&&!c.checkboxes){if(c.multiSelect){var d=a("<span style='visibility: hidden; white-space: nowrap;'>"+c.input.val()+"</span>");d.addClass(c.toThemeProperty("jqx-widget")),a(document.body).append(d);var e=d.width()+15;d.remove(),e>c.host.width()&&(e=c.host.width()),e<25&&(e=25),c.input.css("width",e+"px"),0==c.selectedItems.length?(c.input.css("width","100%"),c.input.attr("placeholder",c.placeHolder)):c.input.attr("placeholder","");var f=parseInt(this._findPos(c.host[0])[1])+parseInt(c.host.outerHeight())-1+"px",g=a.jqx.mobile.isSafariMobileBrowser()||a.jqx.mobile.isWindowsPhone();null!=g&&g&&(f=a.jqx.mobile.getTopPos(this.element)+parseInt(c.host.outerHeight()),"0px"!=a("body").css("border-top-width")&&(f=parseInt(f)-this._getBodyOffset().top+"px")),c.container.css("top",f);var h=parseInt(c.host.height());c.dropdownlistArrow.height(h)}if(!c.isanimating){if(b.altKey&&38==b.keyCode)return c.hideListBox("altKey"),!1;if(b.altKey&&40==b.keyCode)return c.isOpened()||c.showListBox("altKey"),!1}if(37==b.keyCode||39==b.keyCode)return!1;if(!b.altKey&&18!=b.keyCode&&!(b.keyCode>=33&&b.keyCode<=40||(b.ctrlKey||c.ctrlKey)&&88!=b.keyCode&&86!=b.keyCode)){var i=c.input.val();if(0==i.length&&!c.autoComplete)return c.listBox.searchString=c.input.val(),c.listBox.clearSelection(),c.hideListBox("search"),void(c.searchString=c.input.val());if(c.remoteAutoComplete){var c=this,j=function(){c.listBox.vScrollInstance.value=0};if(i.length>=c.minLength){if(!b.ctrlKey&&!b.altKey){if(c.searchString!=i){var k=c.listBoxContainer.jqxListBox("source");null==k&&c.listBoxContainer.jqxListBox({source:c.source}),c._searchTimer&&clearTimeout(c._searchTimer),13!=b.keyCode&&27!=b.keyCode&&(c._searchTimer=setTimeout(function(){if(j(),c.autoDropDownHeight&&(c.listBox.autoHeight=!0),c.searchString=c.input.val(),null==c.search)throw"'search' function is not defined";c.search(c.input.val())},c.remoteAutoCompleteDelay))}c.searchString=i}}else c._searchTimer&&clearTimeout(c._searchTimer),j(),c.searchString="",c.search(""),c.listBoxContainer.jqxListBox({source:null})}else{var c=this;if(i!==c.searchString){if("27"!=b.keyCode&&"13"!=b.keyCode){var l=c.input[0].value,m=c._updateItemsVisibility(i),n=m.matchItems;c.autoComplete&&c.autoItemsHeight&&(c.input[0].value=l);var o=m.index;if(!c.autoComplete&&!c.remoteAutoComplete&&(!c.multiSelect||c.multiSelect&&o>=0)){c.listBox.selectIndex(o);var p=c.listBox.isIndexInView(o);p?c.listBox._renderItems():c.listBox.ensureVisible(o)}c.autoComplete&&0===n.length&&c.hideListBox("search")}if("13"==b.keyCode){var q="block"==c.container.css("display");if(q&&!c.isanimating)return c.hideListBox("keyboard"),void(c._oldvalue=c.listBox.selectedValue)}else if("27"==b.keyCode){var q="block"==c.container.css("display");if(q&&!c.isanimating){if(c.multiSelect)c.input.val(""),c.listBox.selectedValue=null;else{var r=c.listBox.getVisibleItem(c._oldvalue);if(r){var c=this;setTimeout(function(){c.autoComplete&&c._updateItemsVisibility(""),c.listBox.selectIndex(r.index),c.renderSelection("api")},c.closeDelay)}else c.clearSelection()}return c.hideListBox("keyboard"),c.renderSelection("api"),b.preventDefault(),!1}}else{c.isOpened()||c.opening||b.ctrlKey||c.listBox.visibleItems&&c.listBox.visibleItems.length>0&&c.input.val()!=c.searchString&&void 0!=c.searchString&&o!=-1&&c.showListBox("search"),c.searchString=c.input.val(),""==c.searchString&&(c.listBox.itemsByValue[""]||(o=-1,c.multiSelect||c.clearSelection()));var r=c.listBox.getVisibleItem(o);void 0!=r&&c._updateInputSelection()}}}}}},val:function(a){if(!this.input)return"";var b=function(b){for(var c in b)if(b.hasOwnProperty(c))return!1;return"number"!=typeof a&&("date"!=typeof a&&("boolean"!=typeof a&&"string"!=typeof a))};if(b(a)||0==arguments.length){var c=this.getSelectedItem();return c?c.value:this.input.val()}var c=this.getItemByValue(a);return null!=c?this.selectItem(c):this.input.val(a),this.input.val()},focus:function(){var a=this,b=function(){a.input.focus();var b=a.input.val();a._setSelection(0,b.length)};b(),setTimeout(function(){b()},10)},_setSelection:function(a,b){try{if("selectionStart"in this.input[0])this.input[0].focus(),this.input[0].setSelectionRange(a,b);else{var c=this.input[0].createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select()}}catch(a){}},setContent:function(a){this.input.val(a)},_updateItemsVisibility:function(b){var c=this.getItems();if(void 0==c)return{index:-1,matchItem:new Array};var d=this,e=-1,f=new Array,g=0;a.each(c,function(c){var h="";if(!this.isGroup){h=this.searchLabel?this.searchLabel:this.label?this.label:this.value?this.value:this.title?this.title:"jqxItem",h=h.toString();var i=!1;switch(d.searchMode){case"containsignorecase":i=a.jqx.string.containsIgnoreCase(h,b);break;case"contains":i=a.jqx.string.contains(h,b);break;case"equals":i=a.jqx.string.equals(h,b);break;case"equalsignorecase":i=a.jqx.string.equalsIgnoreCase(h,b);break;case"startswith":i=a.jqx.string.startsWith(h,b);break;case"startswithignorecase":i=a.jqx.string.startsWithIgnoreCase(h,b);break;case"endswith":i=a.jqx.string.endsWith(h,b);break;case"endswithignorecase":i=a.jqx.string.endsWithIgnoreCase(h,b)}if(d.autoComplete&&!i&&(this.visible=!1),i&&d.autoComplete&&(f[g++]=this,this.visible=!0,e=this.visibleIndex),""==b&&d.autoComplete&&(this.visible=!0,i=!1),d.multiSelect&&(this.disabled=!1,(d.selectedItems.indexOf(this.value)>=0||d._disabledItems.indexOf(this.value)>=0)&&(this.disabled=!0,i=!1)),d.multiSelect){if(i&&!d.autoComplete)return e===-1&&(e=this.visibleIndex),!0}else if(i&&!d.autoComplete)return e=this.visibleIndex,!1}}),this.listBox.searchString=b;var d=this,h=function(){if(d.multiSelect){for(var a=0,b=!1,c=null,e=0;e<d.listBox.items.length;e++)d.listBox.selectedIndexes[e]=-1,d.listBox.items[e].disabled||0==b&&(c=d.listBox.items[e],a=c.visibleIndex,b=!0);d.listBox.selectedIndex=-1,d.listBox.selectedIndex=a,d.listBox.selectedIndexes[a]=a,d.listBox.visibleItems.length>0&&c?d.listBox.selectedValue=c.value:d.listBox.selectedValue=null,d.listBox.ensureVisible(0)}};if(!this.autoComplete)return h(),{index:e,matchItems:f};this.listBox.renderedVisibleItems=new Array;var i=this.listBox.vScrollInstance.value;this.listBox.vScrollInstance.value=0,this.listBox.visibleItems=new Array,this.listBox._renderItems();var j=this.listBox.selectedValue,k=this.listBox.getItemByValue(j);if(this.multiSelect)h();else if(k)if(k.visible){this.listBox.selectedIndex=k.visibleIndex;for(var l=0;l<this.listBox.items.length;l++)this.listBox.selectedIndexes[l]=-1;this.listBox.selectedIndexes[k.visibleIndex]=k.visibleIndex}else{for(var l=0;l<this.listBox.items.length;l++)this.listBox.selectedIndexes[l]=-1;this.listBox.selectedIndex=-1}this.listBox._renderItems();var m=this.listBox._calculateVirtualSize().height;if(m<i&&(i=0,this.listBox.vScrollInstance.refresh()),this.autoDropDownHeight)this._disableSelection=!0,this.listBox.autoHeight!=this.autoDropDownHeight&&this.listBoxContainer.jqxListBox({autoHeight:this.autoDropDownHeight}),this.container.height(m+25),this.listBox.invalidate(),this._disableSelection=!1;else if(m<parseInt(this.dropDownHeight)){var n="hidden"==this.listBox.hScrollBar[0].style.visibility?0:20;this.listBox.height=n+m,this.container.height(m+25+n),this.listBox.invalidate()}else this.listBox.height=parseInt(this.dropDownHeight),this.container.height(parseInt(this.dropDownHeight)+25),this.listBox.invalidate();return this.listBox.vScrollInstance.setPosition(i),{index:e,matchItems:f}},findItems:function(b){var c=this.getItems(),d=this,e=0,f=new Array;return a.each(c,function(c){var g="";if(!this.isGroup){g=this.label?this.label:this.value?this.value:this.title?this.title:"jqxItem";var h=!1;switch(d.searchMode){case"containsignorecase":h=a.jqx.string.containsIgnoreCase(g,b);break;case"contains":h=a.jqx.string.contains(g,b);break;case"equals":h=a.jqx.string.equals(g,b);break;case"equalsignorecase":h=a.jqx.string.equalsIgnoreCase(g,b);break;case"startswith":h=a.jqx.string.startsWith(g,b);break;case"startswithignorecase":h=a.jqx.string.startsWithIgnoreCase(g,b);break;case"endswith":h=a.jqx.string.endsWith(g,b);break;case"endswithignorecase":h=a.jqx.string.endsWithIgnoreCase(g,b)}h&&(f[e++]=this)}}),f},_resetautocomplete:function(){a.each(this.listBox.items,function(a){this.visible=!0}),this.listBox.vScrollInstance.value=0,this.listBox._addItems(),this.listBox.autoHeight=!1,this.listBox.height=this.dropDownHeight,this.container.height(parseInt(this.dropDownHeight)+25),this.listBoxContainer.height(parseInt(this.dropDownHeight)),this.listBox._arrange(),this.listBox._addItems(),this.listBox._renderItems()},getItems:function(){var a=this.listBox.items;return a},getVisibleItems:function(){return this.listBox.getVisibleItems()},_setSize:function(){null!=this.width&&this.width.toString().indexOf("px")!=-1?this.host.width(this.width):void 0==this.width||isNaN(this.width)||this.host.width(this.width),null!=this.height&&this.height.toString().indexOf("px")!=-1?this.host.height(this.height):void 0==this.height||isNaN(this.height)||this.host.height(this.height);var b=!1;if(null!=this.width&&this.width.toString().indexOf("%")!=-1&&(b=!0,this.host.width(this.width)),null!=this.height&&this.height.toString().indexOf("%")!=-1&&(b=!0,this.host.height(this.height)),b){var c=this,d=this.host.width();"auto"!=this.dropDownWidth&&(d=this.dropDownWidth),this.listBoxContainer.jqxListBox({width:d}),this.container.width(parseInt(d)+25),this._arrange()}var c=this,e=function(){c.multiSelect&&c.host.height(c.height),c._arrange(),c.multiSelect&&c.host.height("auto")};c.oldWidth=c.host.width(),c.oldHeight=c.host.height(),a.jqx.utilities.resize(this.host,function(){var a=c.host.width(),b=c.host.height();a==c.oldWidth&&b==c.oldHeight||(e(),c.hideListBox("api")),c.oldWidth=a,c.oldHeight=b})},isOpened:function(){var b=this,c=a.data(document.body,"openedCombojqxListBox"+this.element.id);return"block"==this.container.css("display")&&(null!=c&&c==b.listBoxContainer)},_updateHandlers:function(){var b=this,c=!1;this.removeHandlers(),this.multiSelect&&(this.addHandler(this.dropdownlistContent,"click",function(a){return!a.target.href&&(b.input.focus(),void setTimeout(function(){b.input.focus()},10))}),this.addHandler(this.dropdownlistContent,"focus",function(a){return!a.target.href&&(b.input.focus(),void setTimeout(function(){b.input.focus()},10))})),this.touch||(this.host.parents()&&this.addHandler(this.host.parents(),"scroll.combobox"+this.element.id,function(a){var c=b.isOpened();c&&b.close()}),this.addHandler(this.host,"mouseenter",function(){!b.disabled&&b.enableHover&&(c=!0,b.host.addClass(b.toThemeProperty("jqx-combobox-state-hover")),"top"==b.dropDownVerticalAlignment?b.dropdownlistArrowIcon.addClass(b.toThemeProperty("jqx-icon-arrow-up")):b.dropdownlistArrowIcon.addClass(b.toThemeProperty("jqx-icon-arrow-down-hover")),b.dropdownlistArrow.addClass(b.toThemeProperty("jqx-combobox-arrow-hover")),b.dropdownlistArrow.addClass(b.toThemeProperty("jqx-fill-state-hover")))}),this.addHandler(this.host,"mouseleave",function(){!b.disabled&&b.enableHover&&(b.host.removeClass(b.toThemeProperty("jqx-combobox-state-hover")),b.dropdownlistArrowIcon.removeClass(b.toThemeProperty("jqx-icon-arrow-down-hover")),b.dropdownlistArrowIcon.removeClass(b.toThemeProperty("jqx-icon-arrow-up-hover")),b.dropdownlistArrow.removeClass(b.toThemeProperty("jqx-combobox-arrow-hover")),b.dropdownlistArrow.removeClass(b.toThemeProperty("jqx-fill-state-hover")),c=!1)})),b.autoOpen&&(this.addHandler(this.host,"mouseenter",function(){var a=b.isOpened();!a&&b.autoOpen&&(b.open(),b.host.focus())}),this.addHandler(a(document),"mousemove."+b.id,function(a){var c=b.isOpened();if(c&&b.autoOpen){var d=b.host.coord(),e=d.top,f=d.left,g=b.container.coord(),h=g.left,i=g.top;canClose=!0,a.pageY>=e&&a.pageY<=e+b.host.height()+2&&a.pageX>=f&&a.pageX<f+b.host.width()&&(canClose=!1),a.pageY>=i&&a.pageY<=i+b.container.height()-20&&a.pageX>=h&&a.pageX<h+b.container.width()&&(canClose=!1),canClose&&b.close()}}));var d="mousedown";this.touch&&(d=a.jqx.mobile.getTouchEventName("touchstart"));var e=function(c){if(!b.disabled){var d="block"==b.container.css("display");if(!b.isanimating){if(d)return b.hideListBox("api"),a.jqx.mobile.isTouchDevice()||(b.input.focus(),setTimeout(function(){b.input.focus()},10)),!0;if(b.autoDropDownHeight){b.container.height(b.listBoxContainer.height()+25);var e=b.listBoxContainer.jqxListBox("autoHeight");e||(b.listBoxContainer.jqxListBox({autoHeight:b.autoDropDownHeight}),b.listBox._arrange(),b.listBox.ensureVisible(0),b.listBox._renderItems(),b.container.height(b.listBoxContainer.height()+25))}if(b.showListBox("api"),a.jqx.mobile.isTouchDevice())return!0;setTimeout(function(){b.input.focus()},10)}}};this.addHandler(this.dropdownlistArrow,d,function(a){e(a)}),this.addHandler(this.dropdownlistArrowIcon,d,function(a){}),this.addHandler(this.host,"focus",function(){b.focus()}),this.addHandler(this.input,"focus",function(a){b.focused=!0,b.host.addClass(b.toThemeProperty("jqx-combobox-state-focus")),b.host.addClass(b.toThemeProperty("jqx-fill-state-focus")),b.dropdownlistContent.addClass(b.toThemeProperty("jqx-combobox-content-focus")),a.stopPropagation&&a.stopPropagation()}),this.addHandler(this.input,"blur",function(){b.focused=!1,b.isOpened()||b.opening||("dropDownList"==b.selectionMode&&b._selectOldValue(),b.host.removeClass(b.toThemeProperty("jqx-combobox-state-focus")),b.host.removeClass(b.toThemeProperty("jqx-fill-state-focus")),b.dropdownlistContent.removeClass(b.toThemeProperty("jqx-combobox-content-focus"))),b._searchTimer&&clearTimeout(b._searchTimer)}),this.addHandler(a(document),"mousedown."+this.id,b.closeOpenedListBox,{that:this,listbox:this.listBox,id:this.id}),this.touch&&this.addHandler(a(document),a.jqx.mobile.getTouchEventName("touchstart")+"."+this.id,b.closeOpenedListBox,{that:this,listbox:this.listBox,id:this.id}),this.addHandler(this.host,"keydown",function(a){var c="block"==b.container.css("display");if(b.ctrlKey=a.ctrlKey,"none"==b.host.css("display"))return!0;if(("13"==a.keyCode||"9"==a.keyCode)&&c&&!b.isanimating){if(b.listBox.selectedIndex!=-1){b.renderSelection("mouse");var d=b.listBox.selectedIndex,e=b.listBox.getVisibleItem(d);e&&(b.listBox.selectedValue=e.value),b._setSelection(b.input.val().length,b.input.val().length),b.hideListBox("keyboard")}return"13"==a.keyCode&&(b._oldvalue=b.listBox.selectedValue),b.keyboardSelection||b._raiseEvent("2",{index:b.selectedIndex,type:"keyboard",item:b.getItem(b.selectedIndex)}),"9"==a.keyCode}if(115==a.keyCode)return b.isanimating||(b.isOpened()?b.isOpened()&&b.hideListBox("keyboard"):b.showListBox("keyboard")),!1;if(a.altKey&&"block"==b.host.css("display")&&(b.isanimating||(38==a.keyCode?b.isOpened()&&b.hideListBox("altKey"):40==a.keyCode&&(b.isOpened()||b.showListBox("altKey")))),("27"==a.keyCode||"9"==a.keyCode)&&b.isOpened()&&!b.isanimating){if("27"==a.keyCode)if(b.multiSelect)b.listBox.selectedValue=null,b.input.val("");else{var e=b.listBox.getItemByValue(b._oldvalue);e?setTimeout(function(){b.autoComplete&&b._updateItemsVisibility(""),b.listBox.selectIndex(e.index),b.renderSelection("api")},b.closeDelay):b.clearSelection()}return b.hideListBox("keyboard"),"9"==a.keyCode||(b.renderSelection("api"),a.preventDefault(),!1)}var f=a.keyCode;if(c&&!b.disabled&&8!=f)return b.listBox._handleKeyDown(a);if(!b.disabled&&!c){var f=a.keyCode;if(33==f||34==f||35==f||36==f||38==f||40==f)return b.listBox._handleKeyDown(a)}if(8===f&&b.multiSelect&&0===b.input.val().length){var g=b.selectedItems[b.selectedItems.length-1];return b.selectedItems.pop(),b._selectedItems.pop(),g&&(b._raiseEvent("3",{index:g.index,type:"keyboard",item:g}),b._raiseEvent("4",{index:g.index,type:"keyboard",item:g})),b.listBox.selectedValue=null,b.doMultiSelect(),!1}}),this.addHandler(this.listBoxContainer,"checkChange",function(a){b.renderSelection("mouse"),b._updateInputSelection(),b._raiseEvent(5,{label:a.args.label,value:a.args.value,checked:a.args.checked,item:a.args.item})}),this.addHandler(this.listBoxContainer,"select",function(a){if(!b.disabled&&("keyboard"!=a.args.type||b.keyboardSelection)&&(b.renderSelection(a.args.type),b.multiSelect||b._raiseEvent("2",{index:a.args.index,type:a.args.type,item:a.args.item}),"mouse"==a.args.type&&(b._oldvalue=b.listBox.selectedValue,!b.checkboxes))){if(b.hideListBox("mouse"),b.touch)return!1;b.input.focus()}}),null!=this.listBox&&null!=this.listBox.content&&this.addHandler(this.listBox.content,"click",function(a){if(!b.disabled){if(b.listBox.itemswrapper&&a.target===b.listBox.itemswrapper[0])return!0;if(a.target&&a.target.className&&a.target.className.indexOf("jqx-fill-state-disabled")>=0)return!0;b.renderSelection("mouse"),b._oldvalue=b.listBox.selectedValue,b.touch||b.ishiding||b.checkboxes||(b.hideListBox("mouse"),b.input.focus()),b.touch===!0&&(b.checkboxes||b.hideListBox("mouse"))}})},_selectOldValue:function(){var a=this;if(a.listBox.selectedIndex==-1)if(a.multiSelect)a.listBox.selectedValue=null,a.input.val("");else{var b=a.listBox.getItemByValue(a._oldvalue);b?setTimeout(function(){a.autoComplete&&a._updateItemsVisibility(""),a.listBox.selectIndex(b.index),a.renderSelection("api")},a.closeDelay):(a.clearSelection(),a.listBox.selectIndex(0),a.renderSelection("api"))}else a.renderSelection("api")},removeHandlers:function(){var b=this;if(null!=this.dropdownlistWrapper&&this.removeHandler(this.dropdownlistWrapper,"mousedown"),this.dropdownlistContent&&(this.removeHandler(this.dropdownlistContent,"click"),this.removeHandler(this.dropdownlistContent,"focus")),this.removeHandler(this.host,"keydown"),this.removeHandler(this.host,"focus"),null!=this.input&&(this.removeHandler(this.input,"focus"),this.removeHandler(this.input,"blur")),this.removeHandler(this.host,"mouseenter"),this.removeHandler(this.host,"mouseleave"),this.removeHandler(a(document),"mousemove."+b.id),this.listBoxContainer&&(this.removeHandler(this.listBoxContainer,"checkChange"),this.removeHandler(this.listBoxContainer,"select")),this.host.parents()&&this.removeHandler(this.host.parents(),"scroll.combobox"+this.element.id),this.dropdownlistArrowIcon&&this.dropdownlistArrow){var c="mousedown";this.touch&&(c=a.jqx.mobile.getTouchEventName("touchstart")),this.removeHandler(this.dropdownlistArrowIcon,c),this.removeHandler(this.dropdownlistArrow,c)}},getItem:function(a){var b=this.listBox.getItem(a);return b},getItemByValue:function(a){var b=this.listBox.getItemByValue(a);return b},getVisibleItem:function(a){var b=this.listBox.getVisibleItem(a);return b},renderSelection:function(b){if(void 0!=b&&"none"!=b&&this._disableSelection!==!0&&null!=this.listBox&&!this.multiSelect){var c=this.listBox.visibleItems[this.listBox.selectedIndex];if(this.autoComplete&&!this.checkboxes&&void 0!==this.listBox.selectedValue)var c=this.getItemByValue(this.listBox.selectedValue);if(this.checkboxes){var d=this.getCheckedItems();c=null!=d&&d.length>0?d[0]:null}if(null==c){var e=a.jqx.browser.msie&&a.jqx.browser.version<8;return this.input.val(""),this.input.attr("value",""),e||this.input.attr("placeholder",this.placeHolder),void this._updateInputSelection()}this.selectedIndex=this.listBox.selectedIndex;var f=a("<span></span>");void 0!=c.label&&null!=c.label&&c.label.toString().length>0?a.jqx.utilities.html(f,c.label):void 0!=c.value&&null!=c.value&&c.value.toString().length>0?a.jqx.utilities.html(f,c.value):void 0!=c.title&&null!=c.title&&c.title.toString().length>0?a.jqx.utilities.html(f,c.title):a.jqx.utilities.html(f,this.emptyString);f.outerHeight();if(this.checkboxes){for(var g=this.getCheckedItems(),h="",i=0;i<g.length;i++)h+=i==g.length-1?g[i].label:g[i].label+", ";this.input.val(h)}else this.input.val(f.text());
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
7 if(f.remove(),this._updateInputSelection(),this.renderSelectedItem){var j=this.renderSelectedItem(this.listBox.selectedIndex,c);void 0!=j&&(this.input[0].value=j)}this.input.attr("value",this.input.val()),this.listBox&&this.listBox._activeElement&&a.jqx.aria(this,"aria-activedescendant",this.listBox._activeElement.id)}},dataBind:function(){this.listBoxContainer.jqxListBox({source:this.source}),this.renderSelection("mouse"),null==this.source&&this.clearSelection()},clear:function(){this.listBoxContainer.jqxListBox({source:null}),this.clearSelection()},clearSelection:function(a){this.selectedIndex=-1,this.listBox.clearSelection(),this.input.val(""),this.multiSelect&&(this.listBox.selectedValue="",this.selectedItems=new Array,this._selectedItems=new Array,this.doMultiSelect(!1))},unselectIndex:function(a,b){if(!isNaN(a)&&(this.autoComplete&&this._updateItemsVisibility(""),this.listBox.unselectIndex(a,b),this.renderSelection("mouse"),this.multiSelect)){if(a>=0){var c=this.getItem(a),d=this.selectedItems.indexOf(c.value);d>=0&&(c.value===this.listBox.selectedValue&&(this.listBox.selectedValue=null),this.selectedItems.splice(d,1),this._selectedItems.splice(d,1))}this.doMultiSelect(!1)}},selectIndex:function(a,b,c,d){this.autoComplete&&this._updateItemsVisibility(""),this.listBox.selectIndex(a,b,c,d),this.renderSelection("mouse"),this.selectedIndex=a,this.multiSelect&&this.doMultiSelect()},selectItem:function(a){this.autoComplete&&this._updateItemsVisibility(""),void 0!=this.listBox&&(this.listBox.selectedIndex=-1,this.listBox.selectItem(a),this.selectedIndex=this.listBox.selectedIndex,this.renderSelection("mouse"),this.multiSelect&&this.doMultiSelect(!1))},unselectItem:function(a){if(this.autoComplete&&this._updateItemsVisibility(""),void 0!=this.listBox&&(this.listBox.unselectItem(a),this.renderSelection("mouse"),this.multiSelect)){var b=this.getItemByValue(a);if(b){var c=this.selectedItems.indexOf(b.value);c>=0&&(b.value===this.listBox.selectedValue&&(this.listBox.selectedValue=null),this.selectedItems.splice(c,1),this._selectedItems.splice(c,1))}this.doMultiSelect(!1)}},checkItem:function(a){this.autoComplete&&this._updateItemsVisibility(""),void 0!=this.listBox&&this.listBox.checkItem(a)},uncheckItem:function(a){this.autoComplete&&this._updateItemsVisibility(""),void 0!=this.listBox&&this.listBox.uncheckItem(a)},indeterminateItem:function(a){this.autoComplete&&this._updateItemsVisibility(""),void 0!=this.listBox&&this.listBox.indeterminateItem(a)},getSelectedValue:function(){return this.listBox.selectedValue},getSelectedIndex:function(){return this.multiSelect?this.remoteAutoComplete&&this.multiSelect&&this._selectedItems.length>0?this.getSelectedItems()[0].index:this._selectedItems&&this._selectedItems.length>0?this.getSelectedItems()[0].index:void 0:this.listBox.selectedIndex},getSelectedItem:function(){return this.multiSelect?this.remoteAutoComplete&&this.multiSelect&&this._selectedItems.length>0?this.getSelectedItems()[0]:this._selectedItems&&this._selectedItems.length>0?this.getSelectedItems()[0]:null:this.getVisibleItem(this.listBox.selectedIndex)},getSelectedItems:function(){if(this.remoteAutoComplete&&this.multiSelect)return this._selectedItems;var b=new Array,c=this;return a.each(this.selectedItems,function(){var a=c.getItemByValue(this);if(a)b.push(a);else{var a=c._selectedItems[this];a&&b.push(a)}}),b},getCheckedItems:function(){return this.listBox.getCheckedItems()},checkIndex:function(a){this.listBox.checkIndex(a)},uncheckIndex:function(a){this.listBox.uncheckIndex(a)},indeterminateIndex:function(a){this.listBox.indeterminateIndex(a)},checkAll:function(){this.listBox.checkAll(),this.renderSelection("mouse")},uncheckAll:function(){this.listBox.uncheckAll(),this.renderSelection("mouse")},insertAt:function(a,b){return null!=a&&this.listBox.insertAt(a,b)},addItem:function(a){return this.listBox.addItem(a)},removeAt:function(a){var b=this.listBox.removeAt(a);return this.renderSelection("mouse"),b},removeItem:function(a){var b=this.listBox.removeItem(a);return this.renderSelection("mouse"),b},updateItem:function(a,b){var c=this.listBox.updateItem(a,b);return this.renderSelection("mouse"),c},updateAt:function(a,b){var c=this.listBox.updateAt(a,b);return this.renderSelection("mouse"),c},ensureVisible:function(a){return this.listBox.ensureVisible(a)},disableAt:function(a){var b=this.getVisibleItem(a);return b&&this._disabledItems.push(b.value),this.listBox.disableAt(a)},enableAt:function(a){var b=this.getVisibleItem(a);return b&&this._disabledItems.splice(this._disabledItems.indexOf(b.value),1),this.listBox.enableAt(a)},disableItem:function(a){var a=this.getVisibleItem(a);return a&&this._disabledItems.push(a.value),this.listBox.disableItem(a)},enableItem:function(a){var a=this.getVisibleItem(a);return a&&this._disabledItems.splice(this._disabledItems.indexOf(a.value),1),this.listBox.enableItem(a)},_findPos:function(b){for(;b&&("hidden"==b.type||1!=b.nodeType||a.expr.filters.hidden(b));)b=b.nextSibling;if(b){var c=a(b).coord(!0);return[c.left,c.top]}},testOffset:function(b,c,d){var e=b.outerWidth(),f=b.outerHeight(),g=a(window).width()+a(window).scrollLeft(),h=a(window).height()+a(window).scrollTop();if(c.left+e>g&&e>this.host.width()){var i=this.host.coord().left,j=e-this.host.width();c.left=i-j+2}return c.left<0&&(c.left=parseInt(this.host.coord().left)+"px"),c.top-=Math.min(c.top,c.top+f>h&&h>f?Math.abs(f+d+23):0),c},open:function(){this.isOpened()||this.opening||this.showListBox("api")},close:function(){this.isOpened()&&this.hideListBox("api")},_getBodyOffset:function(){var b=0,c=0;return"0px"!=a("body").css("border-top-width")&&(b=parseInt(a("body").css("border-top-width")),isNaN(b)&&(b=0)),"0px"!=a("body").css("border-left-width")&&(c=parseInt(a("body").css("border-left-width")),isNaN(c)&&(c=0)),{left:c,top:b}},showListBox:function(b){if(!this.listBox.items||0!=this.listBox.items.length){if("search"!=b||this.autoComplete||this.remoteAutoComplete||this.autoDropDownHeight&&this.container.height(this.listBoxContainer.height()+25),(this.autoComplete||this.multiSelect&&!this.remoteAutoComplete)&&"search"!=b&&(this._updateItemsVisibility(""),this.multiSelect))for(var c=this.getVisibleItems(),d=0;d<c.length;d++)if(!c[d].disabled){this.ensureVisible(d);break}if(this.remoteAutoComplete&&this.listBox.clearSelection(),"search"!=b&&(this._oldvalue=this.listBox.selectedValue),a.jqx.aria(this,"aria-expanded",!0),"auto"==this.dropDownWidth&&null!=this.width&&this.width.indexOf&&this.width.indexOf("%")!=-1&&this.listBox.host.width()!=this.host.width()){var e=this.host.width();this.listBoxContainer.jqxListBox({width:e}),this.container.width(parseInt(e)+25)}var f,g=this,h=this.listBoxContainer,i=this.listBox,j=(a(window).scrollTop(),a(window).scrollLeft(),parseInt(this._findPos(this.host[0])[1])+parseInt(this.host.outerHeight())-1+"px"),k=parseInt(Math.round(this.host.coord(!0).left));f=k+"px","element"===this.dropDownContainer&&(j=parseInt(this.host.outerHeight())-1+"px",f=0);var l=a.jqx.mobile.isSafariMobileBrowser()||a.jqx.mobile.isWindowsPhone();this.ishiding=!1;var m=a.jqx.utilities.hasTransform(this.host);(m||null!=l&&l)&&(f=a.jqx.mobile.getLeftPos(this.element),j=a.jqx.mobile.getTopPos(this.element)+parseInt(this.host.outerHeight()),"0px"!=a("body").css("border-top-width")&&(j=parseInt(j)-this._getBodyOffset().top+"px"),"0px"!=a("body").css("border-left-width")&&(f=parseInt(f)-this._getBodyOffset().left+"px")),this.host.addClass(this.toThemeProperty("jqx-combobox-state-selected")),"top"==this.dropDownVerticalAlignment?this.dropdownlistArrowIcon.addClass(this.toThemeProperty("jqx-icon-arrow-up-selected")):this.dropdownlistArrowIcon.addClass(this.toThemeProperty("jqx-icon-arrow-down-selected")),this.dropdownlistArrow.addClass(this.toThemeProperty("jqx-combobox-arrow-selected")),this.dropdownlistArrow.addClass(this.toThemeProperty("jqx-fill-state-pressed")),this.host.addClass(this.toThemeProperty("jqx-combobox-state-focus")),this.host.addClass(this.toThemeProperty("jqx-fill-state-focus")),this.dropdownlistContent.addClass(this.toThemeProperty("jqx-combobox-content-focus")),this.container.css("left",f),this.container.css("top",j),i._arrange();var n=!1;if("right"==this.dropDownHorizontalAlignment||this.rtl){var o=this.container.outerWidth(),p=Math.abs(o-this.host.width());o>this.host.width()?this.container.css("left",25+parseInt(Math.round(k))-p+"px"):this.container.css("left",25+parseInt(Math.round(k))+p+"px")}if("top"==this.dropDownVerticalAlignment){var q=h.height();n=!0,h.css("top",23),h.addClass(this.toThemeProperty("jqx-popup-up"));var r=parseInt(this.host.outerHeight()),s=parseInt(j)-Math.abs(q+r+23);this.container.css("top",s)}if(this.enableBrowserBoundsDetection){var t=this.testOffset(h,{left:parseInt(this.container.css("left")),top:parseInt(j)},parseInt(this.host.outerHeight()));parseInt(this.container.css("top"))!=t.top?(n=!0,h.css("top",23),h.addClass(this.toThemeProperty("jqx-popup-up"))):h.css("top",0),this.container.css("top",t.top),this.container.css("top",t.top),parseInt(this.container.css("left"))!=t.left&&this.container.css("left",t.left)}if("none"==this.animationType)this.container.css("display","block"),a.data(document.body,"openedCombojqxListBoxParent",g),a.data(document.body,"openedCombojqxListBox"+g.element.id,h),h.css("margin-top",0),h.css("opacity",1);else{this.container.css("display","block");var u=h.outerHeight();h.stop(),"fade"==this.animationType?(h.css("margin-top",0),h.css("opacity",0),h.animate({opacity:1},this.openDelay,function(){g.isanimating=!1,g.opening=!1,a.data(document.body,"openedCombojqxListBoxParent",g),a.data(document.body,"openedCombojqxListBox"+g.element.id,h)})):(h.css("opacity",1),n?h.css("margin-top",u):h.css("margin-top",-u),this.isanimating=!0,this.opening=!0,h.animate({"margin-top":0},this.openDelay,function(){g.isanimating=!1,g.opening=!1,a.data(document.body,"openedCombojqxListBoxParent",g),a.data(document.body,"openedCombojqxListBox"+g.element.id,h)}))}i._renderItems(),n?(this.host.addClass(this.toThemeProperty("jqx-rc-t-expanded")),h.addClass(this.toThemeProperty("jqx-rc-b-expanded")),this.dropdownlistArrow.addClass(this.toThemeProperty("jqx-rc-t-expanded"))):(this.host.addClass(this.toThemeProperty("jqx-rc-b-expanded")),h.addClass(this.toThemeProperty("jqx-rc-t-expanded")),this.dropdownlistArrow.addClass(this.toThemeProperty("jqx-rc-b-expanded"))),h.addClass(this.toThemeProperty("jqx-fill-state-focus")),this._raiseEvent("0",i)}},doMultiSelect:function(b){this.checkboxes&&(this.multiSelect=!1);var c=this;if(!this.multiSelect){var d=c.dropdownlistContent.find(".jqx-button"),e="mousedown";this.touch&&(e=a.jqx.mobile.getTouchEventName("touchstart")),this.removeHandler(d,e),this.removeHandler(d.find(".jqx-icon-close"),e),d.remove();var f=this.listBox.items;if(!f)return;for(var g=0;g<f.length;g++)f[g].disabled=!1;return this.listBox._renderItems(),this.selectedItems=new Array,void(this._selectedItems=new Array)}if(this.validateSelection){var h=this.validateSelection(this.listBox.selectedValue);if(!h)return}this.selectedItems;if(this.listBox.selectedValue){if(this.selectedItems.indexOf(this.listBox.selectedValue)===-1){var i=this.getItemByValue(this.listBox.selectedValue);i&&i.visible&&(this.selectedItems.push(this.listBox.selectedValue),this._selectedItems.push(i),this._raiseEvent("2",{index:i.index,item:i}),this._raiseEvent("4",{index:i.index,item:i}))}this.listBox.selectedIndex=0}var f=this.listBox.items;if(f){for(var g=0;g<f.length;g++)f[g].disabled=!1,(this.selectedItems.indexOf(f[g].value)>=0||this._disabledItems.indexOf(this.value)>=0)&&(f[g].disabled=!0);this.listBox._renderItems(),this.searchString="",this.input.val("");var f="",e="mousedown",d=c.dropdownlistContent.find(".jqx-button");this.touch&&(e=a.jqx.mobile.getTouchEventName("touchstart")),this.removeHandler(d,e),this.removeHandler(d.find(".jqx-icon-close"),e),d.remove(),c.input.detach(),this.selectedItems.length>0?(c.input.css("width","25px"),c.input.attr("placeholder","")):(c.input.css("width","100%"),c.input.attr("placeholder",this.placeHolder)),a.each(this.selectedItems,function(b){var d=c.getItemByValue(this);d&&!c.remoteAutoComplete||(d=c._selectedItems[b]);var e=a('<div style="overflow: hidden; float: left;"></div>');if(e.addClass(c.toThemeProperty("jqx-button")),e.addClass(c.toThemeProperty("jqx-combobox-multi-item")),e.addClass(c.toThemeProperty("jqx-fill-state-normal")),e.addClass(c.toThemeProperty("jqx-rc-all")),d){var f=d.label;if(c.renderSelectedItem){var g=c.renderSelectedItem(b,d);g&&(f=g)}""==e[0].innerHTML&&(e[0].innerHTML='<a data-value="'+d.value+'" style="float: left;" href="#">'+f+"</a>"),c.rtl&&(e[0].innerHTML='<a data-value="'+d.value+'" style="float: right;" href="#">'+f+"</a>");var h=c.rtl?"left":"right";if(c.showCloseButtons){var i='<div style="position: relative; overflow: hidden; float: '+h+'; min-height: 16px; min-width: 18px;"><div style="position: absolute; left: 100%; top: 50%; margin-left: -18px; margin-top: -7px; float: none; width: 16px; height: 16px;" class="'+c.toThemeProperty("jqx-icon-close")+'"></div></div>';if(a.jqx.browser.msie&&a.jqx.browser.version<8&&(i='<div style="position: relative; overflow: hidden; float: left; min-height: 16px; min-width: 18px;"><div style="position: absolute; left: 100%; top: 50%; margin-left: -18px; margin-top: -7px; float: none; width: 16px; height: 16px;" class="'+c.toThemeProperty("jqx-icon-close")+'"></div></div>'),c.rtl){var i='<div style="position: relative; overflow: hidden; float: '+h+'; min-height: 16px; min-width: 18px;"><div style="position: absolute; left: 0px; top: 50%; margin-top: -7px; float: none; width: 16px; height: 16px;" class="'+c.toThemeProperty("jqx-icon-close")+'"></div></div>';a.jqx.browser.msie&&a.jqx.browser.version<8&&(i='<div style="position: relative; overflow: hidden; float: left; min-height: 16px; min-width: 18px;"><div style="position: absolute; left: 0px; top: 50%; margin-top: -7px; float: none; width: 16px; height: 16px;" class="'+c.toThemeProperty("jqx-icon-close")+'"></div></div>')}e[0].innerHTML+=i}}else""==e[0].innerHTML&&(e[0].innerHTML='<a href="#"></a>');c.dropdownlistContent.append(e)}),c.dropdownlistContent.append(c.input),c.input.val(""),b!==!1&&(c.input.focus(),setTimeout(function(){c.input.focus()},10));var d=c.dropdownlistContent.find(".jqx-button");this.touchMode===!0&&(e="mousedown"),this.addHandler(d,e,function(b){if(b.target.className.indexOf("jqx-icon-close")>=0)return!0;if(c.disabled)return!0;var d=a(b.target).attr("data-value"),e=c.getItemByValue(d);return e&&(c.listBox.selectedValue=null,c.listBox.clearSelection()),c.listBox.scrollTo(0,0),c.open(),b.preventDefault&&b.preventDefault(),b.stopPropagation&&b.stopPropagation(),!1}),this.addHandler(d.find(".jqx-icon-close"),e,function(b){if(!c.disabled){var d=a(b.target).parent().parent().find("a").attr("data-value"),e=c.getItemByValue(d);if(e||c.remoteAutoComplete&&!e&&c.selectedItems.indexOf(d)>=0){c.listBox.selectedValue=null;var f=c.selectedItems.indexOf(d),g=e&&e.index>=0?e.index:f;if(f>=0){c.selectedItems.splice(f,1);var h=c._selectedItems[f];h||(h=e),c._selectedItems.splice(f,1),c._raiseEvent("3",{index:g,type:"mouse",item:h}),c._raiseEvent("4",{index:g,type:"mouse",item:h}),c.doMultiSelect()}else for(var i=0;i<c.selectedItems.length;i++){var h=c.selectedItems[i];if(h==d){c.selectedItems.splice(i,1),c._selectedItems.splice(i,1),c._raiseEvent("3",{index:g,type:"mouse",item:e}),c._raiseEvent("4",{index:g,type:"mouse",item:e}),c.doMultiSelect();break}}}}}),c.dropdownlistArrow.height(this.host.height()),c._updateInputSelection()}},hideListBox:function(b){var c=this.listBoxContainer,d=this.listBox,e=this.container;if("none"!=this.container[0].style.display){a.jqx.aria(this,"aria-expanded",!1),"keyboard"!=b&&"mouse"!=b||(this.listBox.searchString=""),("keyboard"==b||"mouse"==b&&this.multiSelect)&&this.doMultiSelect();var f=this;if(a.data(document.body,"openedCombojqxListBox"+this.element.id,null),"none"==this.animationType)this.opening=!1,this.container.css("display","none");else if(!this.ishiding){var g=c.outerHeight();c.css("margin-top",0),c.stop(),this.opening=!1,this.isanimating=!0;var h=-g;parseInt(this.container.coord().top)<parseInt(this.host.coord().top)&&(h=g),"fade"==this.animationType?(c.css({opacity:1}),c.animate({opacity:0},this.closeDelay,function(){f.isanimating=!1,e.css("display","none"),f.ishiding=!1})):c.animate({"margin-top":h},this.closeDelay,function(){f.isanimating=!1,e.css("display","none"),f.ishiding=!1})}this.ishiding=!0,this.host.removeClass(this.toThemeProperty("jqx-combobox-state-selected")),this.dropdownlistArrowIcon.removeClass(this.toThemeProperty("jqx-icon-arrow-down-selected")),this.dropdownlistArrowIcon.removeClass(this.toThemeProperty("jqx-icon-arrow-up-selected")),this.dropdownlistArrow.removeClass(this.toThemeProperty("jqx-combobox-arrow-selected")),this.dropdownlistArrow.removeClass(this.toThemeProperty("jqx-fill-state-pressed")),this.focused||(this.host.removeClass(this.toThemeProperty("jqx-combobox-state-focus")),this.host.removeClass(this.toThemeProperty("jqx-fill-state-focus")),this.dropdownlistContent.removeClass(this.toThemeProperty("jqx-combobox-content-focus"))),this.host.removeClass(this.toThemeProperty("jqx-rc-b-expanded")),c.removeClass(this.toThemeProperty("jqx-rc-t-expanded")),this.host.removeClass(this.toThemeProperty("jqx-rc-t-expanded")),c.removeClass(this.toThemeProperty("jqx-rc-b-expanded")),c.removeClass(this.toThemeProperty("jqx-fill-state-focus")),this.dropdownlistArrow.removeClass(this.toThemeProperty("jqx-rc-t-expanded")),this.dropdownlistArrow.removeClass(this.toThemeProperty("jqx-rc-b-expanded")),this._raiseEvent("1",d)}},closeOpenedListBox:function(b){var c=b.data.that,d=a(b.target),e=b.data.listbox;if(null==e)return!0;if(!a(b.target).ischildof(c.host)){var f=!1;return a.each(d.parents(),function(){if("undefined"!=this.className&&this.className.indexOf){if(this.className.indexOf("jqx-listbox")!=-1)return f=!0,!1;if(this.className.indexOf("jqx-combobox")!=-1)return c.element.id==this.id&&(f=!0),!1}}),null==e||f||c.isOpened()&&(c.hideListBox("api"),c.input.blur()),!0}},loadFromSelect:function(a){this.listBox.loadFromSelect(a),this.clearSelection()},refresh:function(a){this._setSize(),this._arrange(),this.listBox&&this.renderSelection()},resize:function(){this._setSize(),this._arrange()},_arrange:function(){var b=parseInt(this.host.width()),c=parseInt(this.host.height()),d=this.arrowSize,e=this.arrowSize,f=1;this.showArrow?"none"===this.dropdownlistArrow[0].style.display&&this.dropdownlistArrow.show():(e=0,d=0,this.dropdownlistArrow.hide(),f=0,this.host.css("cursor","arrow"));var g=b-e-1*f;g>0&&(this.dropdownlistContent[0].style.width=g+"px"),this.rtl&&(this.dropdownlistContent[0].style.width=-1+g+"px"),this.dropdownlistContent[0].style.height=c+"px",this.dropdownlistContent[0].style.left="0px",this.dropdownlistContent[0].style.top="0px",this.dropdownlistArrow[0].style.width=e+1+"px",this.dropdownlistArrow[0].style.height=c+"px",this.dropdownlistArrow[0].style.left=1+g+"px",this.input[0].style.width="100%",this.multiSelect||this.input.height(c);var h=this.input.height();0==h&&(h=parseInt(this.input.css("font-size"))+3),this.input[0].className.indexOf("jqx-rc-all")==-1&&this.input.addClass(this.toThemeProperty("jqx-rc-all"));var i=parseInt(c)/2-parseInt(h)/2;if(this.rtl&&(this.dropdownlistArrow.css("left","0px"),this.dropdownlistContent.css("left",this.dropdownlistArrow.width()),a.jqx.browser.msie&&a.jqx.browser.version<=8&&this.dropdownlistContent.css("left",1+this.dropdownlistArrow.width())),this.multiSelect){this.input.css("float","left"),this.input.width(25),this.dropdownlistWrapper.parent().css("height","auto"),this.dropdownlistContent.css("height","auto"),this.dropdownlistWrapper.css("height","auto"),this.dropdownlistContent.css("position","relative"),this.dropdownlistContent.css("cursor","text"),this.host.css("height","auto"),this.host.css("min-height",this.height),this.dropdownlistContent.css("min-height",this.height);var c=parseInt(this.host.height());this.dropdownlistArrow.height(c);var j=parseInt(this.host.css("min-height")),i=parseInt(j)/2-parseInt(h)/2;i>0&&this.input.css("margin-top",i)}},destroy:function(){this.source&&this.source.unbindBindingUpdate&&(this.source.unbindBindingUpdate(this.element.id),this.source.unbindBindingUpdate(this.listBoxContainer[0].id),this.source.unbindDownloadComplete(this.element.id),this.source.unbindDownloadComplete(this.listBoxContainer[0].id)),a.jqx.utilities.resize(this.host,null,!0),this.removeHandler(this.listBoxContainer,"select"),this.removeHandler(this.listBoxContainer,"unselect"),this.removeHandler(this.listBoxContainer,"change"),this.removeHandler(this.listBoxContainer,"bindingComplete"),this.removeHandler(this.dropdownlistWrapper,"selectstart"),this.removeHandler(this.dropdownlistWrapper,"mousedown"),this.removeHandler(this.host,"keydown"),this.removeHandler(this.listBoxContainer,"select"),this.removeHandler(this.listBox.content,"click"),this.removeHandlers(),this.removeHandler(this.input,"keyup.textchange"),this.listBoxContainer.jqxListBox("destroy"),this.listBoxContainer.remove(),this.host.removeClass(),this.removeHandler(a(document),"mousedown."+this.id,this.closeOpenedListBox),this.touch&&this.removeHandler(a(document),a.jqx.mobile.getTouchEventName("touchstart")+"."+this.id),this.cinput.remove(),delete this.cinput,this.dropdownlistArrow.remove(),delete this.dropdownlistArrow,this.dropdownlistArrowIcon.remove(),delete this.dropdownlistArrowIcon,delete this.dropdownlistWrapper,delete this.listBoxContainer,delete this.input,delete this.dropdownlistContent,delete this.comboStructure,this.container.remove(),delete this.listBox,delete this.container;var b=a.data(this.element,"jqxComboBox");b&&delete b.instance,this.host.removeData(),this.host.remove(),delete this.host,delete this.set,delete this.get,delete this.call,delete this.element},_raiseEvent:function(b,c){void 0==c&&(c={owner:null});var d=this.events[b];args=c,args.owner=this;var e=new a.Event(d);e.owner=this,2!=b&&3!=b&&4!=b&&5!=b&&6!=b&&7!=b&&8!=b&&9!=b||(e.args=c);var f=this.host.trigger(e);return f},propertiesChangedHandler:function(a,b,c){if(c.width&&c.height&&2==Object.keys(c).length){if(a._setSize(),"width"==b&&"auto"==a.dropDownWidth){var d=a.host.width();a.listBoxContainer.jqxListBox({width:d}),a.container.width(parseInt(d)+25)}a._arrange(),a.close()}},propertyChangedHandler:function(b,c,d,e){if(void 0!=b.isInitialized&&0!=b.isInitialized&&!(b.batchUpdate&&b.batchUpdate.width&&b.batchUpdate.height&&2==Object.keys(b.batchUpdate).length)){if("template"==c&&(b.listBoxContainer.removeClass(b.toThemeProperty("jqx-"+d+"-item")),b.listBoxContainer.addClass(b.toThemeProperty("jqx-"+b.template+"-item")),b.dropDownListArrow.removeClass(b.toThemeProperty("jqx-"+d)),b.dropDownListArrow.addClass(b.toThemeProperty("jqx-"+b.template))),"dropDownVerticalAlignment"==c&&(b.dropdownlistArrowIcon.removeClass(b.toThemeProperty("jqx-icon-arrow-up")),b.dropdownlistArrowIcon.removeClass(b.toThemeProperty("jqx-icon-arrow-down")),"top"==b.dropDownVerticalAlignment?b.dropdownlistArrowIcon.addClass(b.toThemeProperty("jqx-icon-arrow-up")):b.dropdownlistArrowIcon.addClass(b.toThemeProperty("jqx-icon-arrow-down")),b.listBoxContainer.css("top",0),b.listBoxContainer.removeClass(this.toThemeProperty("jqx-popup-up"))),"autoItemsHeight"==c&&b.listBoxContainer.jqxListBox({autoItemsHeight:e}),"itemHeight"==c&&b.listBoxContainer.jqxListBox({itemHeight:e}),"renderSelectedItem"==c&&b.renderSelection("mouse"),"renderer"==c&&b.listBoxContainer.jqxListBox({renderer:e}),"enableSelection"==c&&b.listBoxContainer.jqxListBox({enableSelection:e}),"enableHover"==c&&b.listBoxContainer.jqxListBox({enableHover:e}),"touchMode"===c&&(b.listBoxContainer.jqxListBox({touchMode:e}),b.touch=a.jqx.mobile.isTouchDevice(),b.touchMode===!0&&(b.touch=!0),b._updateHandlers()),"multiSelect"==c)if(e)b.doMultiSelect(!1);else{for(var f=b.listBox.items,g=-1,h=0;h<f.length;h++)f[h].disabled=!1,(b.selectedItems.indexOf(f[h].value)>=0||b._disabledItems.indexOf(b.value)>=0)&&(f[h].disabled=!0,g=f[h].index);if(b.doMultiSelect(!1),b.listBox._renderItems(),!f)return;b.listBox.selectedIndex=g,b.renderSelection("mouse"),b.dropdownlistWrapper.parent().css("height","100%"),b.dropdownlistContent.css("height","100"),b.dropdownlistWrapper.css("height","100"),b.dropdownlistContent.css("position","relative"),b.host.css("min-height",null),b._setSize(),b._arrange()}if("showArrow"==c&&(b._arrange(),b.multiSelect&&b.doMultiSelect(!1)),"placeHolder"==c&&b.input.attr("placeholder",b.placeHolder),"popupZIndex"==c&&b.listBoxContainer.css({zIndex:b.popupZIndex}),"promptText"==c&&(b.placeHolder=e),"autoOpen"==c&&b._updateHandlers(),"renderer"==c&&(b.listBox.renderer=b.renderer),"itemHeight"==c&&(b.listBox.itemHeight=e),"source"==c&&(b.input.val(""),b.listBoxContainer.jqxListBox({source:b.source}),b.renderSelection("mouse"),null==b.source&&b.clearSelection(),b.multiSelect&&(b.selectedItems=new Array,b._selectedItems=new Array,b.doMultiSelect(!1))),"rtl"==c&&(e?(b.dropdownlistArrow.css("float","left"),b.dropdownlistContent.css("float","right")):(b.dropdownlistArrow.css("float","right"),b.dropdownlistContent.css("float","left")),b.listBoxContainer.jqxListBox({rtl:b.rtl})),"displayMember"!=c&&"valueMember"!=c||(b.listBoxContainer.jqxListBox({displayMember:b.displayMember,valueMember:b.valueMember}),b.renderSelection("mouse")),"autoDropDownHeight"==c&&(b.listBoxContainer.jqxListBox({autoHeight:b.autoDropDownHeight}),b.autoDropDownHeight?b.container.height(b.listBoxContainer.height()+25):(b.listBoxContainer.jqxListBox({height:b.dropDownHeight}),b.container.height(parseInt(b.dropDownHeight)+25)),b.listBox._arrange(),b.listBox._updatescrollbars()),"dropDownHeight"==c&&(b.autoDropDownHeight||(b.listBoxContainer.jqxListBox({height:b.dropDownHeight}),b.container.height(parseInt(b.dropDownHeight)+25))),"dropDownWidth"==c||"scrollBarSize"==c){var i=b.width;"auto"!=b.dropDownWidth&&(i=b.dropDownWidth),b.listBoxContainer.jqxListBox({width:i,scrollBarSize:b.scrollBarSize}),b.container.width(parseInt(i)+25)}if("autoComplete"==c&&b._resetautocomplete(),"checkboxes"==c&&(b.listBoxContainer.jqxListBox({checkboxes:b.checkboxes}),b.checkboxes?(b.input.attr("readonly",!0),a.jqx.aria(b,"aria-readonly",!0)):a.jqx.aria(b,"aria-readonly",!1)),"theme"==c&&null!=e&&(b.listBoxContainer.jqxListBox({theme:e}),b.listBoxContainer.addClass(b.toThemeProperty("jqx-popup")),a.jqx.browser.msie&&b.listBoxContainer.addClass(b.toThemeProperty("jqx-noshadow")),a.jqx.utilities.setTheme(d,e,b.host)),"rtl"==c&&(b.render(),b.refresh()),"width"==c||"height"==c){if(b._setSize(),"width"==c&&"auto"==b.dropDownWidth){var i=b.host.width();b.listBoxContainer.jqxListBox({width:i}),b.container.width(parseInt(i)+25)}b._arrange(),b.close()}"selectedIndex"==c&&(b.listBox.selectIndex(e),b.renderSelection("mouse"))}}})}(jqxBaseFramework);
2d1d43c3a2c2 Upgraded jqwidgets to version 4.5.2
Michiel Broek <mbroek@mbse.eu>
parents: 373
diff changeset
8

mercurial