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

Commit 4c40d9d

Browse files
perryhoffmanwesleycho
authored andcommitted
feat(accordion): add alternative attribute support
- Add support for alternative attributes Closes #5834 Closes #5839
1 parent f88067a commit 4c40d9d

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

src/accordion/accordion.js

+11-1
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,21 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse'])
124124
link: function(scope, element, attrs, controller) {
125125
scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {
126126
if (heading) {
127-
var elem = angular.element(element[0].querySelector('[uib-accordion-header]'));
127+
var elem = angular.element(element[0].querySelector(getHeaderSelectors()));
128128
elem.html('');
129129
elem.append(heading);
130130
}
131131
});
132132
}
133133
};
134+
135+
function getHeaderSelectors() {
136+
return 'uib-accordion-header,' +
137+
'data-uib-accordion-header,' +
138+
'x-uib-accordion-header,' +
139+
'uib\\:accordion-header,' +
140+
'[uib-accordion-header],' +
141+
'[data-uib-accordion-header],' +
142+
'[x-uib-accordion-header]';
143+
}
134144
});

src/accordion/test/accordion.spec.js

+13-2
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,17 @@ describe('uib-accordion', function() {
610610
});
611611
});
612612

613+
describe('uib-accordion-heading attribute, with custom template', function() {
614+
it('should transclude heading to a template using data-uib-accordion-header', inject(function($templateCache) {
615+
$templateCache.put('foo/bar.html', '<div class="panel"><a uib-accordion-transclude="heading" class="accordion-toggle"><span data-uib-accordion-header></span></a><div ng-transclude></div></div>');
616+
617+
element = $compile('<uib-accordion><uib-accordion-group template-url="foo/bar.html"><uib-accordion-heading>baz</uib-accordion-heading></uib-accordion-group></uib-accordion>')(scope);
618+
scope.$digest();
619+
groups = element.find('.panel');
620+
expect(findGroupLink(0).text()).toBe('baz');
621+
}));
622+
});
623+
613624
describe('uib-accordion group panel class', function() {
614625
it('should use the default value when panel class is falsy - #3968', function() {
615626
element = $compile('<uib-accordion><uib-accordion-group heading="Heading">Content</uib-accordion-group></uib-accordion>')(scope);
@@ -630,14 +641,14 @@ describe('uib-accordion', function() {
630641
expect(groups.eq(0)).toHaveClass('custom-class');
631642
expect(groups.eq(0)).not.toHaveClass('panel-default');
632643
});
633-
644+
634645
it('should change class if panel-class is changed', function() {
635646
element = $compile('<uib-accordion><uib-accordion-group heading="Heading" panel-class="{{panelClass}}">Content</uib-accordion-group></uib-accordion>')(scope);
636647
scope.panelClass = 'custom-class';
637648
scope.$digest();
638649
groups = element.find('.panel');
639650
expect(groups.eq(0)).toHaveClass('custom-class');
640-
651+
641652
scope.panelClass = 'different-class';
642653
scope.$digest();
643654
expect(groups.eq(0)).toHaveClass('different-class');

0 commit comments

Comments
 (0)