diff --git a/src/js/_enqueues/lib/nav-menu.js b/src/js/_enqueues/lib/nav-menu.js index 655d904bc3..7633d92453 100644 --- a/src/js/_enqueues/lib/nav-menu.js +++ b/src/js/_enqueues/lib/nav-menu.js @@ -311,7 +311,8 @@ nextItemDepth = parseInt( nextItem.menuItemDepth(), 10 ) + 1, prevItem = thisItem.prev(), prevItemDepth = parseInt( prevItem.menuItemDepth(), 10 ), - prevItemId = prevItem.getItemData()['menu-item-db-id']; + prevItemId = prevItem.getItemData()['menu-item-db-id'], + a11ySpeech = menus[ 'moved' + dir.charAt(0).toUpperCase() + dir.slice(1) ]; switch ( dir ) { case 'up': @@ -399,6 +400,10 @@ api.registerChange(); api.refreshKeyboardAccessibility(); api.refreshAdvancedAccessibility(); + + if ( a11ySpeech ) { + wp.a11y.speak( a11ySpeech ); + } }, initAccessibility : function() { @@ -1224,6 +1229,7 @@ $menuMarkup.hideAdvancedMenuItemFields().appendTo( api.targetList ); api.refreshKeyboardAccessibility(); api.refreshAdvancedAccessibility(); + wp.a11y.speak( menus.itemAdded ); $( document ).trigger( 'menu-item-added', [ $menuMarkup ] ); }, @@ -1239,6 +1245,7 @@ $menuMarkup.hideAdvancedMenuItemFields().prependTo( api.targetList ); api.refreshKeyboardAccessibility(); api.refreshAdvancedAccessibility(); + wp.a11y.speak( menus.itemAdded ); $( document ).trigger( 'menu-item-added', [ $menuMarkup ] ); }, @@ -1513,6 +1520,7 @@ ins.removeClass( 'menu-instructions-inactive' ); } api.refreshAdvancedAccessibility(); + wp.a11y.speak( menus.itemRemoved ); }); }, diff --git a/src/wp-admin/nav-menus.php b/src/wp-admin/nav-menus.php index d340fb6b67..b7ab1692cc 100644 --- a/src/wp-admin/nav-menus.php +++ b/src/wp-admin/nav-menus.php @@ -499,6 +499,13 @@ $nav_menus_l10n = array( 'menuItemDeletion' => __( 'item %s' ), /* translators: %s: Item name. */ 'itemsDeleted' => __( 'Deleted menu item: %s.' ), + 'itemAdded' => __( 'Menu item added' ), + 'itemRemoved' => __( 'Menu item removed' ), + 'movedUp' => __( 'Menu item moved up' ), + 'movedDown' => __( 'Menu item moved down' ), + 'movedTop' => __( 'Menu item moved to the top' ), + 'movedLeft' => __( 'Menu item moved out of submenu' ), + 'movedRight' => __( 'Menu item is now a sub-item' ), ); wp_localize_script( 'nav-menu', 'menus', $nav_menus_l10n ); diff --git a/tests/qunit/wp-admin/js/nav-menu.js b/tests/qunit/wp-admin/js/nav-menu.js index 98a3448a34..c630d07829 100644 --- a/tests/qunit/wp-admin/js/nav-menu.js +++ b/tests/qunit/wp-admin/js/nav-menu.js @@ -23,6 +23,20 @@ var testString = '