From 6a48cda4588454acb71984874c88535dde922757 Mon Sep 17 00:00:00 2001 From: Scott González Date: Thu, 24 May 2012 15:46:22 -0400 Subject: Accordion: Make sure there's always one header with tabindex=0. Fixes #8348 - Accordion: Collapsed accordion is removed from tab order. --- ui/jquery.ui.accordion.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'ui/jquery.ui.accordion.js') diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index f713d25b8..0f1455790 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -453,16 +453,23 @@ $.widget( "ui.accordion", { this._toggleComplete( data ); } - toHide - .attr({ - "aria-expanded": "false", - "aria-hidden": "true" + toHide.attr({ + "aria-expanded": "false", + "aria-hidden": "true" + }); + toHide.prev().attr( "aria-selected", "false" ); + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( "tabIndex", -1 ); + } else if ( toShow.length ) { + this.headers.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; }) - .prev() - .attr({ - "aria-selected": "false", - tabIndex: -1 - }); + .attr( "tabIndex", -1 ); + } + toShow .attr({ "aria-expanded": "true", -- cgit v1.2.3