From b541adc26d61227405fdf7dd4cf9db647feb485c Mon Sep 17 00:00:00 2001 From: Venkatraman D Date: Mon, 20 Oct 2014 16:17:55 +0800 Subject: [PATCH] fix(collapse): handling when the content has height zero Fixes #2836 --- src/collapse/collapse.js | 7 ++++++- src/collapse/test/collapse.spec.js | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) 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 +});