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

Commit ff5d119

Browse files
committed
fix(collapse): Avoids fixed height on collapse
Closes #138
1 parent 897c2e4 commit ff5d119

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

src/collapse/collapse.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ angular.module('ui.bootstrap.collapse',['ui.bootstrap.transition'])
3030
//When we have a change of scrollHeight we are setting again the correct height if the group is opened
3131
if (element[0].scrollHeight !== 0) {
3232
if (!isCollapsed) {
33-
fixUpHeight(scope, element, element[0].scrollHeight + 'px');
33+
if (initialAnimSkip) {
34+
fixUpHeight(scope, element, element[0].scrollHeight + 'px');
35+
} else {
36+
fixUpHeight(scope, element, 'auto');
37+
}
3438
}
3539
}
3640
});

src/collapse/test/collapse.spec.js

+49
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,53 @@ describe('collapse directive', function () {
5454
$timeout.flush();
5555
expect(element.height()).not.toBe(0);
5656
});
57+
58+
describe('dynamic content', function() {
59+
beforeEach(function() {
60+
element = angular.element('<div collapse="isCollapsed"><p>Initial content</p><div ng-show="exp">Additional content</div></div>');
61+
$compile(element)(scope);
62+
angular.element(document.body).append(element);
63+
});
64+
65+
afterEach(function() {
66+
element.remove();
67+
});
68+
69+
it('should grow accordingly when content size inside collapse increases', function() {
70+
scope.exp = false;
71+
scope.isCollapsed = false;
72+
scope.$digest();
73+
var collapseHeight = element.height();
74+
scope.exp = true;
75+
scope.$digest();
76+
expect(element.height()).toBeGreaterThan(collapseHeight);
77+
});
78+
79+
it('should shrink accordingly when content size inside collapse decreases', function() {
80+
scope.exp = true;
81+
scope.isCollapsed = false;
82+
scope.$digest();
83+
var collapseHeight = element.height();
84+
scope.exp = false;
85+
scope.$digest();
86+
expect(element.height()).toBeLessThan(collapseHeight);
87+
});
88+
89+
it('should shrink accordingly when content size inside collapse decreases on subsequent use', function() {
90+
scope.isCollapsed = false;
91+
scope.exp = false;
92+
scope.$digest();
93+
scope.isCollapsed = true;
94+
scope.$digest();
95+
scope.isCollapsed = false;
96+
scope.$digest();
97+
$timeout.flush();
98+
scope.exp = true;
99+
scope.$digest();
100+
var collapseHeight = element.height();
101+
scope.exp = false;
102+
scope.$digest();
103+
expect(element.height()).toBeLessThan(collapseHeight);
104+
});
105+
});
57106
});

0 commit comments

Comments
 (0)