From fb1ca10b99edc0f92eddd68b840f021da942afe9 Mon Sep 17 00:00:00 2001 From: "Patrick H. Lauke" Date: Tue, 15 Jul 2014 11:39:27 +0100 Subject: ARIA support for collapse Added handling of aria-expanded=true/false to collapse.js, updated documentation to include advice on making expand/collapse controls accessible, updated examples and javascript documentation to use aria-expanded and aria-controls (when targetting single collapsible element, using ID rather than class selector) Closes #14147. Closes #14153. --- js/collapse.js | 7 +++-- js/tests/unit/collapse.js | 67 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 70 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/js/collapse.js b/js/collapse.js index f96be2860..6a8377615 100644 --- a/js/collapse.js +++ b/js/collapse.js @@ -56,6 +56,7 @@ this.$element .removeClass('collapse') .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) this.transitioning = 1 @@ -91,6 +92,7 @@ this.$element .addClass('collapsing') .removeClass('collapse in') + .attr('aria-expanded', false) this.transitioning = 1 @@ -161,8 +163,9 @@ var $parent = parent && $(parent) if (!data || !data.transitioning) { - if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed') - $this.toggleClass('collapsed', $target.hasClass('in')) + if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed').attr('aria-expanded', false) + var isCollapsed = $target.hasClass('in') + $this.toggleClass('collapsed', isCollapsed).attr('aria-expanded', !isCollapsed) } Plugin.call($target, option) diff --git a/js/tests/unit/collapse.js b/js/tests/unit/collapse.js index ffa8f7e6d..5d5849388 100644 --- a/js/tests/unit/collapse.js +++ b/js/tests/unit/collapse.js @@ -75,7 +75,7 @@ $(function () { test('should remove "collapsed" class from target when collapse is shown', function () { stop() - var $target = $('').appendTo('#qunit-fixture') + var $target = $('
').appendTo('#qunit-fixture') + + $('