diff --git a/src/accordion/accordion.js b/src/accordion/accordion.js index 8674f535a1..586314c9c6 100644 --- a/src/accordion/accordion.js +++ b/src/accordion/accordion.js @@ -124,11 +124,21 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) link: function(scope, element, attrs, controller) { scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) { if (heading) { - var elem = angular.element(element[0].querySelector('[uib-accordion-header]')); + var elem = angular.element(element[0].querySelector(getHeaderSelectors())); elem.html(''); elem.append(heading); } }); } }; + + function getHeaderSelectors() { + return 'uib-accordion-header,' + + 'data-uib-accordion-header,' + + 'x-uib-accordion-header,' + + 'uib\\:accordion-header,' + + '[uib-accordion-header],' + + '[data-uib-accordion-header],' + + '[x-uib-accordion-header]'; + } }); diff --git a/src/accordion/test/accordion.spec.js b/src/accordion/test/accordion.spec.js index 9916f1e045..2cae4bd4da 100644 --- a/src/accordion/test/accordion.spec.js +++ b/src/accordion/test/accordion.spec.js @@ -610,6 +610,17 @@ describe('uib-accordion', function() { }); }); + describe('uib-accordion-heading attribute, with custom template', function() { + it('should transclude heading to a template using data-uib-accordion-header', inject(function($templateCache) { + $templateCache.put('foo/bar.html', '
'); + + element = $compile('baz')(scope); + scope.$digest(); + groups = element.find('.panel'); + expect(findGroupLink(0).text()).toBe('baz'); + })); + }); + describe('uib-accordion group panel class', function() { it('should use the default value when panel class is falsy - #3968', function() { element = $compile('Content')(scope); @@ -630,14 +641,14 @@ describe('uib-accordion', function() { expect(groups.eq(0)).toHaveClass('custom-class'); expect(groups.eq(0)).not.toHaveClass('panel-default'); }); - + it('should change class if panel-class is changed', function() { element = $compile('Content')(scope); scope.panelClass = 'custom-class'; scope.$digest(); groups = element.find('.panel'); expect(groups.eq(0)).toHaveClass('custom-class'); - + scope.panelClass = 'different-class'; scope.$digest(); expect(groups.eq(0)).toHaveClass('different-class');