WordPress.org

Make WordPress Core

Ticket #36697: 36697.individually-deferred.diff

File 36697.individually-deferred.diff, 1.6 KB (added by westonruter, 4 years ago)
  • src/wp-admin/js/customize-nav-menus.js

    diff --git src/wp-admin/js/customize-nav-menus.js src/wp-admin/js/customize-nav-menus.js
    index e514a0a..c71fae1 100644
     
    195195                        });
    196196
    197197                        // Load available items if it looks like we'll need them.
    198                         api.panel( 'nav_menus' ).container.bind( 'expanded', function() {
    199                                 if ( ! self.rendered ) {
    200                                         self.initList();
    201                                         self.rendered = true;
     198                        this.$el.on( 'click', '.accordion-section', function() {
     199                                var sectionContent, type, object;
     200                                sectionContent = $( this ).find( '.available-menu-items-list:first' );
     201                                if ( sectionContent.data( 'items-loaded' ) ) {
     202                                        return;
    202203                                }
    203                         });
     204                                type = sectionContent.data( 'type' );
     205                                object = sectionContent.data( 'object' );
     206                                if ( type && object  ) {
     207                                        self.pages[ type + ':' + object ] = 0;
     208                                        self.loadItems( type, object );
     209                                        sectionContent.data( 'items-loaded', true );
     210                                }
     211                        } );
    204212
    205213                        // Load more items.
    206214                        this.sectionContent.scroll( function() {
     
    334342                        });
    335343                },
    336344
    337                 // Render the individual items.
    338                 initList: function() {
    339                         var self = this;
    340 
    341                         // Render the template for each item by type.
    342                         _.each( api.Menus.data.itemTypes, function( itemType ) {
    343                                 self.pages[ itemType.type + ':' + itemType.object ] = 0;
    344                                 self.loadItems( itemType.type, itemType.object ); // @todo we need to combine these Ajax requests.
    345                         } );
    346                 },
    347 
    348345                // Load available menu items.
    349346                loadItems: function( type, object ) {
    350347                        var self = this, params, request, itemTemplate, availableMenuItemContainer;