diff --git a/src/accordion/accordion.js b/src/accordion/accordion.js index 766f96e430..45e5155dd9 100644 --- a/src/accordion/accordion.js +++ b/src/accordion/accordion.js @@ -88,9 +88,11 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) } }); - scope.toggleOpen = function() { + scope.toggleOpen = function($event) { if (!scope.isDisabled) { - scope.isOpen = !scope.isOpen; + if (!$event || $event.which === 32) { + scope.isOpen = !scope.isOpen; + } } }; } diff --git a/src/accordion/test/accordion.spec.js b/src/accordion/test/accordion.spec.js index c0b11e1d13..00cac187b1 100644 --- a/src/accordion/test/accordion.spec.js +++ b/src/accordion/test/accordion.spec.js @@ -222,6 +222,22 @@ describe('accordion', function() { scope.$digest(); expect(group).not.toHaveClass('panel-open'); }); + + it('should toggle element on spacebar when focused', function() { + var group = groups.eq(0); + findGroupLink(0)[0].focus(); + var e = $.Event('keypress'); + e.which = 32; + findGroupLink(0).trigger(e); + + expect(group).toHaveClass('panel-open'); + + e = $.Event('keypress'); + e.which = 32; + findGroupLink(0).trigger(e); + + expect(group).not.toHaveClass('panel-open'); + }); }); describe('with open-class attribute', function() { diff --git a/template/accordion/accordion-group.html b/template/accordion/accordion-group.html index aec5413578..0753b01e52 100644 --- a/template/accordion/accordion-group.html +++ b/template/accordion/accordion-group.html @@ -1,5 +1,5 @@
-
+