diff options
-rw-r--r-- | demos/real-world/accordion-drawers/index.html | 11 | ||||
-rw-r--r-- | ui/ui.accordion.js | 42 |
2 files changed, 48 insertions, 5 deletions
diff --git a/demos/real-world/accordion-drawers/index.html b/demos/real-world/accordion-drawers/index.html index 231267419..cfab621a5 100644 --- a/demos/real-world/accordion-drawers/index.html +++ b/demos/real-world/accordion-drawers/index.html @@ -162,6 +162,7 @@ blockquote, q { <script type="text/javascript" src="../../../ui/ui.core.js"></script> <script type="text/javascript" src="../../../ui/ui.accordion.js"></script> + <script type="text/javascript" src="../../../ui/effects.core.js"></script> <script type="text/javascript"> @@ -170,6 +171,16 @@ blockquote, q { $('ul.drawers').accordion({ header: 'h2.drawer-handle', selectedClass: 'open', + //animated: 'easeOutBounce', + //animated: 'bounceslide', + //animated: 'easeslide', + animated: function(options) { + return options.down ? "easeOutBounce" : "easeInOutCubic"; + }, + //duration: 500, + duration: function(options) { + return options.down ? 700 : 400; + }, event: 'mouseover' }); }); diff --git a/ui/ui.accordion.js b/ui/ui.accordion.js index 9f01e9c12..7b47ee3de 100644 --- a/ui/ui.accordion.js +++ b/ui/ui.accordion.js @@ -127,23 +127,55 @@ function toggle(toShow, toHide, data, clickedActive, down) { options.running = toHide.size() === 0 ? toShow.size() : toHide.size(); if ( options.animated ) { + var animOptions = {}; + if ( !options.alwaysOpen && clickedActive ) { - $.ui.accordion.animations[options.animated]({ + animOptions = { toShow: jQuery([]), toHide: toHide, complete: complete, down: down, autoHeight: options.autoHeight - }); + }; } else { - $.ui.accordion.animations[options.animated]({ + animOptions = { toShow: toShow, toHide: toHide, complete: complete, down: down, autoHeight: options.autoHeight - }); + }; + } + + if (!options.proxied) { + options.proxied = options.animated; + } + + if (!options.proxiedDuration) { + options.proxiedDuration = options.duration; } + + options.animated = $.isFunction(options.proxied) ? + options.proxied(animOptions) : options.proxied; + + options.duration = $.isFunction(options.proxiedDuration) ? + options.proxiedDuration(animOptions) : options.proxiedDuration; + + var animations = $.ui.accordion.animations, + duration = options.duration, + easing = options.animated; + + if (!animations[easing]) { + animations[easing] = function(options) { + this.slide(options, { + easing: easing, + duration: duration || 700 + }); + }; + } + + animations[easing](animOptions); + } else { if ( !options.alwaysOpen && clickedActive ) { toShow.toggle(); @@ -279,7 +311,7 @@ $.extend($.ui.accordion, { }, bounceslide: function(options) { this.slide(options, { - easing: options.down ? "bounceout" : "swing", + easing: options.down ? "easeOutBounce" : "swing", duration: options.down ? 1000 : 200 }); }, |