From dfb7069237646b77d8517afb1bc3c675cebe6d67 Mon Sep 17 00:00:00 2001 From: Fabrizio Fortunato Date: Tue, 27 Jan 2015 14:58:14 +0100 Subject: [PATCH] add support ffor back button when the drawer is open --- ionic.contrib.drawer.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ionic.contrib.drawer.js b/ionic.contrib.drawer.js index b2f5815..8993b4f 100644 --- a/ionic.contrib.drawer.js +++ b/ionic.contrib.drawer.js @@ -9,12 +9,15 @@ */ angular.module('ionic.contrib.drawer', ['ionic']) -.controller('drawerCtrl', ['$element', '$attrs', '$ionicGesture', '$document', function($element, $attr, $ionicGesture, $document) { +.controller('drawerCtrl', ['$element', '$attrs', '$ionicGesture', '$document', '$ionicPlatform', function($element, $attr, $ionicGesture, $document, $ionicPlatform) { var el = $element[0]; var dragging = false; var startX, lastX, offsetX, newX; var side; + // Handle back button + var unregisterBackAction; + // How far to drag before triggering var thresholdX = 15; // How far from edge before triggering @@ -106,7 +109,7 @@ angular.module('ionic.contrib.drawer', ['ionic']) startTargetDrag(e); } else if(startX < edgeX) { startDrag(e); - } + } } } else { console.log(lastX, offsetX, lastX - offsetX); @@ -132,6 +135,10 @@ angular.module('ionic.contrib.drawer', ['ionic']) doEndDrag(e); }, $document); + var hardwareBackCallback = function() { + this.close(); + }.bind(this); + this.close = function() { enableAnimation(); @@ -142,6 +149,9 @@ angular.module('ionic.contrib.drawer', ['ionic']) el.style.transform = el.style.webkitTransform = 'translate3d(100%, 0, 0)'; } }); + if (unregisterBackAction) { + unregisterBackAction(); + } }; this.open = function() { @@ -153,6 +163,7 @@ angular.module('ionic.contrib.drawer', ['ionic']) el.style.transform = el.style.webkitTransform = 'translate3d(0%, 0, 0)'; } }); + unregisterBackAction = $ionicPlatform.registerBackButtonAction(hardwareBackCallback, 100); }; }])