WordPress.org

Make WordPress Core

Ticket #28580: 28580.2.diff

File 28580.2.diff, 1.8 KB (added by celloexpressions, 5 years ago)

Don't embed controls until the containing section is expanded for the first time. Works for both traditional and JS-templated controls.

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

     
    163163                        container.params = {};
    164164                        $.extend( container, options || {} );
    165165                        container.container = $( container.params.content );
     166                        container.contentEmbedded = false;
    166167
    167168                        container.deferred = {
    168169                                embedded: new $.Deferred()
     
    499500
    500501                        if ( expanded ) {
    501502
     503                                if ( ! section.contentEmbedded ) {
     504                                        _.each( api.section( section.id ).controls(), function( control ) {
     505                                                control.embed();
     506                                        } );
     507                                        section.contentEmbedded = true;
     508                                }
     509
    502510                                if ( args.unchanged ) {
    503511                                        expand = args.completeCallback;
    504512                                } else {
     
    696704                                content = section.find( '.control-panel-content' );
    697705
    698706                        if ( expanded ) {
     707                                if ( ! panel.contentEmbedded ) {
     708                                        _.each( api.section( panel.id ).controls(), function( control ) {
     709                                                control.embed();
     710                                        } );
     711                                        panel.contentEmbedded = true;
     712                                }
    699713
    700714                                // Collapse any sibling sections/panels
    701715                                api.section.each( function ( otherSection ) {
     
    11631177                                }
    11641178
    11651179                                control.setting = control.settings['default'] || null;
    1166 
    1167                                 control.embed();
    11681180                        }) );
    11691181
    11701182                        control.deferred.embedded.done( function () {
     
    26172629                                        rootNodes.push( section );
    26182630                                }
    26192631                                appendContainer = section.container.find( 'ul:first' );
    2620                                 if ( ! api.utils.areElementListsEqual( controlContainers, appendContainer.children( '[id]' ) ) ) {
     2632                                if ( ! api.utils.areElementListsEqual( controlContainers, appendContainer.children( '[id]' ) )
     2633                                     && section.contentEmbedded ) {
    26212634                                        _( controls ).each( function ( control ) {
    26222635                                                appendContainer.append( control.container );
    26232636                                        } );