diff --git a/src/collapse/collapse.js b/src/collapse/collapse.js index 5d6787a7fd..019d6fe80d 100644 --- a/src/collapse/collapse.js +++ b/src/collapse/collapse.js @@ -31,7 +31,12 @@ angular.module('ui.bootstrap.collapse', ['ui.bootstrap.transition']) expandDone(); } else { element.removeClass('collapse').addClass('collapsing'); - doTransition({ height: element[0].scrollHeight + 'px' }).then(expandDone); + if(element[0].scrollHeight === 0) { + expandDone(); + } + else { + doTransition({ height: element[0].scrollHeight + 'px' }).then(expandDone); + } } } diff --git a/src/collapse/test/collapse.spec.js b/src/collapse/test/collapse.spec.js index d673bb7ed0..2ab7ed65fb 100644 --- a/src/collapse/test/collapse.spec.js +++ b/src/collapse/test/collapse.spec.js @@ -12,7 +12,7 @@ describe('collapse directive', function () { })); beforeEach(function() { - element = $compile('
Some Content
')(scope); + element = $compile('
Some Content
')(scope); angular.element(document.body).append(element); }); @@ -71,6 +71,20 @@ describe('collapse directive', function () { } }); + it('should also set height:auto on isCollapsed = false, even if there is no content', function() { + scope.hideContent = true; + scope.isCollapsed = true; + scope.$digest(); + expect(element.height()).toBe(0); + scope.isCollapsed = false; + scope.$digest(); + expect(element.height()).toBe(0); + scope.hideContent = false; + scope.$digest(); + expect(element.height()).toBeGreaterThan(0); + }); + + describe('dynamic content', function() { var element; @@ -106,4 +120,4 @@ describe('collapse directive', function () { }); }); -}); \ No newline at end of file +});