123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- /**
- * EasyUI for jQuery 1.6.10
- *
- * Copyright (c) 2009-2018 www.jeasyui.com. All rights reserved.
- *
- * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
- * To use it on other terms please contact us: info@jeasyui.com
- *
- */
- /**
- * resizable - EasyUI for jQuery
- *
- */
- (function($){
- function resize(e){
- var resizeData = e.data;
- var options = $.data(resizeData.target, 'resizable').options;
- if (resizeData.dir.indexOf('e') != -1) {
- var width = resizeData.startWidth + e.pageX - resizeData.startX;
- width = Math.min(
- Math.max(width, options.minWidth),
- options.maxWidth
- );
- resizeData.width = width;
- }
- if (resizeData.dir.indexOf('s') != -1) {
- var height = resizeData.startHeight + e.pageY - resizeData.startY;
- height = Math.min(
- Math.max(height, options.minHeight),
- options.maxHeight
- );
- resizeData.height = height;
- }
- if (resizeData.dir.indexOf('w') != -1) {
- var width = resizeData.startWidth - e.pageX + resizeData.startX;
- width = Math.min(
- Math.max(width, options.minWidth),
- options.maxWidth
- );
- resizeData.width = width;
- resizeData.left = resizeData.startLeft + resizeData.startWidth - resizeData.width;
- }
- if (resizeData.dir.indexOf('n') != -1) {
- var height = resizeData.startHeight - e.pageY + resizeData.startY;
- height = Math.min(
- Math.max(height, options.minHeight),
- options.maxHeight
- );
- resizeData.height = height;
- resizeData.top = resizeData.startTop + resizeData.startHeight - resizeData.height;
- }
- }
-
- function applySize(e){
- var resizeData = e.data;
- var t = $(resizeData.target);
- t.css({
- left: resizeData.left,
- top: resizeData.top
- });
- if (t.outerWidth() != resizeData.width){t._outerWidth(resizeData.width)}
- if (t.outerHeight() != resizeData.height){t._outerHeight(resizeData.height)}
- }
-
- function doDown(e){
- $.fn.resizable.isResizing = true;
- $.data(e.data.target, 'resizable').options.onStartResize.call(e.data.target, e);
- return false;
- }
-
- function doMove(e){
- resize(e);
- if ($.data(e.data.target, 'resizable').options.onResize.call(e.data.target, e) != false){
- applySize(e)
- }
- return false;
- }
-
- function doUp(e){
- $.fn.resizable.isResizing = false;
- resize(e, true);
- applySize(e);
- $.data(e.data.target, 'resizable').options.onStopResize.call(e.data.target, e);
- $(document).unbind('.resizable');
- $('body').css('cursor','');
- return false;
- }
- // get the resize direction
- function getDirection(e) {
- var opts = $(e.data.target).resizable('options');
- var tt = $(e.data.target);
- var dir = '';
- var offset = tt.offset();
- var width = tt.outerWidth();
- var height = tt.outerHeight();
- var edge = opts.edge;
- if (e.pageY > offset.top && e.pageY < offset.top + edge) {
- dir += 'n';
- } else if (e.pageY < offset.top + height && e.pageY > offset.top + height - edge) {
- dir += 's';
- }
- if (e.pageX > offset.left && e.pageX < offset.left + edge) {
- dir += 'w';
- } else if (e.pageX < offset.left + width && e.pageX > offset.left + width - edge) {
- dir += 'e';
- }
-
- var handles = opts.handles.split(',');
- handles = $.map(handles, function(h){return $.trim(h).toLowerCase();});
- if ($.inArray('all', handles) >= 0 || $.inArray(dir, handles) >= 0){
- return dir;
- }
- for(var i=0; i<dir.length; i++){
- var index = $.inArray(dir.substr(i,1), handles);
- if (index >= 0){
- return handles[index];
- }
- }
- return '';
- }
- $.fn.resizable = function(options, param){
- if (typeof options == 'string'){
- return $.fn.resizable.methods[options](this, param);
- }
-
- return this.each(function(){
- var opts = null;
- var state = $.data(this, 'resizable');
- if (state) {
- $(this).unbind('.resizable');
- opts = $.extend(state.options, options || {});
- } else {
- opts = $.extend({}, $.fn.resizable.defaults, $.fn.resizable.parseOptions(this), options || {});
- $.data(this, 'resizable', {
- options:opts
- });
- }
-
- if (opts.disabled == true) {
- return;
- }
- $(this).bind('mousemove.resizable', {target:this}, function(e){
- if ($.fn.resizable.isResizing){return}
- var dir = getDirection(e);
- $(e.data.target).css('cursor', dir ? dir+'-resize' : '');
- }).bind('mouseleave.resizable', {target:this}, function(e){
- $(e.data.target).css('cursor', '');
- }).bind('mousedown.resizable', {target:this}, function(e){
- var dir = getDirection(e);
- if (dir == ''){return;}
-
- function getCssValue(css) {
- var val = parseInt($(e.data.target).css(css));
- if (isNaN(val)) {
- return 0;
- } else {
- return val;
- }
- }
-
- var data = {
- target: e.data.target,
- dir: dir,
- startLeft: getCssValue('left'),
- startTop: getCssValue('top'),
- left: getCssValue('left'),
- top: getCssValue('top'),
- startX: e.pageX,
- startY: e.pageY,
- startWidth: $(e.data.target).outerWidth(),
- startHeight: $(e.data.target).outerHeight(),
- width: $(e.data.target).outerWidth(),
- height: $(e.data.target).outerHeight(),
- deltaWidth: $(e.data.target).outerWidth() - $(e.data.target).width(),
- deltaHeight: $(e.data.target).outerHeight() - $(e.data.target).height()
- };
- $(document).bind('mousedown.resizable', data, doDown);
- $(document).bind('mousemove.resizable', data, doMove);
- $(document).bind('mouseup.resizable', data, doUp);
- $('body').css('cursor', dir+'-resize');
- });
- });
- };
-
- $.fn.resizable.methods = {
- options: function(jq){
- return $.data(jq[0], 'resizable').options;
- },
- enable: function(jq){
- return jq.each(function(){
- $(this).resizable({disabled:false});
- });
- },
- disable: function(jq){
- return jq.each(function(){
- $(this).resizable({disabled:true});
- });
- }
- };
-
- $.fn.resizable.parseOptions = function(target){
- var t = $(target);
- return $.extend({},
- $.parser.parseOptions(target, [
- 'handles',{minWidth:'number',minHeight:'number',maxWidth:'number',maxHeight:'number',edge:'number'}
- ]), {
- disabled: (t.attr('disabled') ? true : undefined)
- })
- };
-
- $.fn.resizable.defaults = {
- disabled:false,
- handles:'n, e, s, w, ne, se, sw, nw, all',
- minWidth: 10,
- minHeight: 10,
- maxWidth: 10000,//$(document).width(),
- maxHeight: 10000,//$(document).height(),
- edge:5,
- onStartResize: function(e){},
- onResize: function(e){},
- onStopResize: function(e){}
- };
-
- $.fn.resizable.isResizing = false;
-
- })(jQuery);
|