From f5b136b0a77e5da0e53ff0db9a7cec4aa853bb9e Mon Sep 17 00:00:00 2001 From: Gary Pendergast Date: Mon, 21 Jan 2019 22:09:48 +0000 Subject: [PATCH] Menus: Remove error styling when the user addresses the error. An error is triggered if a Menu Name isn't given when the user attempts to create a menu. When they go back and add a name, the error styling can be removed. Props ashokrd2013, piyush9100, welcher, afercia. Fixes #42321. git-svn-id: https://develop.svn.wordpress.org/trunk@44680 602fd350-edb4-49c9-b593-d223f7449a82 --- src/js/_enqueues/lib/nav-menu.js | 18 ++++++++++++++++-- src/wp-includes/script-loader.php | 7 +++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/js/_enqueues/lib/nav-menu.js b/src/js/_enqueues/lib/nav-menu.js index bed4216595..cd62acc36f 100644 --- a/src/js/_enqueues/lib/nav-menu.js +++ b/src/js/_enqueues/lib/nav-menu.js @@ -835,6 +835,20 @@ } } }); + + $( '#menu-name' ).on( 'input', _.debounce( function () { + var menuName = $( document.getElementById( 'menu-name' ) ), + menuNameVal = menuName.val(); + + if ( ! menuNameVal || ! menuNameVal.replace( /\s+/, '' ) ) { + // Add warning for invalid menu name. + menuName.parent().addClass( 'form-invalid' ); + } else { + // Remove warning for valid menu name. + menuName.parent().removeClass( 'form-invalid' ); + } + }, 500 ) ); + $('#add-custom-links input[type="text"]').keypress(function(e){ $('#customlinkdiv').removeClass('form-invalid'); @@ -1166,8 +1180,8 @@ menuName = $('#menu-name'), menuNameVal = menuName.val(); // Cancel and warn if invalid menu name - if( !menuNameVal || menuNameVal == menuName.attr('title') || !menuNameVal.replace(/\s+/, '') ) { - menuName.parent().addClass('form-invalid'); + if ( ! menuNameVal || ! menuNameVal.replace( /\s+/, '' ) ) { + menuName.parent().addClass( 'form-invalid' ); return false; } // Copy menu theme locations diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index 1bc36791db..1355154c6d 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -1779,8 +1779,11 @@ function wp_default_scripts( &$scripts ) { ) ); - // Navigation Menus - $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'wp-lists', 'postbox', 'json2' ) ); + /* + * Navigation Menus: Adding underscore as a dependency to utilize _.debounce + * see https://core.trac.wordpress.org/ticket/42321 + */ + $scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable', 'wp-lists', 'postbox', 'json2', 'underscore' ) ); did_action( 'init' ) && $scripts->localize( 'nav-menu', 'navMenuL10n',