diff options
author | Konstantin Dinev <kdinev@mail.bw.edu> | 2016-01-21 16:40:23 +0200 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2016-03-30 14:08:41 -0400 |
commit | 623b64eefc36ac841fde1e33db15903066cef94c (patch) | |
tree | 175ea1d6ed0c0a8aa4ee378d7df108bd739bf789 /ui/widgets | |
parent | a1905e2c5ed6e61e6a7206e005de9dda4f7135d0 (diff) | |
download | jquery-ui-623b64eefc36ac841fde1e33db15903066cef94c.tar.gz jquery-ui-623b64eefc36ac841fde1e33db15903066cef94c.zip |
Resizable: Implement `setOption` for handles
Fixes #3423
Closes gh-1666
Diffstat (limited to 'ui/widgets')
-rw-r--r-- | ui/widgets/resizable.js | 133 |
1 files changed, 79 insertions, 54 deletions
diff --git a/ui/widgets/resizable.js b/ui/widgets/resizable.js index e516c547f..a811c6334 100644 --- a/ui/widgets/resizable.js +++ b/ui/widgets/resizable.js @@ -99,9 +99,9 @@ $.widget( "ui.resizable", $.ui.mouse, { _create: function() { - var n, i, handle, axis, hname, margins, - that = this, - o = this.options; + var margins, + o = this.options, + that = this; this._addClass( "ui-resizable" ); $.extend( this, { @@ -159,6 +159,80 @@ $.widget( "ui.resizable", $.ui.mouse, { this._proportionallyResize(); } + this._setupHandles(); + + if ( o.autoHide ) { + $( this.element ) + .on( "mouseenter", function() { + if ( o.disabled ) { + return; + } + that._removeClass( "ui-resizable-autohide" ); + that._handles.show(); + } ) + .on( "mouseleave", function() { + if ( o.disabled ) { + return; + } + if ( !that.resizing ) { + that._addClass( "ui-resizable-autohide" ); + that._handles.hide(); + } + } ); + } + + this._mouseInit(); + }, + + _destroy: function() { + + this._mouseDestroy(); + + var wrapper, + _destroy = function( exp ) { + $( exp ) + .removeData( "resizable" ) + .removeData( "ui-resizable" ) + .off( ".resizable" ) + .find( ".ui-resizable-handle" ) + .remove(); + }; + + // TODO: Unwrap at same DOM position + if ( this.elementIsWrapper ) { + _destroy( this.element ); + wrapper = this.element; + this.originalElement.css( { + position: wrapper.css( "position" ), + width: wrapper.outerWidth(), + height: wrapper.outerHeight(), + top: wrapper.css( "top" ), + left: wrapper.css( "left" ) + } ).insertAfter( wrapper ); + wrapper.remove(); + } + + this.originalElement.css( "resize", this.originalResizeStyle ); + _destroy( this.originalElement ); + + return this; + }, + + _setOption: function( key, value ) { + this._super( key, value ); + + switch ( key ) { + case "handles": + this._removeHandles(); + this._setupHandles(); + break; + default: + break; + } + }, + + _setupHandles: function() { + var o = this.options, handle, i, n, hname, axis, that = this; this.handles = o.handles || ( !$( ".ui-resizable-handle", this.element ).length ? "e,s,se" : { @@ -250,60 +324,11 @@ $.widget( "ui.resizable", $.ui.mouse, { if ( o.autoHide ) { this._handles.hide(); this._addClass( "ui-resizable-autohide" ); - $( this.element ) - .on( "mouseenter", function() { - if ( o.disabled ) { - return; - } - that._removeClass( "ui-resizable-autohide" ); - that._handles.show(); - } ) - .on( "mouseleave", function() { - if ( o.disabled ) { - return; - } - if ( !that.resizing ) { - that._addClass( "ui-resizable-autohide" ); - that._handles.hide(); - } - } ); } - - this._mouseInit(); }, - _destroy: function() { - - this._mouseDestroy(); - - var wrapper, - _destroy = function( exp ) { - $( exp ) - .removeData( "resizable" ) - .removeData( "ui-resizable" ) - .off( ".resizable" ) - .find( ".ui-resizable-handle" ) - .remove(); - }; - - // TODO: Unwrap at same DOM position - if ( this.elementIsWrapper ) { - _destroy( this.element ); - wrapper = this.element; - this.originalElement.css( { - position: wrapper.css( "position" ), - width: wrapper.outerWidth(), - height: wrapper.outerHeight(), - top: wrapper.css( "top" ), - left: wrapper.css( "left" ) - } ).insertAfter( wrapper ); - wrapper.remove(); - } - - this.originalElement.css( "resize", this.originalResizeStyle ); - _destroy( this.originalElement ); - - return this; + _removeHandles: function() { + this._handles.remove(); }, _mouseCapture: function( event ) { |