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

Commit 42f401b

Browse files
feat(sidemenu): adding leave-content-active attribute
1 parent fc404f9 commit 42f401b

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

js/angular/controller/sideMenuController.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,18 +146,21 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
146146
*/
147147
self.openPercentage = function(percentage) {
148148
var p = percentage / 100;
149+
var leaveContentActive = false;
149150

150151
if (self.left && percentage >= 0) {
151152
self.openAmount(self.left.width * p);
153+
leaveContentActive = self.left.leaveContentActive;
152154
} else if (self.right && percentage < 0) {
153155
self.openAmount(self.right.width * p);
156+
leaveContentActive = self.right.leaveContentActive;
154157
}
155158

156-
// add the CSS class "menu-open" if the percentage does not
157-
// equal 0, otherwise remove the class from the body element
158-
$ionicBody.enableClass((percentage !== 0), 'menu-open');
159+
// add the CSS class "menu-open" if don't want to leave content active and the
160+
// percentage does not equal 0, otherwise remove the class from the body element
161+
$ionicBody.enableClass((!leaveContentActive && percentage !== 0), 'menu-open');
159162

160-
self.content.setCanScroll(percentage == 0);
163+
self.content.setCanScroll(leaveContentActive || percentage == 0);
161164
};
162165

163166
/*

js/angular/directive/sideMenu.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
* <ion-side-menu
1414
* side="left"
1515
* width="myWidthValue + 20"
16-
* is-enabled="shouldLeftSideMenuBeEnabled()">
16+
* is-enabled="shouldLeftSideMenuBeEnabled()"
17+
* leave-content-active="shouldLeftSideMenuLeaveMainContentActive()">
1718
* </ion-side-menu>
1819
* ```
1920
* For a complete side menu example, see the
@@ -22,6 +23,7 @@
2223
* @param {string} side Which side the side menu is currently on. Allowed values: 'left' or 'right'.
2324
* @param {boolean=} is-enabled Whether this side menu is enabled.
2425
* @param {number=} width How many pixels wide the side menu should be. Defaults to 275.
26+
* @param {boolean=} leave-content-active Whether this menu should leave main content active when menu is opened. Defaults to false.
2527
*/
2628
IonicModule
2729
.directive('ionSideMenu', function() {
@@ -32,6 +34,7 @@ IonicModule
3234
compile: function(element, attr) {
3335
angular.isUndefined(attr.isEnabled) && attr.$set('isEnabled', 'true');
3436
angular.isUndefined(attr.width) && attr.$set('width', '275');
37+
angular.isUndefined(attr.leaveContentActive) && attr.$set('leaveContentActive', 'false');
3538

3639
element.addClass('menu menu-' + attr.side);
3740

@@ -41,7 +44,8 @@ IonicModule
4144
var sideMenu = sideMenuCtrl[$scope.side] = new ionic.views.SideMenu({
4245
width: attr.width,
4346
el: $element[0],
44-
isEnabled: true
47+
isEnabled: true,
48+
leaveContentActive: false
4549
});
4650

4751
$scope.$watch($attr.width, function(val) {
@@ -53,8 +57,10 @@ IonicModule
5357
$scope.$watch($attr.isEnabled, function(val) {
5458
sideMenu.setIsEnabled(!!val);
5559
});
60+
$scope.$watch($attr.leaveContentActive, function(val) {
61+
sideMenu.setLeaveContentActive(!!val);
62+
});
5663
};
5764
}
5865
};
5966
});
60-

js/views/sideMenuView.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
this.el = opts.el;
1212
this.isEnabled = (typeof opts.isEnabled === 'undefined') ? true : opts.isEnabled;
1313
this.setWidth(opts.width);
14+
this.leaveContentActive = (typeof opts.leaveContentActive === 'undefined') ? false : opts.leaveContentActive;
1415
},
1516
getFullWidth: function() {
1617
return this.width;
@@ -31,6 +32,9 @@
3132
if(this.el.style.zIndex !== '-1') {
3233
this.el.style.zIndex = '-1';
3334
}
35+
},
36+
setLeaveContentActive: function(leaveContentActive) {
37+
this.leaveContentActive = leaveContentActive;
3438
}
3539
});
3640

0 commit comments

Comments
 (0)