Skip to content

Commit 25923f0

Browse files
committed
Enhance Nav Menu functionality: Refactor menu item rendering and improve in-use state handling
1 parent b6a5496 commit 25923f0

File tree

1 file changed

+19
-29
lines changed

1 file changed

+19
-29
lines changed

src/js/_enqueues/wp/customize/nav-menus.js

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -306,12 +306,22 @@
306306
});
307307
},
308308

309+
renderMenuItem: function(menuItem) {
310+
var $item = $(wp.template('available-menu-item')(menuItem.attributes));
311+
312+
$item.find('.menu-item-title').toggleClass(
313+
'in-use',
314+
this.isMenuItemAlreadyAdded(menuItem)
315+
);
316+
317+
return $item;
318+
},
319+
309320
// Get search results.
310321
doSearch: function( page ) {
311322
var self = this, params,
312323
$section = $( '#available-menu-items-search' ),
313-
$content = $section.find( '.accordion-section-content' ),
314-
itemTemplate = wp.template( 'available-menu-item' );
324+
$content = $section.find( '.accordion-section-content' )
315325

316326
if ( self.currentRequest ) {
317327
self.currentRequest.abort();
@@ -354,20 +364,9 @@
354364
self.loading = false;
355365
items = new api.Menus.AvailableItemCollection( data.items );
356366
self.collection.add( items.models );
357-
items.each( function( menuItem ) {
358-
var $item = $( itemTemplate( menuItem.attributes ) );
359-
var inUse = this.currentMenuControl.getMenuItemControls().some( function( control ) {
360-
var setting = control.setting();
361-
return setting.object_id == menuItem.get( 'object_id' ) &&
362-
setting.type === menuItem.get( 'type' ) &&
363-
setting.object === menuItem.get( 'object' );
364-
});
365-
366-
if ( inUse ) {
367-
$item.find( '.menu-item-title' ).addClass( 'in-use' );
368-
}
369-
370-
$content.append( $item );
367+
items.each(function(menuItem) {
368+
var $item = self.renderMenuItem(menuItem);
369+
$content.append($item);
371370
});
372371

373372
if ( 20 > items.length ) {
@@ -422,8 +421,7 @@
422421
* @return {void}
423422
*/
424423
loadItems: function( itemTypes, deprecated ) {
425-
var self = this, _itemTypes, requestItemTypes = [], params, request, itemTemplate, availableMenuItemContainers = {};
426-
itemTemplate = wp.template( 'available-menu-item' );
424+
var self = this, _itemTypes, requestItemTypes = [], params, request, availableMenuItemContainers = {};
427425

428426
if ( _.isString( itemTypes ) && _.isString( deprecated ) ) {
429427
_itemTypes = [ { type: itemTypes, object: deprecated } ];
@@ -480,19 +478,11 @@
480478
}
481479
typeItems = new api.Menus.AvailableItemCollection( typeItems );
482480
self.collection.add( typeItems.models );
483-
typeInner = availableMenuItemContainers[ name ].find( '.available-menu-items-list' );
484-
typeInner.empty();
481+
typeInner = availableMenuItemContainers[name].find('.available-menu-items-list').empty();
485482
typeItems.each(function(menuItem) {
486-
var $item = $(itemTemplate(menuItem.attributes));
487-
488-
if (self.isMenuItemAlreadyAdded(menuItem)) {
489-
$item.find('.menu-item-title').addClass('in-use');
490-
} else {
491-
$item.find('.menu-item-title').removeClass('in-use');
492-
}
493-
483+
var $item = self.renderMenuItem(menuItem);
494484
typeInner.append($item);
495-
} );
485+
});
496486
self.pages[ name ] += 1;
497487
});
498488
});

0 commit comments

Comments
 (0)