From 04ff214073cf2690380e994babcb83436b19b2ad Mon Sep 17 00:00:00 2001 From: Lance Willett Date: Fri, 6 Mar 2015 17:34:26 +0000 Subject: [PATCH] Twenty Fifteen: add ARIA attributes to menu toggle. See #31527, props davidakennedy, lance. Built from https://develop.svn.wordpress.org/trunk@31644 git-svn-id: http://core.svn.wordpress.org/trunk@31625 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../themes/twentyfifteen/js/functions.js | 39 ++++++++++++++----- wp-includes/version.php | 2 +- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/wp-content/themes/twentyfifteen/js/functions.js b/wp-content/themes/twentyfifteen/js/functions.js index c530e42c28..b560356c1a 100644 --- a/wp-content/themes/twentyfifteen/js/functions.js +++ b/wp-content/themes/twentyfifteen/js/functions.js @@ -8,7 +8,8 @@ ( function( $ ) { var $body, $window, $sidebar, adminbarOffset, top = false, bottom = false, windowWidth, windowHeight, lastWindowPos = 0, - topOffset = 0, bodyHeight, sidebarHeight, resizeTimer; + topOffset = 0, bodyHeight, sidebarHeight, resizeTimer, + secondary, button; // Add dropdown toggle that display child menu items. $( '.main-navigation .menu-item-has-children > a' ).after( '' ); @@ -26,15 +27,13 @@ _this.html( _this.html() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand ); } ); + secondary = $( '#secondary' ); + button = $( '.site-branding' ).find( '.secondary-toggle' ); + // Enable menu toggle for small screens. ( function() { - var secondary = $( '#secondary' ), button, menu, widgets, social; - if ( ! secondary ) { - return; - } - - button = $( '.site-branding' ).find( '.secondary-toggle' ); - if ( ! button ) { + var menu, widgets, social; + if ( ! secondary || ! button ) { return; } @@ -51,9 +50,29 @@ secondary.toggleClass( 'toggled-on' ); secondary.trigger( 'resize' ); $( this ).toggleClass( 'toggled-on' ); + if ( $( this, secondary ).hasClass( 'toggled-on' ) ) { + $( this ).attr( 'aria-expanded', 'true' ); + secondary.attr( 'aria-expanded', 'true' ); + } else { + $( this ).attr( 'aria-expanded', 'false' ); + secondary.attr( 'aria-expanded', 'false' ); + } } ); } )(); + // Add or remove ARIA attributes. + function onResizeARIA() { + if ( 955 > $window.width() ) { + button.attr( 'aria-expanded', 'false' ); + secondary.attr( 'aria-expanded', 'false' ); + button.attr( 'aria-controls', 'secondary' ); + } else { + button.removeAttr( 'aria-expanded' ); + secondary.removeAttr( 'aria-expanded' ); + button.removeAttr( 'aria-controls' ); + } + } + // Sidebar scrolling. function resize() { windowWidth = $window.width(); @@ -119,11 +138,13 @@ $window .on( 'scroll.twentyfifteen', scroll ) + .on( 'load.twentyfifteen', onResizeARIA ) .on( 'resize.twentyfifteen', function() { clearTimeout( resizeTimer ); resizeTimer = setTimeout( resizeAndScroll, 500 ); + onResizeARIA(); } ); - $sidebar.on( 'click keydown', 'button', resizeAndScroll ); + $sidebar.on( 'click.twentyfifteen keydown.twentyfifteen', 'button', resizeAndScroll ); resizeAndScroll(); diff --git a/wp-includes/version.php b/wp-includes/version.php index 61f031850b..3e3a6380b7 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.2-alpha-31643'; +$wp_version = '4.2-alpha-31644'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.