Merge "makeCollapsible: Remove animations"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 19 May 2018 12:09:28 +0000 (12:09 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 19 May 2018 12:09:28 +0000 (12:09 +0000)
resources/src/jquery/jquery.makeCollapsible.js

index c3d7dbf..eb42311 100644 (file)
@@ -47,7 +47,6 @@
                };
 
                // Handle different kinds of elements
-
                if ( !options.plainMode && $collapsible.is( 'table' ) ) {
                        // Tables
                        // If there is a caption, hide all rows; otherwise, only hide body rows
                                $containers = $containers.not( $defaultToggle.closest( 'tr' ) );
                        }
 
-                       if ( action === 'collapse' ) {
-                               // Hide all table rows of this table
-                               // Slide doesn't work with tables, but fade does as of jQuery 1.1.3
-                               // http://stackoverflow.com/questions/467336#920480
-                               if ( options.instantHide ) {
-                                       $containers.hide();
-                                       hookCallback();
-                               } else {
-                                       $containers.stop( true, true ).fadeOut().promise().done( hookCallback );
-                               }
-                       } else {
-                               $containers.stop( true, true ).fadeIn().promise().done( hookCallback );
-                       }
-
                } else if ( !options.plainMode && ( $collapsible.is( 'ul' ) || $collapsible.is( 'ol' ) ) ) {
                        // Lists
                        $containers = $collapsible.find( '> li' );
                                // Exclude list-item containing togglelink
                                $containers = $containers.not( $defaultToggle.parent() );
                        }
-
-                       if ( action === 'collapse' ) {
-                               if ( options.instantHide ) {
-                                       $containers.hide();
-                                       hookCallback();
-                               } else {
-                                       $containers.stop( true, true ).slideUp().promise().done( hookCallback );
-                               }
-                       } else {
-                               $containers.stop( true, true ).slideDown().promise().done( hookCallback );
-                       }
-
                } else {
                        // Everything else: <div>, <p> etc.
                        $collapsibleContent = $collapsible.find( '> .mw-collapsible-content' );
 
                        // If a collapsible-content is defined, act on it
                        if ( !options.plainMode && $collapsibleContent.length ) {
-                               if ( action === 'collapse' ) {
-                                       if ( options.instantHide ) {
-                                               $collapsibleContent.hide();
-                                               hookCallback();
-                                       } else {
-                                               $collapsibleContent.slideUp().promise().done( hookCallback );
-                                       }
-                               } else {
-                                       $collapsibleContent.slideDown().promise().done( hookCallback );
-                               }
+                               $containers = $collapsibleContent;
 
                        // Otherwise assume this is a customcollapse with a remote toggle
                        // .. and there is no collapsible-content because the entire element should be toggled
                        } else {
-                               if ( action === 'collapse' ) {
-                                       if ( options.instantHide ) {
-                                               $collapsible.hide();
-                                               hookCallback();
-                                       } else {
-                                               if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
-                                                       $collapsible.fadeOut().promise().done( hookCallback );
-                                               } else {
-                                                       $collapsible.slideUp().promise().done( hookCallback );
-                                               }
-                                       }
-                               } else {
-                                       if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
-                                               $collapsible.fadeIn().promise().done( hookCallback );
-                                       } else {
-                                               $collapsible.slideDown().promise().done( hookCallback );
-                                       }
-                               }
+                               $containers = $collapsible;
                        }
                }
+
+               $containers.toggle( action === 'expand' );
+               hookCallback();
        }
 
        /**
 
                        $( this ).data( 'mw-collapsible', {
                                collapse: function () {
-                                       actionHandler.call( $toggleLink.get( 0 ), null, { instantHide: true, wasCollapsed: false } );
+                                       actionHandler.call( $toggleLink.get( 0 ), null, { wasCollapsed: false } );
                                },
                                expand: function () {
-                                       actionHandler.call( $toggleLink.get( 0 ), null, { instantHide: true, wasCollapsed: true } );
+                                       actionHandler.call( $toggleLink.get( 0 ), null, { wasCollapsed: true } );
                                },
                                toggle: function () {
                                        actionHandler.call( $toggleLink.get( 0 ), null, null );
                        if ( options.collapsed || $collapsible.hasClass( 'mw-collapsed' ) ) {
                                // One toggler can hook to multiple elements, and one element can have
                                // multiple togglers. This is the sanest way to handle that.
-                               actionHandler.call( $toggleLink.get( 0 ), null, { instantHide: true, wasCollapsed: false } );
+                               actionHandler.call( $toggleLink.get( 0 ), null, { wasCollapsed: false } );
                        }
 
                } );