blob: 02d3f2ded365a8320d6738e9737efde4fc5cb69b [file] [log] [blame]
Iftekharul Islam99d199f2017-03-24 15:28:25 -05001window.angular && (function (angular) {
2 'use strict';
3
4 angular
5 .module('app.common.directives')
6 .directive('appNavigation', function () {
7 return {
8 'restrict': 'E',
Ed Tanousbbcf6702017-10-06 13:53:06 -07009 'template': require('./app-navigation.html'),
Iftekharul Islam99d199f2017-03-24 15:28:25 -050010 'scope': {
11 'path': '=',
12 'showNavigation': '='
13 },
Iftekharul Islamcd789502017-04-19 14:37:55 -050014 'controller': ['$scope', '$location', 'dataService', function($scope, $location, dataService){
Iftekharul Islam34714092017-09-06 10:45:27 -050015 $scope.dataService = dataService;
Iftekharul Islam685fe752017-05-05 09:17:54 -050016 $scope.showSubMenu = false;
Iftekharul Islamcd789502017-04-19 14:37:55 -050017 $scope.change = function(firstLevel){
Iftekharul Islam685fe752017-05-05 09:17:54 -050018 if(firstLevel != $scope.firstLevel) {
19 $scope.firstLevel = firstLevel;
20 $scope.showSubMenu = true;
21 }else{
22 $scope.showSubMenu = !$scope.showSubMenu;
23 }
Michael Davis272297b2017-04-24 12:11:53 -050024 };
25 $scope.closeSubnav = function(){
Iftekharul Islam685fe752017-05-05 09:17:54 -050026 $scope.showSubMenu = false;
Michael Davis272297b2017-04-24 12:11:53 -050027 };
Iftekharul Islam34714092017-09-06 10:45:27 -050028 $scope.$watch('path', function(){
29 var urlRoot = $location.path().split("/")[1];
30 if(urlRoot != ""){
31 $scope.firstLevel = urlRoot;
32 }else{
33 $scope.firstLevel = 'overview';
34 }
35 $scope.showSubMenu = false;
36 });
Iftekharul Islam99d199f2017-03-24 15:28:25 -050037 $scope.$watch('showNavigation', function(){
38 var paddingTop = 0;
Iftekharul Islam685fe752017-05-05 09:17:54 -050039 var urlRoot = $location.path().split("/")[1];
40 if(urlRoot != ""){
41 $scope.firstLevel = urlRoot;
42 }else{
43 $scope.firstLevel = 'overview';
44 }
Iftekharul Islamcd789502017-04-19 14:37:55 -050045
Iftekharul Islam99d199f2017-03-24 15:28:25 -050046 if($scope.showNavigation){
47 paddingTop = document.getElementById('header__wrapper').offsetHeight;
48 }
49 dataService.bodyStyle = {'padding-top': paddingTop + 'px'};
50 $scope.navStyle = {'top': paddingTop + 'px'};
51 });
Iftekharul Islamf74f8a02018-02-08 13:58:10 -060052 }],
53 link: function(scope, element, attributes) {
54 var rawNavElement = angular.element(element)[0];
55 angular.element(window.document).bind('click', function(event){
56 if (rawNavElement.contains(event.target))
57 return;
58
59 if(scope.showSubMenu){
60 scope.$apply(function(){
61 scope.showSubMenu = false;
62 });
63 }
64 });
65 }
Iftekharul Islam99d199f2017-03-24 15:28:25 -050066 };
67 });
68})(window.angular);