diff options
author | Barak Korren <[email protected]> | 2013-04-02 20:38:07 +0300 |
---|---|---|
committer | Barak Korren <[email protected]> | 2013-04-02 20:38:07 +0300 |
commit | 58a2577d48790c79adfd44bcfd662c980ce6cfe4 (patch) | |
tree | 523d814ea0b7b6f617fe515b186099c6e83fed72 /lib/dijit/form/_ExpandingTextAreaMixin.js.uncompressed.js | |
parent | e470a273cf09562fb2f9c0c899002303f19c8d16 (diff) | |
parent | cc332603431102a682feda22b9cf0093a29f0176 (diff) |
Merge branch 'master' of https://github.com/gothfox/Tiny-Tiny-RSS.git
Diffstat (limited to 'lib/dijit/form/_ExpandingTextAreaMixin.js.uncompressed.js')
-rw-r--r-- | lib/dijit/form/_ExpandingTextAreaMixin.js.uncompressed.js | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/lib/dijit/form/_ExpandingTextAreaMixin.js.uncompressed.js b/lib/dijit/form/_ExpandingTextAreaMixin.js.uncompressed.js deleted file mode 100644 index 382663e98..000000000 --- a/lib/dijit/form/_ExpandingTextAreaMixin.js.uncompressed.js +++ /dev/null @@ -1,130 +0,0 @@ -define("dijit/form/_ExpandingTextAreaMixin", [ - "dojo/_base/declare", // declare - "dojo/dom-construct", // domConstruct.create - "dojo/has", - "dojo/_base/lang", // lang.hitch - "dojo/on", - "dojo/_base/window", // win.body - "../Viewport" -], function(declare, domConstruct, has, lang, on, win, Viewport){ - - // module: - // dijit/form/_ExpandingTextAreaMixin - - // feature detection, true for mozilla and webkit - has.add("textarea-needs-help-shrinking", function(){ - var body = win.body(), // note: if multiple documents exist, doesn't matter which one we use - te = domConstruct.create('textarea', { - rows:"5", - cols:"20", - value: ' ', - style: {zoom:1, fontSize:"12px", height:"96px", overflow:'hidden', visibility:'hidden', position:'absolute', border:"5px solid white", margin:"0", padding:"0", boxSizing: 'border-box', MsBoxSizing: 'border-box', WebkitBoxSizing: 'border-box', MozBoxSizing: 'border-box' } - }, body, "last"); - var needsHelpShrinking = te.scrollHeight >= te.clientHeight; - body.removeChild(te); - return needsHelpShrinking; - }); - - return declare("dijit.form._ExpandingTextAreaMixin", null, { - // summary: - // Mixin for textarea widgets to add auto-expanding capability - - _setValueAttr: function(){ - this.inherited(arguments); - this.resize(); - }, - - postCreate: function(){ - this.inherited(arguments); - var textarea = this.textbox; - textarea.style.overflowY = "hidden"; - this.own(on(textarea, "focus, resize", lang.hitch(this, "_resizeLater"))); - }, - - startup: function(){ - this.inherited(arguments); - this.own(Viewport.on("resize", lang.hitch(this, "_resizeLater"))); - this._resizeLater(); - }, - - _onInput: function(e){ - this.inherited(arguments); - this.resize(); - }, - - _estimateHeight: function(){ - // summary: - // Approximate the height when the textarea is invisible with the number of lines in the text. - // Fails when someone calls setValue with a long wrapping line, but the layout fixes itself when the user clicks inside so . . . - // In IE, the resize event is supposed to fire when the textarea becomes visible again and that will correct the size automatically. - // - var textarea = this.textbox; - // #rows = #newlines+1 - textarea.rows = (textarea.value.match(/\n/g) || []).length + 1; - }, - - _resizeLater: function(){ - this.defer("resize"); - }, - - resize: function(){ - // summary: - // Resizes the textarea vertically (should be called after a style/value change) - - var textarea = this.textbox; - - function textareaScrollHeight(){ - var empty = false; - if(textarea.value === ''){ - textarea.value = ' '; - empty = true; - } - var sh = textarea.scrollHeight; - if(empty){ textarea.value = ''; } - return sh; - } - - if(textarea.style.overflowY == "hidden"){ textarea.scrollTop = 0; } - if(this.busyResizing){ return; } - this.busyResizing = true; - if(textareaScrollHeight() || textarea.offsetHeight){ - var newH = textareaScrollHeight() + Math.max(textarea.offsetHeight - textarea.clientHeight, 0); - var newHpx = newH + "px"; - if(newHpx != textarea.style.height){ - textarea.style.height = newHpx; - textarea.rows = 1; // rows can act like a minHeight if not cleared - } - if(has("textarea-needs-help-shrinking")){ - var origScrollHeight = textareaScrollHeight(), - newScrollHeight = origScrollHeight, - origMinHeight = textarea.style.minHeight, - decrement = 4, // not too fast, not too slow - thisScrollHeight, - origScrollTop = textarea.scrollTop; - textarea.style.minHeight = newHpx; // maintain current height - textarea.style.height = "auto"; // allow scrollHeight to change - while(newH > 0){ - textarea.style.minHeight = Math.max(newH - decrement, 4) + "px"; - thisScrollHeight = textareaScrollHeight(); - var change = newScrollHeight - thisScrollHeight; - newH -= change; - if(change < decrement){ - break; // scrollHeight didn't shrink - } - newScrollHeight = thisScrollHeight; - decrement <<= 1; - } - textarea.style.height = newH + "px"; - textarea.style.minHeight = origMinHeight; - textarea.scrollTop = origScrollTop; - } - textarea.style.overflowY = textareaScrollHeight() > textarea.clientHeight ? "auto" : "hidden"; - if(textarea.style.overflowY == "hidden"){ textarea.scrollTop = 0; } - }else{ - // hidden content of unknown size - this._estimateHeight(); - } - this.busyResizing = false; - } - }); -}); |