diff --git a/src/js/_enqueues/lib/nav-menu.js b/src/js/_enqueues/lib/nav-menu.js index 3f1f9a7480..af013fedd6 100644 --- a/src/js/_enqueues/lib/nav-menu.js +++ b/src/js/_enqueues/lib/nav-menu.js @@ -208,7 +208,8 @@ // Add the items api.addItemToMenu(menuItems, processMethod, function(){ // Deselect the items and hide the ajax spinner - checkboxes.removeAttr('checked'); + checkboxes.prop( 'checked', false ); + t.find( '.button-controls .select-all' ).prop( 'checked', false ); t.find( '.button-controls .spinner' ).removeClass( 'is-active' ); }); }); @@ -1061,7 +1062,7 @@ attachTabsPanelListeners : function() { $('#menu-settings-column').bind('click', function(e) { - var selectAreaMatch, panelId, wrapper, items, + var selectAreaMatch, selectAll, panelId, wrapper, items, target = $(e.target); if ( target.hasClass('nav-tab-link') ) { @@ -1071,7 +1072,7 @@ wrapper = target.parents('.accordion-section-content').first(); // upon changing tabs, we want to uncheck all checkboxes - $('input', wrapper).removeAttr('checked'); + $( 'input', wrapper ).prop( 'checked', false ); $('.tabs-panel-active', wrapper).removeClass('tabs-panel-active').addClass('tabs-panel-inactive'); $('#' + panelId, wrapper).removeClass('tabs-panel-inactive').addClass('tabs-panel-active'); @@ -1090,15 +1091,28 @@ } e.preventDefault(); - } else if ( target.hasClass('select-all') ) { - selectAreaMatch = /#(.*)$/.exec(e.target.href); - if ( selectAreaMatch && selectAreaMatch[1] ) { - items = $('#' + selectAreaMatch[1] + ' .tabs-panel-active .menu-item-title input'); - if( items.length === items.filter(':checked').length ) - items.removeAttr('checked'); - else - items.prop('checked', true); - return false; + } else if ( target.hasClass( 'select-all' ) ) { + selectAreaMatch = target.closest( '.button-controls' ).data( 'items-type' ); + if ( selectAreaMatch ) { + items = $( '#' + selectAreaMatch + ' .tabs-panel-active .menu-item-title input' ); + + if ( items.length === items.filter( ':checked' ).length && ! target.is( ':checked' ) ) { + items.prop( 'checked', false ); + } else if ( target.is( ':checked' ) ) { + items.prop( 'checked', true ); + } + } + } else if ( target.hasClass( 'menu-item-checkbox' ) ) { + selectAreaMatch = target.closest( '.tabs-panel-active' ).parent().attr( 'id' ); + if ( selectAreaMatch ) { + items = $( '#' + selectAreaMatch + ' .tabs-panel-active .menu-item-title input' ); + selectAll = $( '.button-controls[data-items-type="' + selectAreaMatch + '"] .select-all' ); + + if ( items.length === items.filter( ':checked' ).length && ! selectAll.is( ':checked' ) ) { + selectAll.prop( 'checked', true ); + } else if ( selectAll.is( ':checked' ) ) { + selectAll.prop( 'checked', false ); + } } } else if ( target.hasClass('submit-add-to-menu') ) { api.registerChange(); @@ -1226,6 +1240,7 @@ pattern = /menu-item[(\[^]\]*/, $items = $('