104 lines
2.8 KiB
JavaScript
104 lines
2.8 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
|
see: http://dojotoolkit.org/license for details
|
|
*/
|
|
|
|
|
|
if(!dojo._hasResource["dijit.form.Textarea"]){
|
|
dojo._hasResource["dijit.form.Textarea"]=true;
|
|
dojo.provide("dijit.form.Textarea");
|
|
dojo.require("dijit.form.SimpleTextarea");
|
|
dojo.declare("dijit.form.Textarea",dijit.form.SimpleTextarea,{cols:"",_previousNewlines:0,_strictMode:(dojo.doc.compatMode!="BackCompat"),_getHeight:function(_1){
|
|
var _2=_1.scrollHeight;
|
|
if(dojo.isIE){
|
|
_2+=_1.offsetHeight-_1.clientHeight-((dojo.isIE<8&&this._strictMode)?dojo._getPadBorderExtents(_1).h:0);
|
|
}else{
|
|
if(dojo.isMoz){
|
|
_2+=_1.offsetHeight-_1.clientHeight;
|
|
}else{
|
|
if(dojo.isWebKit&&!(dojo.isSafari<4)){
|
|
_2+=dojo._getBorderExtents(_1).h;
|
|
}else{
|
|
_2+=dojo._getPadBorderExtents(_1).h;
|
|
}
|
|
}
|
|
}
|
|
return _2;
|
|
},_estimateHeight:function(_3){
|
|
_3.style.maxHeight="";
|
|
_3.style.height="auto";
|
|
_3.rows=(_3.value.match(/\n/g)||[]).length+1;
|
|
},_needsHelpShrinking:dojo.isMoz||dojo.isWebKit,_onInput:function(){
|
|
this.inherited(arguments);
|
|
if(this._busyResizing){
|
|
return;
|
|
}
|
|
this._busyResizing=true;
|
|
var _4=this.textbox;
|
|
if(_4.scrollHeight&&_4.offsetHeight&&_4.clientHeight){
|
|
var _5=this._getHeight(_4)+"px";
|
|
if(_4.style.height!=_5){
|
|
_4.style.maxHeight=_4.style.height=_5;
|
|
}
|
|
if(this._needsHelpShrinking){
|
|
if(this._setTimeoutHandle){
|
|
clearTimeout(this._setTimeoutHandle);
|
|
}
|
|
this._setTimeoutHandle=setTimeout(dojo.hitch(this,"_shrink"),0);
|
|
}
|
|
}else{
|
|
this._estimateHeight(_4);
|
|
}
|
|
this._busyResizing=false;
|
|
},_busyResizing:false,_shrink:function(){
|
|
this._setTimeoutHandle=null;
|
|
if(this._needsHelpShrinking&&!this._busyResizing){
|
|
this._busyResizing=true;
|
|
var _6=this.textbox;
|
|
var _7=false;
|
|
if(_6.value==""){
|
|
_6.value=" ";
|
|
_7=true;
|
|
}
|
|
var _8=_6.scrollHeight;
|
|
if(!_8){
|
|
this._estimateHeight(_6);
|
|
}else{
|
|
var _9=_6.style.paddingBottom;
|
|
var _a=dojo._getPadExtents(_6);
|
|
_a=_a.h-_a.t;
|
|
_6.style.paddingBottom=_a+1+"px";
|
|
var _b=this._getHeight(_6)-1+"px";
|
|
if(_6.style.maxHeight!=_b){
|
|
_6.style.paddingBottom=_a+_8+"px";
|
|
_6.scrollTop=0;
|
|
_6.style.maxHeight=this._getHeight(_6)-_8+"px";
|
|
}
|
|
_6.style.paddingBottom=_9;
|
|
}
|
|
if(_7){
|
|
_6.value="";
|
|
}
|
|
this._busyResizing=false;
|
|
}
|
|
},resize:function(){
|
|
this._onInput();
|
|
},_setValueAttr:function(){
|
|
this.inherited(arguments);
|
|
this.resize();
|
|
},postCreate:function(){
|
|
this.inherited(arguments);
|
|
dojo.style(this.textbox,{overflowY:"hidden",overflowX:"auto",boxSizing:"border-box",MsBoxSizing:"border-box",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box"});
|
|
this.connect(this.textbox,"onscroll",this._onInput);
|
|
this.connect(this.textbox,"onresize",this._onInput);
|
|
this.connect(this.textbox,"onfocus",this._onInput);
|
|
this._setTimeoutHandle=setTimeout(dojo.hitch(this,"resize"),0);
|
|
},uninitialize:function(){
|
|
if(this._setTimeoutHandle){
|
|
clearTimeout(this._setTimeoutHandle);
|
|
}
|
|
this.inherited(arguments);
|
|
}});
|
|
}
|