Customize: Trim whitespace from nav menu item titles so that the underlying object's original title appears as input placeholder and in the control's title.

Whitespace is trimmed from titles in PHP when saved in any case, so this aligns the client-side behavior with what happens on the server.

Amends [38618].
See #38015.
Fixes #39600.


git-svn-id: https://develop.svn.wordpress.org/trunk@39994 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Weston Ruter 2017-01-26 18:07:58 +00:00
parent 18e09d246e
commit a2ac38016d
1 changed files with 11 additions and 4 deletions

View File

@ -1518,22 +1518,29 @@
* Update item handle title when changed.
*/
_setupTitleUI: function() {
var control = this;
var control = this, titleEl;
// Ensure that whitespace is trimmed on blur so placeholder can be shown.
control.container.find( '.edit-menu-item-title' ).on( 'blur', function() {
$( this ).val( $.trim( $( this ).val() ) );
} );
titleEl = control.container.find( '.menu-item-title' );
control.setting.bind( function( item ) {
var trimmedTitle, titleText;
if ( ! item ) {
return;
}
trimmedTitle = $.trim( item.title );
var titleEl = control.container.find( '.menu-item-title' ),
titleText = item.title || item.original_title || api.Menus.data.l10n.untitled;
titleText = trimmedTitle || item.original_title || api.Menus.data.l10n.untitled;
if ( item._invalid ) {
titleText = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', titleText );
}
// Don't update to an empty title.
if ( item.title || item.original_title ) {
if ( trimmedTitle || item.original_title ) {
titleEl
.text( titleText )
.removeClass( 'no-title' );