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

Commit 5ee23a4

Browse files
icfantvwesleycho
authored andcommitted
feat(accordion): allow custom panel class
- add support for custom panel class Closes #4242 Fixes #3968
1 parent 07a938d commit 5ee23a4

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

src/accordion/accordion.js

+1
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse'])
8080
accordionCtrl.addGroup(scope);
8181

8282
scope.openClass = attrs.openClass || 'panel-open';
83+
scope.panelClass = attrs.panelClass;
8384
scope.$watch('isOpen', function(value) {
8485
element.toggleClass(scope.openClass, value);
8586
if (value) {

src/accordion/docs/readme.md

+2
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@ The body of each accordion group is transcluded in to the body of the collapsibl
1313

1414
### Accordion Group Settings ###
1515

16+
* `panel-class` (Defaults: `panel-default`) :
17+
Add ability to use Bootstrap's contextual panel classes (panel-primary, panel-success, panel-info, etc...) or your own. This must be a string.
1618
* `template-url` (Defaults: `template/accordion/accordion-group.html`) :
1719
Add ability to override the template url used. Note that this must be a string

src/accordion/test/accordion.spec.js

+21-1
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,6 @@ describe('accordion', function() {
515515
});
516516
});
517517

518-
519518
describe('accordion-heading attribute, with repeating accordion-groups', function() {
520519
it('should clone the accordion-heading for each group', function() {
521520
element = $compile('<accordion><accordion-group ng-repeat="x in [1,2,3]"><div accordion-heading>{{x}}</div></accordion-group></accordion>')(scope);
@@ -528,5 +527,26 @@ describe('accordion', function() {
528527
});
529528
});
530529

530+
describe('accordion group panel class - #3968', function() {
531+
it('should use the default value when panel class is falsy', function() {
532+
element = $compile('<accordion><accordion-group heading="Heading">Content</accordion-group></accordion>')(scope);
533+
scope.$digest();
534+
groups = element.find('.panel');
535+
expect(groups.eq(0)).toHaveClass('panel-default');
536+
537+
element = $compile('<accordion><accordion-group heading="Heading" panel-class="">Content</accordion-group></accordion>')(scope);
538+
scope.$digest();
539+
groups = element.find('.panel');
540+
expect(groups.eq(0)).toHaveClass('panel-default');
541+
});
542+
543+
it('should use the specified value when not falsy', function() {
544+
element = $compile('<accordion><accordion-group heading="Heading" panel-class="custom-class">Content</accordion-group></accordion>')(scope);
545+
scope.$digest();
546+
groups = element.find('.panel');
547+
expect(groups.eq(0)).toHaveClass('custom-class');
548+
expect(groups.eq(0)).not.toHaveClass('panel-default');
549+
});
550+
});
531551
});
532552
});

template/accordion/accordion-group.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<div class="panel panel-default">
1+
<div class="panel {{panelClass || 'panel-default'}}">
22
<div class="panel-heading">
33
<h4 class="panel-title">
44
<a href tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" accordion-transclude="heading"><span ng-class="{'text-muted': isDisabled}">{{heading}}</span></a>

0 commit comments

Comments
 (0)