Merge pull request #367 from driftyco/pr/194

Cleanups from @sorich87 for side menus, minus some scope destroy stuff
This commit is contained in:
Max Lynch
2014-01-07 16:02:24 -08:00
3 changed files with 72 additions and 4 deletions

View File

@@ -1759,10 +1759,11 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
var defaultPrevented = false;
var isDragging = false;
ionic.on('mousedown', function(e) {
var readDefaultPrevented = function(e) {
// If the child element prevented the drag, don't drag
defaultPrevented = e.defaultPrevented;
});
}
ionic.on('mousedown', readDefaultPrevented);
// Listen for taps on the content to close the menu
/*
@@ -1835,6 +1836,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
Gesture.off(dragUpGesture, 'dragup', dragFn);
Gesture.off(dragDownGesture, 'dragdown', dragFn);
Gesture.off(releaseGesture, 'release', dragReleaseFn);
ionic.off('mousedown', readDefaultPrevented);
});
};
}

View File

@@ -60,10 +60,11 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
var defaultPrevented = false;
var isDragging = false;
ionic.on('mousedown', function(e) {
var readDefaultPrevented = function(e) {
// If the child element prevented the drag, don't drag
defaultPrevented = e.defaultPrevented;
});
}
ionic.on('mousedown', readDefaultPrevented);
// Listen for taps on the content to close the menu
/*
@@ -136,6 +137,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
Gesture.off(dragUpGesture, 'dragup', dragFn);
Gesture.off(dragDownGesture, 'dragdown', dragFn);
Gesture.off(releaseGesture, 'release', dragReleaseFn);
ionic.off('mousedown', readDefaultPrevented);
});
};
}

View File

@@ -16,3 +16,67 @@ describe('Ionic Angular Side Menu', function() {
expect(scope.sideMenuController).not.toBe(undefined);
});
});
describe('Ionic Side Menu Content Directive', function () {
var $compile, element, scope, sideMenusCtrl;
beforeEach(module('ionic.ui.sideMenu'));
beforeEach(inject(function (_$compile_, _$rootScope_) {
$compile = _$compile_;
scope = _$rootScope_;
var sideMenus = $compile('<side-menus>')(scope).appendTo('body');
sideMenuCtrl = sideMenus.controller('sideMenus');
spyOn(sideMenuCtrl, '_handleDrag');
element = angular.element('<div side-menu-content>').appendTo(sideMenus);
$compile(element)(scope);
scope.$digest();
}));
it('Should handle drag', function () {
ionic.trigger('drag', {target: element[0]});
expect(sideMenuCtrl._handleDrag).toHaveBeenCalled();
});
it('Should not handle drag when prevented', function () {
var event = new CustomEvent('mousedown', {bubbles: true, cancelable: true});
event.preventDefault();
element[0].dispatchEvent(event);
ionic.trigger('drag', {target: element[0]});
expect(sideMenuCtrl._handleDrag).not.toHaveBeenCalled();
});
});
describe('Ionic Side Menu Directive', function () {
var element, scope, sideMenuCtrl;
beforeEach(module('ionic.ui.sideMenu'));
beforeEach(inject(function (_$compile_, _$rootScope_) {
var $compile = _$compile_;
var $rootScope = _$rootScope_;
var sideMenus = $compile('<side-menus>')($rootScope);
sideMenuCtrl = sideMenus.controller('sideMenus');
element = angular.element('<side-menu side="left">').appendTo(sideMenus);
$compile(element)($rootScope);
scope = element.scope();
scope.$digest();
}));
it('Should set attributes on the controller', function () {
expect(sideMenuCtrl.left.isEnabled).not.toBe(undefined);
expect(sideMenuCtrl.left.pushDown).not.toBe(undefined);
expect(sideMenuCtrl.left.bringUp).not.toBe(undefined);
});
});