Skip to content

Commit 952ee34

Browse files
author
Robert Messerle
committed
update(tabs): when md-no-disconnect is toggled, tab content will be removed with ng-if for performance reasons
1 parent 1ba0686 commit 952ee34

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

src/components/tabs/js/tabsController.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ function MdTabsController ($scope, $element, $window, $timeout, $mdConstant, $md
196196
isActive: function () { return this.getIndex() === $scope.selectedIndex; },
197197
isLeft: function () { return this.getIndex() < $scope.selectedIndex; },
198198
isRight: function () { return this.getIndex() > $scope.selectedIndex; },
199+
shouldRender: function () { return !$scope.noDisconnect || this.isActive(); },
199200
hasFocus: function () { return !ctrl.lastClick && ctrl.hasFocus && this.getIndex() === ctrl.focusIndex; },
200201
id: $mdUtil.nextUid()
201202
},

src/components/tabs/js/tabsDirective.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,17 +182,20 @@ function MdTabs ($mdTheming, $mdUtil, $compile) {
182182
md-swipe-left="swipeContent && $mdTabsCtrl.incrementSelectedIndex(1)"\
183183
md-swipe-right="swipeContent && $mdTabsCtrl.incrementSelectedIndex(-1)"\
184184
ng-if="$mdTabsCtrl.hasContent"\
185-
ng-repeat="(index, tab) in $mdTabsCtrl.tabs" \
186-
md-template="tab.template"\
187-
md-scope="tab.parent"\
185+
ng-repeat="(index, tab) in $mdTabsCtrl.tabs"\
188186
md-connected-if="tab.isActive()"\
189187
ng-class="{\
190188
\'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null,\
191189
\'md-active\': tab.isActive(),\
192190
\'md-left\': tab.isLeft(),\
193191
\'md-right\': tab.isRight(),\
194192
\'md-no-scroll\': dynamicHeight\
195-
}"></md-tab-content>\
193+
}">\
194+
<div\
195+
md-template="tab.template"\
196+
md-scope="tab.parent"\
197+
ng-if="tab.shouldRender()"></div>\
198+
</md-tab-content>\
196199
</md-tabs-content-wrapper>\
197200
';
198201
},

src/components/tabs/tabs.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@ md-tab-content {
199199
visibility: hidden;
200200
}
201201
}
202+
> div.ng-leave {
203+
animation: 2 * $swift-ease-in-out-duration md-tab-content-hide;
204+
}
202205
}
203206
md-ink-bar {
204207
position: absolute;

src/components/tabs/tabs.spec.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ describe('<md-tabs>', function() {
240240
'<md-tab label="label that!"><b>content</b> that!</md-tab>' +
241241
'</md-tabs>');
242242
expect(tabs1.find('md-tab-item').text()).toBe('label that!');
243-
expect(tabs1[0].querySelector('md-tab-content').textContent).toBe('content that!');
243+
expect(tabs1[0].querySelector('md-tab-content').textContent.trim()).toBe('content that!');
244244

245245
var tabs2 = setup('<md-tabs>\
246246
<md-tab>\
@@ -249,8 +249,7 @@ describe('<md-tabs>', function() {
249249
</md-tab>\
250250
</md-tabs>');
251251
expect(tabs1.find('md-tab-item').text()).toBe('label that!');
252-
expect(tabs1[0].querySelector('md-tab-content').textContent)
253-
.toBe('content that!');
252+
expect(tabs1[0].querySelector('md-tab-content').textContent.trim()).toBe('content that!');
254253
});
255254

256255
});

0 commit comments

Comments
 (0)