mirror of
https://github.com/ansible/awx.git
synced 2026-05-13 12:27:37 -02:30
Close menu when user selects item
This commit is contained in:
@@ -11,7 +11,7 @@
|
|||||||
transition: height 0.5s ease-out;
|
transition: height 0.5s ease-out;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: 56px;
|
height: 58px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
&.Menu--open {
|
&.Menu--open {
|
||||||
|
|||||||
@@ -3,10 +3,43 @@
|
|||||||
export default function() {
|
export default function() {
|
||||||
return {
|
return {
|
||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
|
controllerAs: 'mainMenu',
|
||||||
templateUrl: '/static/js/main-menu/main-menu.partial.html',
|
templateUrl: '/static/js/main-menu/main-menu.partial.html',
|
||||||
|
controller: ['$scope', function($scope) {
|
||||||
|
this.open = function() {
|
||||||
|
$scope.isOpen = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.close = function() {
|
||||||
|
$scope.isOpen = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.toggle = function() {
|
||||||
|
$scope.isOpen = !$scope.isOpen;
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.isOpen = false;
|
||||||
|
}],
|
||||||
scope: {
|
scope: {
|
||||||
menuStyle: '&menuStyle',
|
menuStyle: '&menuStyle',
|
||||||
currentUser: '='
|
currentUser: '='
|
||||||
|
},
|
||||||
|
link: function(scope, element, attrs) {
|
||||||
|
scope.menuStyleClassName = 'blah';
|
||||||
|
scope.$watch(function() {
|
||||||
|
return scope.$eval(scope.menuStyle);
|
||||||
|
}, function(newValue) {
|
||||||
|
scope.menuStyleClassName = 'MainMenu--' + newValue;
|
||||||
|
});
|
||||||
|
scope.$watch('isOpen', function(isOpen) {
|
||||||
|
if (isOpen) {
|
||||||
|
element.find('.MainMenu').addClass("Menu--open");
|
||||||
|
element.find('menu-toggle-button').addClass("MenuToggle--open");
|
||||||
|
} else {
|
||||||
|
element.find('.MainMenu').removeClass("Menu--open");
|
||||||
|
element.find('menu-toggle-button').removeClass("MenuToggle--open");
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,19 +2,34 @@
|
|||||||
|
|
||||||
export default ['$route', '$rootScope', function($route, $rootScope) {
|
export default ['$route', '$rootScope', function($route, $rootScope) {
|
||||||
return {
|
return {
|
||||||
link: function(scope, element, attrs) {
|
require: '^^mainMenu',
|
||||||
|
link: function(scope, element, attrs, mainMenuController) {
|
||||||
var routeName = attrs.linkTo;
|
var routeName = attrs.linkTo;
|
||||||
|
|
||||||
scope.$watch(function() {
|
scope.$on('$routeChangeStart', function() {
|
||||||
return $route.current.name;
|
// any time we start a route change,
|
||||||
}, function(nextRoute) {
|
// assume it was from the menu, and
|
||||||
if (nextRoute === routeName) {
|
// close it in case it's open
|
||||||
|
mainMenuController.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
scope.$on('$routeChangeSuccess', function(e, nextRoute) {
|
||||||
|
if (nextRoute.$$route.name === routeName) {
|
||||||
element.addClass('MenuItem--active');
|
element.addClass('MenuItem--active');
|
||||||
} else {
|
} else {
|
||||||
element.removeClass('MenuItem--active');
|
element.removeClass('MenuItem--active');
|
||||||
}
|
}
|
||||||
|
return nextRoute.$$route.name;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
scope.$on('$destroy', function() {
|
||||||
|
element.off('click.menu-item');
|
||||||
|
});
|
||||||
|
|
||||||
|
element.on('click', function(e) {
|
||||||
|
mainMenuController.close();
|
||||||
|
}, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
|
|||||||
@@ -4,17 +4,23 @@ export default function() {
|
|||||||
return {
|
return {
|
||||||
templateUrl: '/static/js/main-menu/menu-toggle.partial.html',
|
templateUrl: '/static/js/main-menu/menu-toggle.partial.html',
|
||||||
restrict: 'E',
|
restrict: 'E',
|
||||||
|
require: '^^mainMenu',
|
||||||
scope: {
|
scope: {
|
||||||
width: '@',
|
width: '@',
|
||||||
height: '@',
|
height: '@',
|
||||||
barHeight: '@'
|
barHeight: '@'
|
||||||
},
|
},
|
||||||
link: function(scope, element, attrs) {
|
link: function(scope, element, attrs, mainMenuController) {
|
||||||
|
scope.$on('$destroy', function() {
|
||||||
|
element.off('click');
|
||||||
|
});
|
||||||
|
|
||||||
element.on("click", function(e) {
|
element.on("click", function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
$(".MainMenu").toggleClass("Menu--open");
|
scope.$apply(function() {
|
||||||
element.toggleClass("MenuToggle--open");
|
mainMenuController.toggle();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user