Mercurial > zeropaste
annotate lib/assets/javascripts/jquery.autosize.js @ 84:a9b68e36302e
jruby-openssl is not needed.
author | Edho Arief <edho@myconan.net> |
---|---|
date | Tue, 23 Oct 2012 04:01:10 -0700 |
parents | 50b8738d6428 |
children | e8a0e82213cd |
rev | line source |
---|---|
79
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
1 // Autosize 1.13 - jQuery plugin for textareas |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
2 // (c) 2012 Jack Moore - jacklmoore.com |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
3 // license: www.opensource.org/licenses/mit-license.php |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
4 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
5 (function ($) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
6 var |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
7 defaults = { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
8 className: 'autosizejs', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
9 append: "", |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
10 callback: false |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
11 }, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
12 hidden = 'hidden', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
13 borderBox = 'border-box', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
14 lineHeight = 'lineHeight', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
15 copy = '<textarea tabindex="-1" style="position:absolute; top:-9999px; left:-9999px; right:auto; bottom:auto; word-wrap:break-word; height:0 !important; min-height:0 !important; overflow:hidden;"/>', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
16 // line-height is omitted because IE7/IE8 doesn't return the correct value. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
17 copyStyle = [ |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
18 'fontFamily', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
19 'fontSize', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
20 'fontWeight', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
21 'fontStyle', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
22 'letterSpacing', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
23 'textTransform', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
24 'wordSpacing', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
25 'textIndent' |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
26 ], |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
27 oninput = 'oninput', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
28 onpropertychange = 'onpropertychange', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
29 test = $(copy)[0]; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
30 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
31 // For testing support in old FireFox |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
32 test.setAttribute(oninput, "return"); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
33 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
34 if ($.isFunction(test[oninput]) || onpropertychange in test) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
35 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
36 // test that line-height can be accurately copied to avoid |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
37 // incorrect value reporting in old IE and old Opera |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
38 $(test).css(lineHeight, '99px'); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
39 if ($(test).css(lineHeight) === '99px') { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
40 copyStyle.push(lineHeight); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
41 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
42 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
43 $.fn.autosize = function (options) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
44 options = $.extend({}, defaults, options || {}); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
45 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
46 return this.each(function () { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
47 var |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
48 ta = this, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
49 $ta = $(ta), |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
50 mirror, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
51 minHeight = $ta.height(), |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
52 maxHeight = parseInt($ta.css('maxHeight'), 10), |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
53 active, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
54 i = copyStyle.length, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
55 resize, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
56 boxOffset = 0, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
57 value = ta.value, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
58 callback = $.isFunction(options.callback); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
59 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
60 if ($ta.css('box-sizing') === borderBox || $ta.css('-moz-box-sizing') === borderBox || $ta.css('-webkit-box-sizing') === borderBox){ |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
61 boxOffset = $ta.outerHeight() - $ta.height(); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
62 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
63 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
64 if ($ta.data('mirror') || $ta.data('ismirror')) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
65 // if autosize has already been applied, exit. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
66 // if autosize is being applied to a mirror element, exit. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
67 return; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
68 } else { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
69 mirror = $(copy).data('ismirror', true).addClass(options.className)[0]; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
70 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
71 resize = $ta.css('resize') === 'none' ? 'none' : 'horizontal'; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
72 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
73 $ta.data('mirror', $(mirror)).css({ |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
74 overflow: hidden, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
75 overflowY: hidden, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
76 wordWrap: 'break-word', |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
77 resize: resize |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
78 }); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
79 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
80 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
81 // Opera returns '-1px' when max-height is set to 'none'. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
82 maxHeight = maxHeight && maxHeight > 0 ? maxHeight : 9e4; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
83 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
84 // Using mainly bare JS in this function because it is going |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
85 // to fire very often while typing, and needs to very efficient. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
86 function adjust() { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
87 var height, overflow, original; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
88 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
89 // the active flag keeps IE from tripping all over itself. Otherwise |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
90 // actions in the adjust function will cause IE to call adjust again. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
91 if (!active) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
92 active = true; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
93 mirror.value = ta.value + options.append; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
94 mirror.style.overflowY = ta.style.overflowY; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
95 original = parseInt(ta.style.height,10); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
96 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
97 // Update the width in case the original textarea width has changed |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
98 mirror.style.width = $ta.css('width'); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
99 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
100 // Needed for IE to reliably return the correct scrollHeight |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
101 mirror.scrollTop = 0; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
102 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
103 // Set a very high value for scrollTop to be sure the |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
104 // mirror is scrolled all the way to the bottom. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
105 mirror.scrollTop = 9e4; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
106 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
107 height = mirror.scrollTop; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
108 overflow = hidden; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
109 if (height > maxHeight) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
110 height = maxHeight; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
111 overflow = 'scroll'; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
112 } else if (height < minHeight) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
113 height = minHeight; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
114 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
115 height += boxOffset; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
116 ta.style.overflowY = overflow; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
117 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
118 if (original !== height) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
119 ta.style.height = height + 'px'; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
120 if (callback) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
121 options.callback.call(ta); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
122 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
123 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
124 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
125 // This small timeout gives IE a chance to draw it's scrollbar |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
126 // before adjust can be run again (prevents an infinite loop). |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
127 setTimeout(function () { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
128 active = false; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
129 }, 1); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
130 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
131 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
132 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
133 // mirror is a duplicate textarea located off-screen that |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
134 // is automatically updated to contain the same text as the |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
135 // original textarea. mirror always has a height of 0. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
136 // This gives a cross-browser supported way getting the actual |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
137 // height of the text, through the scrollTop property. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
138 while (i--) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
139 mirror.style[copyStyle[i]] = $ta.css(copyStyle[i]); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
140 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
141 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
142 $('body').append(mirror); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
143 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
144 if (onpropertychange in ta) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
145 if (oninput in ta) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
146 // Detects IE9. IE9 does not fire onpropertychange or oninput for deletions, |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
147 // so binding to onkeyup to catch most of those occassions. There is no way that I |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
148 // know of to detect something like 'cut' in IE9. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
149 ta[oninput] = ta.onkeyup = adjust; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
150 } else { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
151 // IE7 / IE8 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
152 ta[onpropertychange] = adjust; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
153 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
154 } else { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
155 // Modern Browsers |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
156 ta[oninput] = adjust; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
157 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
158 // The textarea overflow is now hidden. But Chrome doesn't reflow the text after the scrollbars are removed. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
159 // This is a hack to get Chrome to reflow it's text. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
160 ta.value = ''; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
161 ta.value = value; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
162 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
163 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
164 $(window).resize(adjust); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
165 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
166 // Allow for manual triggering if needed. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
167 $ta.bind('autosize', adjust); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
168 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
169 // Call adjust in case the textarea already contains text. |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
170 adjust(); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
171 }); |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
172 }; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
173 } else { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
174 // Makes no changes for older browsers (FireFox3- and Safari4-) |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
175 $.fn.autosize = function (callback) { |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
176 return this; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
177 }; |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
178 } |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
179 |
50b8738d6428
Use (modified) autosize to automatically resize textarea.
Edho Arief <edho@myconan.net>
parents:
diff
changeset
|
180 }(jQuery)); |