Skip to content
This repository has been archived by the owner on May 29, 2019. It is now read-only.

Commit

Permalink
feat(accordion): support spacebar to toggle group
Browse files Browse the repository at this point in the history
- Allow spacebar to toggle the accordion group

Closes #4319
Resolves #4249
  • Loading branch information
wesleycho committed Sep 1, 2015
1 parent 9b2f7ac commit aa5a991
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
6 changes: 4 additions & 2 deletions src/accordion/accordion.js
Expand Up @@ -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;
}
}
};
}
Expand Down
16 changes: 16 additions & 0 deletions src/accordion/test/accordion.spec.js
Expand Up @@ -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() {
Expand Down
2 changes: 1 addition & 1 deletion template/accordion/accordion-group.html
@@ -1,5 +1,5 @@
<div class="panel {{panelClass || 'panel-default'}}">
<div class="panel-heading">
<div class="panel-heading" ng-keypress="toggleOpen($event)">
<h4 class="panel-title">
<a href tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" accordion-transclude="heading"><span ng-class="{'text-muted': isDisabled}">{{heading}}</span></a>
</h4>
Expand Down

0 comments on commit aa5a991

Please sign in to comment.