Ticket #58912: 58912.3.diff
File 58912.3.diff, 5.1 KB (added by , 19 months ago) |
---|
-
src/js/_enqueues/admin/common.js
1702 1702 } 1703 1703 } ); 1704 1704 1705 // Close sidebar when focus moves outside of toggle and sidebar. 1706 $( '#wp-admin-bar-menu-toggle, #adminmenumain' ).on( 'focusout', function() { 1707 var focusIsInToggle, focusIsInSidebar; 1705 // Close sidebar when target moves outside of toggle and sidebar. 1706 $( document ).on( 'click', function( e ) { 1708 1707 1709 1708 if ( ! $wpwrap.hasClass( 'wp-responsive-open' ) || ! document.hasFocus() ) { 1710 1709 return; 1711 1710 } 1712 // A brief delay is required to allow focus to switch to another element.1713 setTimeout( function() {1714 focusIsInToggle = $.contains( $( '#wp-admin-bar-menu-toggle' )[0], $( ':focus' )[0] );1715 focusIsInSidebar = $.contains( $( '#adminmenumain' )[0], $( ':focus' )[0] );1716 1711 1717 if ( ! focusIsInToggle && ! focusIsInSidebar ) { 1718 $( '#wp-admin-bar-menu-toggle' ).trigger( 'click.wp-responsive' ); 1719 } 1720 }, 10 ); 1712 var focusIsInToggle = $.contains( $( '#wp-admin-bar-menu-toggle' )[0], e.target ); 1713 var focusIsInSidebar = $.contains( $( '#adminmenuwrap' )[0], e.target ); 1714 1715 if ( ! focusIsInToggle && ! focusIsInSidebar ) { 1716 $( '#wp-admin-bar-menu-toggle' ).trigger( 'click.wp-responsive' ); 1717 } 1721 1718 } ); 1722 1719 1720 // Close sidebar when a keypress completes outside of toggle and sidebar. 1721 $( document ).on( 'keyup', function( event ) { 1722 var toggleButton = $( '#wp-admin-bar-menu-toggle' )[0]; 1723 if ( ! $wpwrap.hasClass( 'wp-responsive-open' ) ) { 1724 return; 1725 } 1726 if ( 27 === event.keyCode ) { 1727 $( toggleButton ).trigger( 'click.wp-responsive' ); 1728 $( toggleButton ).find( 'a' ).trigger( 'focus' ); 1729 } else { 1730 if ( 9 === event.keyCode ) { 1731 var sidebar = $( '#adminmenuwrap' )[0]; 1732 var focusedElement = event.relatedTarget || document.activeElement; 1733 // A brief delay is required to allow focus to switch to another element. 1734 setTimeout( function() { 1735 var focusIsInToggle = $.contains( toggleButton, focusedElement ); 1736 var focusIsInSidebar = $.contains( sidebar, focusedElement ); 1737 1738 if ( ! focusIsInToggle && ! focusIsInSidebar ) { 1739 $( toggleButton ).trigger( 'click.wp-responsive' ); 1740 } 1741 }, 10 ); 1742 } 1743 } 1744 }); 1723 1745 1724 1746 // Add menu events. 1725 1747 $adminmenu.on( 'click.wp-responsive', 'li.wp-has-submenu > a', function( event ) {