Make WordPress Core

Ticket #33220: 33220.9.diff

File 33220.9.diff, 5.3 KB (added by westonruter, 9 years ago)

Additional change: https://github.com/xwp/wordpress-develop/commit/069c72cd919eb6fe29524095e805725bf189907e

  • src/wp-admin/js/customize-controls.js

    diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
    index 6d48967..1e5103a 100644
     
    6868                params = params || {};
    6969                focus = function () {
    7070                        var focusContainer;
    71                         if ( construct.extended( api.Panel ) && construct.expanded() ) {
    72                                 focusContainer = construct.container.find( '.control-panel-content:first' );
     71                        if ( construct.expanded && construct.expanded() ) {
     72                                focusContainer = construct.container.find( 'ul:first' );
    7373                        } else {
    7474                                focusContainer = construct.container;
    7575                        }
     
    581581                 * @param {Object}  args
    582582                 */
    583583                onChangeExpanded: function ( expanded, args ) {
    584                         var position, scroll, section = this,
     584                        var section = this,
    585585                                container = section.container.closest( '.wp-full-overlay-sidebar-content' ),
    586586                                content = section.container.find( '.accordion-section-content' ),
    587587                                overlay = section.container.closest( '.wp-full-overlay' ),
    588588                                backBtn = section.container.find( '.customize-section-back' ),
    589589                                sectionTitle = section.container.find( '.accordion-section-title' ).first(),
    590                                 expand;
     590                                headerActionsHeight = $( '#customize-header-actions' ).height(),
     591                                resizeContentHeight, expand, position, scroll;
    591592
    592593                        if ( expanded && ! section.container.hasClass( 'open' ) ) {
    593594
     
    595596                                        expand = args.completeCallback;
    596597                                } else {
    597598                                        container.scrollTop( 0 );
    598                                         expand = function () {
     599                                        resizeContentHeight = function() {
    599600                                                var matchMedia, offset;
    600601                                                matchMedia = window.matchMedia || window.msMatchMedia;
    601602                                                offset = 90; // 45px for customize header actions + 45px for footer actions.
     
    604605                                                if ( matchMedia && matchMedia( '(max-width: 640px)' ).matches ) {
    605606                                                        offset = 45;
    606607                                                }
    607 
     608                                                content.css( 'height', ( window.innerHeight - offset ) );
     609                                        };
     610                                        expand = function() {
    608611                                                section.container.addClass( 'open' );
    609612                                                overlay.addClass( 'section-open' );
    610613                                                position = content.offset().top;
    611614                                                scroll = container.scrollTop();
    612                                                 content.css( 'margin-top', ( 45 - position - scroll ) );
    613                                                 content.css( 'height', ( window.innerHeight - offset ) );
     615                                                content.css( 'margin-top', ( headerActionsHeight - position - scroll ) );
     616                                                resizeContentHeight();
    614617                                                sectionTitle.attr( 'tabindex', '-1' );
    615618                                                backBtn.attr( 'tabindex', '0' );
    616619                                                backBtn.focus();
    617620                                                if ( args.completeCallback ) {
    618621                                                        args.completeCallback();
    619622                                                }
     623
     624                                                // Fix the height after browser resize.
     625                                                $( window ).on( 'resize.customizer-section', _.debounce( resizeContentHeight, 100 ) );
     626
     627                                                // Fix the top margin after reflow.
     628                                                api.bind( 'pane-contents-reflowed', _.debounce( function() {
     629                                                        var offset = ( content.offset().top - headerActionsHeight );
     630                                                        if ( 0 < offset ) {
     631                                                                content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - offset ) );
     632                                                        }
     633                                                }, 100 ) );
    620634                                        };
    621635                                }
    622636
     
    640654                        } else if ( ! expanded && section.container.hasClass( 'open' ) ) {
    641655                                section.container.removeClass( 'open' );
    642656                                overlay.removeClass( 'section-open' );
    643                                 content.css( 'margin-top', 'inherit' );
     657                                content.css( 'margin-top', '' );
    644658                                container.scrollTop( 0 );
    645659                                backBtn.attr( 'tabindex', '-1' );
    646660                                sectionTitle.attr( 'tabindex', '0' );
     
    648662                                if ( args.completeCallback ) {
    649663                                        args.completeCallback();
    650664                                }
     665                                $( window ).off( 'resize.customizer-section' );
    651666                        } else {
    652667                                if ( args.completeCallback ) {
    653668                                        args.completeCallback();
     
    12351250                                topPanel = overlay.find( '#customize-theme-controls > ul > .accordion-section > .accordion-section-title' ),
    12361251                                backBtn = section.find( '.customize-panel-back' ),
    12371252                                panelTitle = section.find( '.accordion-section-title' ).first(),
    1238                                 content = section.find( '.control-panel-content' );
     1253                                content = section.find( '.control-panel-content' ),
     1254                                headerActionsHeight = $( '#customize-header-actions' ).height();
    12391255
    12401256                        if ( expanded ) {
    12411257
     
    12551271                                        content.parent().show();
    12561272                                        position = content.offset().top;
    12571273                                        scroll = container.scrollTop();
    1258                                         content.css( 'margin-top', ( $( '#customize-header-actions' ).height() - position - scroll ) );
     1274                                        content.css( 'margin-top', ( headerActionsHeight - position - scroll ) );
    12591275                                        section.addClass( 'current-panel' );
    12601276                                        overlay.addClass( 'in-sub-panel' );
    12611277                                        container.scrollTop( 0 );
     
    12661282                                topPanel.attr( 'tabindex', '-1' );
    12671283                                backBtn.attr( 'tabindex', '0' );
    12681284                                backBtn.focus();
     1285
     1286                                // Fix the top margin after reflow.
     1287                                api.bind( 'pane-contents-reflowed', _.debounce( function() {
     1288                                        content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - ( content.offset().top - headerActionsHeight ) ) );
     1289                                }, 100 ) );
    12691290                        } else {
    12701291                                siblings.removeClass( 'open' );
    12711292                                section.removeClass( 'current-panel' );
     
    26032624                                _( constructs ).each( function ( activeConstructs, type ) {
    26042625                                        api[ type ].each( function ( construct, id ) {
    26052626                                                var active = !! ( activeConstructs && activeConstructs[ id ] );
    2606                                                 construct.active( active );
     2627                                                if ( active ) {
     2628                                                        construct.activate();
     2629                                                } else {
     2630                                                        construct.deactivate();
     2631                                                }
    26072632                                        } );
    26082633                                } );
    26092634                        } );