diff --git a/src/collapse/collapse.js b/src/collapse/collapse.js
index 6e97e41206..d0a33b454f 100644
--- a/src/collapse/collapse.js
+++ b/src/collapse/collapse.js
@@ -30,7 +30,11 @@ angular.module('ui.bootstrap.collapse',['ui.bootstrap.transition'])
//When we have a change of scrollHeight we are setting again the correct height if the group is opened
if (element[0].scrollHeight !== 0) {
if (!isCollapsed) {
- fixUpHeight(scope, element, element[0].scrollHeight + 'px');
+ if (initialAnimSkip) {
+ fixUpHeight(scope, element, element[0].scrollHeight + 'px');
+ } else {
+ fixUpHeight(scope, element, 'auto');
+ }
}
}
});
diff --git a/src/collapse/test/collapse.spec.js b/src/collapse/test/collapse.spec.js
index 14ff912c27..d04a8b3c90 100644
--- a/src/collapse/test/collapse.spec.js
+++ b/src/collapse/test/collapse.spec.js
@@ -54,4 +54,53 @@ describe('collapse directive', function () {
$timeout.flush();
expect(element.height()).not.toBe(0);
});
+
+ describe('dynamic content', function() {
+ beforeEach(function() {
+ element = angular.element('
Initial content
Additional content
');
+ $compile(element)(scope);
+ angular.element(document.body).append(element);
+ });
+
+ afterEach(function() {
+ element.remove();
+ });
+
+ it('should grow accordingly when content size inside collapse increases', function() {
+ scope.exp = false;
+ scope.isCollapsed = false;
+ scope.$digest();
+ var collapseHeight = element.height();
+ scope.exp = true;
+ scope.$digest();
+ expect(element.height()).toBeGreaterThan(collapseHeight);
+ });
+
+ it('should shrink accordingly when content size inside collapse decreases', function() {
+ scope.exp = true;
+ scope.isCollapsed = false;
+ scope.$digest();
+ var collapseHeight = element.height();
+ scope.exp = false;
+ scope.$digest();
+ expect(element.height()).toBeLessThan(collapseHeight);
+ });
+
+ it('should shrink accordingly when content size inside collapse decreases on subsequent use', function() {
+ scope.isCollapsed = false;
+ scope.exp = false;
+ scope.$digest();
+ scope.isCollapsed = true;
+ scope.$digest();
+ scope.isCollapsed = false;
+ scope.$digest();
+ $timeout.flush();
+ scope.exp = true;
+ scope.$digest();
+ var collapseHeight = element.height();
+ scope.exp = false;
+ scope.$digest();
+ expect(element.height()).toBeLessThan(collapseHeight);
+ });
+ });
});
\ No newline at end of file