@@ -79,9 +79,9 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie
79
79
* @name $ionicSideMenuDelegate#getOpenRatio
80
80
* @description Gets the ratio of open amount over menu width. For example, a
81
81
* menu of width 100 that is opened by 50 pixels is 50% opened, and would return
82
- * a ratio of 0.5.
82
+ * a ratio of 0.5.
83
83
*
84
- * @returns {float } 0 if nothing is open, between 0 and 1 if left menu is
84
+ * @returns {float } 0 if nothing is open, between 0 and 1 if left menu is
85
85
* opened/opening, and between 0 and -1 if right menu is opened/opening.
86
86
*/
87
87
'getOpenRatio' ,
@@ -104,7 +104,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie
104
104
* side menus.
105
105
* @returns {boolean } Whether the content can be dragged to open side menus.
106
106
*/
107
- 'canDragContent' ,
107
+ 'canDragContent'
108
108
/**
109
109
* @ngdoc method
110
110
* @name $ionicSideMenuDelegate#$getByHandle
@@ -171,8 +171,6 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie
171
171
return {
172
172
restrict : 'ECA' ,
173
173
controller : [ '$scope' , '$attrs' , '$ionicSideMenuDelegate' , function ( $scope , $attrs , $ionicSideMenuDelegate ) {
174
- var _this = this ;
175
-
176
174
angular . extend ( this , ionic . controllers . SideMenuController . prototype ) ;
177
175
178
176
ionic . controllers . SideMenuController . call ( this , {
@@ -187,6 +185,14 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie
187
185
return $scope . dragContent ;
188
186
} ;
189
187
188
+ this . isDraggableTarget = function ( e ) {
189
+ return $scope . dragContent &&
190
+ ( ! e . gesture . srcEvent . defaultPrevented &&
191
+ ! e . target . tagName . match ( / i n p u t | t e x t a r e a | s e l e c t | o b j e c t | e m b e d / i) &&
192
+ ! e . target . isContentEditable &&
193
+ ! ( e . target . dataset ? e . target . dataset . preventScroll : e . target . getAttribute ( 'data-prevent-default' ) == 'true' ) ) ;
194
+ } ;
195
+
190
196
$scope . sideMenuContentTranslateX = 0 ;
191
197
192
198
var deregisterInstance = $ionicSideMenuDelegate . _registerInstance (
@@ -225,6 +231,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie
225
231
*
226
232
*/
227
233
. directive ( 'ionSideMenuContent' , [ '$timeout' , '$ionicGesture' , function ( $timeout , $ionicGesture ) {
234
+
228
235
return {
229
236
restrict : 'EA' , //DEPRECATED 'A'
230
237
require : '^ionSideMenus' ,
@@ -256,14 +263,10 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture', 'ionic.service.vie
256
263
ionic . on ( 'tap' , contentTap , $element [ 0 ] ) ;
257
264
258
265
var dragFn = function ( e ) {
259
- if ( $scope . dragContent ) {
260
- if ( defaultPrevented || e . gesture . srcEvent . defaultPrevented ) {
261
- return ;
262
- }
263
- isDragging = true ;
264
- sideMenuCtrl . _handleDrag ( e ) ;
265
- e . gesture . srcEvent . preventDefault ( ) ;
266
- }
266
+ if ( defaultPrevented || ! sideMenuCtrl . isDraggableTarget ( e ) ) return ;
267
+ isDragging = true ;
268
+ sideMenuCtrl . _handleDrag ( e ) ;
269
+ e . gesture . srcEvent . preventDefault ( ) ;
267
270
} ;
268
271
269
272
var dragVertFn = function ( e ) {
0 commit comments