WordPress.org

Make WordPress Core

Ticket #27406: 27406.scroll-position-fixes.diff

File 27406.scroll-position-fixes.diff, 1.4 KB (added by celloexpressions, 3 years ago)

Fix panel positioning when not scrolled to top.

  • src/wp-admin/js/accordion.js

     
    6969        } 
    7070 
    7171        function panelSwitch( panel ) { 
    72                 var position, 
     72                var position, scroll, 
    7373                        section = panel.closest( '.accordion-section' ), 
    74                         container = section.closest( '.wp-full-overlay' ), 
     74                        overlay = section.closest( '.wp-full-overlay' ), 
     75                        container = section.closest( '.accordion-container' ), 
    7576                        siblings = container.find( '.accordion-section.open' ), 
    7677                        content = section.find( '.control-panel-content' ); 
    7778 
    7879                if ( section.hasClass( 'current-panel' ) ) { 
    7980                        section.toggleClass( 'current-panel' ); 
    80                         container.toggleClass( 'in-sub-panel' ); 
     81                        overlay.toggleClass( 'in-sub-panel' ); 
    8182                        content.delay( 180 ).hide( 0, function() { 
    8283                                content.css( 'margin-top', 'inherit' ); // Reset 
    8384                        } ); 
     85                        container.scrollTop( 0 ); 
    8486                } else { 
    8587                        siblings.removeClass( 'open' ); 
    8688                        content.show( 0, function() { 
    8789                                position = content.offset().top; 
    88                                 content.css( 'margin-top', ( 45 - position ) ); 
     90                                scroll = container.scrollTop(); 
     91                                content.css( 'margin-top', ( 45 - position - scroll ) ); 
    8992                                section.toggleClass( 'current-panel' ); 
    90                                 container.toggleClass( 'in-sub-panel' ); 
     93                                overlay.toggleClass( 'in-sub-panel' ); 
     94                                container.scrollTop( 0 ); 
    9195                        } ); 
    9296                } 
    9397        }