mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
Side menu drag fix
This commit is contained in:
19
dist/js/ionic-angular.js
vendored
19
dist/js/ionic-angular.js
vendored
@@ -1865,6 +1865,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
$element.addClass('menu-content');
|
||||
|
||||
var defaultPrevented = false;
|
||||
var isDragging = false;
|
||||
|
||||
ionic.on('mousedown', function(e) {
|
||||
// If the child element prevented the drag, don't drag
|
||||
@@ -1875,15 +1876,25 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
if(defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
isDragging = true;
|
||||
sideMenuCtrl._handleDrag(e);
|
||||
e.gesture.srcEvent.preventDefault();
|
||||
};
|
||||
|
||||
var dragVertFn = function(e) {
|
||||
if(isDragging) {
|
||||
e.gesture.srcEvent.preventDefault();
|
||||
}
|
||||
};
|
||||
|
||||
//var dragGesture = Gesture.on('drag', dragFn, $element);
|
||||
var dragRightGesture = Gesture.on('dragright', dragFn, $element);
|
||||
var dragLeftGesture = Gesture.on('dragleft', dragFn, $element);
|
||||
var dragUpGesture = Gesture.on('dragup', dragVertFn, $element);
|
||||
var dragDownGesture = Gesture.on('dragdown', dragVertFn, $element);
|
||||
|
||||
var dragReleaseFn = function(e) {
|
||||
isDragging = false;
|
||||
if(!defaultPrevented) {
|
||||
sideMenuCtrl._endDrag(e);
|
||||
}
|
||||
@@ -1916,8 +1927,10 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
|
||||
// Cleanup
|
||||
$scope.$on('$destroy', function() {
|
||||
Gesture.off(dragLeftGesture, 'drag', dragFn);
|
||||
Gesture.off(dragRightGesture, 'drag', dragFn);
|
||||
Gesture.off(dragLeftGesture, 'dragleft', dragFn);
|
||||
Gesture.off(dragRightGesture, 'dragright', dragFn);
|
||||
Gesture.off(dragUpGesture, 'dragup', dragFn);
|
||||
Gesture.off(dragDownGesture, 'dragdown', dragFn);
|
||||
Gesture.off(releaseGesture, 'release', dragReleaseFn);
|
||||
});
|
||||
};
|
||||
@@ -1933,7 +1946,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
replace: true,
|
||||
transclude: true,
|
||||
scope: true,
|
||||
template: '<div class="menu menu-{{side}}"></div>',
|
||||
template: '<div class="sub-pane menu menu-{{side}}"></div>',
|
||||
compile: function(element, attr, transclude) {
|
||||
return function($scope, $element, $attr, sideMenuCtrl) {
|
||||
$scope.side = $attr.side;
|
||||
|
||||
5
dist/js/ionic.js
vendored
5
dist/js/ionic.js
vendored
@@ -3362,6 +3362,9 @@ var Scroller;
|
||||
}, false);
|
||||
|
||||
document.addEventListener("touchmove", function(e) {
|
||||
if(e.defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
self.doTouchMove(e.touches, e.timeStamp);
|
||||
}, false);
|
||||
|
||||
@@ -3388,7 +3391,7 @@ var Scroller;
|
||||
}, false);
|
||||
|
||||
document.addEventListener("mousemove", function(e) {
|
||||
if (!mousedown) {
|
||||
if (!mousedown || e.defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
19
js/ext/angular/src/directive/ionicSideMenu.js
vendored
19
js/ext/angular/src/directive/ionicSideMenu.js
vendored
@@ -57,6 +57,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
$element.addClass('menu-content');
|
||||
|
||||
var defaultPrevented = false;
|
||||
var isDragging = false;
|
||||
|
||||
ionic.on('mousedown', function(e) {
|
||||
// If the child element prevented the drag, don't drag
|
||||
@@ -67,15 +68,25 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
if(defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
isDragging = true;
|
||||
sideMenuCtrl._handleDrag(e);
|
||||
e.gesture.srcEvent.preventDefault();
|
||||
};
|
||||
|
||||
var dragVertFn = function(e) {
|
||||
if(isDragging) {
|
||||
e.gesture.srcEvent.preventDefault();
|
||||
}
|
||||
};
|
||||
|
||||
//var dragGesture = Gesture.on('drag', dragFn, $element);
|
||||
var dragRightGesture = Gesture.on('dragright', dragFn, $element);
|
||||
var dragLeftGesture = Gesture.on('dragleft', dragFn, $element);
|
||||
var dragUpGesture = Gesture.on('dragup', dragVertFn, $element);
|
||||
var dragDownGesture = Gesture.on('dragdown', dragVertFn, $element);
|
||||
|
||||
var dragReleaseFn = function(e) {
|
||||
isDragging = false;
|
||||
if(!defaultPrevented) {
|
||||
sideMenuCtrl._endDrag(e);
|
||||
}
|
||||
@@ -108,8 +119,10 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
|
||||
// Cleanup
|
||||
$scope.$on('$destroy', function() {
|
||||
Gesture.off(dragLeftGesture, 'drag', dragFn);
|
||||
Gesture.off(dragRightGesture, 'drag', dragFn);
|
||||
Gesture.off(dragLeftGesture, 'dragleft', dragFn);
|
||||
Gesture.off(dragRightGesture, 'dragright', dragFn);
|
||||
Gesture.off(dragUpGesture, 'dragup', dragFn);
|
||||
Gesture.off(dragDownGesture, 'dragdown', dragFn);
|
||||
Gesture.off(releaseGesture, 'release', dragReleaseFn);
|
||||
});
|
||||
};
|
||||
@@ -125,7 +138,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
|
||||
replace: true,
|
||||
transclude: true,
|
||||
scope: true,
|
||||
template: '<div class="menu menu-{{side}}"></div>',
|
||||
template: '<div class="sub-pane menu menu-{{side}}"></div>',
|
||||
compile: function(element, attr, transclude) {
|
||||
return function($scope, $element, $attr, sideMenuCtrl) {
|
||||
$scope.side = $attr.side;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<button class="button button-icon" ng-click="openLeft()"><i class="icon ion-navicon"></i></button>
|
||||
<h1 class="title">Slide me</h1>
|
||||
</header>
|
||||
<content has-header="true">
|
||||
<content>
|
||||
<h1>Content</h1>
|
||||
</content>
|
||||
</pane>
|
||||
@@ -31,7 +31,7 @@
|
||||
<header class="bar bar-header bar-assertive">
|
||||
<h1 class="title">Left</h1>
|
||||
</header>
|
||||
<content has-header="true" overflow-scroll="true">
|
||||
<content>
|
||||
<ul class="list">
|
||||
<a href="#" class="item" ng-repeat="item in list">
|
||||
{{item.text}}
|
||||
@@ -43,7 +43,7 @@
|
||||
<header class="bar bar-header bar-assertive">
|
||||
<h1 class="title">Right</h1>
|
||||
</header>
|
||||
<content has-header="true">
|
||||
<content>
|
||||
<ul class="list">
|
||||
<a href="#" class="item" ng-repeat="item in list">
|
||||
{{item.text}}
|
||||
|
||||
@@ -528,6 +528,9 @@ var Scroller;
|
||||
}, false);
|
||||
|
||||
document.addEventListener("touchmove", function(e) {
|
||||
if(e.defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
self.doTouchMove(e.touches, e.timeStamp);
|
||||
}, false);
|
||||
|
||||
@@ -554,7 +557,7 @@ var Scroller;
|
||||
}, false);
|
||||
|
||||
document.addEventListener("mousemove", function(e) {
|
||||
if (!mousedown) {
|
||||
if (!mousedown || e.defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user