fix(sideMenu): allow expose-aside-when on the right side. Closes #2207

This commit is contained in:
Perry Govier
2014-10-03 11:27:26 -05:00
parent 1224902e57
commit 29d6dc8163
3 changed files with 22 additions and 6 deletions

View File

@@ -259,14 +259,16 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody) {
};
self.exposeAside = function(shouldExposeAside) {
if(!self.left || !self.left.isEnabled) return;
if(!(self.left && self.left.isEnabled) && !(self.right && self.right.isEnabled))return;
self.close();
isAsideExposed = shouldExposeAside;
// set the left marget width if it should be exposed
// otherwise set false so there's no left margin
self.content.setMarginLeft( isAsideExposed ? self.left.width : 0 );
if(self.left && self.left.isEnabled){
// set the left marget width if it should be exposed
// otherwise set false so there's no left margin
self.content.setMarginLeft( isAsideExposed ? self.left.width : 0 );
}else if(self.right && self.right.isEnabled){
self.content.setMarginRight( isAsideExposed ? self.right.width : 0 );
}
self.$scope.$emit('$ionicExposeAside', isAsideExposed);
};

View File

@@ -155,6 +155,18 @@ function($timeout, $ionicGesture, $window) {
content.offsetX = 0;
}
}),
setMarginRight: ionic.animationFrameThrottle(function(amount) {
if(amount) {
amount = parseInt(amount, 10);
$element[0].style.width = ($window.innerWidth - amount) + 'px';
content.offsetX = amount;
} else {
$element[0].style.width = '';
content.offsetX = 0;
}
// reset incase left gets grabby
$element[0].style[ionic.CSS.TRANSFORM] = 'translate3d(0,0,0)';
}),
enableAnimation: function() {
$scope.animationEnabled = true;
$element[0].classList.add('menu-animated');

View File

@@ -49,6 +49,7 @@ describe('$ionicSideMenus controller', function() {
});
var content = new Controller({ el: document.createElement('div') });
content.setMarginLeft = function(){};
content.setMarginRight = function(){};
ctrl.setContent(content);
});
@@ -157,6 +158,7 @@ describe('$ionicSideMenus controller', function() {
it('should set enabled/disabled exposeAside', function() {
expect(ctrl.isAsideExposed()).toEqual(false);
ctrl.left.setIsEnabled(false);
ctrl.right.setIsEnabled(false);
ctrl.exposeAside(true);
expect(ctrl.isAsideExposed()).toEqual(false);
ctrl.left.setIsEnabled(true);