diff options
Diffstat (limited to 'themes/default/js/ui/jquery.effects.core.js')
-rw-r--r-- | themes/default/js/ui/jquery.effects.core.js | 70 |
1 files changed, 43 insertions, 27 deletions
diff --git a/themes/default/js/ui/jquery.effects.core.js b/themes/default/js/ui/jquery.effects.core.js index 9f0ba0533..0faacbfec 100644 --- a/themes/default/js/ui/jquery.effects.core.js +++ b/themes/default/js/ui/jquery.effects.core.js @@ -1,5 +1,5 @@ /* - * jQuery UI Effects 1.8.10 + * jQuery UI Effects 1.8.16 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -231,12 +231,12 @@ $.effects.animateClass = function(value, duration, easing, callback) { easing = null; } - return this.queue('fx', function() { + return this.queue(function() { var that = $(this), originalStyleAttr = that.attr('style') || ' ', originalStyle = filterStyles(getElementStyles.call(this)), newStyle, - className = that.attr('className'); + className = that.attr('class'); $.each(classAnimationActions, function(i, action) { if (value[action]) { @@ -244,28 +244,27 @@ $.effects.animateClass = function(value, duration, easing, callback) { } }); newStyle = filterStyles(getElementStyles.call(this)); - that.attr('className', className); - - that.animate(styleDifference(originalStyle, newStyle), duration, easing, function() { - $.each(classAnimationActions, function(i, action) { - if (value[action]) { that[action + 'Class'](value[action]); } - }); - // work around bug in IE by clearing the cssText before setting it - if (typeof that.attr('style') == 'object') { - that.attr('style').cssText = ''; - that.attr('style').cssText = originalStyleAttr; - } else { - that.attr('style', originalStyleAttr); + that.attr('class', className); + + that.animate(styleDifference(originalStyle, newStyle), { + queue: false, + duration: duration, + easing: easing, + complete: function() { + $.each(classAnimationActions, function(i, action) { + if (value[action]) { that[action + 'Class'](value[action]); } + }); + // work around bug in IE by clearing the cssText before setting it + if (typeof that.attr('style') == 'object') { + that.attr('style').cssText = ''; + that.attr('style').cssText = originalStyleAttr; + } else { + that.attr('style', originalStyleAttr); + } + if (callback) { callback.apply(this, arguments); } + $.dequeue( this ); } - if (callback) { callback.apply(this, arguments); } }); - - // $.animate adds a function to the end of the queue - // but we want it at the front - var queue = $.queue(this), - anim = queue.splice(queue.length - 1, 1)[0]; - queue.splice(1, 0, anim); - $.dequeue(this); }); }; @@ -307,7 +306,7 @@ $.fn.extend({ /******************************************************************************/ $.extend($.effects, { - version: "1.8.10", + version: "1.8.16", // Saves a set of properties in a data storage save: function(element, set) { @@ -368,9 +367,16 @@ $.extend($.effects, { border: 'none', margin: 0, padding: 0 - }); + }), + active = document.activeElement; element.wrap(wrapper); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element // transfer positioning properties to the wrapper @@ -395,8 +401,18 @@ $.extend($.effects, { }, removeWrapper: function(element) { - if (element.parent().is('.ui-effects-wrapper')) - return element.parent().replaceWith(element); + var parent, + active = document.activeElement; + + if (element.parent().is('.ui-effects-wrapper')) { + parent = element.parent().replaceWith(element); + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + return parent; + } + return element; }, |