sideMenu directives cleanup

This commit is contained in:
Ulrich Sossou
2013-11-23 18:46:19 +01:00
parent 510c2db303
commit 67488fa403
3 changed files with 95 additions and 4 deletions

View File

@@ -25781,10 +25781,11 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
var defaultPrevented = 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);
var dragFn = function(e) {
if(defaultPrevented) {
@@ -25830,6 +25831,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
$scope.$on('$destroy', function() {
Gesture.off(dragGesture, 'drag', dragFn);
Gesture.off(releaseGesture, 'release', dragReleaseFn);
ionic.off('mousedown', readDefaultPrevented);
});
};
}
@@ -25868,6 +25870,14 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
}
$element.append(transclude($scope));
$scope.$on('$destroy', function () {
if (['left', 'right'].indexOf($scope.side) > -1) {
delete sideMenuCtrl[$scope.side].isEnabled;
delete sideMenuCtrl[$scope.side].pushDown;
delete sideMenuCtrl[$scope.side].bringUp;
}
});
};
}
};

View File

@@ -58,10 +58,11 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
var defaultPrevented = 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);
var dragFn = function(e) {
if(defaultPrevented) {
@@ -107,6 +108,7 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
$scope.$on('$destroy', function() {
Gesture.off(dragGesture, 'drag', dragFn);
Gesture.off(releaseGesture, 'release', dragReleaseFn);
ionic.off('mousedown', readDefaultPrevented);
});
};
}
@@ -145,6 +147,14 @@ angular.module('ionic.ui.sideMenu', ['ionic.service.gesture'])
}
$element.append(transclude($scope));
$scope.$on('$destroy', function () {
if (['left', 'right'].indexOf($scope.side) > -1) {
delete sideMenuCtrl[$scope.side].isEnabled;
delete sideMenuCtrl[$scope.side].pushDown;
delete sideMenuCtrl[$scope.side].bringUp;
}
});
};
}
};

View File

@@ -16,3 +16,74 @@ 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);
});
it('Should remove the attributes it sets on the controller', function () {
scope.$destroy();
expect(sideMenuCtrl.left.isEnabled).toBe(undefined);
expect(sideMenuCtrl.left.pushDown).toBe(undefined);
expect(sideMenuCtrl.left.bringUp).toBe(undefined);
});
});