@@ -11,7 +11,7 @@ IonicModule
11
11
'$rootScope' ,
12
12
function ( $scope , $attrs , $ionicSideMenuDelegate , $ionicPlatform , $ionicBody , $ionicHistory , $ionicScrollDelegate , IONIC_BACK_PRIORITY , $rootScope ) {
13
13
var self = this ;
14
- var rightShowing , leftShowing , isDragging ;
14
+ var isDragging ;
15
15
var startX , lastX , offsetX , isAsideExposed ;
16
16
var enableMenuWithBackViews = true ;
17
17
@@ -61,7 +61,11 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
61
61
if ( arguments . length === 0 ) {
62
62
shouldOpen = openAmount <= 0 ;
63
63
}
64
- self . content . enableAnimation ( ) ;
64
+ if ( self . left . displayType == 'overlay' ) {
65
+ self . left . enableAnimation ( ) ;
66
+ } else {
67
+ self . content . enableAnimation ( ) ;
68
+ }
65
69
if ( ! shouldOpen ) {
66
70
self . openPercentage ( 0 ) ;
67
71
$rootScope . $emit ( '$ionicSideMenuClose' , 'left' ) ;
@@ -80,7 +84,11 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
80
84
if ( arguments . length === 0 ) {
81
85
shouldOpen = openAmount >= 0 ;
82
86
}
83
- self . content . enableAnimation ( ) ;
87
+ if ( self . right . displayType == 'overlay' ) {
88
+ self . right . enableAnimation ( ) ;
89
+ } else {
90
+ self . content . enableAnimation ( ) ;
91
+ }
84
92
if ( ! shouldOpen ) {
85
93
self . openPercentage ( 0 ) ;
86
94
$rootScope . $emit ( '$ionicSideMenuClose' , 'right' ) ;
@@ -111,7 +119,17 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
111
119
* @return {float } The amount the side menu is open, either positive or negative for left (positive), or right (negative)
112
120
*/
113
121
self . getOpenAmount = function ( ) {
114
- return self . content && self . content . getTranslateX ( ) || 0 ;
122
+ var retOpenAmount = 0 ;
123
+ if ( ( isNaN ( retOpenAmount ) || retOpenAmount === 0 ) && self . right && self . right . displayType == 'overlay' ) {
124
+ retOpenAmount = self . right . getTranslateX ( ) ;
125
+ }
126
+ if ( ( isNaN ( retOpenAmount ) || retOpenAmount === 0 ) && self . left && self . left . displayType == 'overlay' ) {
127
+ retOpenAmount = self . left . getTranslateX ( ) ;
128
+ }
129
+ if ( ( isNaN ( retOpenAmount ) || retOpenAmount === 0 ) && self . content ) {
130
+ retOpenAmount = self . content . getTranslateX ( ) ;
131
+ }
132
+ return retOpenAmount ;
115
133
} ;
116
134
117
135
/**
@@ -181,6 +199,18 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
181
199
var maxLeft = self . left && self . left . width || 0 ;
182
200
var maxRight = self . right && self . right . width || 0 ;
183
201
202
+ var overlayLeft = self . left && self . left . displayType == 'overlay' || false ;
203
+ var overlayRight = self . right && self . right . displayType == 'overlay' || false ;
204
+ var openLeft = overlayLeft && self . left . getTranslateX ( ) || 0 ;
205
+ var openRight = overlayRight && self . right . getTranslateX ( ) || 0 ;
206
+ var openContent = self . content . getTranslateX ( ) || 0 ;
207
+
208
+ if ( amount > maxLeft ) {
209
+ amount = maxLeft ;
210
+ } else if ( amount < - maxRight ) {
211
+ amount = - maxRight ;
212
+ }
213
+
184
214
// Check if we can move to that side, depending if the left/right panel is enabled
185
215
if ( ! ( self . left && self . left . isEnabled ) && amount > 0 ) {
186
216
self . content . setTranslateX ( 0 ) ;
@@ -192,31 +222,30 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
192
222
return ;
193
223
}
194
224
195
- if ( leftShowing && amount > maxLeft ) {
196
- self . content . setTranslateX ( maxLeft ) ;
197
- return ;
198
- }
199
-
200
- if ( rightShowing && amount < - maxRight ) {
201
- self . content . setTranslateX ( - maxRight ) ;
202
- return ;
225
+ if ( amount > 0 ) {
226
+ if ( overlayLeft ) { self . left . setTranslateX ( amount ) ; }
227
+ if ( overlayRight && openRight ) { self . right . setTranslateX ( 0 ) ; }
228
+ if ( ! ( overlayLeft && openLeft ) ) { self . content . setTranslateX ( overlayLeft ? 0 : amount ) ; }
229
+ } else if ( amount < 0 ) {
230
+ if ( overlayRight ) { self . right . setTranslateX ( amount ) ; }
231
+ if ( overlayLeft && openLeft ) { self . left . setTranslateX ( 0 ) ; }
232
+ if ( ! ( overlayRight && openRight ) ) { self . content . setTranslateX ( overlayRight ? 0 : amount ) ; }
233
+ } else /* if (amount === 0) */ {
234
+ if ( overlayLeft && openLeft ) { self . left . setTranslateX ( amount ) ; }
235
+ if ( overlayRight && openRight ) { self . right . setTranslateX ( amount ) ; }
236
+ if ( ! ( overlayRight && openRight ) && openContent ) { self . content . setTranslateX ( amount ) ; }
203
237
}
204
238
205
- self . content . setTranslateX ( amount ) ;
206
-
207
- leftShowing = amount > 0 ;
208
- rightShowing = amount < 0 ;
209
-
210
239
if ( amount > 0 ) {
211
240
// Push the z-index of the right menu down
212
- self . right && self . right . pushDown && self . right . pushDown ( ) ;
241
+ self . right && self . right . displayType != 'overlay' && self . right . pushDown && self . right . pushDown ( ) ;
213
242
// Bring the z-index of the left menu up
214
- self . left && self . left . bringUp && self . left . bringUp ( ) ;
243
+ self . left && self . left . displayType != 'overlay' && self . left . bringUp && self . left . bringUp ( ) ;
215
244
} else {
216
245
// Bring the z-index of the right menu up
217
- self . right && self . right . bringUp && self . right . bringUp ( ) ;
246
+ self . right && self . right . displayType != 'overlay' && self . right . bringUp && self . right . bringUp ( ) ;
218
247
// Push the z-index of the left menu down
219
- self . left && self . left . pushDown && self . left . pushDown ( ) ;
248
+ self . left && self . left . displayType != 'overlay' && self . left . pushDown && self . left . pushDown ( ) ;
220
249
}
221
250
} ;
222
251
@@ -348,6 +377,12 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody, $io
348
377
isDragging = true ;
349
378
// Initialize dragging
350
379
self . content . disableAnimation ( ) ;
380
+ if ( self . left . displayType == 'overlay' ) {
381
+ self . left . disableAnimation ( ) ;
382
+ }
383
+ if ( self . right . displayType == 'overlay' ) {
384
+ self . right . disableAnimation ( ) ;
385
+ }
351
386
offsetX = self . getOpenAmount ( ) ;
352
387
}
353
388
0 commit comments