blob: 081c717726e5bc49d29cb3f01b0f2e68c3b28ffb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
(function($) {
$.fn.resizable = function(options) {
options = options || {};
options.always = options.always || false;
options.grippie = options.grippie || null;
options.minHeight = options.minHeight || 32;
options.maxHeight = options.maxHeight || null;
if (!options.always && $.browser.safari && parseInt($.browser.version) >= 522)
return this; // safari3 and later provides textarea resizing natively
return this.each(function() {
var grippie = options.grippie;
if (!grippie) grippie = $("<div></div>").appendTo(this.parentNode);
grippie.addClass("grippie");
var elem = $(this);
grippie.mousedown(function(e) {
var pos = e.screenY;
var height = elem.height();
$(document)
.mousemove(function(e) {
var offset = e.screenY - pos;
if (offset) {
var newHeight = height + offset;
if (newHeight >= options.minHeight &&
(!options.maxHeight || newHeight <= options.maxHeight)) {
elem.height(newHeight);
height = newHeight;
}
pos = e.screenY;
}
document.onselectstart = function() { return false }; // for IE
return false;
})
.one("mouseup", function() {
$(document).unbind("mousemove");
document.onselectstart = null; // for IE
});
return false;
});
});
}
})(jQuery);
|