Roo/bootstrap/ComboBox.js
[roojs1] / roojs-bootstrap.js
index 6a0240e..c2ea568 100644 (file)
@@ -1641,25 +1641,28 @@ if(this.indicatorpos=='right'){I.cls='roo-required-indicator text-danger fa fa-l
 }if(this.labellg>0){J.cls+=' col-lg-'+this.labellg;C.cls+=' col-lg-'+(12-this.labellg);}if(this.labelmd>0){J.cls+=' col-md-'+this.labelmd;H.cls+=' col-md-'+(12-this.labelmd);}if(this.labelsm>0){J.cls+=' col-sm-'+this.labelsm;H.cls+=' col-sm-'+(12-this.labelsm);
 }if(this.labelxs>0){J.cls+=' col-xs-'+this.labelxs;H.cls+=' col-xs-'+(12-this.labelxs);}}}B.cn=[J,H];var L=this;['xs','sm','md','lg'].map(function(M){if(L[M]){B.cls+=' col-'+M+'-'+L[M];}});return B;},initEvents:function(){this.indicator=this.indicatorEl();
 this.initCurrencyEvent();this.initNumberEvent();},initCurrencyEvent:function(){if(!this.store){throw "can not find store for combo";}this.store=Roo.factory(this.store,Roo.data);this.store.parent=this;this.createList();this.triggerEl=this.el.select('.input-group-addon',true).first();
-this.triggerEl.on("click",this.onTriggerClick,this,{preventDefault:true});this.currencyEl=this.el.select('.roo-money-currency-input',true).first();this.amountEl=this.el.select('.roo-money-amount-input',true).first();var A=this;(function(){var lw=A.listWidth||Math.max(A.inputEl().getWidth(),A.minListWidth);
-A.list.setWidth(lw);}).defer(100);this.list.on('mouseover',this.onViewOver,this);this.list.on('mousemove',this.onViewMove,this);this.list.on('scroll',this.onViewScroll,this);if(!this.tpl){this.tpl='<li><a href="#">{'+this.currencyField+'}</a></li>';}this.view=new Roo.View(this.list,this.tpl,{singleSelect:true,store:this.store,selectedClass:this.selectedClass}
-);this.view.on('click',this.onViewClick,this);this.store.on('beforeload',this.onBeforeLoad,this);this.store.on('load',this.onLoad,this);this.store.on('loadexception',this.onLoadException,this);this.keyNav=new Roo.KeyNav(this.currencyEl,{"up":function(e){this.inKeyMode=true;
-this.selectPrev();},"down":function(e){if(!this.isExpanded()){this.onTriggerClick();}else{this.inKeyMode=true;this.selectNext();}},"enter":function(e){this.collapse();if(this.fireEvent("specialkey",this,e)){this.onViewClick(false);}return true;},"esc":function(e){this.collapse();
-},"tab":function(e){this.collapse();if(this.fireEvent("specialkey",this,e)){this.onViewClick(false);}return true;},scope:this,doRelay:function(B,C,D){if(D=='down'||this.scope.isExpanded()){return Roo.KeyNav.prototype.doRelay.apply(this,arguments);}return true;
-},forceKeyDown:true});},initNumberEvent:function(e){this.inputEl().on("keydown",this.fireKey,this);this.inputEl().on("focus",this.onFocus,this);this.inputEl().on("blur",this.onBlur,this);this.inputEl().relayEvent('keyup',this);if(this.indicator){this.indicator.addClass('invisible');
-}this.originalValue=this.getValue();if(this.validationEvent=='keyup'){this.validationTask=new Roo.util.DelayedTask(this.validate,this);this.inputEl().on('keyup',this.filterValidation,this);}else if(this.validationEvent!==false){this.inputEl().on(this.validationEvent,this.validate,this,{buffer:this.validationDelay}
-);}if(this.selectOnFocus){this.on("focus",this.preFocus,this);}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Roo.form.VTypes[this.vtype+'Mask']))){this.inputEl().on("keypress",this.filterKeys,this);}else{this.inputEl().relayEvent('keypress',this);
-}var A="0123456789";if(this.allowDecimals){A+=this.decimalSeparator;}if(this.allowNegative){A+="-";}this.stripCharsRe=new RegExp('[^'+A+']','gi');var B=function(e){var k=e.getKey();var c=e.getCharCode();if((String.fromCharCode(c)=='.'||String.fromCharCode(c)=='-')&&A.indexOf(String.fromCharCode(c))===-1){e.stopEvent();
+this.triggerEl.on("click",this.onTriggerClick,this,{preventDefault:true});var A=this;(function(){var lw=A.listWidth||Math.max(A.inputEl().getWidth(),A.minListWidth);A.list.setWidth(lw);}).defer(100);this.list.on('mouseover',this.onViewOver,this);this.list.on('mousemove',this.onViewMove,this);
+this.list.on('scroll',this.onViewScroll,this);if(!this.tpl){this.tpl='<li><a href="#">{'+this.currencyField+'}</a></li>';}this.view=new Roo.View(this.list,this.tpl,{singleSelect:true,store:this.store,selectedClass:this.selectedClass});this.view.on('click',this.onViewClick,this);
+this.store.on('beforeload',this.onBeforeLoad,this);this.store.on('load',this.onLoad,this);this.store.on('loadexception',this.onLoadException,this);this.keyNav=new Roo.KeyNav(this.currencyEl(),{"up":function(e){this.inKeyMode=true;this.selectPrev();},"down":function(e){if(!this.isExpanded()){this.onTriggerClick();
+}else{this.inKeyMode=true;this.selectNext();}},"enter":function(e){this.collapse();if(this.fireEvent("specialkey",this,e)){this.onViewClick(false);}return true;},"esc":function(e){this.collapse();},"tab":function(e){this.collapse();if(this.fireEvent("specialkey",this,e)){this.onViewClick(false);
+}return true;},scope:this,doRelay:function(B,C,D){if(D=='down'||this.scope.isExpanded()){return Roo.KeyNav.prototype.doRelay.apply(this,arguments);}return true;},forceKeyDown:true});this.queryDelay=Math.max(this.queryDelay||10,this.mode=='local'?10:250);this.dqTask=new Roo.util.DelayedTask(this.initQuery,this);
+if(this.typeAhead){this.taTask=new Roo.util.DelayedTask(this.onTypeAhead,this);}this.currencyEl().on("keyup",this.onCurrencyKeyUp,this);},initNumberEvent:function(e){this.inputEl().on("keydown",this.fireKey,this);this.inputEl().on("focus",this.onFocus,this);
+this.inputEl().on("blur",this.onBlur,this);this.inputEl().relayEvent('keyup',this);if(this.indicator){this.indicator.addClass('invisible');}this.originalValue=this.getValue();if(this.validationEvent=='keyup'){this.validationTask=new Roo.util.DelayedTask(this.validate,this);
+this.inputEl().on('keyup',this.filterValidation,this);}else if(this.validationEvent!==false){this.inputEl().on(this.validationEvent,this.validate,this,{buffer:this.validationDelay});}if(this.selectOnFocus){this.on("focus",this.preFocus,this);}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Roo.form.VTypes[this.vtype+'Mask']))){this.inputEl().on("keypress",this.filterKeys,this);
+}else{this.inputEl().relayEvent('keypress',this);}var A="0123456789";if(this.allowDecimals){A+=this.decimalSeparator;}if(this.allowNegative){A+="-";}this.stripCharsRe=new RegExp('[^'+A+']','gi');var B=function(e){var k=e.getKey();var c=e.getCharCode();if((String.fromCharCode(c)=='.'||String.fromCharCode(c)=='-')&&A.indexOf(String.fromCharCode(c))===-1){e.stopEvent();
 return;}if(!Roo.isIE&&(e.isSpecialKey()||k==e.BACKSPACE||k==e.DELETE)){return;}if(A.indexOf(String.fromCharCode(c))===-1){e.stopEvent();}};this.inputEl().on("keypress",B,this);},onTriggerClick:function(e){if(this.disabled){return;}this.page=0;this.loadNext=false;
-if(this.isExpanded()){this.collapse();return;}this.hasFocus=true;if(this.triggerAction=='all'){this.doQuery(this.allQuery,true);return;}this.doQuery(this.getRawValue());},getCurrency:function(){var v=this.currencyEl.getValue();return v;},restrictHeight:function(){this.list.alignTo(this.currencyEl,this.listAlign);
-this.list.alignTo(this.currencyEl,this.listAlign);},onViewClick:function(A,B,el,e){var C=this.view.getSelectedIndexes()[0];var r=this.store.getAt(C);if(r){this.onSelect(r,C);}},onSelect:function(A,B){if(this.fireEvent('beforeselect',this,A,B)!==false){this.setFromCurrencyData(B>-1?A.data:false);
-this.collapse();this.fireEvent('select',this,A,B);}},setFromCurrencyData:function(o){Roo.log('set From currency data?!');Roo.log(o);var A='';this.lastCurrency=o;if(this.currencyName){A=!o||typeof(o[this.currencyName])=='undefined'?'':o[this.currencyName];
-}else{Roo.log('no  currencyName value set for '+(this.name?this.name:this.id));}this.lastSelectionText=A;Roo.log(A);this.setCurrency(A);},setFromData:function(o){this.setFromCurrencyData(o);var A='';if(this.name){A=!o||typeof(o[this.name])=='undefined'?'':o[this.name];
-}else{Roo.log('no value set for '+(this.name?this.name:this.id));}this.setValue(A);},setCurrency:function(v){Roo.log('set currency : '+v);this.currencyValue=v;if(this.rendered){this.currencyEl.dom.value=(v===null||v===undefined?'':v);this.validate();}},setValue:function(v){v=this.fixPrecision(v);
+if(this.isExpanded()){this.collapse();return;}this.hasFocus=true;if(this.triggerAction=='all'){this.doQuery(this.allQuery,true);return;}this.doQuery(this.getRawValue());},getCurrency:function(){var v=this.currencyEl().getValue();return v;},restrictHeight:function(){this.list.alignTo(this.currencyEl(),this.listAlign);
+this.list.alignTo(this.currencyEl(),this.listAlign);},onViewClick:function(A,B,el,e){var C=this.view.getSelectedIndexes()[0];var r=this.store.getAt(C);if(r){this.onSelect(r,C);}},onSelect:function(A,B){if(this.fireEvent('beforeselect',this,A,B)!==false){this.setFromCurrencyData(B>-1?A.data:false);
+this.collapse();this.fireEvent('select',this,A,B);}},setFromCurrencyData:function(o){var A='';this.lastCurrency=o;if(this.currencyField){A=!o||typeof(o[this.currencyField])=='undefined'?'':o[this.currencyField];}else{Roo.log('no  currencyField value set for '+(this.name?this.name:this.id));
+}this.lastSelectionText=A;this.setCurrency(A);},setFromData:function(o){var c={};c[this.currencyField]=!o||typeof(o[this.currencyName])=='undefined'?'':o[this.currencyName];this.setFromCurrencyData(c);var A='';if(this.name){A=!o||typeof(o[this.name])=='undefined'?'':o[this.name];
+}else{Roo.log('no value set for '+(this.name?this.name:this.id));}this.setValue(A);},setCurrency:function(v){this.currencyValue=v;if(this.rendered){this.currencyEl().dom.value=(v===null||v===undefined?'':v);this.validate();}},setValue:function(v){v=this.fixPrecision(v);
 v=String(v).replace(".",this.decimalSeparator);this.value=v;if(this.rendered){this.inputEl().dom.value=(v===null||v===undefined?'':v);this.validate();}},getRawValue:function(){var v=this.inputEl().getValue();return v;},getValue:function(){return this.fixPrecision(this.parseValue(this.getRawValue()));
 },parseValue:function(A){A=parseFloat(String(A).replace(this.decimalSeparator,"."));return isNaN(A)?'':A;},fixPrecision:function(A){var B=isNaN(A);if(!this.allowDecimals||this.decimalPrecision==-1||B||!A){return B?'':A;}return parseFloat(A).toFixed(this.decimalPrecision);
 },decimalPrecisionFcn:function(v){return Math.floor(v);},validateValue:function(A){if(!Roo.bootstrap.MoneyField.superclass.validateValue.call(this,A)){return false;}var B=this.parseValue(A);if(isNaN(B)){this.markInvalid(String.format(this.nanText,A));return false;
 }if(B<this.minValue){this.markInvalid(String.format(this.minText,this.minValue));return false;}if(B>this.maxValue){this.markInvalid(String.format(this.maxText,this.maxValue));return false;}return true;},validate:function(){if(this.disabled){this.markValid();
 return true;}var A=this.getCurrency();if(this.validateValue(this.getRawValue())&&A.length){this.markValid();return true;}this.markInvalid();return false;},getName:function(){return this.name;},beforeBlur:function(){if(!this.castInt){return;}var v=this.parseValue(this.getRawValue());
 if(v){this.setValue(v);}},onBlur:function(){this.beforeBlur();if(!Roo.isOpera&&this.focusClass){}this.hasFocus=false;if(this.validationEvent!==false&&this.validateOnBlur&&this.validationEvent!="blur"){this.validate();}var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent('change',this,v,this.startValue);
-}this.fireEvent("blur",this);},inputEl:function(){return this.amountEl?this.amountEl:this.el.select('.roo-money-amount-input',true).first();}});
+}this.fireEvent("blur",this);},onCurrencyKeyUp:function(e){if(!e.isSpecialKey()){this.hasFocus=true;this.lastKey=e.getKey();this.dqTask.delay(this.queryDelay);}},inputEl:function(){return this.el.select('.roo-money-amount-input',true).first();},currencyEl:function(){return this.el.select('.roo-money-currency-input',true).first();
+},initQuery:function(){var v=this.getCurrency();this.doQuery(v);},onTypeAhead:function(){if(this.store.getCount()>0){var r=this.store.getAt(0);var A=r.data[this.currencyField];var B=A.length;var C=this.getCurrency().length;if(C!=B){this.setCurrency(A);this.selectText(C,A.length);
+}}},selectText:function(A,B){var v=this.getCurrency();if(v.length>0){A=A===undefined?0:A;B=B===undefined?v.length:B;var d=this.el.dom;if(d.setSelectionRange){d.setSelectionRange(A,B);}else if(d.createTextRange){var C=d.createTextRange();C.moveStart("character",A);
+C.moveEnd("character",v.length-B);C.select();}}}});